(function (global, factory) {
    typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
    typeof define === 'function' && define.amd ? define(['exports'], factory) :
    (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.Babel = {}));
  })(this, (function (exports) { 'use strict';
  
    var _babel = /*#__PURE__*/Object.freeze({
      __proto__: null,
      get version () { return version$1; },
      get types () { return t$8; },
      get loadOptionsSync () { return loadOptionsSync; },
      get DEFAULT_EXTENSIONS () { return DEFAULT_EXTENSIONS; },
      get File () { return File; },
      get buildExternalHelpers () { return babelBuildExternalHelpers; },
      get resolvePlugin () { return resolvePlugin; },
      get resolvePreset () { return resolvePreset; },
      get getEnv () { return getEnv; },
      get tokTypes () { return tokTypes; },
      get traverse () { return traverse; },
      get template () { return template$2; },
      get createConfigItem () { return createConfigItem; },
      get createConfigItemSync () { return createConfigItemSync; },
      get createConfigItemAsync () { return createConfigItemAsync; },
      get loadPartialConfig () { return loadPartialConfig; },
      get loadPartialConfigSync () { return loadPartialConfigSync; },
      get loadPartialConfigAsync () { return loadPartialConfigAsync; },
      get loadOptions () { return loadOptions; },
      get loadOptionsAsync () { return loadOptionsAsync; },
      get transform () { return transform$3; },
      get transformSync () { return transformSync; },
      get transformAsync () { return transformAsync; },
      get transformFile () { return transformFile; },
      get transformFileSync () { return transformFileSync; },
      get transformFileAsync () { return transformFileAsync; },
      get transformFromAst () { return transformFromAst$1; },
      get transformFromAstSync () { return transformFromAstSync; },
      get transformFromAstAsync () { return transformFromAstAsync; },
      get parse () { return parse$1; },
      get parseSync () { return parseSync; },
      get parseAsync () { return parseAsync; }
    });
  
    function _iterableToArrayLimit(arr, i) {
      var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"];
      if (null != _i) {
        var _s,
          _e,
          _x,
          _r,
          _arr = [],
          _n = !0,
          _d = !1;
        try {
          if (_x = (_i = _i.call(arr)).next, 0 === i) {
            if (Object(_i) !== _i) return;
            _n = !1;
          } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);
        } catch (err) {
          _d = !0, _e = err;
        } finally {
          try {
            if (!_n && null != _i.return && (_r = _i.return(), Object(_r) !== _r)) return;
          } finally {
            if (_d) throw _e;
          }
        }
        return _arr;
      }
    }
    function _regeneratorRuntime() {
      _regeneratorRuntime = function () {
        return exports;
      };
      var exports = {},
        Op = Object.prototype,
        hasOwn = Op.hasOwnProperty,
        defineProperty = Object.defineProperty || function (obj, key, desc) {
          obj[key] = desc.value;
        },
        $Symbol = "function" == typeof Symbol ? Symbol : {},
        iteratorSymbol = $Symbol.iterator || "@@iterator",
        asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator",
        toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
      function define(obj, key, value) {
        return Object.defineProperty(obj, key, {
          value: value,
          enumerable: !0,
          configurable: !0,
          writable: !0
        }), obj[key];
      }
      try {
        define({}, "");
      } catch (err) {
        define = function (obj, key, value) {
          return obj[key] = value;
        };
      }
      function wrap(innerFn, outerFn, self, tryLocsList) {
        var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,
          generator = Object.create(protoGenerator.prototype),
          context = new Context(tryLocsList || []);
        return defineProperty(generator, "_invoke", {
          value: makeInvokeMethod(innerFn, self, context)
        }), generator;
      }
      function tryCatch(fn, obj, arg) {
        try {
          return {
            type: "normal",
            arg: fn.call(obj, arg)
          };
        } catch (err) {
          return {
            type: "throw",
            arg: err
          };
        }
      }
      exports.wrap = wrap;
      var ContinueSentinel = {};
      function Generator() {}
      function GeneratorFunction() {}
      function GeneratorFunctionPrototype() {}
      var IteratorPrototype = {};
      define(IteratorPrototype, iteratorSymbol, function () {
        return this;
      });
      var getProto = Object.getPrototypeOf,
        NativeIteratorPrototype = getProto && getProto(getProto(values([])));
      NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);
      var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
      function defineIteratorMethods(prototype) {
        ["next", "throw", "return"].forEach(function (method) {
          define(prototype, method, function (arg) {
            return this._invoke(method, arg);
          });
        });
      }
      function AsyncIterator(generator, PromiseImpl) {
        function invoke(method, arg, resolve, reject) {
          var record = tryCatch(generator[method], generator, arg);
          if ("throw" !== record.type) {
            var result = record.arg,
              value = result.value;
            return value && "object" == typeof value && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) {
              invoke("next", value, resolve, reject);
            }, function (err) {
              invoke("throw", err, resolve, reject);
            }) : PromiseImpl.resolve(value).then(function (unwrapped) {
              result.value = unwrapped, resolve(result);
            }, function (error) {
              return invoke("throw", error, resolve, reject);
            });
          }
          reject(record.arg);
        }
        var previousPromise;
        defineProperty(this, "_invoke", {
          value: function (method, arg) {
            function callInvokeWithMethodAndArg() {
              return new PromiseImpl(function (resolve, reject) {
                invoke(method, arg, resolve, reject);
              });
            }
            return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
          }
        });
      }
      function makeInvokeMethod(innerFn, self, context) {
        var state = "suspendedStart";
        return function (method, arg) {
          if ("executing" === state) throw new Error("Generator is already running");
          if ("completed" === state) {
            if ("throw" === method) throw arg;
            return doneResult();
          }
          for (context.method = method, context.arg = arg;;) {
            var delegate = context.delegate;
            if (delegate) {
              var delegateResult = maybeInvokeDelegate(delegate, context);
              if (delegateResult) {
                if (delegateResult === ContinueSentinel) continue;
                return delegateResult;
              }
            }
            if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) {
              if ("suspendedStart" === state) throw state = "completed", context.arg;
              context.dispatchException(context.arg);
            } else "return" === context.method && context.abrupt("return", context.arg);
            state = "executing";
            var record = tryCatch(innerFn, self, context);
            if ("normal" === record.type) {
              if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue;
              return {
                value: record.arg,
                done: context.done
              };
            }
            "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg);
          }
        };
      }
      function maybeInvokeDelegate(delegate, context) {
        var methodName = context.method,
          method = delegate.iterator[methodName];
        if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator.return && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel;
        var record = tryCatch(method, delegate.iterator, context.arg);
        if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel;
        var info = record.arg;
        return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel);
      }
      function pushTryEntry(locs) {
        var entry = {
          tryLoc: locs[0]
        };
        1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);
      }
      function resetTryEntry(entry) {
        var record = entry.completion || {};
        record.type = "normal", delete record.arg, entry.completion = record;
      }
      function Context(tryLocsList) {
        this.tryEntries = [{
          tryLoc: "root"
        }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);
      }
      function values(iterable) {
        if (iterable) {
          var iteratorMethod = iterable[iteratorSymbol];
          if (iteratorMethod) return iteratorMethod.call(iterable);
          if ("function" == typeof iterable.next) return iterable;
          if (!isNaN(iterable.length)) {
            var i = -1,
              next = function next() {
                for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;
                return next.value = undefined, next.done = !0, next;
              };
            return next.next = next;
          }
        }
        return {
          next: doneResult
        };
      }
      function doneResult() {
        return {
          value: undefined,
          done: !0
        };
      }
      return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", {
        value: GeneratorFunctionPrototype,
        configurable: !0
      }), defineProperty(GeneratorFunctionPrototype, "constructor", {
        value: GeneratorFunction,
        configurable: !0
      }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) {
        var ctor = "function" == typeof genFun && genFun.constructor;
        return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name));
      }, exports.mark = function (genFun) {
        return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun;
      }, exports.awrap = function (arg) {
        return {
          __await: arg
        };
      }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {
        return this;
      }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {
        void 0 === PromiseImpl && (PromiseImpl = Promise);
        var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);
        return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {
          return result.done ? result.value : iter.next();
        });
      }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () {
        return this;
      }), define(Gp, "toString", function () {
        return "[object Generator]";
      }), exports.keys = function (val) {
        var object = Object(val),
          keys = [];
        for (var key in object) keys.push(key);
        return keys.reverse(), function next() {
          for (; keys.length;) {
            var key = keys.pop();
            if (key in object) return next.value = key, next.done = !1, next;
          }
          return next.done = !0, next;
        };
      }, exports.values = values, Context.prototype = {
        constructor: Context,
        reset: function (skipTempReset) {
          if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);
        },
        stop: function () {
          this.done = !0;
          var rootRecord = this.tryEntries[0].completion;
          if ("throw" === rootRecord.type) throw rootRecord.arg;
          return this.rval;
        },
        dispatchException: function (exception) {
          if (this.done) throw exception;
          var context = this;
          function handle(loc, caught) {
            return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught;
          }
          for (var i = this.tryEntries.length - 1; i >= 0; --i) {
            var entry = this.tryEntries[i],
              record = entry.completion;
            if ("root" === entry.tryLoc) return handle("end");
            if (entry.tryLoc <= this.prev) {
              var hasCatch = hasOwn.call(entry, "catchLoc"),
                hasFinally = hasOwn.call(entry, "finallyLoc");
              if (hasCatch && hasFinally) {
                if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
                if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
              } else if (hasCatch) {
                if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
              } else {
                if (!hasFinally) throw new Error("try statement without catch or finally");
                if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
              }
            }
          }
        },
        abrupt: function (type, arg) {
          for (var i = this.tryEntries.length - 1; i >= 0; --i) {
            var entry = this.tryEntries[i];
            if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
              var finallyEntry = entry;
              break;
            }
          }
          finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);
          var record = finallyEntry ? finallyEntry.completion : {};
          return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);
        },
        complete: function (record, afterLoc) {
          if ("throw" === record.type) throw record.arg;
          return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;
        },
        finish: function (finallyLoc) {
          for (var i = this.tryEntries.length - 1; i >= 0; --i) {
            var entry = this.tryEntries[i];
            if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;
          }
        },
        catch: function (tryLoc) {
          for (var i = this.tryEntries.length - 1; i >= 0; --i) {
            var entry = this.tryEntries[i];
            if (entry.tryLoc === tryLoc) {
              var record = entry.completion;
              if ("throw" === record.type) {
                var thrown = record.arg;
                resetTryEntry(entry);
              }
              return thrown;
            }
          }
          throw new Error("illegal catch attempt");
        },
        delegateYield: function (iterable, resultName, nextLoc) {
          return this.delegate = {
            iterator: values(iterable),
            resultName: resultName,
            nextLoc: nextLoc
          }, "next" === this.method && (this.arg = undefined), ContinueSentinel;
        }
      }, exports;
    }
    function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
      try {
        var info = gen[key](arg);
        var value = info.value;
      } catch (error) {
        reject(error);
        return;
      }
      if (info.done) {
        resolve(value);
      } else {
        Promise.resolve(value).then(_next, _throw);
      }
    }
    function _asyncToGenerator(fn) {
      return function () {
        var self = this,
          args = arguments;
        return new Promise(function (resolve, reject) {
          var gen = fn.apply(self, args);
          function _next(value) {
            asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
          }
          function _throw(err) {
            asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
          }
          _next(undefined);
        });
      };
    }
    function _defineProperties(target, props) {
      for (var i = 0; i < props.length; i++) {
        var descriptor = props[i];
        descriptor.enumerable = descriptor.enumerable || false;
        descriptor.configurable = true;
        if ("value" in descriptor) descriptor.writable = true;
        Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor);
      }
    }
    function _createClass(Constructor, protoProps, staticProps) {
      if (protoProps) _defineProperties(Constructor.prototype, protoProps);
      if (staticProps) _defineProperties(Constructor, staticProps);
      Object.defineProperty(Constructor, "prototype", {
        writable: false
      });
      return Constructor;
    }
    function _inherits(subClass, superClass) {
      if (typeof superClass !== "function" && superClass !== null) {
        throw new TypeError("Super expression must either be null or a function");
      }
      subClass.prototype = Object.create(superClass && superClass.prototype, {
        constructor: {
          value: subClass,
          writable: true,
          configurable: true
        }
      });
      Object.defineProperty(subClass, "prototype", {
        writable: false
      });
      if (superClass) _setPrototypeOf(subClass, superClass);
    }
    function _getPrototypeOf(o) {
      _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {
        return o.__proto__ || Object.getPrototypeOf(o);
      };
      return _getPrototypeOf(o);
    }
    function _setPrototypeOf(o, p) {
      _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {
        o.__proto__ = p;
        return o;
      };
      return _setPrototypeOf(o, p);
    }
    function _isNativeReflectConstruct() {
      if (typeof Reflect === "undefined" || !Reflect.construct) return false;
      if (Reflect.construct.sham) return false;
      if (typeof Proxy === "function") return true;
      try {
        Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
        return true;
      } catch (e) {
        return false;
      }
    }
    function _construct(Parent, args, Class) {
      if (_isNativeReflectConstruct()) {
        _construct = Reflect.construct.bind();
      } else {
        _construct = function _construct(Parent, args, Class) {
          var a = [null];
          a.push.apply(a, args);
          var Constructor = Function.bind.apply(Parent, a);
          var instance = new Constructor();
          if (Class) _setPrototypeOf(instance, Class.prototype);
          return instance;
        };
      }
      return _construct.apply(null, arguments);
    }
    function _isNativeFunction(fn) {
      return Function.toString.call(fn).indexOf("[native code]") !== -1;
    }
    function _wrapNativeSuper(Class) {
      var _cache = typeof Map === "function" ? new Map() : undefined;
      _wrapNativeSuper = function _wrapNativeSuper(Class) {
        if (Class === null || !_isNativeFunction(Class)) return Class;
        if (typeof Class !== "function") {
          throw new TypeError("Super expression must either be null or a function");
        }
        if (typeof _cache !== "undefined") {
          if (_cache.has(Class)) return _cache.get(Class);
          _cache.set(Class, Wrapper);
        }
        function Wrapper() {
          return _construct(Class, arguments, _getPrototypeOf(this).constructor);
        }
        Wrapper.prototype = Object.create(Class.prototype, {
          constructor: {
            value: Wrapper,
            enumerable: false,
            writable: true,
            configurable: true
          }
        });
        return _setPrototypeOf(Wrapper, Class);
      };
      return _wrapNativeSuper(Class);
    }
    function _objectWithoutPropertiesLoose(source, excluded) {
      if (source == null) return {};
      var target = {};
      var sourceKeys = Object.keys(source);
      var key, i;
      for (i = 0; i < sourceKeys.length; i++) {
        key = sourceKeys[i];
        if (excluded.indexOf(key) >= 0) continue;
        target[key] = source[key];
      }
      return target;
    }
    function _objectWithoutProperties(source, excluded) {
      if (source == null) return {};
      var target = _objectWithoutPropertiesLoose(source, excluded);
      var key, i;
      if (Object.getOwnPropertySymbols) {
        var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
        for (i = 0; i < sourceSymbolKeys.length; i++) {
          key = sourceSymbolKeys[i];
          if (excluded.indexOf(key) >= 0) continue;
          if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
          target[key] = source[key];
        }
      }
      return target;
    }
    function _assertThisInitialized(self) {
      if (self === void 0) {
        throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
      }
      return self;
    }
    function _taggedTemplateLiteralLoose(strings, raw) {
      if (!raw) {
        raw = strings.slice(0);
      }
      strings.raw = raw;
      return strings;
    }
    function _slicedToArray(arr, i) {
      return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();
    }
    function _toConsumableArray(arr) {
      return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();
    }
    function _arrayWithoutHoles(arr) {
      if (Array.isArray(arr)) return _arrayLikeToArray(arr);
    }
    function _arrayWithHoles(arr) {
      if (Array.isArray(arr)) return arr;
    }
    function _iterableToArray(iter) {
      if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
    }
    function _unsupportedIterableToArray(o, minLen) {
      if (!o) return;
      if (typeof o === "string") return _arrayLikeToArray(o, minLen);
      var n = Object.prototype.toString.call(o).slice(8, -1);
      if (n === "Object" && o.constructor) n = o.constructor.name;
      if (n === "Map" || n === "Set") return Array.from(o);
      if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
    }
    function _arrayLikeToArray(arr, len) {
      if (len == null || len > arr.length) len = arr.length;
      for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];
      return arr2;
    }
    function _nonIterableSpread() {
      throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
    }
    function _nonIterableRest() {
      throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
    }
    function _createForOfIteratorHelperLoose(o, allowArrayLike) {
      var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];
      if (it) return (it = it.call(o)).next.bind(it);
      if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
        if (it) o = it;
        var i = 0;
        return function () {
          if (i >= o.length) return {
            done: true
          };
          return {
            done: false,
            value: o[i++]
          };
        };
      }
      throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
    }
    function _toPrimitive(input, hint) {
      if (typeof input !== "object" || input === null) return input;
      var prim = input[Symbol.toPrimitive];
      if (prim !== undefined) {
        var res = prim.call(input, hint || "default");
        if (typeof res !== "object") return res;
        throw new TypeError("@@toPrimitive must return a primitive value.");
      }
      return (hint === "string" ? String : Number)(input);
    }
    function _toPropertyKey(arg) {
      var key = _toPrimitive(arg, "string");
      return typeof key === "symbol" ? key : String(key);
    }
  
    var ReferencedIdentifier$1 = ["Identifier", "JSXIdentifier"];
    var ReferencedMemberExpression = ["MemberExpression"];
    var BindingIdentifier = ["Identifier"];
    var Statement = ["Statement"];
    var Expression = ["Expression"];
    var Scope$2 = ["Scopable", "Pattern"];
    var Referenced = null;
    var BlockScoped = null;
    var Var = ["VariableDeclaration"];
    var User = null;
    var Generated = null;
    var Pure = null;
    var Flow = ["Flow", "ImportDeclaration", "ExportDeclaration", "ImportSpecifier"];
    var RestProperty$1 = ["RestElement"];
    var SpreadProperty$1 = ["RestElement"];
    var ExistentialTypeParam = ["ExistsTypeAnnotation"];
    var NumericLiteralTypeAnnotation = ["NumberLiteralTypeAnnotation"];
    var ForAwaitStatement = ["ForOfStatement"];
  
    var virtualTypes = /*#__PURE__*/Object.freeze({
      __proto__: null,
      ReferencedIdentifier: ReferencedIdentifier$1,
      ReferencedMemberExpression: ReferencedMemberExpression,
      BindingIdentifier: BindingIdentifier,
      Statement: Statement,
      Expression: Expression,
      Scope: Scope$2,
      Referenced: Referenced,
      BlockScoped: BlockScoped,
      Var: Var,
      User: User,
      Generated: Generated,
      Pure: Pure,
      Flow: Flow,
      RestProperty: RestProperty$1,
      SpreadProperty: SpreadProperty$1,
      ExistentialTypeParam: ExistentialTypeParam,
      NumericLiteralTypeAnnotation: NumericLiteralTypeAnnotation,
      ForAwaitStatement: ForAwaitStatement
    });
  
    function shallowEqual$2(actual, expected) {
      var keys = Object.keys(expected);
      for (var _i = 0, _keys = keys; _i < _keys.length; _i++) {
        var key = _keys[_i];
        if (actual[key] !== expected[key]) {
          return false;
        }
      }
      return true;
    }
  
    var warnings = new Set();
    function deprecationWarning$1(oldName, newName, prefix) {
      if (prefix === void 0) {
        prefix = "";
      }
      if (warnings.has(oldName)) return;
      warnings.add(oldName);
      var _captureShortStackTra = captureShortStackTrace(1, 2),
        internal = _captureShortStackTra.internal,
        trace = _captureShortStackTra.trace;
      if (internal) {
        return;
      }
      console.warn(prefix + "`" + oldName + "` has been deprecated, please migrate to `" + newName + "`\n" + trace);
    }
    function captureShortStackTrace(skip, length) {
      var stackTraceLimit = Error.stackTraceLimit,
        prepareStackTrace = Error.prepareStackTrace;
      var stackTrace;
      Error.stackTraceLimit = 1 + skip + length;
      Error.prepareStackTrace = function (err, stack) {
        stackTrace = stack;
      };
      new Error().stack;
      Error.stackTraceLimit = stackTraceLimit;
      Error.prepareStackTrace = prepareStackTrace;
      if (!stackTrace) return {
        internal: false,
        trace: ""
      };
      var shortStackTrace = stackTrace.slice(1 + skip, 1 + skip + length);
      return {
        internal: /[\\/]@babel[\\/]/.test(shortStackTrace[1].getFileName()),
        trace: shortStackTrace.map(function (frame) {
          return "    at " + frame;
        }).join("\n")
      };
    }
  
    function isArrayExpression$2(node, opts) {
      if (!node) return false;
      if (node.type !== "ArrayExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isAssignmentExpression$4(node, opts) {
      if (!node) return false;
      if (node.type !== "AssignmentExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isBinaryExpression$1(node, opts) {
      if (!node) return false;
      if (node.type !== "BinaryExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isInterpreterDirective(node, opts) {
      if (!node) return false;
      if (node.type !== "InterpreterDirective") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isDirective(node, opts) {
      if (!node) return false;
      if (node.type !== "Directive") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isDirectiveLiteral(node, opts) {
      if (!node) return false;
      if (node.type !== "DirectiveLiteral") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isBlockStatement$2(node, opts) {
      if (!node) return false;
      if (node.type !== "BlockStatement") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isBreakStatement(node, opts) {
      if (!node) return false;
      if (node.type !== "BreakStatement") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isCallExpression$8(node, opts) {
      if (!node) return false;
      if (node.type !== "CallExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isCatchClause(node, opts) {
      if (!node) return false;
      if (node.type !== "CatchClause") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isConditionalExpression$1(node, opts) {
      if (!node) return false;
      if (node.type !== "ConditionalExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isContinueStatement(node, opts) {
      if (!node) return false;
      if (node.type !== "ContinueStatement") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isDebuggerStatement(node, opts) {
      if (!node) return false;
      if (node.type !== "DebuggerStatement") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isDoWhileStatement(node, opts) {
      if (!node) return false;
      if (node.type !== "DoWhileStatement") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isEmptyStatement(node, opts) {
      if (!node) return false;
      if (node.type !== "EmptyStatement") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isExpressionStatement$3(node, opts) {
      if (!node) return false;
      if (node.type !== "ExpressionStatement") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isFile(node, opts) {
      if (!node) return false;
      if (node.type !== "File") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isForInStatement$1(node, opts) {
      if (!node) return false;
      if (node.type !== "ForInStatement") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isForStatement$3(node, opts) {
      if (!node) return false;
      if (node.type !== "ForStatement") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isFunctionDeclaration$2(node, opts) {
      if (!node) return false;
      if (node.type !== "FunctionDeclaration") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isFunctionExpression$1(node, opts) {
      if (!node) return false;
      if (node.type !== "FunctionExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isIdentifier$j(node, opts) {
      if (!node) return false;
      if (node.type !== "Identifier") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isIfStatement$2(node, opts) {
      if (!node) return false;
      if (node.type !== "IfStatement") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isLabeledStatement(node, opts) {
      if (!node) return false;
      if (node.type !== "LabeledStatement") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isStringLiteral$6(node, opts) {
      if (!node) return false;
      if (node.type !== "StringLiteral") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isNumericLiteral(node, opts) {
      if (!node) return false;
      if (node.type !== "NumericLiteral") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isNullLiteral$2(node, opts) {
      if (!node) return false;
      if (node.type !== "NullLiteral") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isBooleanLiteral(node, opts) {
      if (!node) return false;
      if (node.type !== "BooleanLiteral") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isRegExpLiteral$2(node, opts) {
      if (!node) return false;
      if (node.type !== "RegExpLiteral") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isLogicalExpression$1(node, opts) {
      if (!node) return false;
      if (node.type !== "LogicalExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isMemberExpression$8(node, opts) {
      if (!node) return false;
      if (node.type !== "MemberExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isNewExpression$4(node, opts) {
      if (!node) return false;
      if (node.type !== "NewExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isProgram$1(node, opts) {
      if (!node) return false;
      if (node.type !== "Program") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isObjectExpression$3(node, opts) {
      if (!node) return false;
      if (node.type !== "ObjectExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isObjectMethod$1(node, opts) {
      if (!node) return false;
      if (node.type !== "ObjectMethod") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isObjectProperty$5(node, opts) {
      if (!node) return false;
      if (node.type !== "ObjectProperty") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isRestElement$3(node, opts) {
      if (!node) return false;
      if (node.type !== "RestElement") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isReturnStatement$1(node, opts) {
      if (!node) return false;
      if (node.type !== "ReturnStatement") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isSequenceExpression$2(node, opts) {
      if (!node) return false;
      if (node.type !== "SequenceExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isParenthesizedExpression$1(node, opts) {
      if (!node) return false;
      if (node.type !== "ParenthesizedExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isSwitchCase(node, opts) {
      if (!node) return false;
      if (node.type !== "SwitchCase") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isSwitchStatement$1(node, opts) {
      if (!node) return false;
      if (node.type !== "SwitchStatement") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isThisExpression$2(node, opts) {
      if (!node) return false;
      if (node.type !== "ThisExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isThrowStatement$1(node, opts) {
      if (!node) return false;
      if (node.type !== "ThrowStatement") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTryStatement(node, opts) {
      if (!node) return false;
      if (node.type !== "TryStatement") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isUnaryExpression$1(node, opts) {
      if (!node) return false;
      if (node.type !== "UnaryExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isUpdateExpression$2(node, opts) {
      if (!node) return false;
      if (node.type !== "UpdateExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isVariableDeclaration$3(node, opts) {
      if (!node) return false;
      if (node.type !== "VariableDeclaration") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isVariableDeclarator$2(node, opts) {
      if (!node) return false;
      if (node.type !== "VariableDeclarator") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isWhileStatement$1(node, opts) {
      if (!node) return false;
      if (node.type !== "WhileStatement") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isWithStatement(node, opts) {
      if (!node) return false;
      if (node.type !== "WithStatement") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isAssignmentPattern$5(node, opts) {
      if (!node) return false;
      if (node.type !== "AssignmentPattern") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isArrayPattern$1(node, opts) {
      if (!node) return false;
      if (node.type !== "ArrayPattern") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isArrowFunctionExpression$1(node, opts) {
      if (!node) return false;
      if (node.type !== "ArrowFunctionExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isClassBody$2(node, opts) {
      if (!node) return false;
      if (node.type !== "ClassBody") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isClassExpression$1(node, opts) {
      if (!node) return false;
      if (node.type !== "ClassExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isClassDeclaration$2(node, opts) {
      if (!node) return false;
      if (node.type !== "ClassDeclaration") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isExportAllDeclaration$1(node, opts) {
      if (!node) return false;
      if (node.type !== "ExportAllDeclaration") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isExportDefaultDeclaration$3(node, opts) {
      if (!node) return false;
      if (node.type !== "ExportDefaultDeclaration") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isExportNamedDeclaration$3(node, opts) {
      if (!node) return false;
      if (node.type !== "ExportNamedDeclaration") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isExportSpecifier(node, opts) {
      if (!node) return false;
      if (node.type !== "ExportSpecifier") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isForOfStatement$2(node, opts) {
      if (!node) return false;
      if (node.type !== "ForOfStatement") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isImportDeclaration$2(node, opts) {
      if (!node) return false;
      if (node.type !== "ImportDeclaration") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isImportDefaultSpecifier$1(node, opts) {
      if (!node) return false;
      if (node.type !== "ImportDefaultSpecifier") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isImportNamespaceSpecifier$1(node, opts) {
      if (!node) return false;
      if (node.type !== "ImportNamespaceSpecifier") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isImportSpecifier$1(node, opts) {
      if (!node) return false;
      if (node.type !== "ImportSpecifier") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isMetaProperty$1(node, opts) {
      if (!node) return false;
      if (node.type !== "MetaProperty") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isClassMethod(node, opts) {
      if (!node) return false;
      if (node.type !== "ClassMethod") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isObjectPattern$2(node, opts) {
      if (!node) return false;
      if (node.type !== "ObjectPattern") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isSpreadElement$1(node, opts) {
      if (!node) return false;
      if (node.type !== "SpreadElement") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isSuper$3(node, opts) {
      if (!node) return false;
      if (node.type !== "Super") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTaggedTemplateExpression$2(node, opts) {
      if (!node) return false;
      if (node.type !== "TaggedTemplateExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTemplateElement(node, opts) {
      if (!node) return false;
      if (node.type !== "TemplateElement") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTemplateLiteral$2(node, opts) {
      if (!node) return false;
      if (node.type !== "TemplateLiteral") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isYieldExpression$1(node, opts) {
      if (!node) return false;
      if (node.type !== "YieldExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isAwaitExpression$1(node, opts) {
      if (!node) return false;
      if (node.type !== "AwaitExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isImport(node, opts) {
      if (!node) return false;
      if (node.type !== "Import") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isBigIntLiteral(node, opts) {
      if (!node) return false;
      if (node.type !== "BigIntLiteral") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isExportNamespaceSpecifier$1(node, opts) {
      if (!node) return false;
      if (node.type !== "ExportNamespaceSpecifier") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isOptionalMemberExpression$3(node, opts) {
      if (!node) return false;
      if (node.type !== "OptionalMemberExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isOptionalCallExpression$3(node, opts) {
      if (!node) return false;
      if (node.type !== "OptionalCallExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isClassProperty(node, opts) {
      if (!node) return false;
      if (node.type !== "ClassProperty") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isClassAccessorProperty(node, opts) {
      if (!node) return false;
      if (node.type !== "ClassAccessorProperty") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isClassPrivateProperty(node, opts) {
      if (!node) return false;
      if (node.type !== "ClassPrivateProperty") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isClassPrivateMethod(node, opts) {
      if (!node) return false;
      if (node.type !== "ClassPrivateMethod") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isPrivateName$3(node, opts) {
      if (!node) return false;
      if (node.type !== "PrivateName") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isStaticBlock(node, opts) {
      if (!node) return false;
      if (node.type !== "StaticBlock") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isAnyTypeAnnotation$1(node, opts) {
      if (!node) return false;
      if (node.type !== "AnyTypeAnnotation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isArrayTypeAnnotation$2(node, opts) {
      if (!node) return false;
      if (node.type !== "ArrayTypeAnnotation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isBooleanTypeAnnotation$1(node, opts) {
      if (!node) return false;
      if (node.type !== "BooleanTypeAnnotation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isBooleanLiteralTypeAnnotation(node, opts) {
      if (!node) return false;
      if (node.type !== "BooleanLiteralTypeAnnotation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isNullLiteralTypeAnnotation(node, opts) {
      if (!node) return false;
      if (node.type !== "NullLiteralTypeAnnotation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isClassImplements(node, opts) {
      if (!node) return false;
      if (node.type !== "ClassImplements") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isDeclareClass(node, opts) {
      if (!node) return false;
      if (node.type !== "DeclareClass") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isDeclareFunction(node, opts) {
      if (!node) return false;
      if (node.type !== "DeclareFunction") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isDeclareInterface(node, opts) {
      if (!node) return false;
      if (node.type !== "DeclareInterface") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isDeclareModule(node, opts) {
      if (!node) return false;
      if (node.type !== "DeclareModule") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isDeclareModuleExports(node, opts) {
      if (!node) return false;
      if (node.type !== "DeclareModuleExports") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isDeclareTypeAlias(node, opts) {
      if (!node) return false;
      if (node.type !== "DeclareTypeAlias") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isDeclareOpaqueType(node, opts) {
      if (!node) return false;
      if (node.type !== "DeclareOpaqueType") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isDeclareVariable(node, opts) {
      if (!node) return false;
      if (node.type !== "DeclareVariable") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isDeclareExportDeclaration$1(node, opts) {
      if (!node) return false;
      if (node.type !== "DeclareExportDeclaration") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isDeclareExportAllDeclaration(node, opts) {
      if (!node) return false;
      if (node.type !== "DeclareExportAllDeclaration") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isDeclaredPredicate(node, opts) {
      if (!node) return false;
      if (node.type !== "DeclaredPredicate") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isExistsTypeAnnotation(node, opts) {
      if (!node) return false;
      if (node.type !== "ExistsTypeAnnotation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isFunctionTypeAnnotation(node, opts) {
      if (!node) return false;
      if (node.type !== "FunctionTypeAnnotation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isFunctionTypeParam(node, opts) {
      if (!node) return false;
      if (node.type !== "FunctionTypeParam") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isGenericTypeAnnotation$1(node, opts) {
      if (!node) return false;
      if (node.type !== "GenericTypeAnnotation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isInferredPredicate(node, opts) {
      if (!node) return false;
      if (node.type !== "InferredPredicate") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isInterfaceExtends(node, opts) {
      if (!node) return false;
      if (node.type !== "InterfaceExtends") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isInterfaceDeclaration(node, opts) {
      if (!node) return false;
      if (node.type !== "InterfaceDeclaration") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isInterfaceTypeAnnotation(node, opts) {
      if (!node) return false;
      if (node.type !== "InterfaceTypeAnnotation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isIntersectionTypeAnnotation$1(node, opts) {
      if (!node) return false;
      if (node.type !== "IntersectionTypeAnnotation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isMixedTypeAnnotation$1(node, opts) {
      if (!node) return false;
      if (node.type !== "MixedTypeAnnotation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isEmptyTypeAnnotation$1(node, opts) {
      if (!node) return false;
      if (node.type !== "EmptyTypeAnnotation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isNullableTypeAnnotation$1(node, opts) {
      if (!node) return false;
      if (node.type !== "NullableTypeAnnotation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isNumberLiteralTypeAnnotation(node, opts) {
      if (!node) return false;
      if (node.type !== "NumberLiteralTypeAnnotation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isNumberTypeAnnotation$1(node, opts) {
      if (!node) return false;
      if (node.type !== "NumberTypeAnnotation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isObjectTypeAnnotation(node, opts) {
      if (!node) return false;
      if (node.type !== "ObjectTypeAnnotation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isObjectTypeInternalSlot(node, opts) {
      if (!node) return false;
      if (node.type !== "ObjectTypeInternalSlot") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isObjectTypeCallProperty(node, opts) {
      if (!node) return false;
      if (node.type !== "ObjectTypeCallProperty") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isObjectTypeIndexer(node, opts) {
      if (!node) return false;
      if (node.type !== "ObjectTypeIndexer") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isObjectTypeProperty(node, opts) {
      if (!node) return false;
      if (node.type !== "ObjectTypeProperty") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isObjectTypeSpreadProperty(node, opts) {
      if (!node) return false;
      if (node.type !== "ObjectTypeSpreadProperty") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isOpaqueType(node, opts) {
      if (!node) return false;
      if (node.type !== "OpaqueType") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isQualifiedTypeIdentifier(node, opts) {
      if (!node) return false;
      if (node.type !== "QualifiedTypeIdentifier") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isStringLiteralTypeAnnotation(node, opts) {
      if (!node) return false;
      if (node.type !== "StringLiteralTypeAnnotation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isStringTypeAnnotation$1(node, opts) {
      if (!node) return false;
      if (node.type !== "StringTypeAnnotation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isSymbolTypeAnnotation(node, opts) {
      if (!node) return false;
      if (node.type !== "SymbolTypeAnnotation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isThisTypeAnnotation(node, opts) {
      if (!node) return false;
      if (node.type !== "ThisTypeAnnotation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTupleTypeAnnotation$1(node, opts) {
      if (!node) return false;
      if (node.type !== "TupleTypeAnnotation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTypeofTypeAnnotation(node, opts) {
      if (!node) return false;
      if (node.type !== "TypeofTypeAnnotation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTypeAlias(node, opts) {
      if (!node) return false;
      if (node.type !== "TypeAlias") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTypeAnnotation$2(node, opts) {
      if (!node) return false;
      if (node.type !== "TypeAnnotation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTypeCastExpression$1(node, opts) {
      if (!node) return false;
      if (node.type !== "TypeCastExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTypeParameter(node, opts) {
      if (!node) return false;
      if (node.type !== "TypeParameter") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTypeParameterDeclaration(node, opts) {
      if (!node) return false;
      if (node.type !== "TypeParameterDeclaration") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTypeParameterInstantiation(node, opts) {
      if (!node) return false;
      if (node.type !== "TypeParameterInstantiation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isUnionTypeAnnotation$2(node, opts) {
      if (!node) return false;
      if (node.type !== "UnionTypeAnnotation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isVariance(node, opts) {
      if (!node) return false;
      if (node.type !== "Variance") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isVoidTypeAnnotation$1(node, opts) {
      if (!node) return false;
      if (node.type !== "VoidTypeAnnotation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isEnumDeclaration(node, opts) {
      if (!node) return false;
      if (node.type !== "EnumDeclaration") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isEnumBooleanBody(node, opts) {
      if (!node) return false;
      if (node.type !== "EnumBooleanBody") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isEnumNumberBody(node, opts) {
      if (!node) return false;
      if (node.type !== "EnumNumberBody") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isEnumStringBody(node, opts) {
      if (!node) return false;
      if (node.type !== "EnumStringBody") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isEnumSymbolBody(node, opts) {
      if (!node) return false;
      if (node.type !== "EnumSymbolBody") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isEnumBooleanMember(node, opts) {
      if (!node) return false;
      if (node.type !== "EnumBooleanMember") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isEnumNumberMember(node, opts) {
      if (!node) return false;
      if (node.type !== "EnumNumberMember") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isEnumStringMember(node, opts) {
      if (!node) return false;
      if (node.type !== "EnumStringMember") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isEnumDefaultedMember(node, opts) {
      if (!node) return false;
      if (node.type !== "EnumDefaultedMember") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isIndexedAccessType$1(node, opts) {
      if (!node) return false;
      if (node.type !== "IndexedAccessType") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isOptionalIndexedAccessType(node, opts) {
      if (!node) return false;
      if (node.type !== "OptionalIndexedAccessType") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isJSXAttribute(node, opts) {
      if (!node) return false;
      if (node.type !== "JSXAttribute") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isJSXClosingElement(node, opts) {
      if (!node) return false;
      if (node.type !== "JSXClosingElement") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isJSXElement(node, opts) {
      if (!node) return false;
      if (node.type !== "JSXElement") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isJSXEmptyExpression(node, opts) {
      if (!node) return false;
      if (node.type !== "JSXEmptyExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isJSXExpressionContainer$1(node, opts) {
      if (!node) return false;
      if (node.type !== "JSXExpressionContainer") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isJSXSpreadChild(node, opts) {
      if (!node) return false;
      if (node.type !== "JSXSpreadChild") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isJSXIdentifier$3(node, opts) {
      if (!node) return false;
      if (node.type !== "JSXIdentifier") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isJSXMemberExpression$2(node, opts) {
      if (!node) return false;
      if (node.type !== "JSXMemberExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isJSXNamespacedName$1(node, opts) {
      if (!node) return false;
      if (node.type !== "JSXNamespacedName") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isJSXOpeningElement(node, opts) {
      if (!node) return false;
      if (node.type !== "JSXOpeningElement") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isJSXSpreadAttribute$1(node, opts) {
      if (!node) return false;
      if (node.type !== "JSXSpreadAttribute") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isJSXText(node, opts) {
      if (!node) return false;
      if (node.type !== "JSXText") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isJSXFragment(node, opts) {
      if (!node) return false;
      if (node.type !== "JSXFragment") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isJSXOpeningFragment(node, opts) {
      if (!node) return false;
      if (node.type !== "JSXOpeningFragment") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isJSXClosingFragment(node, opts) {
      if (!node) return false;
      if (node.type !== "JSXClosingFragment") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isNoop(node, opts) {
      if (!node) return false;
      if (node.type !== "Noop") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isPlaceholder$1(node, opts) {
      if (!node) return false;
      if (node.type !== "Placeholder") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isV8IntrinsicIdentifier(node, opts) {
      if (!node) return false;
      if (node.type !== "V8IntrinsicIdentifier") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isArgumentPlaceholder(node, opts) {
      if (!node) return false;
      if (node.type !== "ArgumentPlaceholder") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isBindExpression(node, opts) {
      if (!node) return false;
      if (node.type !== "BindExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isImportAttribute(node, opts) {
      if (!node) return false;
      if (node.type !== "ImportAttribute") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isDecorator(node, opts) {
      if (!node) return false;
      if (node.type !== "Decorator") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isDoExpression(node, opts) {
      if (!node) return false;
      if (node.type !== "DoExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isExportDefaultSpecifier$1(node, opts) {
      if (!node) return false;
      if (node.type !== "ExportDefaultSpecifier") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isRecordExpression$1(node, opts) {
      if (!node) return false;
      if (node.type !== "RecordExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTupleExpression$1(node, opts) {
      if (!node) return false;
      if (node.type !== "TupleExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isDecimalLiteral(node, opts) {
      if (!node) return false;
      if (node.type !== "DecimalLiteral") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isModuleExpression(node, opts) {
      if (!node) return false;
      if (node.type !== "ModuleExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTopicReference$1(node, opts) {
      if (!node) return false;
      if (node.type !== "TopicReference") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isPipelineTopicExpression(node, opts) {
      if (!node) return false;
      if (node.type !== "PipelineTopicExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isPipelineBareFunction(node, opts) {
      if (!node) return false;
      if (node.type !== "PipelineBareFunction") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isPipelinePrimaryTopicReference(node, opts) {
      if (!node) return false;
      if (node.type !== "PipelinePrimaryTopicReference") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSParameterProperty(node, opts) {
      if (!node) return false;
      if (node.type !== "TSParameterProperty") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSDeclareFunction(node, opts) {
      if (!node) return false;
      if (node.type !== "TSDeclareFunction") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSDeclareMethod(node, opts) {
      if (!node) return false;
      if (node.type !== "TSDeclareMethod") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSQualifiedName(node, opts) {
      if (!node) return false;
      if (node.type !== "TSQualifiedName") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSCallSignatureDeclaration(node, opts) {
      if (!node) return false;
      if (node.type !== "TSCallSignatureDeclaration") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSConstructSignatureDeclaration(node, opts) {
      if (!node) return false;
      if (node.type !== "TSConstructSignatureDeclaration") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSPropertySignature(node, opts) {
      if (!node) return false;
      if (node.type !== "TSPropertySignature") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSMethodSignature(node, opts) {
      if (!node) return false;
      if (node.type !== "TSMethodSignature") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSIndexSignature(node, opts) {
      if (!node) return false;
      if (node.type !== "TSIndexSignature") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSAnyKeyword(node, opts) {
      if (!node) return false;
      if (node.type !== "TSAnyKeyword") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSBooleanKeyword(node, opts) {
      if (!node) return false;
      if (node.type !== "TSBooleanKeyword") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSBigIntKeyword(node, opts) {
      if (!node) return false;
      if (node.type !== "TSBigIntKeyword") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSIntrinsicKeyword(node, opts) {
      if (!node) return false;
      if (node.type !== "TSIntrinsicKeyword") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSNeverKeyword(node, opts) {
      if (!node) return false;
      if (node.type !== "TSNeverKeyword") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSNullKeyword(node, opts) {
      if (!node) return false;
      if (node.type !== "TSNullKeyword") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSNumberKeyword(node, opts) {
      if (!node) return false;
      if (node.type !== "TSNumberKeyword") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSObjectKeyword(node, opts) {
      if (!node) return false;
      if (node.type !== "TSObjectKeyword") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSStringKeyword(node, opts) {
      if (!node) return false;
      if (node.type !== "TSStringKeyword") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSSymbolKeyword(node, opts) {
      if (!node) return false;
      if (node.type !== "TSSymbolKeyword") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSUndefinedKeyword(node, opts) {
      if (!node) return false;
      if (node.type !== "TSUndefinedKeyword") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSUnknownKeyword(node, opts) {
      if (!node) return false;
      if (node.type !== "TSUnknownKeyword") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSVoidKeyword(node, opts) {
      if (!node) return false;
      if (node.type !== "TSVoidKeyword") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSThisType(node, opts) {
      if (!node) return false;
      if (node.type !== "TSThisType") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSFunctionType(node, opts) {
      if (!node) return false;
      if (node.type !== "TSFunctionType") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSConstructorType(node, opts) {
      if (!node) return false;
      if (node.type !== "TSConstructorType") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSTypeReference$1(node, opts) {
      if (!node) return false;
      if (node.type !== "TSTypeReference") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSTypePredicate(node, opts) {
      if (!node) return false;
      if (node.type !== "TSTypePredicate") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSTypeQuery(node, opts) {
      if (!node) return false;
      if (node.type !== "TSTypeQuery") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSTypeLiteral(node, opts) {
      if (!node) return false;
      if (node.type !== "TSTypeLiteral") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSArrayType$2(node, opts) {
      if (!node) return false;
      if (node.type !== "TSArrayType") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSTupleType(node, opts) {
      if (!node) return false;
      if (node.type !== "TSTupleType") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSOptionalType$1(node, opts) {
      if (!node) return false;
      if (node.type !== "TSOptionalType") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSRestType$1(node, opts) {
      if (!node) return false;
      if (node.type !== "TSRestType") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSNamedTupleMember(node, opts) {
      if (!node) return false;
      if (node.type !== "TSNamedTupleMember") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSUnionType$1(node, opts) {
      if (!node) return false;
      if (node.type !== "TSUnionType") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSIntersectionType$1(node, opts) {
      if (!node) return false;
      if (node.type !== "TSIntersectionType") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSConditionalType(node, opts) {
      if (!node) return false;
      if (node.type !== "TSConditionalType") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSInferType(node, opts) {
      if (!node) return false;
      if (node.type !== "TSInferType") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSParenthesizedType(node, opts) {
      if (!node) return false;
      if (node.type !== "TSParenthesizedType") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSTypeOperator(node, opts) {
      if (!node) return false;
      if (node.type !== "TSTypeOperator") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSIndexedAccessType(node, opts) {
      if (!node) return false;
      if (node.type !== "TSIndexedAccessType") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSMappedType(node, opts) {
      if (!node) return false;
      if (node.type !== "TSMappedType") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSLiteralType(node, opts) {
      if (!node) return false;
      if (node.type !== "TSLiteralType") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSExpressionWithTypeArguments(node, opts) {
      if (!node) return false;
      if (node.type !== "TSExpressionWithTypeArguments") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSInterfaceDeclaration(node, opts) {
      if (!node) return false;
      if (node.type !== "TSInterfaceDeclaration") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSInterfaceBody$1(node, opts) {
      if (!node) return false;
      if (node.type !== "TSInterfaceBody") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSTypeAliasDeclaration(node, opts) {
      if (!node) return false;
      if (node.type !== "TSTypeAliasDeclaration") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSInstantiationExpression$1(node, opts) {
      if (!node) return false;
      if (node.type !== "TSInstantiationExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSAsExpression$2(node, opts) {
      if (!node) return false;
      if (node.type !== "TSAsExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSSatisfiesExpression$2(node, opts) {
      if (!node) return false;
      if (node.type !== "TSSatisfiesExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSTypeAssertion$2(node, opts) {
      if (!node) return false;
      if (node.type !== "TSTypeAssertion") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSEnumDeclaration$1(node, opts) {
      if (!node) return false;
      if (node.type !== "TSEnumDeclaration") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSEnumMember(node, opts) {
      if (!node) return false;
      if (node.type !== "TSEnumMember") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSModuleDeclaration(node, opts) {
      if (!node) return false;
      if (node.type !== "TSModuleDeclaration") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSModuleBlock(node, opts) {
      if (!node) return false;
      if (node.type !== "TSModuleBlock") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSImportType(node, opts) {
      if (!node) return false;
      if (node.type !== "TSImportType") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSImportEqualsDeclaration(node, opts) {
      if (!node) return false;
      if (node.type !== "TSImportEqualsDeclaration") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSExternalModuleReference(node, opts) {
      if (!node) return false;
      if (node.type !== "TSExternalModuleReference") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSNonNullExpression$2(node, opts) {
      if (!node) return false;
      if (node.type !== "TSNonNullExpression") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSExportAssignment(node, opts) {
      if (!node) return false;
      if (node.type !== "TSExportAssignment") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSNamespaceExportDeclaration(node, opts) {
      if (!node) return false;
      if (node.type !== "TSNamespaceExportDeclaration") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSTypeAnnotation$1(node, opts) {
      if (!node) return false;
      if (node.type !== "TSTypeAnnotation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSTypeParameterInstantiation(node, opts) {
      if (!node) return false;
      if (node.type !== "TSTypeParameterInstantiation") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSTypeParameterDeclaration(node, opts) {
      if (!node) return false;
      if (node.type !== "TSTypeParameterDeclaration") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSTypeParameter(node, opts) {
      if (!node) return false;
      if (node.type !== "TSTypeParameter") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isStandardized(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "ArrayExpression":
        case "AssignmentExpression":
        case "BinaryExpression":
        case "InterpreterDirective":
        case "Directive":
        case "DirectiveLiteral":
        case "BlockStatement":
        case "BreakStatement":
        case "CallExpression":
        case "CatchClause":
        case "ConditionalExpression":
        case "ContinueStatement":
        case "DebuggerStatement":
        case "DoWhileStatement":
        case "EmptyStatement":
        case "ExpressionStatement":
        case "File":
        case "ForInStatement":
        case "ForStatement":
        case "FunctionDeclaration":
        case "FunctionExpression":
        case "Identifier":
        case "IfStatement":
        case "LabeledStatement":
        case "StringLiteral":
        case "NumericLiteral":
        case "NullLiteral":
        case "BooleanLiteral":
        case "RegExpLiteral":
        case "LogicalExpression":
        case "MemberExpression":
        case "NewExpression":
        case "Program":
        case "ObjectExpression":
        case "ObjectMethod":
        case "ObjectProperty":
        case "RestElement":
        case "ReturnStatement":
        case "SequenceExpression":
        case "ParenthesizedExpression":
        case "SwitchCase":
        case "SwitchStatement":
        case "ThisExpression":
        case "ThrowStatement":
        case "TryStatement":
        case "UnaryExpression":
        case "UpdateExpression":
        case "VariableDeclaration":
        case "VariableDeclarator":
        case "WhileStatement":
        case "WithStatement":
        case "AssignmentPattern":
        case "ArrayPattern":
        case "ArrowFunctionExpression":
        case "ClassBody":
        case "ClassExpression":
        case "ClassDeclaration":
        case "ExportAllDeclaration":
        case "ExportDefaultDeclaration":
        case "ExportNamedDeclaration":
        case "ExportSpecifier":
        case "ForOfStatement":
        case "ImportDeclaration":
        case "ImportDefaultSpecifier":
        case "ImportNamespaceSpecifier":
        case "ImportSpecifier":
        case "MetaProperty":
        case "ClassMethod":
        case "ObjectPattern":
        case "SpreadElement":
        case "Super":
        case "TaggedTemplateExpression":
        case "TemplateElement":
        case "TemplateLiteral":
        case "YieldExpression":
        case "AwaitExpression":
        case "Import":
        case "BigIntLiteral":
        case "ExportNamespaceSpecifier":
        case "OptionalMemberExpression":
        case "OptionalCallExpression":
        case "ClassProperty":
        case "ClassAccessorProperty":
        case "ClassPrivateProperty":
        case "ClassPrivateMethod":
        case "PrivateName":
        case "StaticBlock":
          break;
        case "Placeholder":
          switch (node.expectedNode) {
            case "Identifier":
            case "StringLiteral":
            case "BlockStatement":
            case "ClassBody":
              break;
            default:
              return false;
          }
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isExpression$4(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "ArrayExpression":
        case "AssignmentExpression":
        case "BinaryExpression":
        case "CallExpression":
        case "ConditionalExpression":
        case "FunctionExpression":
        case "Identifier":
        case "StringLiteral":
        case "NumericLiteral":
        case "NullLiteral":
        case "BooleanLiteral":
        case "RegExpLiteral":
        case "LogicalExpression":
        case "MemberExpression":
        case "NewExpression":
        case "ObjectExpression":
        case "SequenceExpression":
        case "ParenthesizedExpression":
        case "ThisExpression":
        case "UnaryExpression":
        case "UpdateExpression":
        case "ArrowFunctionExpression":
        case "ClassExpression":
        case "MetaProperty":
        case "Super":
        case "TaggedTemplateExpression":
        case "TemplateLiteral":
        case "YieldExpression":
        case "AwaitExpression":
        case "Import":
        case "BigIntLiteral":
        case "OptionalMemberExpression":
        case "OptionalCallExpression":
        case "TypeCastExpression":
        case "JSXElement":
        case "JSXFragment":
        case "BindExpression":
        case "DoExpression":
        case "RecordExpression":
        case "TupleExpression":
        case "DecimalLiteral":
        case "ModuleExpression":
        case "TopicReference":
        case "PipelineTopicExpression":
        case "PipelineBareFunction":
        case "PipelinePrimaryTopicReference":
        case "TSInstantiationExpression":
        case "TSAsExpression":
        case "TSSatisfiesExpression":
        case "TSTypeAssertion":
        case "TSNonNullExpression":
          break;
        case "Placeholder":
          switch (node.expectedNode) {
            case "Expression":
            case "Identifier":
            case "StringLiteral":
              break;
            default:
              return false;
          }
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isBinary$3(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "BinaryExpression":
        case "LogicalExpression":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isScopable(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "BlockStatement":
        case "CatchClause":
        case "DoWhileStatement":
        case "ForInStatement":
        case "ForStatement":
        case "FunctionDeclaration":
        case "FunctionExpression":
        case "Program":
        case "ObjectMethod":
        case "SwitchStatement":
        case "WhileStatement":
        case "ArrowFunctionExpression":
        case "ClassExpression":
        case "ClassDeclaration":
        case "ForOfStatement":
        case "ClassMethod":
        case "ClassPrivateMethod":
        case "StaticBlock":
        case "TSModuleBlock":
          break;
        case "Placeholder":
          switch (node.expectedNode) {
            case "BlockStatement":
              break;
            default:
              return false;
          }
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isBlockParent(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "BlockStatement":
        case "CatchClause":
        case "DoWhileStatement":
        case "ForInStatement":
        case "ForStatement":
        case "FunctionDeclaration":
        case "FunctionExpression":
        case "Program":
        case "ObjectMethod":
        case "SwitchStatement":
        case "WhileStatement":
        case "ArrowFunctionExpression":
        case "ForOfStatement":
        case "ClassMethod":
        case "ClassPrivateMethod":
        case "StaticBlock":
        case "TSModuleBlock":
          break;
        case "Placeholder":
          switch (node.expectedNode) {
            case "BlockStatement":
              break;
            default:
              return false;
          }
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isBlock(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "BlockStatement":
        case "Program":
        case "TSModuleBlock":
          break;
        case "Placeholder":
          switch (node.expectedNode) {
            case "BlockStatement":
              break;
            default:
              return false;
          }
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isStatement$8(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "BlockStatement":
        case "BreakStatement":
        case "ContinueStatement":
        case "DebuggerStatement":
        case "DoWhileStatement":
        case "EmptyStatement":
        case "ExpressionStatement":
        case "ForInStatement":
        case "ForStatement":
        case "FunctionDeclaration":
        case "IfStatement":
        case "LabeledStatement":
        case "ReturnStatement":
        case "SwitchStatement":
        case "ThrowStatement":
        case "TryStatement":
        case "VariableDeclaration":
        case "WhileStatement":
        case "WithStatement":
        case "ClassDeclaration":
        case "ExportAllDeclaration":
        case "ExportDefaultDeclaration":
        case "ExportNamedDeclaration":
        case "ForOfStatement":
        case "ImportDeclaration":
        case "DeclareClass":
        case "DeclareFunction":
        case "DeclareInterface":
        case "DeclareModule":
        case "DeclareModuleExports":
        case "DeclareTypeAlias":
        case "DeclareOpaqueType":
        case "DeclareVariable":
        case "DeclareExportDeclaration":
        case "DeclareExportAllDeclaration":
        case "InterfaceDeclaration":
        case "OpaqueType":
        case "TypeAlias":
        case "EnumDeclaration":
        case "TSDeclareFunction":
        case "TSInterfaceDeclaration":
        case "TSTypeAliasDeclaration":
        case "TSEnumDeclaration":
        case "TSModuleDeclaration":
        case "TSImportEqualsDeclaration":
        case "TSExportAssignment":
        case "TSNamespaceExportDeclaration":
          break;
        case "Placeholder":
          switch (node.expectedNode) {
            case "Statement":
            case "Declaration":
            case "BlockStatement":
              break;
            default:
              return false;
          }
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTerminatorless(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "BreakStatement":
        case "ContinueStatement":
        case "ReturnStatement":
        case "ThrowStatement":
        case "YieldExpression":
        case "AwaitExpression":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isCompletionStatement(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "BreakStatement":
        case "ContinueStatement":
        case "ReturnStatement":
        case "ThrowStatement":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isConditional$1(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "ConditionalExpression":
        case "IfStatement":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isLoop$1(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "DoWhileStatement":
        case "ForInStatement":
        case "ForStatement":
        case "WhileStatement":
        case "ForOfStatement":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isWhile(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "DoWhileStatement":
        case "WhileStatement":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isExpressionWrapper(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "ExpressionStatement":
        case "ParenthesizedExpression":
        case "TypeCastExpression":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isFor$2(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "ForInStatement":
        case "ForStatement":
        case "ForOfStatement":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isForXStatement$1(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "ForInStatement":
        case "ForOfStatement":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isFunction$4(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "FunctionDeclaration":
        case "FunctionExpression":
        case "ObjectMethod":
        case "ArrowFunctionExpression":
        case "ClassMethod":
        case "ClassPrivateMethod":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isFunctionParent(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "FunctionDeclaration":
        case "FunctionExpression":
        case "ObjectMethod":
        case "ArrowFunctionExpression":
        case "ClassMethod":
        case "ClassPrivateMethod":
        case "StaticBlock":
        case "TSModuleBlock":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isPureish$2(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "FunctionDeclaration":
        case "FunctionExpression":
        case "StringLiteral":
        case "NumericLiteral":
        case "NullLiteral":
        case "BooleanLiteral":
        case "RegExpLiteral":
        case "ArrowFunctionExpression":
        case "BigIntLiteral":
        case "DecimalLiteral":
          break;
        case "Placeholder":
          switch (node.expectedNode) {
            case "StringLiteral":
              break;
            default:
              return false;
          }
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isDeclaration$1(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "FunctionDeclaration":
        case "VariableDeclaration":
        case "ClassDeclaration":
        case "ExportAllDeclaration":
        case "ExportDefaultDeclaration":
        case "ExportNamedDeclaration":
        case "ImportDeclaration":
        case "DeclareClass":
        case "DeclareFunction":
        case "DeclareInterface":
        case "DeclareModule":
        case "DeclareModuleExports":
        case "DeclareTypeAlias":
        case "DeclareOpaqueType":
        case "DeclareVariable":
        case "DeclareExportDeclaration":
        case "DeclareExportAllDeclaration":
        case "InterfaceDeclaration":
        case "OpaqueType":
        case "TypeAlias":
        case "EnumDeclaration":
        case "TSDeclareFunction":
        case "TSInterfaceDeclaration":
        case "TSTypeAliasDeclaration":
        case "TSEnumDeclaration":
        case "TSModuleDeclaration":
          break;
        case "Placeholder":
          switch (node.expectedNode) {
            case "Declaration":
              break;
            default:
              return false;
          }
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isPatternLike(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "Identifier":
        case "RestElement":
        case "AssignmentPattern":
        case "ArrayPattern":
        case "ObjectPattern":
        case "TSAsExpression":
        case "TSSatisfiesExpression":
        case "TSTypeAssertion":
        case "TSNonNullExpression":
          break;
        case "Placeholder":
          switch (node.expectedNode) {
            case "Pattern":
            case "Identifier":
              break;
            default:
              return false;
          }
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isLVal(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "Identifier":
        case "MemberExpression":
        case "RestElement":
        case "AssignmentPattern":
        case "ArrayPattern":
        case "ObjectPattern":
        case "TSParameterProperty":
        case "TSAsExpression":
        case "TSSatisfiesExpression":
        case "TSTypeAssertion":
        case "TSNonNullExpression":
          break;
        case "Placeholder":
          switch (node.expectedNode) {
            case "Pattern":
            case "Identifier":
              break;
            default:
              return false;
          }
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSEntityName(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "Identifier":
        case "TSQualifiedName":
          break;
        case "Placeholder":
          switch (node.expectedNode) {
            case "Identifier":
              break;
            default:
              return false;
          }
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isLiteral$6(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "StringLiteral":
        case "NumericLiteral":
        case "NullLiteral":
        case "BooleanLiteral":
        case "RegExpLiteral":
        case "TemplateLiteral":
        case "BigIntLiteral":
        case "DecimalLiteral":
          break;
        case "Placeholder":
          switch (node.expectedNode) {
            case "StringLiteral":
              break;
            default:
              return false;
          }
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isUserWhitespacable(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "ObjectMethod":
        case "ObjectProperty":
        case "ObjectTypeInternalSlot":
        case "ObjectTypeCallProperty":
        case "ObjectTypeIndexer":
        case "ObjectTypeProperty":
        case "ObjectTypeSpreadProperty":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isMethod$1(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "ObjectMethod":
        case "ClassMethod":
        case "ClassPrivateMethod":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isObjectMember(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "ObjectMethod":
        case "ObjectProperty":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isProperty$1(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "ObjectProperty":
        case "ClassProperty":
        case "ClassAccessorProperty":
        case "ClassPrivateProperty":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isUnaryLike$1(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "UnaryExpression":
        case "SpreadElement":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isPattern(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "AssignmentPattern":
        case "ArrayPattern":
        case "ObjectPattern":
          break;
        case "Placeholder":
          switch (node.expectedNode) {
            case "Pattern":
              break;
            default:
              return false;
          }
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isClass$2(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "ClassExpression":
        case "ClassDeclaration":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isImportOrExportDeclaration(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "ExportAllDeclaration":
        case "ExportDefaultDeclaration":
        case "ExportNamedDeclaration":
        case "ImportDeclaration":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isExportDeclaration$3(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "ExportAllDeclaration":
        case "ExportDefaultDeclaration":
        case "ExportNamedDeclaration":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isModuleSpecifier$1(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "ExportSpecifier":
        case "ImportDefaultSpecifier":
        case "ImportNamespaceSpecifier":
        case "ImportSpecifier":
        case "ExportNamespaceSpecifier":
        case "ExportDefaultSpecifier":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isAccessor(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "ClassAccessorProperty":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isPrivate(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "ClassPrivateProperty":
        case "ClassPrivateMethod":
        case "PrivateName":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isFlow$1(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "AnyTypeAnnotation":
        case "ArrayTypeAnnotation":
        case "BooleanTypeAnnotation":
        case "BooleanLiteralTypeAnnotation":
        case "NullLiteralTypeAnnotation":
        case "ClassImplements":
        case "DeclareClass":
        case "DeclareFunction":
        case "DeclareInterface":
        case "DeclareModule":
        case "DeclareModuleExports":
        case "DeclareTypeAlias":
        case "DeclareOpaqueType":
        case "DeclareVariable":
        case "DeclareExportDeclaration":
        case "DeclareExportAllDeclaration":
        case "DeclaredPredicate":
        case "ExistsTypeAnnotation":
        case "FunctionTypeAnnotation":
        case "FunctionTypeParam":
        case "GenericTypeAnnotation":
        case "InferredPredicate":
        case "InterfaceExtends":
        case "InterfaceDeclaration":
        case "InterfaceTypeAnnotation":
        case "IntersectionTypeAnnotation":
        case "MixedTypeAnnotation":
        case "EmptyTypeAnnotation":
        case "NullableTypeAnnotation":
        case "NumberLiteralTypeAnnotation":
        case "NumberTypeAnnotation":
        case "ObjectTypeAnnotation":
        case "ObjectTypeInternalSlot":
        case "ObjectTypeCallProperty":
        case "ObjectTypeIndexer":
        case "ObjectTypeProperty":
        case "ObjectTypeSpreadProperty":
        case "OpaqueType":
        case "QualifiedTypeIdentifier":
        case "StringLiteralTypeAnnotation":
        case "StringTypeAnnotation":
        case "SymbolTypeAnnotation":
        case "ThisTypeAnnotation":
        case "TupleTypeAnnotation":
        case "TypeofTypeAnnotation":
        case "TypeAlias":
        case "TypeAnnotation":
        case "TypeCastExpression":
        case "TypeParameter":
        case "TypeParameterDeclaration":
        case "TypeParameterInstantiation":
        case "UnionTypeAnnotation":
        case "Variance":
        case "VoidTypeAnnotation":
        case "EnumDeclaration":
        case "EnumBooleanBody":
        case "EnumNumberBody":
        case "EnumStringBody":
        case "EnumSymbolBody":
        case "EnumBooleanMember":
        case "EnumNumberMember":
        case "EnumStringMember":
        case "EnumDefaultedMember":
        case "IndexedAccessType":
        case "OptionalIndexedAccessType":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isFlowType$1(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "AnyTypeAnnotation":
        case "ArrayTypeAnnotation":
        case "BooleanTypeAnnotation":
        case "BooleanLiteralTypeAnnotation":
        case "NullLiteralTypeAnnotation":
        case "ExistsTypeAnnotation":
        case "FunctionTypeAnnotation":
        case "GenericTypeAnnotation":
        case "InterfaceTypeAnnotation":
        case "IntersectionTypeAnnotation":
        case "MixedTypeAnnotation":
        case "EmptyTypeAnnotation":
        case "NullableTypeAnnotation":
        case "NumberLiteralTypeAnnotation":
        case "NumberTypeAnnotation":
        case "ObjectTypeAnnotation":
        case "StringLiteralTypeAnnotation":
        case "StringTypeAnnotation":
        case "SymbolTypeAnnotation":
        case "ThisTypeAnnotation":
        case "TupleTypeAnnotation":
        case "TypeofTypeAnnotation":
        case "UnionTypeAnnotation":
        case "VoidTypeAnnotation":
        case "IndexedAccessType":
        case "OptionalIndexedAccessType":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isFlowBaseAnnotation$1(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "AnyTypeAnnotation":
        case "BooleanTypeAnnotation":
        case "NullLiteralTypeAnnotation":
        case "MixedTypeAnnotation":
        case "EmptyTypeAnnotation":
        case "NumberTypeAnnotation":
        case "StringTypeAnnotation":
        case "SymbolTypeAnnotation":
        case "ThisTypeAnnotation":
        case "VoidTypeAnnotation":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isFlowDeclaration(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "DeclareClass":
        case "DeclareFunction":
        case "DeclareInterface":
        case "DeclareModule":
        case "DeclareModuleExports":
        case "DeclareTypeAlias":
        case "DeclareOpaqueType":
        case "DeclareVariable":
        case "DeclareExportDeclaration":
        case "DeclareExportAllDeclaration":
        case "InterfaceDeclaration":
        case "OpaqueType":
        case "TypeAlias":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isFlowPredicate(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "DeclaredPredicate":
        case "InferredPredicate":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isEnumBody(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "EnumBooleanBody":
        case "EnumNumberBody":
        case "EnumStringBody":
        case "EnumSymbolBody":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isEnumMember(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "EnumBooleanMember":
        case "EnumNumberMember":
        case "EnumStringMember":
        case "EnumDefaultedMember":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isJSX(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "JSXAttribute":
        case "JSXClosingElement":
        case "JSXElement":
        case "JSXEmptyExpression":
        case "JSXExpressionContainer":
        case "JSXSpreadChild":
        case "JSXIdentifier":
        case "JSXMemberExpression":
        case "JSXNamespacedName":
        case "JSXOpeningElement":
        case "JSXSpreadAttribute":
        case "JSXText":
        case "JSXFragment":
        case "JSXOpeningFragment":
        case "JSXClosingFragment":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isMiscellaneous(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "Noop":
        case "Placeholder":
        case "V8IntrinsicIdentifier":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTypeScript(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "TSParameterProperty":
        case "TSDeclareFunction":
        case "TSDeclareMethod":
        case "TSQualifiedName":
        case "TSCallSignatureDeclaration":
        case "TSConstructSignatureDeclaration":
        case "TSPropertySignature":
        case "TSMethodSignature":
        case "TSIndexSignature":
        case "TSAnyKeyword":
        case "TSBooleanKeyword":
        case "TSBigIntKeyword":
        case "TSIntrinsicKeyword":
        case "TSNeverKeyword":
        case "TSNullKeyword":
        case "TSNumberKeyword":
        case "TSObjectKeyword":
        case "TSStringKeyword":
        case "TSSymbolKeyword":
        case "TSUndefinedKeyword":
        case "TSUnknownKeyword":
        case "TSVoidKeyword":
        case "TSThisType":
        case "TSFunctionType":
        case "TSConstructorType":
        case "TSTypeReference":
        case "TSTypePredicate":
        case "TSTypeQuery":
        case "TSTypeLiteral":
        case "TSArrayType":
        case "TSTupleType":
        case "TSOptionalType":
        case "TSRestType":
        case "TSNamedTupleMember":
        case "TSUnionType":
        case "TSIntersectionType":
        case "TSConditionalType":
        case "TSInferType":
        case "TSParenthesizedType":
        case "TSTypeOperator":
        case "TSIndexedAccessType":
        case "TSMappedType":
        case "TSLiteralType":
        case "TSExpressionWithTypeArguments":
        case "TSInterfaceDeclaration":
        case "TSInterfaceBody":
        case "TSTypeAliasDeclaration":
        case "TSInstantiationExpression":
        case "TSAsExpression":
        case "TSSatisfiesExpression":
        case "TSTypeAssertion":
        case "TSEnumDeclaration":
        case "TSEnumMember":
        case "TSModuleDeclaration":
        case "TSModuleBlock":
        case "TSImportType":
        case "TSImportEqualsDeclaration":
        case "TSExternalModuleReference":
        case "TSNonNullExpression":
        case "TSExportAssignment":
        case "TSNamespaceExportDeclaration":
        case "TSTypeAnnotation":
        case "TSTypeParameterInstantiation":
        case "TSTypeParameterDeclaration":
        case "TSTypeParameter":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSTypeElement(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "TSCallSignatureDeclaration":
        case "TSConstructSignatureDeclaration":
        case "TSPropertySignature":
        case "TSMethodSignature":
        case "TSIndexSignature":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSType(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "TSAnyKeyword":
        case "TSBooleanKeyword":
        case "TSBigIntKeyword":
        case "TSIntrinsicKeyword":
        case "TSNeverKeyword":
        case "TSNullKeyword":
        case "TSNumberKeyword":
        case "TSObjectKeyword":
        case "TSStringKeyword":
        case "TSSymbolKeyword":
        case "TSUndefinedKeyword":
        case "TSUnknownKeyword":
        case "TSVoidKeyword":
        case "TSThisType":
        case "TSFunctionType":
        case "TSConstructorType":
        case "TSTypeReference":
        case "TSTypePredicate":
        case "TSTypeQuery":
        case "TSTypeLiteral":
        case "TSArrayType":
        case "TSTupleType":
        case "TSOptionalType":
        case "TSRestType":
        case "TSUnionType":
        case "TSIntersectionType":
        case "TSConditionalType":
        case "TSInferType":
        case "TSParenthesizedType":
        case "TSTypeOperator":
        case "TSIndexedAccessType":
        case "TSMappedType":
        case "TSLiteralType":
        case "TSExpressionWithTypeArguments":
        case "TSImportType":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isTSBaseType(node, opts) {
      if (!node) return false;
      switch (node.type) {
        case "TSAnyKeyword":
        case "TSBooleanKeyword":
        case "TSBigIntKeyword":
        case "TSIntrinsicKeyword":
        case "TSNeverKeyword":
        case "TSNullKeyword":
        case "TSNumberKeyword":
        case "TSObjectKeyword":
        case "TSStringKeyword":
        case "TSSymbolKeyword":
        case "TSUndefinedKeyword":
        case "TSUnknownKeyword":
        case "TSVoidKeyword":
        case "TSThisType":
        case "TSLiteralType":
          break;
        default:
          return false;
      }
      return opts == null || shallowEqual$2(node, opts);
    }
    function isNumberLiteral(node, opts) {
      deprecationWarning$1("isNumberLiteral", "isNumericLiteral");
      if (!node) return false;
      if (node.type !== "NumberLiteral") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isRegexLiteral(node, opts) {
      deprecationWarning$1("isRegexLiteral", "isRegExpLiteral");
      if (!node) return false;
      if (node.type !== "RegexLiteral") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isRestProperty$1(node, opts) {
      deprecationWarning$1("isRestProperty", "isRestElement");
      if (!node) return false;
      if (node.type !== "RestProperty") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isSpreadProperty$1(node, opts) {
      deprecationWarning$1("isSpreadProperty", "isSpreadElement");
      if (!node) return false;
      if (node.type !== "SpreadProperty") return false;
      return opts == null || shallowEqual$2(node, opts);
    }
    function isModuleDeclaration(node, opts) {
      deprecationWarning$1("isModuleDeclaration", "isImportOrExportDeclaration");
      return isImportOrExportDeclaration(node, opts);
    }
  
    function matchesPattern$2(member, match, allowPartial) {
      if (!isMemberExpression$8(member)) return false;
      var parts = Array.isArray(match) ? match : match.split(".");
      var nodes = [];
      var node;
      for (node = member; isMemberExpression$8(node); node = node.object) {
        nodes.push(node.property);
      }
      nodes.push(node);
      if (nodes.length < parts.length) return false;
      if (!allowPartial && nodes.length > parts.length) return false;
      for (var i = 0, j = nodes.length - 1; i < parts.length; i++, j--) {
        var _node = nodes[j];
        var value = void 0;
        if (isIdentifier$j(_node)) {
          value = _node.name;
        } else if (isStringLiteral$6(_node)) {
          value = _node.value;
        } else if (isThisExpression$2(_node)) {
          value = "this";
        } else {
          return false;
        }
        if (parts[i] !== value) return false;
      }
      return true;
    }
  
    function buildMatchMemberExpression$1(match, allowPartial) {
      var parts = match.split(".");
      return function (member) {
        return matchesPattern$2(member, parts, allowPartial);
      };
    }
  
    var isReactComponent = buildMatchMemberExpression$1("React.Component");
  
    function isCompatTag$1(tagName) {
      return !!tagName && /^[a-z]/.test(tagName);
    }
  
    var global$1 = (typeof global !== "undefined" ? global :
      typeof self !== "undefined" ? self :
      typeof window !== "undefined" ? window : {});
  
    // shim for using process in browser
    // based off https://github.com/defunctzombie/node-process/blob/master/browser.js
  
    function defaultSetTimout() {
        throw new Error('setTimeout has not been defined');
    }
    function defaultClearTimeout () {
        throw new Error('clearTimeout has not been defined');
    }
    var cachedSetTimeout = defaultSetTimout;
    var cachedClearTimeout = defaultClearTimeout;
    if (typeof global$1.setTimeout === 'function') {
        cachedSetTimeout = setTimeout;
    }
    if (typeof global$1.clearTimeout === 'function') {
        cachedClearTimeout = clearTimeout;
    }
  
    function runTimeout(fun) {
        if (cachedSetTimeout === setTimeout) {
            //normal enviroments in sane situations
            return setTimeout(fun, 0);
        }
        // if setTimeout wasn't available but was latter defined
        if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
            cachedSetTimeout = setTimeout;
            return setTimeout(fun, 0);
        }
        try {
            // when when somebody has screwed with setTimeout but no I.E. maddness
            return cachedSetTimeout(fun, 0);
        } catch(e){
            try {
                // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
                return cachedSetTimeout.call(null, fun, 0);
            } catch(e){
                // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
                return cachedSetTimeout.call(this, fun, 0);
            }
        }
  
  
    }
    function runClearTimeout(marker) {
        if (cachedClearTimeout === clearTimeout) {
            //normal enviroments in sane situations
            return clearTimeout(marker);
        }
        // if clearTimeout wasn't available but was latter defined
        if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
            cachedClearTimeout = clearTimeout;
            return clearTimeout(marker);
        }
        try {
            // when when somebody has screwed with setTimeout but no I.E. maddness
            return cachedClearTimeout(marker);
        } catch (e){
            try {
                // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
                return cachedClearTimeout.call(null, marker);
            } catch (e){
                // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
                // Some versions of I.E. have different rules for clearTimeout vs setTimeout
                return cachedClearTimeout.call(this, marker);
            }
        }
  
  
  
    }
    var queue = [];
    var draining = false;
    var currentQueue;
    var queueIndex = -1;
  
    function cleanUpNextTick() {
        if (!draining || !currentQueue) {
            return;
        }
        draining = false;
        if (currentQueue.length) {
            queue = currentQueue.concat(queue);
        } else {
            queueIndex = -1;
        }
        if (queue.length) {
            drainQueue();
        }
    }
  
    function drainQueue() {
        if (draining) {
            return;
        }
        var timeout = runTimeout(cleanUpNextTick);
        draining = true;
  
        var len = queue.length;
        while(len) {
            currentQueue = queue;
            queue = [];
            while (++queueIndex < len) {
                if (currentQueue) {
                    currentQueue[queueIndex].run();
                }
            }
            queueIndex = -1;
            len = queue.length;
        }
        currentQueue = null;
        draining = false;
        runClearTimeout(timeout);
    }
    function nextTick(fun) {
        var args = new Array(arguments.length - 1);
        if (arguments.length > 1) {
            for (var i = 1; i < arguments.length; i++) {
                args[i - 1] = arguments[i];
            }
        }
        queue.push(new Item(fun, args));
        if (queue.length === 1 && !draining) {
            runTimeout(drainQueue);
        }
    }
    // v8 likes predictible objects
    function Item(fun, array) {
        this.fun = fun;
        this.array = array;
    }
    Item.prototype.run = function () {
        this.fun.apply(null, this.array);
    };
    var title = 'browser';
    var platform = 'browser';
    var browser$5 = true;
    var env$1 = {};
    var argv = [];
    var version$2 = ''; // empty string to avoid regexp issues
    var versions$2 = {};
    var release = {};
    var config$1 = {};
  
    function noop$2() {}
  
    var on = noop$2;
    var addListener = noop$2;
    var once$1 = noop$2;
    var off = noop$2;
    var removeListener = noop$2;
    var removeAllListeners = noop$2;
    var emit$1 = noop$2;
  
    function binding(name) {
        throw new Error('process.binding is not supported');
    }
  
    function cwd () { return '/' }
    function chdir (dir) {
        throw new Error('process.chdir is not supported');
    }function umask() { return 0; }
  
    // from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js
    var performance$1 = global$1.performance || {};
    var performanceNow =
      performance$1.now        ||
      performance$1.mozNow     ||
      performance$1.msNow      ||
      performance$1.oNow       ||
      performance$1.webkitNow  ||
      function(){ return (new Date()).getTime() };
  
    // generate timestamp or delta
    // see http://nodejs.org/api/process.html#process_process_hrtime
    function hrtime(previousTimestamp){
      var clocktime = performanceNow.call(performance$1)*1e-3;
      var seconds = Math.floor(clocktime);
      var nanoseconds = Math.floor((clocktime%1)*1e9);
      if (previousTimestamp) {
        seconds = seconds - previousTimestamp[0];
        nanoseconds = nanoseconds - previousTimestamp[1];
        if (nanoseconds<0) {
          seconds--;
          nanoseconds += 1e9;
        }
      }
      return [seconds,nanoseconds]
    }
  
    var startTime = new Date();
    function uptime() {
      var currentTime = new Date();
      var dif = currentTime - startTime;
      return dif / 1000;
    }
  
    var browser$1$1 = {
      nextTick: nextTick,
      title: title,
      browser: browser$5,
      env: env$1,
      argv: argv,
      version: version$2,
      versions: versions$2,
      on: on,
      addListener: addListener,
      once: once$1,
      off: off,
      removeListener: removeListener,
      removeAllListeners: removeAllListeners,
      emit: emit$1,
      binding: binding,
      cwd: cwd,
      chdir: chdir,
      umask: umask,
      hrtime: hrtime,
      platform: platform,
      release: release,
      config: config$1,
      uptime: uptime
    };
  
    var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};
  
    function getAugmentedNamespace(n) {
      var f = n.default;
        if (typeof f == "function") {
            var a = function () {
                return f.apply(this, arguments);
            };
            a.prototype = f.prototype;
      } else a = {};
      Object.defineProperty(a, '__esModule', {value: true});
        Object.keys(n).forEach(function (k) {
            var d = Object.getOwnPropertyDescriptor(n, k);
            Object.defineProperty(a, k, d.get ? d : {
                enumerable: true,
                get: function () {
                    return n[k];
                }
            });
        });
        return a;
    }
  
    var toFastPropertiesBABEL_8_BREAKINGTrue;
    var hasRequiredToFastPropertiesBABEL_8_BREAKINGTrue;
    function requireToFastPropertiesBABEL_8_BREAKINGTrue() {
      if (hasRequiredToFastPropertiesBABEL_8_BREAKINGTrue) return toFastPropertiesBABEL_8_BREAKINGTrue;
      hasRequiredToFastPropertiesBABEL_8_BREAKINGTrue = 1;
      var fastProto = null;
      function FastObject(o) {
        if (fastProto !== null && typeof fastProto.property) {
          var result = fastProto;
          fastProto = FastObject.prototype = null;
          return result;
        }
        fastProto = FastObject.prototype = o == null ? Object.create(null) : o;
        return new FastObject();
      }
      var inlineCacheCutoff = 10;
      for (var i = 0; i <= inlineCacheCutoff; i++) {
        FastObject();
      }
      toFastPropertiesBABEL_8_BREAKINGTrue = function toFastproperties(o) {
        return FastObject(o);
      };
      return toFastPropertiesBABEL_8_BREAKINGTrue;
    }
  
    var toFastPropertiesBABEL_8_BREAKINGFalse;
    var hasRequiredToFastPropertiesBABEL_8_BREAKINGFalse;
    function requireToFastPropertiesBABEL_8_BREAKINGFalse() {
      if (hasRequiredToFastPropertiesBABEL_8_BREAKINGFalse) return toFastPropertiesBABEL_8_BREAKINGFalse;
      hasRequiredToFastPropertiesBABEL_8_BREAKINGFalse = 1;
      var fastProto = null;
      function FastObject(o) {
        if (fastProto !== null && typeof fastProto.property) {
          var result = fastProto;
          fastProto = FastObject.prototype = null;
          return result;
        }
        fastProto = FastObject.prototype = o == null ? Object.create(null) : o;
        return new FastObject();
      }
      FastObject();
      toFastPropertiesBABEL_8_BREAKINGFalse = function toFastproperties(o) {
        return FastObject(o);
      };
      return toFastPropertiesBABEL_8_BREAKINGFalse;
    }
  
    function bool$b(value) {
      if (value == null) return false;
      return value && value !== "false" && value !== "0";
    }
    var toFastProperties = bool$b(browser$1$1.env["BABEL_8_BREAKING"]) ? requireToFastPropertiesBABEL_8_BREAKINGTrue() : requireToFastPropertiesBABEL_8_BREAKINGFalse();
  
    function isType$2(nodeType, targetType) {
      if (nodeType === targetType) return true;
      if (ALIAS_KEYS[targetType]) return false;
      var aliases = FLIPPED_ALIAS_KEYS$3[targetType];
      if (aliases) {
        if (aliases[0] === nodeType) return true;
        for (var _iterator = _createForOfIteratorHelperLoose(aliases), _step; !(_step = _iterator()).done;) {
          var alias = _step.value;
          if (nodeType === alias) return true;
        }
      }
      return false;
    }
  
    function isPlaceholderType(placeholderType, targetType) {
      if (placeholderType === targetType) return true;
      var aliases = PLACEHOLDERS_ALIAS[placeholderType];
      if (aliases) {
        for (var _iterator = _createForOfIteratorHelperLoose(aliases), _step; !(_step = _iterator()).done;) {
          var alias = _step.value;
          if (targetType === alias) return true;
        }
      }
      return false;
    }
  
    function is$1(type, node, opts) {
      if (!node) return false;
      var matches = isType$2(node.type, type);
      if (!matches) {
        if (!opts && node.type === "Placeholder" && type in FLIPPED_ALIAS_KEYS$3) {
          return isPlaceholderType(node.expectedNode, type);
        }
        return false;
      }
      if (typeof opts === "undefined") {
        return true;
      } else {
        return shallowEqual$2(node, opts);
      }
    }
  
    var nonASCIIidentifierStartChars = "\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u0870-\u0887\u0889-\u088E\u08A0-\u08C9\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C5D\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D04-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E86-\u0E8A\u0E8C-\u0EA3\u0EA5\u0EA7-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u1711\u171F-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4C\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF3\u1CF5\u1CF6\u1CFA\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BF\u31F0-\u31FF\u3400-\u4DBF\u4E00-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7CA\uA7D0\uA7D1\uA7D3\uA7D5-\uA7D9\uA7F2-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB69\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC";
    var nonASCIIidentifierChars = "\u200C\u200D\xB7\u0300-\u036F\u0387\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u0669\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u06F0-\u06F9\u0711\u0730-\u074A\u07A6-\u07B0\u07C0-\u07C9\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u0898-\u089F\u08CA-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0966-\u096F\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09E6-\u09EF\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A66-\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AE6-\u0AEF\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B55-\u0B57\u0B62\u0B63\u0B66-\u0B6F\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE6-\u0BEF\u0C00-\u0C04\u0C3C\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0CE6-\u0CEF\u0CF3\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D66-\u0D6F\u0D81-\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0E50-\u0E59\u0EB1\u0EB4-\u0EBC\u0EC8-\u0ECE\u0ED0-\u0ED9\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1040-\u1049\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109D\u135D-\u135F\u1369-\u1371\u1712-\u1715\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u17E0-\u17E9\u180B-\u180D\u180F-\u1819\u18A9\u1920-\u192B\u1930-\u193B\u1946-\u194F\u19D0-\u19DA\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AB0-\u1ABD\u1ABF-\u1ACE\u1B00-\u1B04\u1B34-\u1B44\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BF3\u1C24-\u1C37\u1C40-\u1C49\u1C50-\u1C59\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DFF\u203F\u2040\u2054\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA620-\uA629\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA82C\uA880\uA881\uA8B4-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F1\uA8FF-\uA909\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9D0-\uA9D9\uA9E5\uA9F0-\uA9F9\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA50-\uAA59\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uABF0-\uABF9\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFF10-\uFF19\uFF3F";
    var nonASCIIidentifierStart = new RegExp("[" + nonASCIIidentifierStartChars + "]");
    var nonASCIIidentifier = new RegExp("[" + nonASCIIidentifierStartChars + nonASCIIidentifierChars + "]");
    nonASCIIidentifierStartChars = nonASCIIidentifierChars = null;
    var astralIdentifierStartCodes = [0, 11, 2, 25, 2, 18, 2, 1, 2, 14, 3, 13, 35, 122, 70, 52, 268, 28, 4, 48, 48, 31, 14, 29, 6, 37, 11, 29, 3, 35, 5, 7, 2, 4, 43, 157, 19, 35, 5, 35, 5, 39, 9, 51, 13, 10, 2, 14, 2, 6, 2, 1, 2, 10, 2, 14, 2, 6, 2, 1, 68, 310, 10, 21, 11, 7, 25, 5, 2, 41, 2, 8, 70, 5, 3, 0, 2, 43, 2, 1, 4, 0, 3, 22, 11, 22, 10, 30, 66, 18, 2, 1, 11, 21, 11, 25, 71, 55, 7, 1, 65, 0, 16, 3, 2, 2, 2, 28, 43, 28, 4, 28, 36, 7, 2, 27, 28, 53, 11, 21, 11, 18, 14, 17, 111, 72, 56, 50, 14, 50, 14, 35, 349, 41, 7, 1, 79, 28, 11, 0, 9, 21, 43, 17, 47, 20, 28, 22, 13, 52, 58, 1, 3, 0, 14, 44, 33, 24, 27, 35, 30, 0, 3, 0, 9, 34, 4, 0, 13, 47, 15, 3, 22, 0, 2, 0, 36, 17, 2, 24, 20, 1, 64, 6, 2, 0, 2, 3, 2, 14, 2, 9, 8, 46, 39, 7, 3, 1, 3, 21, 2, 6, 2, 1, 2, 4, 4, 0, 19, 0, 13, 4, 159, 52, 19, 3, 21, 2, 31, 47, 21, 1, 2, 0, 185, 46, 42, 3, 37, 47, 21, 0, 60, 42, 14, 0, 72, 26, 38, 6, 186, 43, 117, 63, 32, 7, 3, 0, 3, 7, 2, 1, 2, 23, 16, 0, 2, 0, 95, 7, 3, 38, 17, 0, 2, 0, 29, 0, 11, 39, 8, 0, 22, 0, 12, 45, 20, 0, 19, 72, 264, 8, 2, 36, 18, 0, 50, 29, 113, 6, 2, 1, 2, 37, 22, 0, 26, 5, 2, 1, 2, 31, 15, 0, 328, 18, 16, 0, 2, 12, 2, 33, 125, 0, 80, 921, 103, 110, 18, 195, 2637, 96, 16, 1071, 18, 5, 4026, 582, 8634, 568, 8, 30, 18, 78, 18, 29, 19, 47, 17, 3, 32, 20, 6, 18, 689, 63, 129, 74, 6, 0, 67, 12, 65, 1, 2, 0, 29, 6135, 9, 1237, 43, 8, 8936, 3, 2, 6, 2, 1, 2, 290, 16, 0, 30, 2, 3, 0, 15, 3, 9, 395, 2309, 106, 6, 12, 4, 8, 8, 9, 5991, 84, 2, 70, 2, 1, 3, 0, 3, 1, 3, 3, 2, 11, 2, 0, 2, 6, 2, 64, 2, 3, 3, 7, 2, 6, 2, 27, 2, 3, 2, 4, 2, 0, 4, 6, 2, 339, 3, 24, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 30, 2, 24, 2, 7, 1845, 30, 7, 5, 262, 61, 147, 44, 11, 6, 17, 0, 322, 29, 19, 43, 485, 27, 757, 6, 2, 3, 2, 1, 2, 14, 2, 196, 60, 67, 8, 0, 1205, 3, 2, 26, 2, 1, 2, 0, 3, 0, 2, 9, 2, 3, 2, 0, 2, 0, 7, 0, 5, 0, 2, 0, 2, 0, 2, 2, 2, 1, 2, 0, 3, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 3, 3, 2, 6, 2, 3, 2, 3, 2, 0, 2, 9, 2, 16, 6, 2, 2, 4, 2, 16, 4421, 42719, 33, 4153, 7, 221, 3, 5761, 15, 7472, 3104, 541, 1507, 4938, 6, 4191];
    var astralIdentifierCodes = [509, 0, 227, 0, 150, 4, 294, 9, 1368, 2, 2, 1, 6, 3, 41, 2, 5, 0, 166, 1, 574, 3, 9, 9, 370, 1, 81, 2, 71, 10, 50, 3, 123, 2, 54, 14, 32, 10, 3, 1, 11, 3, 46, 10, 8, 0, 46, 9, 7, 2, 37, 13, 2, 9, 6, 1, 45, 0, 13, 2, 49, 13, 9, 3, 2, 11, 83, 11, 7, 0, 3, 0, 158, 11, 6, 9, 7, 3, 56, 1, 2, 6, 3, 1, 3, 2, 10, 0, 11, 1, 3, 6, 4, 4, 193, 17, 10, 9, 5, 0, 82, 19, 13, 9, 214, 6, 3, 8, 28, 1, 83, 16, 16, 9, 82, 12, 9, 9, 84, 14, 5, 9, 243, 14, 166, 9, 71, 5, 2, 1, 3, 3, 2, 0, 2, 1, 13, 9, 120, 6, 3, 6, 4, 0, 29, 9, 41, 6, 2, 3, 9, 0, 10, 10, 47, 15, 406, 7, 2, 7, 17, 9, 57, 21, 2, 13, 123, 5, 4, 0, 2, 1, 2, 6, 2, 0, 9, 9, 49, 4, 2, 1, 2, 4, 9, 9, 330, 3, 10, 1, 2, 0, 49, 6, 4, 4, 14, 9, 5351, 0, 7, 14, 13835, 9, 87, 9, 39, 4, 60, 6, 26, 9, 1014, 0, 2, 54, 8, 3, 82, 0, 12, 1, 19628, 1, 4706, 45, 3, 22, 543, 4, 4, 5, 9, 7, 3, 6, 31, 3, 149, 2, 1418, 49, 513, 54, 5, 49, 9, 0, 15, 0, 23, 4, 2, 14, 1361, 6, 2, 16, 3, 6, 2, 1, 2, 4, 101, 0, 161, 6, 10, 9, 357, 0, 62, 13, 499, 13, 983, 6, 110, 6, 6, 9, 4759, 9, 787719, 239];
    function isInAstralSet(code, set) {
      var pos = 0x10000;
      for (var i = 0, length = set.length; i < length; i += 2) {
        pos += set[i];
        if (pos > code) return false;
        pos += set[i + 1];
        if (pos >= code) return true;
      }
      return false;
    }
    function isIdentifierStart(code) {
      if (code < 65) return code === 36;
      if (code <= 90) return true;
      if (code < 97) return code === 95;
      if (code <= 122) return true;
      if (code <= 0xffff) {
        return code >= 0xaa && nonASCIIidentifierStart.test(String.fromCharCode(code));
      }
      return isInAstralSet(code, astralIdentifierStartCodes);
    }
    function isIdentifierChar(code) {
      if (code < 48) return code === 36;
      if (code < 58) return true;
      if (code < 65) return false;
      if (code <= 90) return true;
      if (code < 97) return code === 95;
      if (code <= 122) return true;
      if (code <= 0xffff) {
        return code >= 0xaa && nonASCIIidentifier.test(String.fromCharCode(code));
      }
      return isInAstralSet(code, astralIdentifierStartCodes) || isInAstralSet(code, astralIdentifierCodes);
    }
    function isIdentifierName(name) {
      var isFirst = true;
      for (var i = 0; i < name.length; i++) {
        var cp = name.charCodeAt(i);
        if ((cp & 0xfc00) === 0xd800 && i + 1 < name.length) {
          var trail = name.charCodeAt(++i);
          if ((trail & 0xfc00) === 0xdc00) {
            cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);
          }
        }
        if (isFirst) {
          isFirst = false;
          if (!isIdentifierStart(cp)) {
            return false;
          }
        } else if (!isIdentifierChar(cp)) {
          return false;
        }
      }
      return !isFirst;
    }
  
    var reservedWords = {
      keyword: ["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete"],
      strict: ["implements", "interface", "let", "package", "private", "protected", "public", "static", "yield"],
      strictBind: ["eval", "arguments"]
    };
    var keywords$1 = new Set(reservedWords.keyword);
    var reservedWordsStrictSet = new Set(reservedWords.strict);
    var reservedWordsStrictBindSet = new Set(reservedWords.strictBind);
    function isReservedWord(word, inModule) {
      return inModule && word === "await" || word === "enum";
    }
    function isStrictReservedWord(word, inModule) {
      return isReservedWord(word, inModule) || reservedWordsStrictSet.has(word);
    }
    function isStrictBindOnlyReservedWord(word) {
      return reservedWordsStrictBindSet.has(word);
    }
    function isStrictBindReservedWord(word, inModule) {
      return isStrictReservedWord(word, inModule) || isStrictBindOnlyReservedWord(word);
    }
    function isKeyword(word) {
      return keywords$1.has(word);
    }
  
    function isValidIdentifier$1(name, reserved) {
      if (reserved === void 0) {
        reserved = true;
      }
      if (typeof name !== "string") return false;
      if (reserved) {
        if (isKeyword(name) || isStrictReservedWord(name, true)) {
          return false;
        }
      }
      return isIdentifierName(name);
    }
  
    var _isDigit = function isDigit(code) {
      return code >= 48 && code <= 57;
    };
    var forbiddenNumericSeparatorSiblings = {
      decBinOct: new Set([46, 66, 69, 79, 95, 98, 101, 111]),
      hex: new Set([46, 88, 95, 120])
    };
    var isAllowedNumericSeparatorSibling = {
      bin: function bin(ch) {
        return ch === 48 || ch === 49;
      },
      oct: function oct(ch) {
        return ch >= 48 && ch <= 55;
      },
      dec: function dec(ch) {
        return ch >= 48 && ch <= 57;
      },
      hex: function hex(ch) {
        return ch >= 48 && ch <= 57 || ch >= 65 && ch <= 70 || ch >= 97 && ch <= 102;
      }
    };
    function readStringContents(type, input, pos, lineStart, curLine, errors) {
      var initialPos = pos;
      var initialLineStart = lineStart;
      var initialCurLine = curLine;
      var out = "";
      var firstInvalidLoc = null;
      var chunkStart = pos;
      var length = input.length;
      for (;;) {
        if (pos >= length) {
          errors.unterminated(initialPos, initialLineStart, initialCurLine);
          out += input.slice(chunkStart, pos);
          break;
        }
        var ch = input.charCodeAt(pos);
        if (isStringEnd(type, ch, input, pos)) {
          out += input.slice(chunkStart, pos);
          break;
        }
        if (ch === 92) {
          out += input.slice(chunkStart, pos);
          var res = readEscapedChar(input, pos, lineStart, curLine, type === "template", errors);
          if (res.ch === null && !firstInvalidLoc) {
            firstInvalidLoc = {
              pos: pos,
              lineStart: lineStart,
              curLine: curLine
            };
          } else {
            out += res.ch;
          }
          pos = res.pos;
          lineStart = res.lineStart;
          curLine = res.curLine;
          chunkStart = pos;
        } else if (ch === 8232 || ch === 8233) {
          ++pos;
          ++curLine;
          lineStart = pos;
        } else if (ch === 10 || ch === 13) {
          if (type === "template") {
            out += input.slice(chunkStart, pos) + "\n";
            ++pos;
            if (ch === 13 && input.charCodeAt(pos) === 10) {
              ++pos;
            }
            ++curLine;
            chunkStart = lineStart = pos;
          } else {
            errors.unterminated(initialPos, initialLineStart, initialCurLine);
          }
        } else {
          ++pos;
        }
      }
      return {
        pos: pos,
        str: out,
        firstInvalidLoc: firstInvalidLoc,
        lineStart: lineStart,
        curLine: curLine,
        containsInvalid: !!firstInvalidLoc
      };
    }
    function isStringEnd(type, ch, input, pos) {
      if (type === "template") {
        return ch === 96 || ch === 36 && input.charCodeAt(pos + 1) === 123;
      }
      return ch === (type === "double" ? 34 : 39);
    }
    function readEscapedChar(input, pos, lineStart, curLine, inTemplate, errors) {
      var throwOnInvalid = !inTemplate;
      pos++;
      var res = function res(ch) {
        return {
          pos: pos,
          ch: ch,
          lineStart: lineStart,
          curLine: curLine
        };
      };
      var ch = input.charCodeAt(pos++);
      switch (ch) {
        case 110:
          return res("\n");
        case 114:
          return res("\r");
        case 120:
          {
            var code;
            var _readHexChar = readHexChar(input, pos, lineStart, curLine, 2, false, throwOnInvalid, errors);
            code = _readHexChar.code;
            pos = _readHexChar.pos;
            return res(code === null ? null : String.fromCharCode(code));
          }
        case 117:
          {
            var _code;
            var _readCodePoint = readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors);
            _code = _readCodePoint.code;
            pos = _readCodePoint.pos;
            return res(_code === null ? null : String.fromCodePoint(_code));
          }
        case 116:
          return res("\t");
        case 98:
          return res("\b");
        case 118:
          return res("\x0B");
        case 102:
          return res("\f");
        case 13:
          if (input.charCodeAt(pos) === 10) {
            ++pos;
          }
        case 10:
          lineStart = pos;
          ++curLine;
        case 8232:
        case 8233:
          return res("");
        case 56:
        case 57:
          if (inTemplate) {
            return res(null);
          } else {
            errors.strictNumericEscape(pos - 1, lineStart, curLine);
          }
        default:
          if (ch >= 48 && ch <= 55) {
            var startPos = pos - 1;
            var match = input.slice(startPos, pos + 2).match(/^[0-7]+/);
            var octalStr = match[0];
            var octal = parseInt(octalStr, 8);
            if (octal > 255) {
              octalStr = octalStr.slice(0, -1);
              octal = parseInt(octalStr, 8);
            }
            pos += octalStr.length - 1;
            var next = input.charCodeAt(pos);
            if (octalStr !== "0" || next === 56 || next === 57) {
              if (inTemplate) {
                return res(null);
              } else {
                errors.strictNumericEscape(startPos, lineStart, curLine);
              }
            }
            return res(String.fromCharCode(octal));
          }
          return res(String.fromCharCode(ch));
      }
    }
    function readHexChar(input, pos, lineStart, curLine, len, forceLen, throwOnInvalid, errors) {
      var initialPos = pos;
      var n;
      var _readInt = readInt(input, pos, lineStart, curLine, 16, len, forceLen, false, errors, !throwOnInvalid);
      n = _readInt.n;
      pos = _readInt.pos;
      if (n === null) {
        if (throwOnInvalid) {
          errors.invalidEscapeSequence(initialPos, lineStart, curLine);
        } else {
          pos = initialPos - 1;
        }
      }
      return {
        code: n,
        pos: pos
      };
    }
    function readInt(input, pos, lineStart, curLine, radix, len, forceLen, allowNumSeparator, errors, bailOnError) {
      var start = pos;
      var forbiddenSiblings = radix === 16 ? forbiddenNumericSeparatorSiblings.hex : forbiddenNumericSeparatorSiblings.decBinOct;
      var isAllowedSibling = radix === 16 ? isAllowedNumericSeparatorSibling.hex : radix === 10 ? isAllowedNumericSeparatorSibling.dec : radix === 8 ? isAllowedNumericSeparatorSibling.oct : isAllowedNumericSeparatorSibling.bin;
      var invalid = false;
      var total = 0;
      for (var i = 0, e = len == null ? Infinity : len; i < e; ++i) {
        var code = input.charCodeAt(pos);
        var val = void 0;
        if (code === 95 && allowNumSeparator !== "bail") {
          var prev = input.charCodeAt(pos - 1);
          var next = input.charCodeAt(pos + 1);
          if (!allowNumSeparator) {
            if (bailOnError) return {
              n: null,
              pos: pos
            };
            errors.numericSeparatorInEscapeSequence(pos, lineStart, curLine);
          } else if (Number.isNaN(next) || !isAllowedSibling(next) || forbiddenSiblings.has(prev) || forbiddenSiblings.has(next)) {
            if (bailOnError) return {
              n: null,
              pos: pos
            };
            errors.unexpectedNumericSeparator(pos, lineStart, curLine);
          }
          ++pos;
          continue;
        }
        if (code >= 97) {
          val = code - 97 + 10;
        } else if (code >= 65) {
          val = code - 65 + 10;
        } else if (_isDigit(code)) {
          val = code - 48;
        } else {
          val = Infinity;
        }
        if (val >= radix) {
          if (val <= 9 && bailOnError) {
            return {
              n: null,
              pos: pos
            };
          } else if (val <= 9 && errors.invalidDigit(pos, lineStart, curLine, radix)) {
            val = 0;
          } else if (forceLen) {
            val = 0;
            invalid = true;
          } else {
            break;
          }
        }
        ++pos;
        total = total * radix + val;
      }
      if (pos === start || len != null && pos - start !== len || invalid) {
        return {
          n: null,
          pos: pos
        };
      }
      return {
        n: total,
        pos: pos
      };
    }
    function readCodePoint(input, pos, lineStart, curLine, throwOnInvalid, errors) {
      var ch = input.charCodeAt(pos);
      var code;
      if (ch === 123) {
        ++pos;
        var _readHexChar2 = readHexChar(input, pos, lineStart, curLine, input.indexOf("}", pos) - pos, true, throwOnInvalid, errors);
        code = _readHexChar2.code;
        pos = _readHexChar2.pos;
        ++pos;
        if (code !== null && code > 0x10ffff) {
          if (throwOnInvalid) {
            errors.invalidCodePoint(pos, lineStart, curLine);
          } else {
            return {
              code: null,
              pos: pos
            };
          }
        }
      } else {
        var _readHexChar3 = readHexChar(input, pos, lineStart, curLine, 4, false, throwOnInvalid, errors);
        code = _readHexChar3.code;
        pos = _readHexChar3.pos;
      }
      return {
        code: code,
        pos: pos
      };
    }
  
    var STATEMENT_OR_BLOCK_KEYS$1 = ["consequent", "body", "alternate"];
    var FLATTENABLE_KEYS = ["body", "expressions"];
    var FOR_INIT_KEYS = ["left", "init"];
    var COMMENT_KEYS = ["leadingComments", "trailingComments", "innerComments"];
    var LOGICAL_OPERATORS$3 = ["||", "&&", "??"];
    var UPDATE_OPERATORS = ["++", "--"];
    var BOOLEAN_NUMBER_BINARY_OPERATORS$1 = [">", "<", ">=", "<="];
    var EQUALITY_BINARY_OPERATORS = ["==", "===", "!=", "!=="];
    var COMPARISON_BINARY_OPERATORS = [].concat(EQUALITY_BINARY_OPERATORS, ["in", "instanceof"]);
    var BOOLEAN_BINARY_OPERATORS$1 = [].concat(_toConsumableArray(COMPARISON_BINARY_OPERATORS), BOOLEAN_NUMBER_BINARY_OPERATORS$1);
    var NUMBER_BINARY_OPERATORS$1 = ["-", "/", "%", "*", "**", "&", "|", ">>", ">>>", "<<", "^"];
    var BINARY_OPERATORS = ["+"].concat(NUMBER_BINARY_OPERATORS$1, _toConsumableArray(BOOLEAN_BINARY_OPERATORS$1), ["|>"]);
    var ASSIGNMENT_OPERATORS = ["=", "+="].concat(_toConsumableArray(NUMBER_BINARY_OPERATORS$1.map(function (op) {
      return op + "=";
    })), _toConsumableArray(LOGICAL_OPERATORS$3.map(function (op) {
      return op + "=";
    })));
    var BOOLEAN_UNARY_OPERATORS$1 = ["delete", "!"];
    var NUMBER_UNARY_OPERATORS$1 = ["+", "-", "~"];
    var STRING_UNARY_OPERATORS$1 = ["typeof"];
    var UNARY_OPERATORS = ["void", "throw"].concat(BOOLEAN_UNARY_OPERATORS$1, NUMBER_UNARY_OPERATORS$1, STRING_UNARY_OPERATORS$1);
    var INHERIT_KEYS = {
      optional: ["typeAnnotation", "typeParameters", "returnType"],
      force: ["start", "loc", "end"]
    };
    var BLOCK_SCOPED_SYMBOL = Symbol["for"]("var used to be block scoped");
    var NOT_LOCAL_BINDING$2 = Symbol["for"]("should not be considered a local binding");
  
    var VISITOR_KEYS$5 = {};
    var ALIAS_KEYS = {};
    var FLIPPED_ALIAS_KEYS$3 = {};
    var NODE_FIELDS = {};
    var BUILDER_KEYS = {};
    var DEPRECATED_KEYS$1 = {};
    var NODE_PARENT_VALIDATIONS = {};
    function getType$2(val) {
      if (Array.isArray(val)) {
        return "array";
      } else if (val === null) {
        return "null";
      } else {
        return typeof val;
      }
    }
    function validate$6(validate) {
      return {
        validate: validate
      };
    }
    function typeIs(typeName) {
      return typeof typeName === "string" ? assertNodeType(typeName) : assertNodeType.apply(void 0, _toConsumableArray(typeName));
    }
    function validateType(typeName) {
      return validate$6(typeIs(typeName));
    }
    function validateOptional(validate) {
      return {
        validate: validate,
        optional: true
      };
    }
    function validateOptionalType(typeName) {
      return {
        validate: typeIs(typeName),
        optional: true
      };
    }
    function arrayOf(elementType) {
      return chain$1(assertValueType("array"), assertEach(elementType));
    }
    function arrayOfType(typeName) {
      return arrayOf(typeIs(typeName));
    }
    function validateArrayOfType(typeName) {
      return validate$6(arrayOfType(typeName));
    }
    function assertEach(callback) {
      function validator(node, key, val) {
        if (!Array.isArray(val)) return;
        for (var i = 0; i < val.length; i++) {
          var subkey = key + "[" + i + "]";
          var v = val[i];
          callback(node, subkey, v);
          if (browser$1$1.env.BABEL_TYPES_8_BREAKING) validateChild(node, subkey, v);
        }
      }
      validator.each = callback;
      return validator;
    }
    function assertOneOf() {
      for (var _len = arguments.length, values = new Array(_len), _key = 0; _key < _len; _key++) {
        values[_key] = arguments[_key];
      }
      function validate(node, key, val) {
        if (values.indexOf(val) < 0) {
          throw new TypeError("Property " + key + " expected value to be one of " + JSON.stringify(values) + " but got " + JSON.stringify(val));
        }
      }
      validate.oneOf = values;
      return validate;
    }
    function assertNodeType() {
      for (var _len2 = arguments.length, types = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
        types[_key2] = arguments[_key2];
      }
      function validate(node, key, val) {
        for (var _iterator = _createForOfIteratorHelperLoose(types), _step; !(_step = _iterator()).done;) {
          var type = _step.value;
          if (is$1(type, val)) {
            validateChild(node, key, val);
            return;
          }
        }
        throw new TypeError("Property " + key + " of " + node.type + " expected node to be of a type " + JSON.stringify(types) + " but instead got " + JSON.stringify(val == null ? void 0 : val.type));
      }
      validate.oneOfNodeTypes = types;
      return validate;
    }
    function assertNodeOrValueType() {
      for (var _len3 = arguments.length, types = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
        types[_key3] = arguments[_key3];
      }
      function validate(node, key, val) {
        for (var _iterator2 = _createForOfIteratorHelperLoose(types), _step2; !(_step2 = _iterator2()).done;) {
          var type = _step2.value;
          if (getType$2(val) === type || is$1(type, val)) {
            validateChild(node, key, val);
            return;
          }
        }
        throw new TypeError("Property " + key + " of " + node.type + " expected node to be of a type " + JSON.stringify(types) + " but instead got " + JSON.stringify(val == null ? void 0 : val.type));
      }
      validate.oneOfNodeOrValueTypes = types;
      return validate;
    }
    function assertValueType(type) {
      function validate(node, key, val) {
        var valid = getType$2(val) === type;
        if (!valid) {
          throw new TypeError("Property " + key + " expected type of " + type + " but got " + getType$2(val));
        }
      }
      validate.type = type;
      return validate;
    }
    function assertShape(shape) {
      function validate(node, key, val) {
        var errors = [];
        for (var _i = 0, _Object$keys = Object.keys(shape); _i < _Object$keys.length; _i++) {
          var property = _Object$keys[_i];
          try {
            validateField(node, property, val[property], shape[property]);
          } catch (error) {
            if (error instanceof TypeError) {
              errors.push(error.message);
              continue;
            }
            throw error;
          }
        }
        if (errors.length) {
          throw new TypeError("Property " + key + " of " + node.type + " expected to have the following:\n" + errors.join("\n"));
        }
      }
      validate.shapeOf = shape;
      return validate;
    }
    function assertOptionalChainStart() {
      function validate(node) {
        var _current2;
        var current = node;
        while (node) {
          var _current = current,
            type = _current.type;
          if (type === "OptionalCallExpression") {
            if (current.optional) return;
            current = current.callee;
            continue;
          }
          if (type === "OptionalMemberExpression") {
            if (current.optional) return;
            current = current.object;
            continue;
          }
          break;
        }
        throw new TypeError("Non-optional " + node.type + " must chain from an optional OptionalMemberExpression or OptionalCallExpression. Found chain from " + ((_current2 = current) == null ? void 0 : _current2.type));
      }
      return validate;
    }
    function chain$1() {
      for (var _len4 = arguments.length, fns = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
        fns[_key4] = arguments[_key4];
      }
      function validate() {
        for (var _iterator3 = _createForOfIteratorHelperLoose(fns), _step3; !(_step3 = _iterator3()).done;) {
          var fn = _step3.value;
          fn.apply(void 0, arguments);
        }
      }
      validate.chainOf = fns;
      if (fns.length >= 2 && "type" in fns[0] && fns[0].type === "array" && !("each" in fns[1])) {
        throw new Error("An assertValueType(\"array\") validator can only be followed by an assertEach(...) validator.");
      }
      return validate;
    }
    var validTypeOpts = ["aliases", "builder", "deprecatedAlias", "fields", "inherits", "visitor", "validate"];
    var validFieldKeys = ["default", "optional", "validate"];
    var store = {};
    function defineAliasedType() {
      for (var _len5 = arguments.length, aliases = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
        aliases[_key5] = arguments[_key5];
      }
      return function (type, opts) {
        var _defined2;
        if (opts === void 0) {
          opts = {};
        }
        var defined = opts.aliases;
        if (!defined) {
          var _store$opts$inherits$, _defined;
          if (opts.inherits) defined = (_store$opts$inherits$ = store[opts.inherits].aliases) == null ? void 0 : _store$opts$inherits$.slice();
          (_defined = defined) != null ? _defined : defined = [];
          opts.aliases = defined;
        }
        var additional = aliases.filter(function (a) {
          return !defined.includes(a);
        });
        (_defined2 = defined).unshift.apply(_defined2, _toConsumableArray(additional));
        defineType$5(type, opts);
      };
    }
    function defineType$5(type, opts) {
      if (opts === void 0) {
        opts = {};
      }
      var inherits = opts.inherits && store[opts.inherits] || {};
      var fields = opts.fields;
      if (!fields) {
        fields = {};
        if (inherits.fields) {
          var keys = Object.getOwnPropertyNames(inherits.fields);
          for (var _iterator4 = _createForOfIteratorHelperLoose(keys), _step4; !(_step4 = _iterator4()).done;) {
            var _key6 = _step4.value;
            var field = inherits.fields[_key6];
            var def = field["default"];
            if (Array.isArray(def) ? def.length > 0 : def && typeof def === "object") {
              throw new Error("field defaults can only be primitives or empty arrays currently");
            }
            fields[_key6] = {
              "default": Array.isArray(def) ? [] : def,
              optional: field.optional,
              validate: field.validate
            };
          }
        }
      }
      var visitor = opts.visitor || inherits.visitor || [];
      var aliases = opts.aliases || inherits.aliases || [];
      var builder = opts.builder || inherits.builder || opts.visitor || [];
      for (var _i2 = 0, _Object$keys2 = Object.keys(opts); _i2 < _Object$keys2.length; _i2++) {
        var k = _Object$keys2[_i2];
        if (validTypeOpts.indexOf(k) === -1) {
          throw new Error("Unknown type option \"" + k + "\" on " + type);
        }
      }
      if (opts.deprecatedAlias) {
        DEPRECATED_KEYS$1[opts.deprecatedAlias] = type;
      }
      for (var _iterator5 = _createForOfIteratorHelperLoose(visitor.concat(builder)), _step5; !(_step5 = _iterator5()).done;) {
        var _key8 = _step5.value;
        fields[_key8] = fields[_key8] || {};
      }
      for (var _i3 = 0, _Object$keys3 = Object.keys(fields); _i3 < _Object$keys3.length; _i3++) {
        var _key7 = _Object$keys3[_i3];
        var _field = fields[_key7];
        if (_field["default"] !== undefined && builder.indexOf(_key7) === -1) {
          _field.optional = true;
        }
        if (_field["default"] === undefined) {
          _field["default"] = null;
        } else if (!_field.validate && _field["default"] != null) {
          _field.validate = assertValueType(getType$2(_field["default"]));
        }
        for (var _i4 = 0, _Object$keys4 = Object.keys(_field); _i4 < _Object$keys4.length; _i4++) {
          var _k = _Object$keys4[_i4];
          if (validFieldKeys.indexOf(_k) === -1) {
            throw new Error("Unknown field key \"" + _k + "\" on " + type + "." + _key7);
          }
        }
      }
      VISITOR_KEYS$5[type] = opts.visitor = visitor;
      BUILDER_KEYS[type] = opts.builder = builder;
      NODE_FIELDS[type] = opts.fields = fields;
      ALIAS_KEYS[type] = opts.aliases = aliases;
      aliases.forEach(function (alias) {
        FLIPPED_ALIAS_KEYS$3[alias] = FLIPPED_ALIAS_KEYS$3[alias] || [];
        FLIPPED_ALIAS_KEYS$3[alias].push(type);
      });
      if (opts.validate) {
        NODE_PARENT_VALIDATIONS[type] = opts.validate;
      }
      store[type] = opts;
    }
  
    var defineType$4 = defineAliasedType("Standardized");
    defineType$4("ArrayExpression", {
      fields: {
        elements: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeOrValueType("null", "Expression", "SpreadElement"))),
          "default": !browser$1$1.env.BABEL_TYPES_8_BREAKING ? [] : undefined
        }
      },
      visitor: ["elements"],
      aliases: ["Expression"]
    });
    defineType$4("AssignmentExpression", {
      fields: {
        operator: {
          validate: function () {
            if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) {
              return assertValueType("string");
            }
            var identifier = assertOneOf.apply(void 0, _toConsumableArray(ASSIGNMENT_OPERATORS));
            var pattern = assertOneOf("=");
            return function (node, key, val) {
              var validator = is$1("Pattern", node.left) ? pattern : identifier;
              validator(node, key, val);
            };
          }()
        },
        left: {
          validate: !browser$1$1.env.BABEL_TYPES_8_BREAKING ? assertNodeType("LVal") : assertNodeType("Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression")
        },
        right: {
          validate: assertNodeType("Expression")
        }
      },
      builder: ["operator", "left", "right"],
      visitor: ["left", "right"],
      aliases: ["Expression"]
    });
    defineType$4("BinaryExpression", {
      builder: ["operator", "left", "right"],
      fields: {
        operator: {
          validate: assertOneOf.apply(void 0, _toConsumableArray(BINARY_OPERATORS))
        },
        left: {
          validate: function () {
            var expression = assertNodeType("Expression");
            var inOp = assertNodeType("Expression", "PrivateName");
            var validator = Object.assign(function (node, key, val) {
              var validator = node.operator === "in" ? inOp : expression;
              validator(node, key, val);
            }, {
              oneOfNodeTypes: ["Expression", "PrivateName"]
            });
            return validator;
          }()
        },
        right: {
          validate: assertNodeType("Expression")
        }
      },
      visitor: ["left", "right"],
      aliases: ["Binary", "Expression"]
    });
    defineType$4("InterpreterDirective", {
      builder: ["value"],
      fields: {
        value: {
          validate: assertValueType("string")
        }
      }
    });
    defineType$4("Directive", {
      visitor: ["value"],
      fields: {
        value: {
          validate: assertNodeType("DirectiveLiteral")
        }
      }
    });
    defineType$4("DirectiveLiteral", {
      builder: ["value"],
      fields: {
        value: {
          validate: assertValueType("string")
        }
      }
    });
    defineType$4("BlockStatement", {
      builder: ["body", "directives"],
      visitor: ["directives", "body"],
      fields: {
        directives: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Directive"))),
          "default": []
        },
        body: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Statement")))
        }
      },
      aliases: ["Scopable", "BlockParent", "Block", "Statement"]
    });
    defineType$4("BreakStatement", {
      visitor: ["label"],
      fields: {
        label: {
          validate: assertNodeType("Identifier"),
          optional: true
        }
      },
      aliases: ["Statement", "Terminatorless", "CompletionStatement"]
    });
    defineType$4("CallExpression", {
      visitor: ["callee", "arguments", "typeParameters", "typeArguments"],
      builder: ["callee", "arguments"],
      aliases: ["Expression"],
      fields: Object.assign({
        callee: {
          validate: assertNodeType("Expression", "Super", "V8IntrinsicIdentifier")
        },
        arguments: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Expression", "SpreadElement", "JSXNamespacedName", "ArgumentPlaceholder")))
        }
      }, !browser$1$1.env.BABEL_TYPES_8_BREAKING ? {
        optional: {
          validate: assertOneOf(true, false),
          optional: true
        }
      } : {}, {
        typeArguments: {
          validate: assertNodeType("TypeParameterInstantiation"),
          optional: true
        },
        typeParameters: {
          validate: assertNodeType("TSTypeParameterInstantiation"),
          optional: true
        }
      })
    });
    defineType$4("CatchClause", {
      visitor: ["param", "body"],
      fields: {
        param: {
          validate: assertNodeType("Identifier", "ArrayPattern", "ObjectPattern"),
          optional: true
        },
        body: {
          validate: assertNodeType("BlockStatement")
        }
      },
      aliases: ["Scopable", "BlockParent"]
    });
    defineType$4("ConditionalExpression", {
      visitor: ["test", "consequent", "alternate"],
      fields: {
        test: {
          validate: assertNodeType("Expression")
        },
        consequent: {
          validate: assertNodeType("Expression")
        },
        alternate: {
          validate: assertNodeType("Expression")
        }
      },
      aliases: ["Expression", "Conditional"]
    });
    defineType$4("ContinueStatement", {
      visitor: ["label"],
      fields: {
        label: {
          validate: assertNodeType("Identifier"),
          optional: true
        }
      },
      aliases: ["Statement", "Terminatorless", "CompletionStatement"]
    });
    defineType$4("DebuggerStatement", {
      aliases: ["Statement"]
    });
    defineType$4("DoWhileStatement", {
      visitor: ["test", "body"],
      fields: {
        test: {
          validate: assertNodeType("Expression")
        },
        body: {
          validate: assertNodeType("Statement")
        }
      },
      aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"]
    });
    defineType$4("EmptyStatement", {
      aliases: ["Statement"]
    });
    defineType$4("ExpressionStatement", {
      visitor: ["expression"],
      fields: {
        expression: {
          validate: assertNodeType("Expression")
        }
      },
      aliases: ["Statement", "ExpressionWrapper"]
    });
    defineType$4("File", {
      builder: ["program", "comments", "tokens"],
      visitor: ["program"],
      fields: {
        program: {
          validate: assertNodeType("Program")
        },
        comments: {
          validate: !browser$1$1.env.BABEL_TYPES_8_BREAKING ? Object.assign(function () {}, {
            each: {
              oneOfNodeTypes: ["CommentBlock", "CommentLine"]
            }
          }) : assertEach(assertNodeType("CommentBlock", "CommentLine")),
          optional: true
        },
        tokens: {
          validate: assertEach(Object.assign(function () {}, {
            type: "any"
          })),
          optional: true
        }
      }
    });
    defineType$4("ForInStatement", {
      visitor: ["left", "right", "body"],
      aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"],
      fields: {
        left: {
          validate: !browser$1$1.env.BABEL_TYPES_8_BREAKING ? assertNodeType("VariableDeclaration", "LVal") : assertNodeType("VariableDeclaration", "Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression")
        },
        right: {
          validate: assertNodeType("Expression")
        },
        body: {
          validate: assertNodeType("Statement")
        }
      }
    });
    defineType$4("ForStatement", {
      visitor: ["init", "test", "update", "body"],
      aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop"],
      fields: {
        init: {
          validate: assertNodeType("VariableDeclaration", "Expression"),
          optional: true
        },
        test: {
          validate: assertNodeType("Expression"),
          optional: true
        },
        update: {
          validate: assertNodeType("Expression"),
          optional: true
        },
        body: {
          validate: assertNodeType("Statement")
        }
      }
    });
    var functionCommon = function functionCommon() {
      return {
        params: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Identifier", "Pattern", "RestElement")))
        },
        generator: {
          "default": false
        },
        async: {
          "default": false
        }
      };
    };
    var functionTypeAnnotationCommon = function functionTypeAnnotationCommon() {
      return {
        returnType: {
          validate: assertNodeType("TypeAnnotation", "TSTypeAnnotation", "Noop"),
          optional: true
        },
        typeParameters: {
          validate: assertNodeType("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"),
          optional: true
        }
      };
    };
    var functionDeclarationCommon = function functionDeclarationCommon() {
      return Object.assign({}, functionCommon(), {
        declare: {
          validate: assertValueType("boolean"),
          optional: true
        },
        id: {
          validate: assertNodeType("Identifier"),
          optional: true
        }
      });
    };
    defineType$4("FunctionDeclaration", {
      builder: ["id", "params", "body", "generator", "async"],
      visitor: ["id", "params", "body", "returnType", "typeParameters"],
      fields: Object.assign({}, functionDeclarationCommon(), functionTypeAnnotationCommon(), {
        body: {
          validate: assertNodeType("BlockStatement")
        },
        predicate: {
          validate: assertNodeType("DeclaredPredicate", "InferredPredicate"),
          optional: true
        }
      }),
      aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Statement", "Pureish", "Declaration"],
      validate: function () {
        if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return function () {};
        var identifier = assertNodeType("Identifier");
        return function (parent, key, node) {
          if (!is$1("ExportDefaultDeclaration", parent)) {
            identifier(node, "id", node.id);
          }
        };
      }()
    });
    defineType$4("FunctionExpression", {
      inherits: "FunctionDeclaration",
      aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"],
      fields: Object.assign({}, functionCommon(), functionTypeAnnotationCommon(), {
        id: {
          validate: assertNodeType("Identifier"),
          optional: true
        },
        body: {
          validate: assertNodeType("BlockStatement")
        },
        predicate: {
          validate: assertNodeType("DeclaredPredicate", "InferredPredicate"),
          optional: true
        }
      })
    });
    var patternLikeCommon = function patternLikeCommon() {
      return {
        typeAnnotation: {
          validate: assertNodeType("TypeAnnotation", "TSTypeAnnotation", "Noop"),
          optional: true
        },
        optional: {
          validate: assertValueType("boolean"),
          optional: true
        },
        decorators: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Decorator"))),
          optional: true
        }
      };
    };
    defineType$4("Identifier", {
      builder: ["name"],
      visitor: ["typeAnnotation", "decorators"],
      aliases: ["Expression", "PatternLike", "LVal", "TSEntityName"],
      fields: Object.assign({}, patternLikeCommon(), {
        name: {
          validate: chain$1(assertValueType("string"), Object.assign(function (node, key, val) {
            if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
            if (!isValidIdentifier$1(val, false)) {
              throw new TypeError("\"" + val + "\" is not a valid identifier name");
            }
          }, {
            type: "string"
          }))
        }
      }),
      validate: function validate(parent, key, node) {
        if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
        var match = /\.(\w+)$/.exec(key);
        if (!match) return;
        var _match = _slicedToArray(match, 2),
          parentKey = _match[1];
        var nonComp = {
          computed: false
        };
        if (parentKey === "property") {
          if (is$1("MemberExpression", parent, nonComp)) return;
          if (is$1("OptionalMemberExpression", parent, nonComp)) return;
        } else if (parentKey === "key") {
          if (is$1("Property", parent, nonComp)) return;
          if (is$1("Method", parent, nonComp)) return;
        } else if (parentKey === "exported") {
          if (is$1("ExportSpecifier", parent)) return;
        } else if (parentKey === "imported") {
          if (is$1("ImportSpecifier", parent, {
            imported: node
          })) return;
        } else if (parentKey === "meta") {
          if (is$1("MetaProperty", parent, {
            meta: node
          })) return;
        }
        if ((isKeyword(node.name) || isReservedWord(node.name, false)) && node.name !== "this") {
          throw new TypeError("\"" + node.name + "\" is not a valid identifier");
        }
      }
    });
    defineType$4("IfStatement", {
      visitor: ["test", "consequent", "alternate"],
      aliases: ["Statement", "Conditional"],
      fields: {
        test: {
          validate: assertNodeType("Expression")
        },
        consequent: {
          validate: assertNodeType("Statement")
        },
        alternate: {
          optional: true,
          validate: assertNodeType("Statement")
        }
      }
    });
    defineType$4("LabeledStatement", {
      visitor: ["label", "body"],
      aliases: ["Statement"],
      fields: {
        label: {
          validate: assertNodeType("Identifier")
        },
        body: {
          validate: assertNodeType("Statement")
        }
      }
    });
    defineType$4("StringLiteral", {
      builder: ["value"],
      fields: {
        value: {
          validate: assertValueType("string")
        }
      },
      aliases: ["Expression", "Pureish", "Literal", "Immutable"]
    });
    defineType$4("NumericLiteral", {
      builder: ["value"],
      deprecatedAlias: "NumberLiteral",
      fields: {
        value: {
          validate: assertValueType("number")
        }
      },
      aliases: ["Expression", "Pureish", "Literal", "Immutable"]
    });
    defineType$4("NullLiteral", {
      aliases: ["Expression", "Pureish", "Literal", "Immutable"]
    });
    defineType$4("BooleanLiteral", {
      builder: ["value"],
      fields: {
        value: {
          validate: assertValueType("boolean")
        }
      },
      aliases: ["Expression", "Pureish", "Literal", "Immutable"]
    });
    defineType$4("RegExpLiteral", {
      builder: ["pattern", "flags"],
      deprecatedAlias: "RegexLiteral",
      aliases: ["Expression", "Pureish", "Literal"],
      fields: {
        pattern: {
          validate: assertValueType("string")
        },
        flags: {
          validate: chain$1(assertValueType("string"), Object.assign(function (node, key, val) {
            if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
            var invalid = /[^gimsuy]/.exec(val);
            if (invalid) {
              throw new TypeError("\"" + invalid[0] + "\" is not a valid RegExp flag");
            }
          }, {
            type: "string"
          })),
          "default": ""
        }
      }
    });
    defineType$4("LogicalExpression", {
      builder: ["operator", "left", "right"],
      visitor: ["left", "right"],
      aliases: ["Binary", "Expression"],
      fields: {
        operator: {
          validate: assertOneOf.apply(void 0, _toConsumableArray(LOGICAL_OPERATORS$3))
        },
        left: {
          validate: assertNodeType("Expression")
        },
        right: {
          validate: assertNodeType("Expression")
        }
      }
    });
    defineType$4("MemberExpression", {
      builder: ["object", "property", "computed"].concat(_toConsumableArray(!browser$1$1.env.BABEL_TYPES_8_BREAKING ? ["optional"] : [])),
      visitor: ["object", "property"],
      aliases: ["Expression", "LVal"],
      fields: Object.assign({
        object: {
          validate: assertNodeType("Expression", "Super")
        },
        property: {
          validate: function () {
            var normal = assertNodeType("Identifier", "PrivateName");
            var computed = assertNodeType("Expression");
            var validator = function validator(node, key, val) {
              var validator = node.computed ? computed : normal;
              validator(node, key, val);
            };
            validator.oneOfNodeTypes = ["Expression", "Identifier", "PrivateName"];
            return validator;
          }()
        },
        computed: {
          "default": false
        }
      }, !browser$1$1.env.BABEL_TYPES_8_BREAKING ? {
        optional: {
          validate: assertOneOf(true, false),
          optional: true
        }
      } : {})
    });
    defineType$4("NewExpression", {
      inherits: "CallExpression"
    });
    defineType$4("Program", {
      visitor: ["directives", "body"],
      builder: ["body", "directives", "sourceType", "interpreter"],
      fields: {
        sourceFile: {
          validate: assertValueType("string")
        },
        sourceType: {
          validate: assertOneOf("script", "module"),
          "default": "script"
        },
        interpreter: {
          validate: assertNodeType("InterpreterDirective"),
          "default": null,
          optional: true
        },
        directives: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Directive"))),
          "default": []
        },
        body: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Statement")))
        }
      },
      aliases: ["Scopable", "BlockParent", "Block"]
    });
    defineType$4("ObjectExpression", {
      visitor: ["properties"],
      aliases: ["Expression"],
      fields: {
        properties: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("ObjectMethod", "ObjectProperty", "SpreadElement")))
        }
      }
    });
    defineType$4("ObjectMethod", {
      builder: ["kind", "key", "params", "body", "computed", "generator", "async"],
      fields: Object.assign({}, functionCommon(), functionTypeAnnotationCommon(), {
        kind: Object.assign({
          validate: assertOneOf("method", "get", "set")
        }, !browser$1$1.env.BABEL_TYPES_8_BREAKING ? {
          "default": "method"
        } : {}),
        computed: {
          "default": false
        },
        key: {
          validate: function () {
            var normal = assertNodeType("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral");
            var computed = assertNodeType("Expression");
            var validator = function validator(node, key, val) {
              var validator = node.computed ? computed : normal;
              validator(node, key, val);
            };
            validator.oneOfNodeTypes = ["Expression", "Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral"];
            return validator;
          }()
        },
        decorators: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Decorator"))),
          optional: true
        },
        body: {
          validate: assertNodeType("BlockStatement")
        }
      }),
      visitor: ["key", "params", "body", "decorators", "returnType", "typeParameters"],
      aliases: ["UserWhitespacable", "Function", "Scopable", "BlockParent", "FunctionParent", "Method", "ObjectMember"]
    });
    defineType$4("ObjectProperty", {
      builder: ["key", "value", "computed", "shorthand"].concat(_toConsumableArray(!browser$1$1.env.BABEL_TYPES_8_BREAKING ? ["decorators"] : [])),
      fields: {
        computed: {
          "default": false
        },
        key: {
          validate: function () {
            var normal = assertNodeType("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "DecimalLiteral", "PrivateName");
            var computed = assertNodeType("Expression");
            var validator = Object.assign(function (node, key, val) {
              var validator = node.computed ? computed : normal;
              validator(node, key, val);
            }, {
              oneOfNodeTypes: ["Expression", "Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "DecimalLiteral", "PrivateName"]
            });
            return validator;
          }()
        },
        value: {
          validate: assertNodeType("Expression", "PatternLike")
        },
        shorthand: {
          validate: chain$1(assertValueType("boolean"), Object.assign(function (node, key, val) {
            if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
            if (val && node.computed) {
              throw new TypeError("Property shorthand of ObjectProperty cannot be true if computed is true");
            }
          }, {
            type: "boolean"
          }), function (node, key, val) {
            if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
            if (val && !is$1("Identifier", node.key)) {
              throw new TypeError("Property shorthand of ObjectProperty cannot be true if key is not an Identifier");
            }
          }),
          "default": false
        },
        decorators: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Decorator"))),
          optional: true
        }
      },
      visitor: ["key", "value", "decorators"],
      aliases: ["UserWhitespacable", "Property", "ObjectMember"],
      validate: function () {
        var pattern = assertNodeType("Identifier", "Pattern", "TSAsExpression", "TSSatisfiesExpression", "TSNonNullExpression", "TSTypeAssertion");
        var expression = assertNodeType("Expression");
        return function (parent, key, node) {
          if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
          var validator = is$1("ObjectPattern", parent) ? pattern : expression;
          validator(node, "value", node.value);
        };
      }()
    });
    defineType$4("RestElement", {
      visitor: ["argument", "typeAnnotation"],
      builder: ["argument"],
      aliases: ["LVal", "PatternLike"],
      deprecatedAlias: "RestProperty",
      fields: Object.assign({}, patternLikeCommon(), {
        argument: {
          validate: !browser$1$1.env.BABEL_TYPES_8_BREAKING ? assertNodeType("LVal") : assertNodeType("Identifier", "ArrayPattern", "ObjectPattern", "MemberExpression", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression")
        }
      }),
      validate: function validate(parent, key) {
        if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
        var match = /(\w+)\[(\d+)\]/.exec(key);
        if (!match) throw new Error("Internal Babel error: malformed key.");
        var _ref = match,
          _ref2 = _slicedToArray(_ref, 3),
          listKey = _ref2[1],
          index = _ref2[2];
        if (parent[listKey].length > +index + 1) {
          throw new TypeError("RestElement must be last element of " + listKey);
        }
      }
    });
    defineType$4("ReturnStatement", {
      visitor: ["argument"],
      aliases: ["Statement", "Terminatorless", "CompletionStatement"],
      fields: {
        argument: {
          validate: assertNodeType("Expression"),
          optional: true
        }
      }
    });
    defineType$4("SequenceExpression", {
      visitor: ["expressions"],
      fields: {
        expressions: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Expression")))
        }
      },
      aliases: ["Expression"]
    });
    defineType$4("ParenthesizedExpression", {
      visitor: ["expression"],
      aliases: ["Expression", "ExpressionWrapper"],
      fields: {
        expression: {
          validate: assertNodeType("Expression")
        }
      }
    });
    defineType$4("SwitchCase", {
      visitor: ["test", "consequent"],
      fields: {
        test: {
          validate: assertNodeType("Expression"),
          optional: true
        },
        consequent: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Statement")))
        }
      }
    });
    defineType$4("SwitchStatement", {
      visitor: ["discriminant", "cases"],
      aliases: ["Statement", "BlockParent", "Scopable"],
      fields: {
        discriminant: {
          validate: assertNodeType("Expression")
        },
        cases: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("SwitchCase")))
        }
      }
    });
    defineType$4("ThisExpression", {
      aliases: ["Expression"]
    });
    defineType$4("ThrowStatement", {
      visitor: ["argument"],
      aliases: ["Statement", "Terminatorless", "CompletionStatement"],
      fields: {
        argument: {
          validate: assertNodeType("Expression")
        }
      }
    });
    defineType$4("TryStatement", {
      visitor: ["block", "handler", "finalizer"],
      aliases: ["Statement"],
      fields: {
        block: {
          validate: chain$1(assertNodeType("BlockStatement"), Object.assign(function (node) {
            if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
            if (!node.handler && !node.finalizer) {
              throw new TypeError("TryStatement expects either a handler or finalizer, or both");
            }
          }, {
            oneOfNodeTypes: ["BlockStatement"]
          }))
        },
        handler: {
          optional: true,
          validate: assertNodeType("CatchClause")
        },
        finalizer: {
          optional: true,
          validate: assertNodeType("BlockStatement")
        }
      }
    });
    defineType$4("UnaryExpression", {
      builder: ["operator", "argument", "prefix"],
      fields: {
        prefix: {
          "default": true
        },
        argument: {
          validate: assertNodeType("Expression")
        },
        operator: {
          validate: assertOneOf.apply(void 0, _toConsumableArray(UNARY_OPERATORS))
        }
      },
      visitor: ["argument"],
      aliases: ["UnaryLike", "Expression"]
    });
    defineType$4("UpdateExpression", {
      builder: ["operator", "argument", "prefix"],
      fields: {
        prefix: {
          "default": false
        },
        argument: {
          validate: !browser$1$1.env.BABEL_TYPES_8_BREAKING ? assertNodeType("Expression") : assertNodeType("Identifier", "MemberExpression")
        },
        operator: {
          validate: assertOneOf.apply(void 0, _toConsumableArray(UPDATE_OPERATORS))
        }
      },
      visitor: ["argument"],
      aliases: ["Expression"]
    });
    defineType$4("VariableDeclaration", {
      builder: ["kind", "declarations"],
      visitor: ["declarations"],
      aliases: ["Statement", "Declaration"],
      fields: {
        declare: {
          validate: assertValueType("boolean"),
          optional: true
        },
        kind: {
          validate: assertOneOf("var", "let", "const", "using")
        },
        declarations: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("VariableDeclarator")))
        }
      },
      validate: function validate(parent, key, node) {
        if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
        if (!is$1("ForXStatement", parent, {
          left: node
        })) return;
        if (node.declarations.length !== 1) {
          throw new TypeError("Exactly one VariableDeclarator is required in the VariableDeclaration of a " + parent.type);
        }
      }
    });
    defineType$4("VariableDeclarator", {
      visitor: ["id", "init"],
      fields: {
        id: {
          validate: function () {
            if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) {
              return assertNodeType("LVal");
            }
            var normal = assertNodeType("Identifier", "ArrayPattern", "ObjectPattern");
            var without = assertNodeType("Identifier");
            return function (node, key, val) {
              var validator = node.init ? normal : without;
              validator(node, key, val);
            };
          }()
        },
        definite: {
          optional: true,
          validate: assertValueType("boolean")
        },
        init: {
          optional: true,
          validate: assertNodeType("Expression")
        }
      }
    });
    defineType$4("WhileStatement", {
      visitor: ["test", "body"],
      aliases: ["Statement", "BlockParent", "Loop", "While", "Scopable"],
      fields: {
        test: {
          validate: assertNodeType("Expression")
        },
        body: {
          validate: assertNodeType("Statement")
        }
      }
    });
    defineType$4("WithStatement", {
      visitor: ["object", "body"],
      aliases: ["Statement"],
      fields: {
        object: {
          validate: assertNodeType("Expression")
        },
        body: {
          validate: assertNodeType("Statement")
        }
      }
    });
    defineType$4("AssignmentPattern", {
      visitor: ["left", "right", "decorators"],
      builder: ["left", "right"],
      aliases: ["Pattern", "PatternLike", "LVal"],
      fields: Object.assign({}, patternLikeCommon(), {
        left: {
          validate: assertNodeType("Identifier", "ObjectPattern", "ArrayPattern", "MemberExpression", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression")
        },
        right: {
          validate: assertNodeType("Expression")
        },
        decorators: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Decorator"))),
          optional: true
        }
      })
    });
    defineType$4("ArrayPattern", {
      visitor: ["elements", "typeAnnotation"],
      builder: ["elements"],
      aliases: ["Pattern", "PatternLike", "LVal"],
      fields: Object.assign({}, patternLikeCommon(), {
        elements: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeOrValueType("null", "PatternLike", "LVal")))
        }
      })
    });
    defineType$4("ArrowFunctionExpression", {
      builder: ["params", "body", "async"],
      visitor: ["params", "body", "returnType", "typeParameters"],
      aliases: ["Scopable", "Function", "BlockParent", "FunctionParent", "Expression", "Pureish"],
      fields: Object.assign({}, functionCommon(), functionTypeAnnotationCommon(), {
        expression: {
          validate: assertValueType("boolean")
        },
        body: {
          validate: assertNodeType("BlockStatement", "Expression")
        },
        predicate: {
          validate: assertNodeType("DeclaredPredicate", "InferredPredicate"),
          optional: true
        }
      })
    });
    defineType$4("ClassBody", {
      visitor: ["body"],
      fields: {
        body: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("ClassMethod", "ClassPrivateMethod", "ClassProperty", "ClassPrivateProperty", "ClassAccessorProperty", "TSDeclareMethod", "TSIndexSignature", "StaticBlock")))
        }
      }
    });
    defineType$4("ClassExpression", {
      builder: ["id", "superClass", "body", "decorators"],
      visitor: ["id", "body", "superClass", "mixins", "typeParameters", "superTypeParameters", "implements", "decorators"],
      aliases: ["Scopable", "Class", "Expression"],
      fields: {
        id: {
          validate: assertNodeType("Identifier"),
          optional: true
        },
        typeParameters: {
          validate: assertNodeType("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"),
          optional: true
        },
        body: {
          validate: assertNodeType("ClassBody")
        },
        superClass: {
          optional: true,
          validate: assertNodeType("Expression")
        },
        superTypeParameters: {
          validate: assertNodeType("TypeParameterInstantiation", "TSTypeParameterInstantiation"),
          optional: true
        },
        "implements": {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("TSExpressionWithTypeArguments", "ClassImplements"))),
          optional: true
        },
        decorators: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Decorator"))),
          optional: true
        },
        mixins: {
          validate: assertNodeType("InterfaceExtends"),
          optional: true
        }
      }
    });
    defineType$4("ClassDeclaration", {
      inherits: "ClassExpression",
      aliases: ["Scopable", "Class", "Statement", "Declaration"],
      fields: {
        id: {
          validate: assertNodeType("Identifier")
        },
        typeParameters: {
          validate: assertNodeType("TypeParameterDeclaration", "TSTypeParameterDeclaration", "Noop"),
          optional: true
        },
        body: {
          validate: assertNodeType("ClassBody")
        },
        superClass: {
          optional: true,
          validate: assertNodeType("Expression")
        },
        superTypeParameters: {
          validate: assertNodeType("TypeParameterInstantiation", "TSTypeParameterInstantiation"),
          optional: true
        },
        "implements": {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("TSExpressionWithTypeArguments", "ClassImplements"))),
          optional: true
        },
        decorators: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Decorator"))),
          optional: true
        },
        mixins: {
          validate: assertNodeType("InterfaceExtends"),
          optional: true
        },
        declare: {
          validate: assertValueType("boolean"),
          optional: true
        },
        "abstract": {
          validate: assertValueType("boolean"),
          optional: true
        }
      },
      validate: function () {
        var identifier = assertNodeType("Identifier");
        return function (parent, key, node) {
          if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
          if (!is$1("ExportDefaultDeclaration", parent)) {
            identifier(node, "id", node.id);
          }
        };
      }()
    });
    defineType$4("ExportAllDeclaration", {
      visitor: ["source"],
      aliases: ["Statement", "Declaration", "ImportOrExportDeclaration", "ExportDeclaration"],
      fields: {
        source: {
          validate: assertNodeType("StringLiteral")
        },
        exportKind: validateOptional(assertOneOf("type", "value")),
        assertions: {
          optional: true,
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("ImportAttribute")))
        }
      }
    });
    defineType$4("ExportDefaultDeclaration", {
      visitor: ["declaration"],
      aliases: ["Statement", "Declaration", "ImportOrExportDeclaration", "ExportDeclaration"],
      fields: {
        declaration: {
          validate: assertNodeType("TSDeclareFunction", "FunctionDeclaration", "ClassDeclaration", "Expression")
        },
        exportKind: validateOptional(assertOneOf("value"))
      }
    });
    defineType$4("ExportNamedDeclaration", {
      visitor: ["declaration", "specifiers", "source"],
      aliases: ["Statement", "Declaration", "ImportOrExportDeclaration", "ExportDeclaration"],
      fields: {
        declaration: {
          optional: true,
          validate: chain$1(assertNodeType("Declaration"), Object.assign(function (node, key, val) {
            if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
            if (val && node.specifiers.length) {
              throw new TypeError("Only declaration or specifiers is allowed on ExportNamedDeclaration");
            }
          }, {
            oneOfNodeTypes: ["Declaration"]
          }), function (node, key, val) {
            if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
            if (val && node.source) {
              throw new TypeError("Cannot export a declaration from a source");
            }
          })
        },
        assertions: {
          optional: true,
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("ImportAttribute")))
        },
        specifiers: {
          "default": [],
          validate: chain$1(assertValueType("array"), assertEach(function () {
            var sourced = assertNodeType("ExportSpecifier", "ExportDefaultSpecifier", "ExportNamespaceSpecifier");
            var sourceless = assertNodeType("ExportSpecifier");
            if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return sourced;
            return function (node, key, val) {
              var validator = node.source ? sourced : sourceless;
              validator(node, key, val);
            };
          }()))
        },
        source: {
          validate: assertNodeType("StringLiteral"),
          optional: true
        },
        exportKind: validateOptional(assertOneOf("type", "value"))
      }
    });
    defineType$4("ExportSpecifier", {
      visitor: ["local", "exported"],
      aliases: ["ModuleSpecifier"],
      fields: {
        local: {
          validate: assertNodeType("Identifier")
        },
        exported: {
          validate: assertNodeType("Identifier", "StringLiteral")
        },
        exportKind: {
          validate: assertOneOf("type", "value"),
          optional: true
        }
      }
    });
    defineType$4("ForOfStatement", {
      visitor: ["left", "right", "body"],
      builder: ["left", "right", "body", "await"],
      aliases: ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"],
      fields: {
        left: {
          validate: function () {
            if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) {
              return assertNodeType("VariableDeclaration", "LVal");
            }
            var declaration = assertNodeType("VariableDeclaration");
            var lval = assertNodeType("Identifier", "MemberExpression", "ArrayPattern", "ObjectPattern", "TSAsExpression", "TSSatisfiesExpression", "TSTypeAssertion", "TSNonNullExpression");
            return function (node, key, val) {
              if (is$1("VariableDeclaration", val)) {
                declaration(node, key, val);
              } else {
                lval(node, key, val);
              }
            };
          }()
        },
        right: {
          validate: assertNodeType("Expression")
        },
        body: {
          validate: assertNodeType("Statement")
        },
        "await": {
          "default": false
        }
      }
    });
    defineType$4("ImportDeclaration", {
      visitor: ["specifiers", "source"],
      aliases: ["Statement", "Declaration", "ImportOrExportDeclaration"],
      fields: {
        assertions: {
          optional: true,
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("ImportAttribute")))
        },
        module: {
          optional: true,
          validate: assertValueType("boolean")
        },
        specifiers: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("ImportSpecifier", "ImportDefaultSpecifier", "ImportNamespaceSpecifier")))
        },
        source: {
          validate: assertNodeType("StringLiteral")
        },
        importKind: {
          validate: assertOneOf("type", "typeof", "value"),
          optional: true
        }
      }
    });
    defineType$4("ImportDefaultSpecifier", {
      visitor: ["local"],
      aliases: ["ModuleSpecifier"],
      fields: {
        local: {
          validate: assertNodeType("Identifier")
        }
      }
    });
    defineType$4("ImportNamespaceSpecifier", {
      visitor: ["local"],
      aliases: ["ModuleSpecifier"],
      fields: {
        local: {
          validate: assertNodeType("Identifier")
        }
      }
    });
    defineType$4("ImportSpecifier", {
      visitor: ["local", "imported"],
      aliases: ["ModuleSpecifier"],
      fields: {
        local: {
          validate: assertNodeType("Identifier")
        },
        imported: {
          validate: assertNodeType("Identifier", "StringLiteral")
        },
        importKind: {
          validate: assertOneOf("type", "typeof", "value"),
          optional: true
        }
      }
    });
    defineType$4("MetaProperty", {
      visitor: ["meta", "property"],
      aliases: ["Expression"],
      fields: {
        meta: {
          validate: chain$1(assertNodeType("Identifier"), Object.assign(function (node, key, val) {
            if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
            var property;
            switch (val.name) {
              case "function":
                property = "sent";
                break;
              case "new":
                property = "target";
                break;
              case "import":
                property = "meta";
                break;
            }
            if (!is$1("Identifier", node.property, {
              name: property
            })) {
              throw new TypeError("Unrecognised MetaProperty");
            }
          }, {
            oneOfNodeTypes: ["Identifier"]
          }))
        },
        property: {
          validate: assertNodeType("Identifier")
        }
      }
    });
    var classMethodOrPropertyCommon = function classMethodOrPropertyCommon() {
      return {
        "abstract": {
          validate: assertValueType("boolean"),
          optional: true
        },
        accessibility: {
          validate: assertOneOf("public", "private", "protected"),
          optional: true
        },
        "static": {
          "default": false
        },
        override: {
          "default": false
        },
        computed: {
          "default": false
        },
        optional: {
          validate: assertValueType("boolean"),
          optional: true
        },
        key: {
          validate: chain$1(function () {
            var normal = assertNodeType("Identifier", "StringLiteral", "NumericLiteral");
            var computed = assertNodeType("Expression");
            return function (node, key, val) {
              var validator = node.computed ? computed : normal;
              validator(node, key, val);
            };
          }(), assertNodeType("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "Expression"))
        }
      };
    };
    var classMethodOrDeclareMethodCommon = function classMethodOrDeclareMethodCommon() {
      return Object.assign({}, functionCommon(), classMethodOrPropertyCommon(), {
        params: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Identifier", "Pattern", "RestElement", "TSParameterProperty")))
        },
        kind: {
          validate: assertOneOf("get", "set", "method", "constructor"),
          "default": "method"
        },
        access: {
          validate: chain$1(assertValueType("string"), assertOneOf("public", "private", "protected")),
          optional: true
        },
        decorators: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Decorator"))),
          optional: true
        }
      });
    };
    defineType$4("ClassMethod", {
      aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method"],
      builder: ["kind", "key", "params", "body", "computed", "static", "generator", "async"],
      visitor: ["key", "params", "body", "decorators", "returnType", "typeParameters"],
      fields: Object.assign({}, classMethodOrDeclareMethodCommon(), functionTypeAnnotationCommon(), {
        body: {
          validate: assertNodeType("BlockStatement")
        }
      })
    });
    defineType$4("ObjectPattern", {
      visitor: ["properties", "typeAnnotation", "decorators"],
      builder: ["properties"],
      aliases: ["Pattern", "PatternLike", "LVal"],
      fields: Object.assign({}, patternLikeCommon(), {
        properties: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("RestElement", "ObjectProperty")))
        }
      })
    });
    defineType$4("SpreadElement", {
      visitor: ["argument"],
      aliases: ["UnaryLike"],
      deprecatedAlias: "SpreadProperty",
      fields: {
        argument: {
          validate: assertNodeType("Expression")
        }
      }
    });
    defineType$4("Super", {
      aliases: ["Expression"]
    });
    defineType$4("TaggedTemplateExpression", {
      visitor: ["tag", "quasi", "typeParameters"],
      builder: ["tag", "quasi"],
      aliases: ["Expression"],
      fields: {
        tag: {
          validate: assertNodeType("Expression")
        },
        quasi: {
          validate: assertNodeType("TemplateLiteral")
        },
        typeParameters: {
          validate: assertNodeType("TypeParameterInstantiation", "TSTypeParameterInstantiation"),
          optional: true
        }
      }
    });
    defineType$4("TemplateElement", {
      builder: ["value", "tail"],
      fields: {
        value: {
          validate: chain$1(assertShape({
            raw: {
              validate: assertValueType("string")
            },
            cooked: {
              validate: assertValueType("string"),
              optional: true
            }
          }), function templateElementCookedValidator(node) {
            var raw = node.value.raw;
            var unterminatedCalled = false;
            var error = function error() {
              throw new Error("Internal @babel/types error.");
            };
            var _readStringContents = readStringContents("template", raw, 0, 0, 0, {
                unterminated: function unterminated() {
                  unterminatedCalled = true;
                },
                strictNumericEscape: error,
                invalidEscapeSequence: error,
                numericSeparatorInEscapeSequence: error,
                unexpectedNumericSeparator: error,
                invalidDigit: error,
                invalidCodePoint: error
              }),
              str = _readStringContents.str,
              firstInvalidLoc = _readStringContents.firstInvalidLoc;
            if (!unterminatedCalled) throw new Error("Invalid raw");
            node.value.cooked = firstInvalidLoc ? null : str;
          })
        },
        tail: {
          "default": false
        }
      }
    });
    defineType$4("TemplateLiteral", {
      visitor: ["quasis", "expressions"],
      aliases: ["Expression", "Literal"],
      fields: {
        quasis: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("TemplateElement")))
        },
        expressions: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Expression", "TSType")), function (node, key, val) {
            if (node.quasis.length !== val.length + 1) {
              throw new TypeError("Number of " + node.type + " quasis should be exactly one more than the number of expressions.\nExpected " + (val.length + 1) + " quasis but got " + node.quasis.length);
            }
          })
        }
      }
    });
    defineType$4("YieldExpression", {
      builder: ["argument", "delegate"],
      visitor: ["argument"],
      aliases: ["Expression", "Terminatorless"],
      fields: {
        delegate: {
          validate: chain$1(assertValueType("boolean"), Object.assign(function (node, key, val) {
            if (!browser$1$1.env.BABEL_TYPES_8_BREAKING) return;
            if (val && !node.argument) {
              throw new TypeError("Property delegate of YieldExpression cannot be true if there is no argument");
            }
          }, {
            type: "boolean"
          })),
          "default": false
        },
        argument: {
          optional: true,
          validate: assertNodeType("Expression")
        }
      }
    });
    defineType$4("AwaitExpression", {
      builder: ["argument"],
      visitor: ["argument"],
      aliases: ["Expression", "Terminatorless"],
      fields: {
        argument: {
          validate: assertNodeType("Expression")
        }
      }
    });
    defineType$4("Import", {
      aliases: ["Expression"]
    });
    defineType$4("BigIntLiteral", {
      builder: ["value"],
      fields: {
        value: {
          validate: assertValueType("string")
        }
      },
      aliases: ["Expression", "Pureish", "Literal", "Immutable"]
    });
    defineType$4("ExportNamespaceSpecifier", {
      visitor: ["exported"],
      aliases: ["ModuleSpecifier"],
      fields: {
        exported: {
          validate: assertNodeType("Identifier")
        }
      }
    });
    defineType$4("OptionalMemberExpression", {
      builder: ["object", "property", "computed", "optional"],
      visitor: ["object", "property"],
      aliases: ["Expression"],
      fields: {
        object: {
          validate: assertNodeType("Expression")
        },
        property: {
          validate: function () {
            var normal = assertNodeType("Identifier");
            var computed = assertNodeType("Expression");
            var validator = Object.assign(function (node, key, val) {
              var validator = node.computed ? computed : normal;
              validator(node, key, val);
            }, {
              oneOfNodeTypes: ["Expression", "Identifier"]
            });
            return validator;
          }()
        },
        computed: {
          "default": false
        },
        optional: {
          validate: !browser$1$1.env.BABEL_TYPES_8_BREAKING ? assertValueType("boolean") : chain$1(assertValueType("boolean"), assertOptionalChainStart())
        }
      }
    });
    defineType$4("OptionalCallExpression", {
      visitor: ["callee", "arguments", "typeParameters", "typeArguments"],
      builder: ["callee", "arguments", "optional"],
      aliases: ["Expression"],
      fields: {
        callee: {
          validate: assertNodeType("Expression")
        },
        arguments: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Expression", "SpreadElement", "JSXNamespacedName", "ArgumentPlaceholder")))
        },
        optional: {
          validate: !browser$1$1.env.BABEL_TYPES_8_BREAKING ? assertValueType("boolean") : chain$1(assertValueType("boolean"), assertOptionalChainStart())
        },
        typeArguments: {
          validate: assertNodeType("TypeParameterInstantiation"),
          optional: true
        },
        typeParameters: {
          validate: assertNodeType("TSTypeParameterInstantiation"),
          optional: true
        }
      }
    });
    defineType$4("ClassProperty", {
      visitor: ["key", "value", "typeAnnotation", "decorators"],
      builder: ["key", "value", "typeAnnotation", "decorators", "computed", "static"],
      aliases: ["Property"],
      fields: Object.assign({}, classMethodOrPropertyCommon(), {
        value: {
          validate: assertNodeType("Expression"),
          optional: true
        },
        definite: {
          validate: assertValueType("boolean"),
          optional: true
        },
        typeAnnotation: {
          validate: assertNodeType("TypeAnnotation", "TSTypeAnnotation", "Noop"),
          optional: true
        },
        decorators: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Decorator"))),
          optional: true
        },
        readonly: {
          validate: assertValueType("boolean"),
          optional: true
        },
        declare: {
          validate: assertValueType("boolean"),
          optional: true
        },
        variance: {
          validate: assertNodeType("Variance"),
          optional: true
        }
      })
    });
    defineType$4("ClassAccessorProperty", {
      visitor: ["key", "value", "typeAnnotation", "decorators"],
      builder: ["key", "value", "typeAnnotation", "decorators", "computed", "static"],
      aliases: ["Property", "Accessor"],
      fields: Object.assign({}, classMethodOrPropertyCommon(), {
        key: {
          validate: chain$1(function () {
            var normal = assertNodeType("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "PrivateName");
            var computed = assertNodeType("Expression");
            return function (node, key, val) {
              var validator = node.computed ? computed : normal;
              validator(node, key, val);
            };
          }(), assertNodeType("Identifier", "StringLiteral", "NumericLiteral", "BigIntLiteral", "Expression", "PrivateName"))
        },
        value: {
          validate: assertNodeType("Expression"),
          optional: true
        },
        definite: {
          validate: assertValueType("boolean"),
          optional: true
        },
        typeAnnotation: {
          validate: assertNodeType("TypeAnnotation", "TSTypeAnnotation", "Noop"),
          optional: true
        },
        decorators: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Decorator"))),
          optional: true
        },
        readonly: {
          validate: assertValueType("boolean"),
          optional: true
        },
        declare: {
          validate: assertValueType("boolean"),
          optional: true
        },
        variance: {
          validate: assertNodeType("Variance"),
          optional: true
        }
      })
    });
    defineType$4("ClassPrivateProperty", {
      visitor: ["key", "value", "decorators", "typeAnnotation"],
      builder: ["key", "value", "decorators", "static"],
      aliases: ["Property", "Private"],
      fields: {
        key: {
          validate: assertNodeType("PrivateName")
        },
        value: {
          validate: assertNodeType("Expression"),
          optional: true
        },
        typeAnnotation: {
          validate: assertNodeType("TypeAnnotation", "TSTypeAnnotation", "Noop"),
          optional: true
        },
        decorators: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Decorator"))),
          optional: true
        },
        "static": {
          validate: assertValueType("boolean"),
          "default": false
        },
        readonly: {
          validate: assertValueType("boolean"),
          optional: true
        },
        definite: {
          validate: assertValueType("boolean"),
          optional: true
        },
        variance: {
          validate: assertNodeType("Variance"),
          optional: true
        }
      }
    });
    defineType$4("ClassPrivateMethod", {
      builder: ["kind", "key", "params", "body", "static"],
      visitor: ["key", "params", "body", "decorators", "returnType", "typeParameters"],
      aliases: ["Function", "Scopable", "BlockParent", "FunctionParent", "Method", "Private"],
      fields: Object.assign({}, classMethodOrDeclareMethodCommon(), functionTypeAnnotationCommon(), {
        kind: {
          validate: assertOneOf("get", "set", "method"),
          "default": "method"
        },
        key: {
          validate: assertNodeType("PrivateName")
        },
        body: {
          validate: assertNodeType("BlockStatement")
        }
      })
    });
    defineType$4("PrivateName", {
      visitor: ["id"],
      aliases: ["Private"],
      fields: {
        id: {
          validate: assertNodeType("Identifier")
        }
      }
    });
    defineType$4("StaticBlock", {
      visitor: ["body"],
      fields: {
        body: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Statement")))
        }
      },
      aliases: ["Scopable", "BlockParent", "FunctionParent"]
    });
  
    var defineType$3 = defineAliasedType("Flow");
    var defineInterfaceishType = function defineInterfaceishType(name) {
      var isDeclareClass = name === "DeclareClass";
      defineType$3(name, {
        builder: ["id", "typeParameters", "extends", "body"],
        visitor: ["id", "typeParameters", "extends"].concat(_toConsumableArray(isDeclareClass ? ["mixins", "implements"] : []), ["body"]),
        aliases: ["FlowDeclaration", "Statement", "Declaration"],
        fields: Object.assign({
          id: validateType("Identifier"),
          typeParameters: validateOptionalType("TypeParameterDeclaration"),
          "extends": validateOptional(arrayOfType("InterfaceExtends"))
        }, isDeclareClass ? {
          mixins: validateOptional(arrayOfType("InterfaceExtends")),
          "implements": validateOptional(arrayOfType("ClassImplements"))
        } : {}, {
          body: validateType("ObjectTypeAnnotation")
        })
      });
    };
    defineType$3("AnyTypeAnnotation", {
      aliases: ["FlowType", "FlowBaseAnnotation"]
    });
    defineType$3("ArrayTypeAnnotation", {
      visitor: ["elementType"],
      aliases: ["FlowType"],
      fields: {
        elementType: validateType("FlowType")
      }
    });
    defineType$3("BooleanTypeAnnotation", {
      aliases: ["FlowType", "FlowBaseAnnotation"]
    });
    defineType$3("BooleanLiteralTypeAnnotation", {
      builder: ["value"],
      aliases: ["FlowType"],
      fields: {
        value: validate$6(assertValueType("boolean"))
      }
    });
    defineType$3("NullLiteralTypeAnnotation", {
      aliases: ["FlowType", "FlowBaseAnnotation"]
    });
    defineType$3("ClassImplements", {
      visitor: ["id", "typeParameters"],
      fields: {
        id: validateType("Identifier"),
        typeParameters: validateOptionalType("TypeParameterInstantiation")
      }
    });
    defineInterfaceishType("DeclareClass");
    defineType$3("DeclareFunction", {
      visitor: ["id"],
      aliases: ["FlowDeclaration", "Statement", "Declaration"],
      fields: {
        id: validateType("Identifier"),
        predicate: validateOptionalType("DeclaredPredicate")
      }
    });
    defineInterfaceishType("DeclareInterface");
    defineType$3("DeclareModule", {
      builder: ["id", "body", "kind"],
      visitor: ["id", "body"],
      aliases: ["FlowDeclaration", "Statement", "Declaration"],
      fields: {
        id: validateType(["Identifier", "StringLiteral"]),
        body: validateType("BlockStatement"),
        kind: validateOptional(assertOneOf("CommonJS", "ES"))
      }
    });
    defineType$3("DeclareModuleExports", {
      visitor: ["typeAnnotation"],
      aliases: ["FlowDeclaration", "Statement", "Declaration"],
      fields: {
        typeAnnotation: validateType("TypeAnnotation")
      }
    });
    defineType$3("DeclareTypeAlias", {
      visitor: ["id", "typeParameters", "right"],
      aliases: ["FlowDeclaration", "Statement", "Declaration"],
      fields: {
        id: validateType("Identifier"),
        typeParameters: validateOptionalType("TypeParameterDeclaration"),
        right: validateType("FlowType")
      }
    });
    defineType$3("DeclareOpaqueType", {
      visitor: ["id", "typeParameters", "supertype"],
      aliases: ["FlowDeclaration", "Statement", "Declaration"],
      fields: {
        id: validateType("Identifier"),
        typeParameters: validateOptionalType("TypeParameterDeclaration"),
        supertype: validateOptionalType("FlowType"),
        impltype: validateOptionalType("FlowType")
      }
    });
    defineType$3("DeclareVariable", {
      visitor: ["id"],
      aliases: ["FlowDeclaration", "Statement", "Declaration"],
      fields: {
        id: validateType("Identifier")
      }
    });
    defineType$3("DeclareExportDeclaration", {
      visitor: ["declaration", "specifiers", "source"],
      aliases: ["FlowDeclaration", "Statement", "Declaration"],
      fields: {
        declaration: validateOptionalType("Flow"),
        specifiers: validateOptional(arrayOfType(["ExportSpecifier", "ExportNamespaceSpecifier"])),
        source: validateOptionalType("StringLiteral"),
        "default": validateOptional(assertValueType("boolean"))
      }
    });
    defineType$3("DeclareExportAllDeclaration", {
      visitor: ["source"],
      aliases: ["FlowDeclaration", "Statement", "Declaration"],
      fields: {
        source: validateType("StringLiteral"),
        exportKind: validateOptional(assertOneOf("type", "value"))
      }
    });
    defineType$3("DeclaredPredicate", {
      visitor: ["value"],
      aliases: ["FlowPredicate"],
      fields: {
        value: validateType("Flow")
      }
    });
    defineType$3("ExistsTypeAnnotation", {
      aliases: ["FlowType"]
    });
    defineType$3("FunctionTypeAnnotation", {
      visitor: ["typeParameters", "params", "rest", "returnType"],
      aliases: ["FlowType"],
      fields: {
        typeParameters: validateOptionalType("TypeParameterDeclaration"),
        params: validate$6(arrayOfType("FunctionTypeParam")),
        rest: validateOptionalType("FunctionTypeParam"),
        "this": validateOptionalType("FunctionTypeParam"),
        returnType: validateType("FlowType")
      }
    });
    defineType$3("FunctionTypeParam", {
      visitor: ["name", "typeAnnotation"],
      fields: {
        name: validateOptionalType("Identifier"),
        typeAnnotation: validateType("FlowType"),
        optional: validateOptional(assertValueType("boolean"))
      }
    });
    defineType$3("GenericTypeAnnotation", {
      visitor: ["id", "typeParameters"],
      aliases: ["FlowType"],
      fields: {
        id: validateType(["Identifier", "QualifiedTypeIdentifier"]),
        typeParameters: validateOptionalType("TypeParameterInstantiation")
      }
    });
    defineType$3("InferredPredicate", {
      aliases: ["FlowPredicate"]
    });
    defineType$3("InterfaceExtends", {
      visitor: ["id", "typeParameters"],
      fields: {
        id: validateType(["Identifier", "QualifiedTypeIdentifier"]),
        typeParameters: validateOptionalType("TypeParameterInstantiation")
      }
    });
    defineInterfaceishType("InterfaceDeclaration");
    defineType$3("InterfaceTypeAnnotation", {
      visitor: ["extends", "body"],
      aliases: ["FlowType"],
      fields: {
        "extends": validateOptional(arrayOfType("InterfaceExtends")),
        body: validateType("ObjectTypeAnnotation")
      }
    });
    defineType$3("IntersectionTypeAnnotation", {
      visitor: ["types"],
      aliases: ["FlowType"],
      fields: {
        types: validate$6(arrayOfType("FlowType"))
      }
    });
    defineType$3("MixedTypeAnnotation", {
      aliases: ["FlowType", "FlowBaseAnnotation"]
    });
    defineType$3("EmptyTypeAnnotation", {
      aliases: ["FlowType", "FlowBaseAnnotation"]
    });
    defineType$3("NullableTypeAnnotation", {
      visitor: ["typeAnnotation"],
      aliases: ["FlowType"],
      fields: {
        typeAnnotation: validateType("FlowType")
      }
    });
    defineType$3("NumberLiteralTypeAnnotation", {
      builder: ["value"],
      aliases: ["FlowType"],
      fields: {
        value: validate$6(assertValueType("number"))
      }
    });
    defineType$3("NumberTypeAnnotation", {
      aliases: ["FlowType", "FlowBaseAnnotation"]
    });
    defineType$3("ObjectTypeAnnotation", {
      visitor: ["properties", "indexers", "callProperties", "internalSlots"],
      aliases: ["FlowType"],
      builder: ["properties", "indexers", "callProperties", "internalSlots", "exact"],
      fields: {
        properties: validate$6(arrayOfType(["ObjectTypeProperty", "ObjectTypeSpreadProperty"])),
        indexers: {
          validate: arrayOfType("ObjectTypeIndexer"),
          optional: true,
          "default": []
        },
        callProperties: {
          validate: arrayOfType("ObjectTypeCallProperty"),
          optional: true,
          "default": []
        },
        internalSlots: {
          validate: arrayOfType("ObjectTypeInternalSlot"),
          optional: true,
          "default": []
        },
        exact: {
          validate: assertValueType("boolean"),
          "default": false
        },
        inexact: validateOptional(assertValueType("boolean"))
      }
    });
    defineType$3("ObjectTypeInternalSlot", {
      visitor: ["id", "value", "optional", "static", "method"],
      aliases: ["UserWhitespacable"],
      fields: {
        id: validateType("Identifier"),
        value: validateType("FlowType"),
        optional: validate$6(assertValueType("boolean")),
        "static": validate$6(assertValueType("boolean")),
        method: validate$6(assertValueType("boolean"))
      }
    });
    defineType$3("ObjectTypeCallProperty", {
      visitor: ["value"],
      aliases: ["UserWhitespacable"],
      fields: {
        value: validateType("FlowType"),
        "static": validate$6(assertValueType("boolean"))
      }
    });
    defineType$3("ObjectTypeIndexer", {
      visitor: ["id", "key", "value", "variance"],
      aliases: ["UserWhitespacable"],
      fields: {
        id: validateOptionalType("Identifier"),
        key: validateType("FlowType"),
        value: validateType("FlowType"),
        "static": validate$6(assertValueType("boolean")),
        variance: validateOptionalType("Variance")
      }
    });
    defineType$3("ObjectTypeProperty", {
      visitor: ["key", "value", "variance"],
      aliases: ["UserWhitespacable"],
      fields: {
        key: validateType(["Identifier", "StringLiteral"]),
        value: validateType("FlowType"),
        kind: validate$6(assertOneOf("init", "get", "set")),
        "static": validate$6(assertValueType("boolean")),
        proto: validate$6(assertValueType("boolean")),
        optional: validate$6(assertValueType("boolean")),
        variance: validateOptionalType("Variance"),
        method: validate$6(assertValueType("boolean"))
      }
    });
    defineType$3("ObjectTypeSpreadProperty", {
      visitor: ["argument"],
      aliases: ["UserWhitespacable"],
      fields: {
        argument: validateType("FlowType")
      }
    });
    defineType$3("OpaqueType", {
      visitor: ["id", "typeParameters", "supertype", "impltype"],
      aliases: ["FlowDeclaration", "Statement", "Declaration"],
      fields: {
        id: validateType("Identifier"),
        typeParameters: validateOptionalType("TypeParameterDeclaration"),
        supertype: validateOptionalType("FlowType"),
        impltype: validateType("FlowType")
      }
    });
    defineType$3("QualifiedTypeIdentifier", {
      visitor: ["id", "qualification"],
      fields: {
        id: validateType("Identifier"),
        qualification: validateType(["Identifier", "QualifiedTypeIdentifier"])
      }
    });
    defineType$3("StringLiteralTypeAnnotation", {
      builder: ["value"],
      aliases: ["FlowType"],
      fields: {
        value: validate$6(assertValueType("string"))
      }
    });
    defineType$3("StringTypeAnnotation", {
      aliases: ["FlowType", "FlowBaseAnnotation"]
    });
    defineType$3("SymbolTypeAnnotation", {
      aliases: ["FlowType", "FlowBaseAnnotation"]
    });
    defineType$3("ThisTypeAnnotation", {
      aliases: ["FlowType", "FlowBaseAnnotation"]
    });
    defineType$3("TupleTypeAnnotation", {
      visitor: ["types"],
      aliases: ["FlowType"],
      fields: {
        types: validate$6(arrayOfType("FlowType"))
      }
    });
    defineType$3("TypeofTypeAnnotation", {
      visitor: ["argument"],
      aliases: ["FlowType"],
      fields: {
        argument: validateType("FlowType")
      }
    });
    defineType$3("TypeAlias", {
      visitor: ["id", "typeParameters", "right"],
      aliases: ["FlowDeclaration", "Statement", "Declaration"],
      fields: {
        id: validateType("Identifier"),
        typeParameters: validateOptionalType("TypeParameterDeclaration"),
        right: validateType("FlowType")
      }
    });
    defineType$3("TypeAnnotation", {
      visitor: ["typeAnnotation"],
      fields: {
        typeAnnotation: validateType("FlowType")
      }
    });
    defineType$3("TypeCastExpression", {
      visitor: ["expression", "typeAnnotation"],
      aliases: ["ExpressionWrapper", "Expression"],
      fields: {
        expression: validateType("Expression"),
        typeAnnotation: validateType("TypeAnnotation")
      }
    });
    defineType$3("TypeParameter", {
      visitor: ["bound", "default", "variance"],
      fields: {
        name: validate$6(assertValueType("string")),
        bound: validateOptionalType("TypeAnnotation"),
        "default": validateOptionalType("FlowType"),
        variance: validateOptionalType("Variance")
      }
    });
    defineType$3("TypeParameterDeclaration", {
      visitor: ["params"],
      fields: {
        params: validate$6(arrayOfType("TypeParameter"))
      }
    });
    defineType$3("TypeParameterInstantiation", {
      visitor: ["params"],
      fields: {
        params: validate$6(arrayOfType("FlowType"))
      }
    });
    defineType$3("UnionTypeAnnotation", {
      visitor: ["types"],
      aliases: ["FlowType"],
      fields: {
        types: validate$6(arrayOfType("FlowType"))
      }
    });
    defineType$3("Variance", {
      builder: ["kind"],
      fields: {
        kind: validate$6(assertOneOf("minus", "plus"))
      }
    });
    defineType$3("VoidTypeAnnotation", {
      aliases: ["FlowType", "FlowBaseAnnotation"]
    });
    defineType$3("EnumDeclaration", {
      aliases: ["Statement", "Declaration"],
      visitor: ["id", "body"],
      fields: {
        id: validateType("Identifier"),
        body: validateType(["EnumBooleanBody", "EnumNumberBody", "EnumStringBody", "EnumSymbolBody"])
      }
    });
    defineType$3("EnumBooleanBody", {
      aliases: ["EnumBody"],
      visitor: ["members"],
      fields: {
        explicitType: validate$6(assertValueType("boolean")),
        members: validateArrayOfType("EnumBooleanMember"),
        hasUnknownMembers: validate$6(assertValueType("boolean"))
      }
    });
    defineType$3("EnumNumberBody", {
      aliases: ["EnumBody"],
      visitor: ["members"],
      fields: {
        explicitType: validate$6(assertValueType("boolean")),
        members: validateArrayOfType("EnumNumberMember"),
        hasUnknownMembers: validate$6(assertValueType("boolean"))
      }
    });
    defineType$3("EnumStringBody", {
      aliases: ["EnumBody"],
      visitor: ["members"],
      fields: {
        explicitType: validate$6(assertValueType("boolean")),
        members: validateArrayOfType(["EnumStringMember", "EnumDefaultedMember"]),
        hasUnknownMembers: validate$6(assertValueType("boolean"))
      }
    });
    defineType$3("EnumSymbolBody", {
      aliases: ["EnumBody"],
      visitor: ["members"],
      fields: {
        members: validateArrayOfType("EnumDefaultedMember"),
        hasUnknownMembers: validate$6(assertValueType("boolean"))
      }
    });
    defineType$3("EnumBooleanMember", {
      aliases: ["EnumMember"],
      visitor: ["id"],
      fields: {
        id: validateType("Identifier"),
        init: validateType("BooleanLiteral")
      }
    });
    defineType$3("EnumNumberMember", {
      aliases: ["EnumMember"],
      visitor: ["id", "init"],
      fields: {
        id: validateType("Identifier"),
        init: validateType("NumericLiteral")
      }
    });
    defineType$3("EnumStringMember", {
      aliases: ["EnumMember"],
      visitor: ["id", "init"],
      fields: {
        id: validateType("Identifier"),
        init: validateType("StringLiteral")
      }
    });
    defineType$3("EnumDefaultedMember", {
      aliases: ["EnumMember"],
      visitor: ["id"],
      fields: {
        id: validateType("Identifier")
      }
    });
    defineType$3("IndexedAccessType", {
      visitor: ["objectType", "indexType"],
      aliases: ["FlowType"],
      fields: {
        objectType: validateType("FlowType"),
        indexType: validateType("FlowType")
      }
    });
    defineType$3("OptionalIndexedAccessType", {
      visitor: ["objectType", "indexType"],
      aliases: ["FlowType"],
      fields: {
        objectType: validateType("FlowType"),
        indexType: validateType("FlowType"),
        optional: validate$6(assertValueType("boolean"))
      }
    });
  
    var defineType$2 = defineAliasedType("JSX");
    defineType$2("JSXAttribute", {
      visitor: ["name", "value"],
      aliases: ["Immutable"],
      fields: {
        name: {
          validate: assertNodeType("JSXIdentifier", "JSXNamespacedName")
        },
        value: {
          optional: true,
          validate: assertNodeType("JSXElement", "JSXFragment", "StringLiteral", "JSXExpressionContainer")
        }
      }
    });
    defineType$2("JSXClosingElement", {
      visitor: ["name"],
      aliases: ["Immutable"],
      fields: {
        name: {
          validate: assertNodeType("JSXIdentifier", "JSXMemberExpression", "JSXNamespacedName")
        }
      }
    });
    defineType$2("JSXElement", {
      builder: ["openingElement", "closingElement", "children", "selfClosing"],
      visitor: ["openingElement", "children", "closingElement"],
      aliases: ["Immutable", "Expression"],
      fields: Object.assign({
        openingElement: {
          validate: assertNodeType("JSXOpeningElement")
        },
        closingElement: {
          optional: true,
          validate: assertNodeType("JSXClosingElement")
        },
        children: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("JSXText", "JSXExpressionContainer", "JSXSpreadChild", "JSXElement", "JSXFragment")))
        }
      }, {
        selfClosing: {
          validate: assertValueType("boolean"),
          optional: true
        }
      })
    });
    defineType$2("JSXEmptyExpression", {});
    defineType$2("JSXExpressionContainer", {
      visitor: ["expression"],
      aliases: ["Immutable"],
      fields: {
        expression: {
          validate: assertNodeType("Expression", "JSXEmptyExpression")
        }
      }
    });
    defineType$2("JSXSpreadChild", {
      visitor: ["expression"],
      aliases: ["Immutable"],
      fields: {
        expression: {
          validate: assertNodeType("Expression")
        }
      }
    });
    defineType$2("JSXIdentifier", {
      builder: ["name"],
      fields: {
        name: {
          validate: assertValueType("string")
        }
      }
    });
    defineType$2("JSXMemberExpression", {
      visitor: ["object", "property"],
      fields: {
        object: {
          validate: assertNodeType("JSXMemberExpression", "JSXIdentifier")
        },
        property: {
          validate: assertNodeType("JSXIdentifier")
        }
      }
    });
    defineType$2("JSXNamespacedName", {
      visitor: ["namespace", "name"],
      fields: {
        namespace: {
          validate: assertNodeType("JSXIdentifier")
        },
        name: {
          validate: assertNodeType("JSXIdentifier")
        }
      }
    });
    defineType$2("JSXOpeningElement", {
      builder: ["name", "attributes", "selfClosing"],
      visitor: ["name", "attributes"],
      aliases: ["Immutable"],
      fields: {
        name: {
          validate: assertNodeType("JSXIdentifier", "JSXMemberExpression", "JSXNamespacedName")
        },
        selfClosing: {
          "default": false
        },
        attributes: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("JSXAttribute", "JSXSpreadAttribute")))
        },
        typeParameters: {
          validate: assertNodeType("TypeParameterInstantiation", "TSTypeParameterInstantiation"),
          optional: true
        }
      }
    });
    defineType$2("JSXSpreadAttribute", {
      visitor: ["argument"],
      fields: {
        argument: {
          validate: assertNodeType("Expression")
        }
      }
    });
    defineType$2("JSXText", {
      aliases: ["Immutable"],
      builder: ["value"],
      fields: {
        value: {
          validate: assertValueType("string")
        }
      }
    });
    defineType$2("JSXFragment", {
      builder: ["openingFragment", "closingFragment", "children"],
      visitor: ["openingFragment", "children", "closingFragment"],
      aliases: ["Immutable", "Expression"],
      fields: {
        openingFragment: {
          validate: assertNodeType("JSXOpeningFragment")
        },
        closingFragment: {
          validate: assertNodeType("JSXClosingFragment")
        },
        children: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("JSXText", "JSXExpressionContainer", "JSXSpreadChild", "JSXElement", "JSXFragment")))
        }
      }
    });
    defineType$2("JSXOpeningFragment", {
      aliases: ["Immutable"]
    });
    defineType$2("JSXClosingFragment", {
      aliases: ["Immutable"]
    });
  
    var PLACEHOLDERS = ["Identifier", "StringLiteral", "Expression", "Statement", "Declaration", "BlockStatement", "ClassBody", "Pattern"];
    var PLACEHOLDERS_ALIAS = {
      Declaration: ["Statement"],
      Pattern: ["PatternLike", "LVal"]
    };
    for (var _i$2 = 0, _PLACEHOLDERS = PLACEHOLDERS; _i$2 < _PLACEHOLDERS.length; _i$2++) {
      var type$2 = _PLACEHOLDERS[_i$2];
      var alias = ALIAS_KEYS[type$2];
      if (alias != null && alias.length) PLACEHOLDERS_ALIAS[type$2] = alias;
    }
    var PLACEHOLDERS_FLIPPED_ALIAS = {};
    Object.keys(PLACEHOLDERS_ALIAS).forEach(function (type) {
      PLACEHOLDERS_ALIAS[type].forEach(function (alias) {
        if (!Object.hasOwnProperty.call(PLACEHOLDERS_FLIPPED_ALIAS, alias)) {
          PLACEHOLDERS_FLIPPED_ALIAS[alias] = [];
        }
        PLACEHOLDERS_FLIPPED_ALIAS[alias].push(type);
      });
    });
  
    var defineType$1 = defineAliasedType("Miscellaneous");
    {
      defineType$1("Noop", {
        visitor: []
      });
    }
    defineType$1("Placeholder", {
      visitor: [],
      builder: ["expectedNode", "name"],
      fields: {
        name: {
          validate: assertNodeType("Identifier")
        },
        expectedNode: {
          validate: assertOneOf.apply(void 0, _toConsumableArray(PLACEHOLDERS))
        }
      }
    });
    defineType$1("V8IntrinsicIdentifier", {
      builder: ["name"],
      fields: {
        name: {
          validate: assertValueType("string")
        }
      }
    });
  
    defineType$5("ArgumentPlaceholder", {});
    defineType$5("BindExpression", {
      visitor: ["object", "callee"],
      aliases: ["Expression"],
      fields: !browser$1$1.env.BABEL_TYPES_8_BREAKING ? {
        object: {
          validate: Object.assign(function () {}, {
            oneOfNodeTypes: ["Expression"]
          })
        },
        callee: {
          validate: Object.assign(function () {}, {
            oneOfNodeTypes: ["Expression"]
          })
        }
      } : {
        object: {
          validate: assertNodeType("Expression")
        },
        callee: {
          validate: assertNodeType("Expression")
        }
      }
    });
    defineType$5("ImportAttribute", {
      visitor: ["key", "value"],
      fields: {
        key: {
          validate: assertNodeType("Identifier", "StringLiteral")
        },
        value: {
          validate: assertNodeType("StringLiteral")
        }
      }
    });
    defineType$5("Decorator", {
      visitor: ["expression"],
      fields: {
        expression: {
          validate: assertNodeType("Expression")
        }
      }
    });
    defineType$5("DoExpression", {
      visitor: ["body"],
      builder: ["body", "async"],
      aliases: ["Expression"],
      fields: {
        body: {
          validate: assertNodeType("BlockStatement")
        },
        async: {
          validate: assertValueType("boolean"),
          "default": false
        }
      }
    });
    defineType$5("ExportDefaultSpecifier", {
      visitor: ["exported"],
      aliases: ["ModuleSpecifier"],
      fields: {
        exported: {
          validate: assertNodeType("Identifier")
        }
      }
    });
    defineType$5("RecordExpression", {
      visitor: ["properties"],
      aliases: ["Expression"],
      fields: {
        properties: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("ObjectProperty", "SpreadElement")))
        }
      }
    });
    defineType$5("TupleExpression", {
      fields: {
        elements: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Expression", "SpreadElement"))),
          "default": []
        }
      },
      visitor: ["elements"],
      aliases: ["Expression"]
    });
    defineType$5("DecimalLiteral", {
      builder: ["value"],
      fields: {
        value: {
          validate: assertValueType("string")
        }
      },
      aliases: ["Expression", "Pureish", "Literal", "Immutable"]
    });
    defineType$5("ModuleExpression", {
      visitor: ["body"],
      fields: {
        body: {
          validate: assertNodeType("Program")
        }
      },
      aliases: ["Expression"]
    });
    defineType$5("TopicReference", {
      aliases: ["Expression"]
    });
    defineType$5("PipelineTopicExpression", {
      builder: ["expression"],
      visitor: ["expression"],
      fields: {
        expression: {
          validate: assertNodeType("Expression")
        }
      },
      aliases: ["Expression"]
    });
    defineType$5("PipelineBareFunction", {
      builder: ["callee"],
      visitor: ["callee"],
      fields: {
        callee: {
          validate: assertNodeType("Expression")
        }
      },
      aliases: ["Expression"]
    });
    defineType$5("PipelinePrimaryTopicReference", {
      aliases: ["Expression"]
    });
  
    var defineType = defineAliasedType("TypeScript");
    var bool$a = assertValueType("boolean");
    var tSFunctionTypeAnnotationCommon = function tSFunctionTypeAnnotationCommon() {
      return {
        returnType: {
          validate: assertNodeType("TSTypeAnnotation", "Noop"),
          optional: true
        },
        typeParameters: {
          validate: assertNodeType("TSTypeParameterDeclaration", "Noop"),
          optional: true
        }
      };
    };
    defineType("TSParameterProperty", {
      aliases: ["LVal"],
      visitor: ["parameter"],
      fields: {
        accessibility: {
          validate: assertOneOf("public", "private", "protected"),
          optional: true
        },
        readonly: {
          validate: assertValueType("boolean"),
          optional: true
        },
        parameter: {
          validate: assertNodeType("Identifier", "AssignmentPattern")
        },
        override: {
          validate: assertValueType("boolean"),
          optional: true
        },
        decorators: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("Decorator"))),
          optional: true
        }
      }
    });
    defineType("TSDeclareFunction", {
      aliases: ["Statement", "Declaration"],
      visitor: ["id", "typeParameters", "params", "returnType"],
      fields: Object.assign({}, functionDeclarationCommon(), tSFunctionTypeAnnotationCommon())
    });
    defineType("TSDeclareMethod", {
      visitor: ["decorators", "key", "typeParameters", "params", "returnType"],
      fields: Object.assign({}, classMethodOrDeclareMethodCommon(), tSFunctionTypeAnnotationCommon())
    });
    defineType("TSQualifiedName", {
      aliases: ["TSEntityName"],
      visitor: ["left", "right"],
      fields: {
        left: validateType("TSEntityName"),
        right: validateType("Identifier")
      }
    });
    var signatureDeclarationCommon = function signatureDeclarationCommon() {
      var _ref;
      return _ref = {
        typeParameters: validateOptionalType("TSTypeParameterDeclaration")
      }, _ref["parameters"] = validateArrayOfType(["Identifier", "RestElement"]), _ref["typeAnnotation"] = validateOptionalType("TSTypeAnnotation"), _ref;
    };
    var callConstructSignatureDeclaration = {
      aliases: ["TSTypeElement"],
      visitor: ["typeParameters", "parameters", "typeAnnotation"],
      fields: signatureDeclarationCommon()
    };
    defineType("TSCallSignatureDeclaration", callConstructSignatureDeclaration);
    defineType("TSConstructSignatureDeclaration", callConstructSignatureDeclaration);
    var namedTypeElementCommon = function namedTypeElementCommon() {
      return {
        key: validateType("Expression"),
        computed: {
          "default": false
        },
        optional: validateOptional(bool$a)
      };
    };
    defineType("TSPropertySignature", {
      aliases: ["TSTypeElement"],
      visitor: ["key", "typeAnnotation", "initializer"],
      fields: Object.assign({}, namedTypeElementCommon(), {
        readonly: validateOptional(bool$a),
        typeAnnotation: validateOptionalType("TSTypeAnnotation"),
        initializer: validateOptionalType("Expression"),
        kind: {
          validate: assertOneOf("get", "set")
        }
      })
    });
    defineType("TSMethodSignature", {
      aliases: ["TSTypeElement"],
      visitor: ["key", "typeParameters", "parameters", "typeAnnotation"],
      fields: Object.assign({}, signatureDeclarationCommon(), namedTypeElementCommon(), {
        kind: {
          validate: assertOneOf("method", "get", "set")
        }
      })
    });
    defineType("TSIndexSignature", {
      aliases: ["TSTypeElement"],
      visitor: ["parameters", "typeAnnotation"],
      fields: {
        readonly: validateOptional(bool$a),
        "static": validateOptional(bool$a),
        parameters: validateArrayOfType("Identifier"),
        typeAnnotation: validateOptionalType("TSTypeAnnotation")
      }
    });
    var tsKeywordTypes = ["TSAnyKeyword", "TSBooleanKeyword", "TSBigIntKeyword", "TSIntrinsicKeyword", "TSNeverKeyword", "TSNullKeyword", "TSNumberKeyword", "TSObjectKeyword", "TSStringKeyword", "TSSymbolKeyword", "TSUndefinedKeyword", "TSUnknownKeyword", "TSVoidKeyword"];
    for (var _i$1 = 0, _tsKeywordTypes = tsKeywordTypes; _i$1 < _tsKeywordTypes.length; _i$1++) {
      var type$1 = _tsKeywordTypes[_i$1];
      defineType(type$1, {
        aliases: ["TSType", "TSBaseType"],
        visitor: [],
        fields: {}
      });
    }
    defineType("TSThisType", {
      aliases: ["TSType", "TSBaseType"],
      visitor: [],
      fields: {}
    });
    var fnOrCtrBase = {
      aliases: ["TSType"],
      visitor: ["typeParameters", "parameters", "typeAnnotation"]
    };
    defineType("TSFunctionType", Object.assign({}, fnOrCtrBase, {
      fields: signatureDeclarationCommon()
    }));
    defineType("TSConstructorType", Object.assign({}, fnOrCtrBase, {
      fields: Object.assign({}, signatureDeclarationCommon(), {
        "abstract": validateOptional(bool$a)
      })
    }));
    defineType("TSTypeReference", {
      aliases: ["TSType"],
      visitor: ["typeName", "typeParameters"],
      fields: {
        typeName: validateType("TSEntityName"),
        typeParameters: validateOptionalType("TSTypeParameterInstantiation")
      }
    });
    defineType("TSTypePredicate", {
      aliases: ["TSType"],
      visitor: ["parameterName", "typeAnnotation"],
      builder: ["parameterName", "typeAnnotation", "asserts"],
      fields: {
        parameterName: validateType(["Identifier", "TSThisType"]),
        typeAnnotation: validateOptionalType("TSTypeAnnotation"),
        asserts: validateOptional(bool$a)
      }
    });
    defineType("TSTypeQuery", {
      aliases: ["TSType"],
      visitor: ["exprName", "typeParameters"],
      fields: {
        exprName: validateType(["TSEntityName", "TSImportType"]),
        typeParameters: validateOptionalType("TSTypeParameterInstantiation")
      }
    });
    defineType("TSTypeLiteral", {
      aliases: ["TSType"],
      visitor: ["members"],
      fields: {
        members: validateArrayOfType("TSTypeElement")
      }
    });
    defineType("TSArrayType", {
      aliases: ["TSType"],
      visitor: ["elementType"],
      fields: {
        elementType: validateType("TSType")
      }
    });
    defineType("TSTupleType", {
      aliases: ["TSType"],
      visitor: ["elementTypes"],
      fields: {
        elementTypes: validateArrayOfType(["TSType", "TSNamedTupleMember"])
      }
    });
    defineType("TSOptionalType", {
      aliases: ["TSType"],
      visitor: ["typeAnnotation"],
      fields: {
        typeAnnotation: validateType("TSType")
      }
    });
    defineType("TSRestType", {
      aliases: ["TSType"],
      visitor: ["typeAnnotation"],
      fields: {
        typeAnnotation: validateType("TSType")
      }
    });
    defineType("TSNamedTupleMember", {
      visitor: ["label", "elementType"],
      builder: ["label", "elementType", "optional"],
      fields: {
        label: validateType("Identifier"),
        optional: {
          validate: bool$a,
          "default": false
        },
        elementType: validateType("TSType")
      }
    });
    var unionOrIntersection = {
      aliases: ["TSType"],
      visitor: ["types"],
      fields: {
        types: validateArrayOfType("TSType")
      }
    };
    defineType("TSUnionType", unionOrIntersection);
    defineType("TSIntersectionType", unionOrIntersection);
    defineType("TSConditionalType", {
      aliases: ["TSType"],
      visitor: ["checkType", "extendsType", "trueType", "falseType"],
      fields: {
        checkType: validateType("TSType"),
        extendsType: validateType("TSType"),
        trueType: validateType("TSType"),
        falseType: validateType("TSType")
      }
    });
    defineType("TSInferType", {
      aliases: ["TSType"],
      visitor: ["typeParameter"],
      fields: {
        typeParameter: validateType("TSTypeParameter")
      }
    });
    defineType("TSParenthesizedType", {
      aliases: ["TSType"],
      visitor: ["typeAnnotation"],
      fields: {
        typeAnnotation: validateType("TSType")
      }
    });
    defineType("TSTypeOperator", {
      aliases: ["TSType"],
      visitor: ["typeAnnotation"],
      fields: {
        operator: validate$6(assertValueType("string")),
        typeAnnotation: validateType("TSType")
      }
    });
    defineType("TSIndexedAccessType", {
      aliases: ["TSType"],
      visitor: ["objectType", "indexType"],
      fields: {
        objectType: validateType("TSType"),
        indexType: validateType("TSType")
      }
    });
    defineType("TSMappedType", {
      aliases: ["TSType"],
      visitor: ["typeParameter", "typeAnnotation", "nameType"],
      fields: {
        readonly: validateOptional(assertOneOf(true, false, "+", "-")),
        typeParameter: validateType("TSTypeParameter"),
        optional: validateOptional(assertOneOf(true, false, "+", "-")),
        typeAnnotation: validateOptionalType("TSType"),
        nameType: validateOptionalType("TSType")
      }
    });
    defineType("TSLiteralType", {
      aliases: ["TSType", "TSBaseType"],
      visitor: ["literal"],
      fields: {
        literal: {
          validate: function () {
            var unaryExpression = assertNodeType("NumericLiteral", "BigIntLiteral");
            var unaryOperator = assertOneOf("-");
            var literal = assertNodeType("NumericLiteral", "StringLiteral", "BooleanLiteral", "BigIntLiteral", "TemplateLiteral");
            function validator(parent, key, node) {
              if (is$1("UnaryExpression", node)) {
                unaryOperator(node, "operator", node.operator);
                unaryExpression(node, "argument", node.argument);
              } else {
                literal(parent, key, node);
              }
            }
            validator.oneOfNodeTypes = ["NumericLiteral", "StringLiteral", "BooleanLiteral", "BigIntLiteral", "TemplateLiteral", "UnaryExpression"];
            return validator;
          }()
        }
      }
    });
    defineType("TSExpressionWithTypeArguments", {
      aliases: ["TSType"],
      visitor: ["expression", "typeParameters"],
      fields: {
        expression: validateType("TSEntityName"),
        typeParameters: validateOptionalType("TSTypeParameterInstantiation")
      }
    });
    defineType("TSInterfaceDeclaration", {
      aliases: ["Statement", "Declaration"],
      visitor: ["id", "typeParameters", "extends", "body"],
      fields: {
        declare: validateOptional(bool$a),
        id: validateType("Identifier"),
        typeParameters: validateOptionalType("TSTypeParameterDeclaration"),
        "extends": validateOptional(arrayOfType("TSExpressionWithTypeArguments")),
        body: validateType("TSInterfaceBody")
      }
    });
    defineType("TSInterfaceBody", {
      visitor: ["body"],
      fields: {
        body: validateArrayOfType("TSTypeElement")
      }
    });
    defineType("TSTypeAliasDeclaration", {
      aliases: ["Statement", "Declaration"],
      visitor: ["id", "typeParameters", "typeAnnotation"],
      fields: {
        declare: validateOptional(bool$a),
        id: validateType("Identifier"),
        typeParameters: validateOptionalType("TSTypeParameterDeclaration"),
        typeAnnotation: validateType("TSType")
      }
    });
    defineType("TSInstantiationExpression", {
      aliases: ["Expression"],
      visitor: ["expression", "typeParameters"],
      fields: {
        expression: validateType("Expression"),
        typeParameters: validateOptionalType("TSTypeParameterInstantiation")
      }
    });
    var TSTypeExpression$1 = {
      aliases: ["Expression", "LVal", "PatternLike"],
      visitor: ["expression", "typeAnnotation"],
      fields: {
        expression: validateType("Expression"),
        typeAnnotation: validateType("TSType")
      }
    };
    defineType("TSAsExpression", TSTypeExpression$1);
    defineType("TSSatisfiesExpression", TSTypeExpression$1);
    defineType("TSTypeAssertion", {
      aliases: ["Expression", "LVal", "PatternLike"],
      visitor: ["typeAnnotation", "expression"],
      fields: {
        typeAnnotation: validateType("TSType"),
        expression: validateType("Expression")
      }
    });
    defineType("TSEnumDeclaration", {
      aliases: ["Statement", "Declaration"],
      visitor: ["id", "members"],
      fields: {
        declare: validateOptional(bool$a),
        "const": validateOptional(bool$a),
        id: validateType("Identifier"),
        members: validateArrayOfType("TSEnumMember"),
        initializer: validateOptionalType("Expression")
      }
    });
    defineType("TSEnumMember", {
      visitor: ["id", "initializer"],
      fields: {
        id: validateType(["Identifier", "StringLiteral"]),
        initializer: validateOptionalType("Expression")
      }
    });
    defineType("TSModuleDeclaration", {
      aliases: ["Statement", "Declaration"],
      visitor: ["id", "body"],
      fields: {
        declare: validateOptional(bool$a),
        global: validateOptional(bool$a),
        id: validateType(["Identifier", "StringLiteral"]),
        body: validateType(["TSModuleBlock", "TSModuleDeclaration"])
      }
    });
    defineType("TSModuleBlock", {
      aliases: ["Scopable", "Block", "BlockParent", "FunctionParent"],
      visitor: ["body"],
      fields: {
        body: validateArrayOfType("Statement")
      }
    });
    defineType("TSImportType", {
      aliases: ["TSType"],
      visitor: ["argument", "qualifier", "typeParameters"],
      fields: {
        argument: validateType("StringLiteral"),
        qualifier: validateOptionalType("TSEntityName"),
        typeParameters: validateOptionalType("TSTypeParameterInstantiation")
      }
    });
    defineType("TSImportEqualsDeclaration", {
      aliases: ["Statement"],
      visitor: ["id", "moduleReference"],
      fields: {
        isExport: validate$6(bool$a),
        id: validateType("Identifier"),
        moduleReference: validateType(["TSEntityName", "TSExternalModuleReference"]),
        importKind: {
          validate: assertOneOf("type", "value"),
          optional: true
        }
      }
    });
    defineType("TSExternalModuleReference", {
      visitor: ["expression"],
      fields: {
        expression: validateType("StringLiteral")
      }
    });
    defineType("TSNonNullExpression", {
      aliases: ["Expression", "LVal", "PatternLike"],
      visitor: ["expression"],
      fields: {
        expression: validateType("Expression")
      }
    });
    defineType("TSExportAssignment", {
      aliases: ["Statement"],
      visitor: ["expression"],
      fields: {
        expression: validateType("Expression")
      }
    });
    defineType("TSNamespaceExportDeclaration", {
      aliases: ["Statement"],
      visitor: ["id"],
      fields: {
        id: validateType("Identifier")
      }
    });
    defineType("TSTypeAnnotation", {
      visitor: ["typeAnnotation"],
      fields: {
        typeAnnotation: {
          validate: assertNodeType("TSType")
        }
      }
    });
    defineType("TSTypeParameterInstantiation", {
      visitor: ["params"],
      fields: {
        params: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("TSType")))
        }
      }
    });
    defineType("TSTypeParameterDeclaration", {
      visitor: ["params"],
      fields: {
        params: {
          validate: chain$1(assertValueType("array"), assertEach(assertNodeType("TSTypeParameter")))
        }
      }
    });
    defineType("TSTypeParameter", {
      builder: ["constraint", "default", "name"],
      visitor: ["constraint", "default"],
      fields: {
        name: {
          validate: assertValueType("string")
        },
        "in": {
          validate: assertValueType("boolean"),
          optional: true
        },
        out: {
          validate: assertValueType("boolean"),
          optional: true
        },
        "const": {
          validate: assertValueType("boolean"),
          optional: true
        },
        constraint: {
          validate: assertNodeType("TSType"),
          optional: true
        },
        "default": {
          validate: assertNodeType("TSType"),
          optional: true
        }
      }
    });
  
    var DEPRECATED_ALIASES$1 = {
      ModuleDeclaration: "ImportOrExportDeclaration"
    };
  
    Object.keys(DEPRECATED_ALIASES$1).forEach(function (deprecatedAlias) {
      FLIPPED_ALIAS_KEYS$3[deprecatedAlias] = FLIPPED_ALIAS_KEYS$3[DEPRECATED_ALIASES$1[deprecatedAlias]];
    });
    toFastProperties(VISITOR_KEYS$5);
    toFastProperties(ALIAS_KEYS);
    toFastProperties(FLIPPED_ALIAS_KEYS$3);
    toFastProperties(NODE_FIELDS);
    toFastProperties(BUILDER_KEYS);
    toFastProperties(DEPRECATED_KEYS$1);
    toFastProperties(PLACEHOLDERS_ALIAS);
    toFastProperties(PLACEHOLDERS_FLIPPED_ALIAS);
    var TYPES$1 = [].concat(Object.keys(VISITOR_KEYS$5), Object.keys(FLIPPED_ALIAS_KEYS$3), Object.keys(DEPRECATED_KEYS$1));
  
    function validate$5(node, key, val) {
      if (!node) return;
      var fields = NODE_FIELDS[node.type];
      if (!fields) return;
      var field = fields[key];
      validateField(node, key, val, field);
      validateChild(node, key, val);
    }
    function validateField(node, key, val, field) {
      if (!(field != null && field.validate)) return;
      if (field.optional && val == null) return;
      field.validate(node, key, val);
    }
    function validateChild(node, key, val) {
      if (val == null) return;
      var validate = NODE_PARENT_VALIDATIONS[val.type];
      if (!validate) return;
      validate(node, key, val);
    }
  
    function validateNode(node) {
      var keys = BUILDER_KEYS[node.type];
      for (var _iterator = _createForOfIteratorHelperLoose(keys), _step; !(_step = _iterator()).done;) {
        var key = _step.value;
        validate$5(node, key, node[key]);
      }
      return node;
    }
  
    function arrayExpression$1(elements) {
      if (elements === void 0) {
        elements = [];
      }
      return validateNode({
        type: "ArrayExpression",
        elements: elements
      });
    }
    function assignmentExpression$d(operator, left, right) {
      return validateNode({
        type: "AssignmentExpression",
        operator: operator,
        left: left,
        right: right
      });
    }
    function binaryExpression$5(operator, left, right) {
      return validateNode({
        type: "BinaryExpression",
        operator: operator,
        left: left,
        right: right
      });
    }
    function interpreterDirective$1(value) {
      return validateNode({
        type: "InterpreterDirective",
        value: value
      });
    }
    function directive$1(value) {
      return validateNode({
        type: "Directive",
        value: value
      });
    }
    function directiveLiteral$1(value) {
      return validateNode({
        type: "DirectiveLiteral",
        value: value
      });
    }
    function blockStatement$6(body, directives) {
      if (directives === void 0) {
        directives = [];
      }
      return validateNode({
        type: "BlockStatement",
        body: body,
        directives: directives
      });
    }
    function breakStatement(label) {
      if (label === void 0) {
        label = null;
      }
      return validateNode({
        type: "BreakStatement",
        label: label
      });
    }
    function callExpression$e(callee, _arguments) {
      return validateNode({
        type: "CallExpression",
        callee: callee,
        arguments: _arguments
      });
    }
    function catchClause(param, body) {
      if (param === void 0) {
        param = null;
      }
      return validateNode({
        type: "CatchClause",
        param: param,
        body: body
      });
    }
    function conditionalExpression$4(test, consequent, alternate) {
      return validateNode({
        type: "ConditionalExpression",
        test: test,
        consequent: consequent,
        alternate: alternate
      });
    }
    function continueStatement(label) {
      if (label === void 0) {
        label = null;
      }
      return validateNode({
        type: "ContinueStatement",
        label: label
      });
    }
    function debuggerStatement() {
      return {
        type: "DebuggerStatement"
      };
    }
    function doWhileStatement(test, body) {
      return validateNode({
        type: "DoWhileStatement",
        test: test,
        body: body
      });
    }
    function emptyStatement$1() {
      return {
        type: "EmptyStatement"
      };
    }
    function expressionStatement$a(expression) {
      return validateNode({
        type: "ExpressionStatement",
        expression: expression
      });
    }
    function file$2(program, comments, tokens) {
      if (comments === void 0) {
        comments = null;
      }
      if (tokens === void 0) {
        tokens = null;
      }
      return validateNode({
        type: "File",
        program: program,
        comments: comments,
        tokens: tokens
      });
    }
    function forInStatement(left, right, body) {
      return validateNode({
        type: "ForInStatement",
        left: left,
        right: right,
        body: body
      });
    }
    function forStatement(init, test, update, body) {
      if (init === void 0) {
        init = null;
      }
      if (test === void 0) {
        test = null;
      }
      if (update === void 0) {
        update = null;
      }
      return validateNode({
        type: "ForStatement",
        init: init,
        test: test,
        update: update,
        body: body
      });
    }
    function functionDeclaration(id, params, body, generator, async) {
      if (id === void 0) {
        id = null;
      }
      if (generator === void 0) {
        generator = false;
      }
      if (async === void 0) {
        async = false;
      }
      return validateNode({
        type: "FunctionDeclaration",
        id: id,
        params: params,
        body: body,
        generator: generator,
        async: async
      });
    }
    function functionExpression$2(id, params, body, generator, async) {
      if (id === void 0) {
        id = null;
      }
      if (generator === void 0) {
        generator = false;
      }
      if (async === void 0) {
        async = false;
      }
      return validateNode({
        type: "FunctionExpression",
        id: id,
        params: params,
        body: body,
        generator: generator,
        async: async
      });
    }
    function identifier$i(name) {
      return validateNode({
        type: "Identifier",
        name: name
      });
    }
    function ifStatement(test, consequent, alternate) {
      if (alternate === void 0) {
        alternate = null;
      }
      return validateNode({
        type: "IfStatement",
        test: test,
        consequent: consequent,
        alternate: alternate
      });
    }
    function labeledStatement(label, body) {
      return validateNode({
        type: "LabeledStatement",
        label: label,
        body: body
      });
    }
    function stringLiteral$8(value) {
      return validateNode({
        type: "StringLiteral",
        value: value
      });
    }
    function numericLiteral$8(value) {
      return validateNode({
        type: "NumericLiteral",
        value: value
      });
    }
    function nullLiteral$2() {
      return {
        type: "NullLiteral"
      };
    }
    function booleanLiteral$4(value) {
      return validateNode({
        type: "BooleanLiteral",
        value: value
      });
    }
    function regExpLiteral(pattern, flags) {
      if (flags === void 0) {
        flags = "";
      }
      return validateNode({
        type: "RegExpLiteral",
        pattern: pattern,
        flags: flags
      });
    }
    function logicalExpression$3(operator, left, right) {
      return validateNode({
        type: "LogicalExpression",
        operator: operator,
        left: left,
        right: right
      });
    }
    function memberExpression$c(object, property, computed, optional) {
      if (computed === void 0) {
        computed = false;
      }
      if (optional === void 0) {
        optional = null;
      }
      return validateNode({
        type: "MemberExpression",
        object: object,
        property: property,
        computed: computed,
        optional: optional
      });
    }
    function newExpression(callee, _arguments) {
      return validateNode({
        type: "NewExpression",
        callee: callee,
        arguments: _arguments
      });
    }
    function program$3(body, directives, sourceType, interpreter) {
      if (directives === void 0) {
        directives = [];
      }
      if (sourceType === void 0) {
        sourceType = "script";
      }
      if (interpreter === void 0) {
        interpreter = null;
      }
      return validateNode({
        type: "Program",
        body: body,
        directives: directives,
        sourceType: sourceType,
        interpreter: interpreter,
        sourceFile: null
      });
    }
    function objectExpression$3(properties) {
      return validateNode({
        type: "ObjectExpression",
        properties: properties
      });
    }
    function objectMethod(kind, key, params, body, computed, generator, async) {
      if (kind === void 0) {
        kind = "method";
      }
      if (computed === void 0) {
        computed = false;
      }
      if (generator === void 0) {
        generator = false;
      }
      if (async === void 0) {
        async = false;
      }
      return validateNode({
        type: "ObjectMethod",
        kind: kind,
        key: key,
        params: params,
        body: body,
        computed: computed,
        generator: generator,
        async: async
      });
    }
    function objectProperty$1(key, value, computed, shorthand, decorators) {
      if (computed === void 0) {
        computed = false;
      }
      if (shorthand === void 0) {
        shorthand = false;
      }
      if (decorators === void 0) {
        decorators = null;
      }
      return validateNode({
        type: "ObjectProperty",
        key: key,
        value: value,
        computed: computed,
        shorthand: shorthand,
        decorators: decorators
      });
    }
    function restElement$2(argument) {
      return validateNode({
        type: "RestElement",
        argument: argument
      });
    }
    function returnStatement$3(argument) {
      if (argument === void 0) {
        argument = null;
      }
      return validateNode({
        type: "ReturnStatement",
        argument: argument
      });
    }
    function sequenceExpression$7(expressions) {
      return validateNode({
        type: "SequenceExpression",
        expressions: expressions
      });
    }
    function parenthesizedExpression(expression) {
      return validateNode({
        type: "ParenthesizedExpression",
        expression: expression
      });
    }
    function switchCase(test, consequent) {
      if (test === void 0) {
        test = null;
      }
      return validateNode({
        type: "SwitchCase",
        test: test,
        consequent: consequent
      });
    }
    function switchStatement(discriminant, cases) {
      return validateNode({
        type: "SwitchStatement",
        discriminant: discriminant,
        cases: cases
      });
    }
    function thisExpression$4() {
      return {
        type: "ThisExpression"
      };
    }
    function throwStatement(argument) {
      return validateNode({
        type: "ThrowStatement",
        argument: argument
      });
    }
    function tryStatement(block, handler, finalizer) {
      if (handler === void 0) {
        handler = null;
      }
      if (finalizer === void 0) {
        finalizer = null;
      }
      return validateNode({
        type: "TryStatement",
        block: block,
        handler: handler,
        finalizer: finalizer
      });
    }
    function unaryExpression$7(operator, argument, prefix) {
      if (prefix === void 0) {
        prefix = true;
      }
      return validateNode({
        type: "UnaryExpression",
        operator: operator,
        argument: argument,
        prefix: prefix
      });
    }
    function updateExpression$1(operator, argument, prefix) {
      if (prefix === void 0) {
        prefix = false;
      }
      return validateNode({
        type: "UpdateExpression",
        operator: operator,
        argument: argument,
        prefix: prefix
      });
    }
    function variableDeclaration$8(kind, declarations) {
      return validateNode({
        type: "VariableDeclaration",
        kind: kind,
        declarations: declarations
      });
    }
    function variableDeclarator$8(id, init) {
      if (init === void 0) {
        init = null;
      }
      return validateNode({
        type: "VariableDeclarator",
        id: id,
        init: init
      });
    }
    function whileStatement(test, body) {
      return validateNode({
        type: "WhileStatement",
        test: test,
        body: body
      });
    }
    function withStatement(object, body) {
      return validateNode({
        type: "WithStatement",
        object: object,
        body: body
      });
    }
    function assignmentPattern(left, right) {
      return validateNode({
        type: "AssignmentPattern",
        left: left,
        right: right
      });
    }
    function arrayPattern(elements) {
      return validateNode({
        type: "ArrayPattern",
        elements: elements
      });
    }
    function arrowFunctionExpression$4(params, body, async) {
      if (async === void 0) {
        async = false;
      }
      return validateNode({
        type: "ArrowFunctionExpression",
        params: params,
        body: body,
        async: async,
        expression: null
      });
    }
    function classBody(body) {
      return validateNode({
        type: "ClassBody",
        body: body
      });
    }
    function classExpression(id, superClass, body, decorators) {
      if (id === void 0) {
        id = null;
      }
      if (superClass === void 0) {
        superClass = null;
      }
      if (decorators === void 0) {
        decorators = null;
      }
      return validateNode({
        type: "ClassExpression",
        id: id,
        superClass: superClass,
        body: body,
        decorators: decorators
      });
    }
    function classDeclaration(id, superClass, body, decorators) {
      if (superClass === void 0) {
        superClass = null;
      }
      if (decorators === void 0) {
        decorators = null;
      }
      return validateNode({
        type: "ClassDeclaration",
        id: id,
        superClass: superClass,
        body: body,
        decorators: decorators
      });
    }
    function exportAllDeclaration(source) {
      return validateNode({
        type: "ExportAllDeclaration",
        source: source
      });
    }
    function exportDefaultDeclaration(declaration) {
      return validateNode({
        type: "ExportDefaultDeclaration",
        declaration: declaration
      });
    }
    function exportNamedDeclaration$2(declaration, specifiers, source) {
      if (declaration === void 0) {
        declaration = null;
      }
      if (specifiers === void 0) {
        specifiers = [];
      }
      if (source === void 0) {
        source = null;
      }
      return validateNode({
        type: "ExportNamedDeclaration",
        declaration: declaration,
        specifiers: specifiers,
        source: source
      });
    }
    function exportSpecifier$2(local, exported) {
      return validateNode({
        type: "ExportSpecifier",
        local: local,
        exported: exported
      });
    }
    function forOfStatement(left, right, body, _await) {
      if (_await === void 0) {
        _await = false;
      }
      return validateNode({
        type: "ForOfStatement",
        left: left,
        right: right,
        body: body,
        "await": _await
      });
    }
    function importDeclaration$1(specifiers, source) {
      return validateNode({
        type: "ImportDeclaration",
        specifiers: specifiers,
        source: source
      });
    }
    function importDefaultSpecifier$1(local) {
      return validateNode({
        type: "ImportDefaultSpecifier",
        local: local
      });
    }
    function importNamespaceSpecifier$1(local) {
      return validateNode({
        type: "ImportNamespaceSpecifier",
        local: local
      });
    }
    function importSpecifier$1(local, imported) {
      return validateNode({
        type: "ImportSpecifier",
        local: local,
        imported: imported
      });
    }
    function metaProperty$1(meta, property) {
      return validateNode({
        type: "MetaProperty",
        meta: meta,
        property: property
      });
    }
    function classMethod(kind, key, params, body, computed, _static, generator, async) {
      if (kind === void 0) {
        kind = "method";
      }
      if (computed === void 0) {
        computed = false;
      }
      if (_static === void 0) {
        _static = false;
      }
      if (generator === void 0) {
        generator = false;
      }
      if (async === void 0) {
        async = false;
      }
      return validateNode({
        type: "ClassMethod",
        kind: kind,
        key: key,
        params: params,
        body: body,
        computed: computed,
        "static": _static,
        generator: generator,
        async: async
      });
    }
    function objectPattern$1(properties) {
      return validateNode({
        type: "ObjectPattern",
        properties: properties
      });
    }
    function spreadElement$2(argument) {
      return validateNode({
        type: "SpreadElement",
        argument: argument
      });
    }
    function _super$1() {
      return {
        type: "Super"
      };
    }
    function taggedTemplateExpression(tag, quasi) {
      return validateNode({
        type: "TaggedTemplateExpression",
        tag: tag,
        quasi: quasi
      });
    }
    function templateElement(value, tail) {
      if (tail === void 0) {
        tail = false;
      }
      return validateNode({
        type: "TemplateElement",
        value: value,
        tail: tail
      });
    }
    function templateLiteral(quasis, expressions) {
      return validateNode({
        type: "TemplateLiteral",
        quasis: quasis,
        expressions: expressions
      });
    }
    function yieldExpression$2(argument, delegate) {
      if (argument === void 0) {
        argument = null;
      }
      if (delegate === void 0) {
        delegate = false;
      }
      return validateNode({
        type: "YieldExpression",
        argument: argument,
        delegate: delegate
      });
    }
    function awaitExpression$1(argument) {
      return validateNode({
        type: "AwaitExpression",
        argument: argument
      });
    }
    function _import() {
      return {
        type: "Import"
      };
    }
    function bigIntLiteral(value) {
      return validateNode({
        type: "BigIntLiteral",
        value: value
      });
    }
    function exportNamespaceSpecifier(exported) {
      return validateNode({
        type: "ExportNamespaceSpecifier",
        exported: exported
      });
    }
    function optionalMemberExpression$2(object, property, computed, optional) {
      if (computed === void 0) {
        computed = false;
      }
      return validateNode({
        type: "OptionalMemberExpression",
        object: object,
        property: property,
        computed: computed,
        optional: optional
      });
    }
    function optionalCallExpression$2(callee, _arguments, optional) {
      return validateNode({
        type: "OptionalCallExpression",
        callee: callee,
        arguments: _arguments,
        optional: optional
      });
    }
    function classProperty(key, value, typeAnnotation, decorators, computed, _static) {
      if (value === void 0) {
        value = null;
      }
      if (typeAnnotation === void 0) {
        typeAnnotation = null;
      }
      if (decorators === void 0) {
        decorators = null;
      }
      if (computed === void 0) {
        computed = false;
      }
      if (_static === void 0) {
        _static = false;
      }
      return validateNode({
        type: "ClassProperty",
        key: key,
        value: value,
        typeAnnotation: typeAnnotation,
        decorators: decorators,
        computed: computed,
        "static": _static
      });
    }
    function classAccessorProperty(key, value, typeAnnotation, decorators, computed, _static) {
      if (value === void 0) {
        value = null;
      }
      if (typeAnnotation === void 0) {
        typeAnnotation = null;
      }
      if (decorators === void 0) {
        decorators = null;
      }
      if (computed === void 0) {
        computed = false;
      }
      if (_static === void 0) {
        _static = false;
      }
      return validateNode({
        type: "ClassAccessorProperty",
        key: key,
        value: value,
        typeAnnotation: typeAnnotation,
        decorators: decorators,
        computed: computed,
        "static": _static
      });
    }
    function classPrivateProperty(key, value, decorators, _static) {
      if (value === void 0) {
        value = null;
      }
      if (decorators === void 0) {
        decorators = null;
      }
      if (_static === void 0) {
        _static = false;
      }
      return validateNode({
        type: "ClassPrivateProperty",
        key: key,
        value: value,
        decorators: decorators,
        "static": _static
      });
    }
    function classPrivateMethod(kind, key, params, body, _static) {
      if (kind === void 0) {
        kind = "method";
      }
      if (_static === void 0) {
        _static = false;
      }
      return validateNode({
        type: "ClassPrivateMethod",
        kind: kind,
        key: key,
        params: params,
        body: body,
        "static": _static
      });
    }
    function privateName(id) {
      return validateNode({
        type: "PrivateName",
        id: id
      });
    }
    function staticBlock(body) {
      return validateNode({
        type: "StaticBlock",
        body: body
      });
    }
    function anyTypeAnnotation$2() {
      return {
        type: "AnyTypeAnnotation"
      };
    }
    function arrayTypeAnnotation$1(elementType) {
      return validateNode({
        type: "ArrayTypeAnnotation",
        elementType: elementType
      });
    }
    function booleanTypeAnnotation$1() {
      return {
        type: "BooleanTypeAnnotation"
      };
    }
    function booleanLiteralTypeAnnotation(value) {
      return validateNode({
        type: "BooleanLiteralTypeAnnotation",
        value: value
      });
    }
    function nullLiteralTypeAnnotation$1() {
      return {
        type: "NullLiteralTypeAnnotation"
      };
    }
    function classImplements(id, typeParameters) {
      if (typeParameters === void 0) {
        typeParameters = null;
      }
      return validateNode({
        type: "ClassImplements",
        id: id,
        typeParameters: typeParameters
      });
    }
    function declareClass(id, typeParameters, _extends, body) {
      if (typeParameters === void 0) {
        typeParameters = null;
      }
      if (_extends === void 0) {
        _extends = null;
      }
      return validateNode({
        type: "DeclareClass",
        id: id,
        typeParameters: typeParameters,
        "extends": _extends,
        body: body
      });
    }
    function declareFunction(id) {
      return validateNode({
        type: "DeclareFunction",
        id: id
      });
    }
    function declareInterface(id, typeParameters, _extends, body) {
      if (typeParameters === void 0) {
        typeParameters = null;
      }
      if (_extends === void 0) {
        _extends = null;
      }
      return validateNode({
        type: "DeclareInterface",
        id: id,
        typeParameters: typeParameters,
        "extends": _extends,
        body: body
      });
    }
    function declareModule(id, body, kind) {
      if (kind === void 0) {
        kind = null;
      }
      return validateNode({
        type: "DeclareModule",
        id: id,
        body: body,
        kind: kind
      });
    }
    function declareModuleExports(typeAnnotation) {
      return validateNode({
        type: "DeclareModuleExports",
        typeAnnotation: typeAnnotation
      });
    }
    function declareTypeAlias(id, typeParameters, right) {
      if (typeParameters === void 0) {
        typeParameters = null;
      }
      return validateNode({
        type: "DeclareTypeAlias",
        id: id,
        typeParameters: typeParameters,
        right: right
      });
    }
    function declareOpaqueType(id, typeParameters, supertype) {
      if (typeParameters === void 0) {
        typeParameters = null;
      }
      if (supertype === void 0) {
        supertype = null;
      }
      return validateNode({
        type: "DeclareOpaqueType",
        id: id,
        typeParameters: typeParameters,
        supertype: supertype
      });
    }
    function declareVariable(id) {
      return validateNode({
        type: "DeclareVariable",
        id: id
      });
    }
    function declareExportDeclaration(declaration, specifiers, source) {
      if (declaration === void 0) {
        declaration = null;
      }
      if (specifiers === void 0) {
        specifiers = null;
      }
      if (source === void 0) {
        source = null;
      }
      return validateNode({
        type: "DeclareExportDeclaration",
        declaration: declaration,
        specifiers: specifiers,
        source: source
      });
    }
    function declareExportAllDeclaration(source) {
      return validateNode({
        type: "DeclareExportAllDeclaration",
        source: source
      });
    }
    function declaredPredicate(value) {
      return validateNode({
        type: "DeclaredPredicate",
        value: value
      });
    }
    function existsTypeAnnotation() {
      return {
        type: "ExistsTypeAnnotation"
      };
    }
    function functionTypeAnnotation(typeParameters, params, rest, returnType) {
      if (typeParameters === void 0) {
        typeParameters = null;
      }
      if (rest === void 0) {
        rest = null;
      }
      return validateNode({
        type: "FunctionTypeAnnotation",
        typeParameters: typeParameters,
        params: params,
        rest: rest,
        returnType: returnType
      });
    }
    function functionTypeParam(name, typeAnnotation) {
      if (name === void 0) {
        name = null;
      }
      return validateNode({
        type: "FunctionTypeParam",
        name: name,
        typeAnnotation: typeAnnotation
      });
    }
    function genericTypeAnnotation$1(id, typeParameters) {
      if (typeParameters === void 0) {
        typeParameters = null;
      }
      return validateNode({
        type: "GenericTypeAnnotation",
        id: id,
        typeParameters: typeParameters
      });
    }
    function inferredPredicate() {
      return {
        type: "InferredPredicate"
      };
    }
    function interfaceExtends(id, typeParameters) {
      if (typeParameters === void 0) {
        typeParameters = null;
      }
      return validateNode({
        type: "InterfaceExtends",
        id: id,
        typeParameters: typeParameters
      });
    }
    function interfaceDeclaration(id, typeParameters, _extends, body) {
      if (typeParameters === void 0) {
        typeParameters = null;
      }
      if (_extends === void 0) {
        _extends = null;
      }
      return validateNode({
        type: "InterfaceDeclaration",
        id: id,
        typeParameters: typeParameters,
        "extends": _extends,
        body: body
      });
    }
    function interfaceTypeAnnotation(_extends, body) {
      if (_extends === void 0) {
        _extends = null;
      }
      return validateNode({
        type: "InterfaceTypeAnnotation",
        "extends": _extends,
        body: body
      });
    }
    function intersectionTypeAnnotation(types) {
      return validateNode({
        type: "IntersectionTypeAnnotation",
        types: types
      });
    }
    function mixedTypeAnnotation() {
      return {
        type: "MixedTypeAnnotation"
      };
    }
    function emptyTypeAnnotation() {
      return {
        type: "EmptyTypeAnnotation"
      };
    }
    function nullableTypeAnnotation(typeAnnotation) {
      return validateNode({
        type: "NullableTypeAnnotation",
        typeAnnotation: typeAnnotation
      });
    }
    function numberLiteralTypeAnnotation(value) {
      return validateNode({
        type: "NumberLiteralTypeAnnotation",
        value: value
      });
    }
    function numberTypeAnnotation$2() {
      return {
        type: "NumberTypeAnnotation"
      };
    }
    function objectTypeAnnotation(properties, indexers, callProperties, internalSlots, exact) {
      if (indexers === void 0) {
        indexers = [];
      }
      if (callProperties === void 0) {
        callProperties = [];
      }
      if (internalSlots === void 0) {
        internalSlots = [];
      }
      if (exact === void 0) {
        exact = false;
      }
      return validateNode({
        type: "ObjectTypeAnnotation",
        properties: properties,
        indexers: indexers,
        callProperties: callProperties,
        internalSlots: internalSlots,
        exact: exact
      });
    }
    function objectTypeInternalSlot(id, value, optional, _static, method) {
      return validateNode({
        type: "ObjectTypeInternalSlot",
        id: id,
        value: value,
        optional: optional,
        "static": _static,
        method: method
      });
    }
    function objectTypeCallProperty(value) {
      return validateNode({
        type: "ObjectTypeCallProperty",
        value: value,
        "static": null
      });
    }
    function objectTypeIndexer(id, key, value, variance) {
      if (id === void 0) {
        id = null;
      }
      if (variance === void 0) {
        variance = null;
      }
      return validateNode({
        type: "ObjectTypeIndexer",
        id: id,
        key: key,
        value: value,
        variance: variance,
        "static": null
      });
    }
    function objectTypeProperty(key, value, variance) {
      if (variance === void 0) {
        variance = null;
      }
      return validateNode({
        type: "ObjectTypeProperty",
        key: key,
        value: value,
        variance: variance,
        kind: null,
        method: null,
        optional: null,
        proto: null,
        "static": null
      });
    }
    function objectTypeSpreadProperty(argument) {
      return validateNode({
        type: "ObjectTypeSpreadProperty",
        argument: argument
      });
    }
    function opaqueType(id, typeParameters, supertype, impltype) {
      if (typeParameters === void 0) {
        typeParameters = null;
      }
      if (supertype === void 0) {
        supertype = null;
      }
      return validateNode({
        type: "OpaqueType",
        id: id,
        typeParameters: typeParameters,
        supertype: supertype,
        impltype: impltype
      });
    }
    function qualifiedTypeIdentifier(id, qualification) {
      return validateNode({
        type: "QualifiedTypeIdentifier",
        id: id,
        qualification: qualification
      });
    }
    function stringLiteralTypeAnnotation(value) {
      return validateNode({
        type: "StringLiteralTypeAnnotation",
        value: value
      });
    }
    function stringTypeAnnotation$2() {
      return {
        type: "StringTypeAnnotation"
      };
    }
    function symbolTypeAnnotation() {
      return {
        type: "SymbolTypeAnnotation"
      };
    }
    function thisTypeAnnotation() {
      return {
        type: "ThisTypeAnnotation"
      };
    }
    function tupleTypeAnnotation$1(types) {
      return validateNode({
        type: "TupleTypeAnnotation",
        types: types
      });
    }
    function typeofTypeAnnotation(argument) {
      return validateNode({
        type: "TypeofTypeAnnotation",
        argument: argument
      });
    }
    function typeAlias(id, typeParameters, right) {
      if (typeParameters === void 0) {
        typeParameters = null;
      }
      return validateNode({
        type: "TypeAlias",
        id: id,
        typeParameters: typeParameters,
        right: right
      });
    }
    function typeAnnotation(typeAnnotation) {
      return validateNode({
        type: "TypeAnnotation",
        typeAnnotation: typeAnnotation
      });
    }
    function typeCastExpression(expression, typeAnnotation) {
      return validateNode({
        type: "TypeCastExpression",
        expression: expression,
        typeAnnotation: typeAnnotation
      });
    }
    function typeParameter(bound, _default, variance) {
      if (bound === void 0) {
        bound = null;
      }
      if (_default === void 0) {
        _default = null;
      }
      if (variance === void 0) {
        variance = null;
      }
      return validateNode({
        type: "TypeParameter",
        bound: bound,
        "default": _default,
        variance: variance,
        name: null
      });
    }
    function typeParameterDeclaration(params) {
      return validateNode({
        type: "TypeParameterDeclaration",
        params: params
      });
    }
    function typeParameterInstantiation(params) {
      return validateNode({
        type: "TypeParameterInstantiation",
        params: params
      });
    }
    function unionTypeAnnotation$1(types) {
      return validateNode({
        type: "UnionTypeAnnotation",
        types: types
      });
    }
    function variance(kind) {
      return validateNode({
        type: "Variance",
        kind: kind
      });
    }
    function voidTypeAnnotation$3() {
      return {
        type: "VoidTypeAnnotation"
      };
    }
    function enumDeclaration(id, body) {
      return validateNode({
        type: "EnumDeclaration",
        id: id,
        body: body
      });
    }
    function enumBooleanBody(members) {
      return validateNode({
        type: "EnumBooleanBody",
        members: members,
        explicitType: null,
        hasUnknownMembers: null
      });
    }
    function enumNumberBody(members) {
      return validateNode({
        type: "EnumNumberBody",
        members: members,
        explicitType: null,
        hasUnknownMembers: null
      });
    }
    function enumStringBody(members) {
      return validateNode({
        type: "EnumStringBody",
        members: members,
        explicitType: null,
        hasUnknownMembers: null
      });
    }
    function enumSymbolBody(members) {
      return validateNode({
        type: "EnumSymbolBody",
        members: members,
        hasUnknownMembers: null
      });
    }
    function enumBooleanMember(id) {
      return validateNode({
        type: "EnumBooleanMember",
        id: id,
        init: null
      });
    }
    function enumNumberMember(id, init) {
      return validateNode({
        type: "EnumNumberMember",
        id: id,
        init: init
      });
    }
    function enumStringMember(id, init) {
      return validateNode({
        type: "EnumStringMember",
        id: id,
        init: init
      });
    }
    function enumDefaultedMember(id) {
      return validateNode({
        type: "EnumDefaultedMember",
        id: id
      });
    }
    function indexedAccessType(objectType, indexType) {
      return validateNode({
        type: "IndexedAccessType",
        objectType: objectType,
        indexType: indexType
      });
    }
    function optionalIndexedAccessType(objectType, indexType) {
      return validateNode({
        type: "OptionalIndexedAccessType",
        objectType: objectType,
        indexType: indexType,
        optional: null
      });
    }
    function jsxAttribute(name, value) {
      if (value === void 0) {
        value = null;
      }
      return validateNode({
        type: "JSXAttribute",
        name: name,
        value: value
      });
    }
    function jsxClosingElement(name) {
      return validateNode({
        type: "JSXClosingElement",
        name: name
      });
    }
    function jsxElement(openingElement, closingElement, children, selfClosing) {
      if (closingElement === void 0) {
        closingElement = null;
      }
      if (selfClosing === void 0) {
        selfClosing = null;
      }
      return validateNode({
        type: "JSXElement",
        openingElement: openingElement,
        closingElement: closingElement,
        children: children,
        selfClosing: selfClosing
      });
    }
    function jsxEmptyExpression() {
      return {
        type: "JSXEmptyExpression"
      };
    }
    function jsxExpressionContainer$1(expression) {
      return validateNode({
        type: "JSXExpressionContainer",
        expression: expression
      });
    }
    function jsxSpreadChild(expression) {
      return validateNode({
        type: "JSXSpreadChild",
        expression: expression
      });
    }
    function jsxIdentifier$2(name) {
      return validateNode({
        type: "JSXIdentifier",
        name: name
      });
    }
    function jsxMemberExpression$1(object, property) {
      return validateNode({
        type: "JSXMemberExpression",
        object: object,
        property: property
      });
    }
    function jsxNamespacedName(namespace, name) {
      return validateNode({
        type: "JSXNamespacedName",
        namespace: namespace,
        name: name
      });
    }
    function jsxOpeningElement(name, attributes, selfClosing) {
      if (selfClosing === void 0) {
        selfClosing = false;
      }
      return validateNode({
        type: "JSXOpeningElement",
        name: name,
        attributes: attributes,
        selfClosing: selfClosing
      });
    }
    function jsxSpreadAttribute(argument) {
      return validateNode({
        type: "JSXSpreadAttribute",
        argument: argument
      });
    }
    function jsxText(value) {
      return validateNode({
        type: "JSXText",
        value: value
      });
    }
    function jsxFragment(openingFragment, closingFragment, children) {
      return validateNode({
        type: "JSXFragment",
        openingFragment: openingFragment,
        closingFragment: closingFragment,
        children: children
      });
    }
    function jsxOpeningFragment() {
      return {
        type: "JSXOpeningFragment"
      };
    }
    function jsxClosingFragment() {
      return {
        type: "JSXClosingFragment"
      };
    }
    function noop$1() {
      return {
        type: "Noop"
      };
    }
    function placeholder(expectedNode, name) {
      return validateNode({
        type: "Placeholder",
        expectedNode: expectedNode,
        name: name
      });
    }
    function v8IntrinsicIdentifier(name) {
      return validateNode({
        type: "V8IntrinsicIdentifier",
        name: name
      });
    }
    function argumentPlaceholder() {
      return {
        type: "ArgumentPlaceholder"
      };
    }
    function bindExpression(object, callee) {
      return validateNode({
        type: "BindExpression",
        object: object,
        callee: callee
      });
    }
    function importAttribute(key, value) {
      return validateNode({
        type: "ImportAttribute",
        key: key,
        value: value
      });
    }
    function decorator(expression) {
      return validateNode({
        type: "Decorator",
        expression: expression
      });
    }
    function doExpression(body, async) {
      if (async === void 0) {
        async = false;
      }
      return validateNode({
        type: "DoExpression",
        body: body,
        async: async
      });
    }
    function exportDefaultSpecifier(exported) {
      return validateNode({
        type: "ExportDefaultSpecifier",
        exported: exported
      });
    }
    function recordExpression(properties) {
      return validateNode({
        type: "RecordExpression",
        properties: properties
      });
    }
    function tupleExpression(elements) {
      if (elements === void 0) {
        elements = [];
      }
      return validateNode({
        type: "TupleExpression",
        elements: elements
      });
    }
    function decimalLiteral(value) {
      return validateNode({
        type: "DecimalLiteral",
        value: value
      });
    }
    function moduleExpression(body) {
      return validateNode({
        type: "ModuleExpression",
        body: body
      });
    }
    function topicReference() {
      return {
        type: "TopicReference"
      };
    }
    function pipelineTopicExpression(expression) {
      return validateNode({
        type: "PipelineTopicExpression",
        expression: expression
      });
    }
    function pipelineBareFunction(callee) {
      return validateNode({
        type: "PipelineBareFunction",
        callee: callee
      });
    }
    function pipelinePrimaryTopicReference() {
      return {
        type: "PipelinePrimaryTopicReference"
      };
    }
    function tsParameterProperty(parameter) {
      return validateNode({
        type: "TSParameterProperty",
        parameter: parameter
      });
    }
    function tsDeclareFunction(id, typeParameters, params, returnType) {
      if (id === void 0) {
        id = null;
      }
      if (typeParameters === void 0) {
        typeParameters = null;
      }
      if (returnType === void 0) {
        returnType = null;
      }
      return validateNode({
        type: "TSDeclareFunction",
        id: id,
        typeParameters: typeParameters,
        params: params,
        returnType: returnType
      });
    }
    function tsDeclareMethod(decorators, key, typeParameters, params, returnType) {
      if (decorators === void 0) {
        decorators = null;
      }
      if (typeParameters === void 0) {
        typeParameters = null;
      }
      if (returnType === void 0) {
        returnType = null;
      }
      return validateNode({
        type: "TSDeclareMethod",
        decorators: decorators,
        key: key,
        typeParameters: typeParameters,
        params: params,
        returnType: returnType
      });
    }
    function tsQualifiedName(left, right) {
      return validateNode({
        type: "TSQualifiedName",
        left: left,
        right: right
      });
    }
    function tsCallSignatureDeclaration(typeParameters, parameters, typeAnnotation) {
      if (typeParameters === void 0) {
        typeParameters = null;
      }
      if (typeAnnotation === void 0) {
        typeAnnotation = null;
      }
      return validateNode({
        type: "TSCallSignatureDeclaration",
        typeParameters: typeParameters,
        parameters: parameters,
        typeAnnotation: typeAnnotation
      });
    }
    function tsConstructSignatureDeclaration(typeParameters, parameters, typeAnnotation) {
      if (typeParameters === void 0) {
        typeParameters = null;
      }
      if (typeAnnotation === void 0) {
        typeAnnotation = null;
      }
      return validateNode({
        type: "TSConstructSignatureDeclaration",
        typeParameters: typeParameters,
        parameters: parameters,
        typeAnnotation: typeAnnotation
      });
    }
    function tsPropertySignature(key, typeAnnotation, initializer) {
      if (typeAnnotation === void 0) {
        typeAnnotation = null;
      }
      if (initializer === void 0) {
        initializer = null;
      }
      return validateNode({
        type: "TSPropertySignature",
        key: key,
        typeAnnotation: typeAnnotation,
        initializer: initializer,
        kind: null
      });
    }
    function tsMethodSignature(key, typeParameters, parameters, typeAnnotation) {
      if (typeParameters === void 0) {
        typeParameters = null;
      }
      if (typeAnnotation === void 0) {
        typeAnnotation = null;
      }
      return validateNode({
        type: "TSMethodSignature",
        key: key,
        typeParameters: typeParameters,
        parameters: parameters,
        typeAnnotation: typeAnnotation,
        kind: null
      });
    }
    function tsIndexSignature(parameters, typeAnnotation) {
      if (typeAnnotation === void 0) {
        typeAnnotation = null;
      }
      return validateNode({
        type: "TSIndexSignature",
        parameters: parameters,
        typeAnnotation: typeAnnotation
      });
    }
    function tsAnyKeyword() {
      return {
        type: "TSAnyKeyword"
      };
    }
    function tsBooleanKeyword() {
      return {
        type: "TSBooleanKeyword"
      };
    }
    function tsBigIntKeyword() {
      return {
        type: "TSBigIntKeyword"
      };
    }
    function tsIntrinsicKeyword() {
      return {
        type: "TSIntrinsicKeyword"
      };
    }
    function tsNeverKeyword() {
      return {
        type: "TSNeverKeyword"
      };
    }
    function tsNullKeyword() {
      return {
        type: "TSNullKeyword"
      };
    }
    function tsNumberKeyword() {
      return {
        type: "TSNumberKeyword"
      };
    }
    function tsObjectKeyword() {
      return {
        type: "TSObjectKeyword"
      };
    }
    function tsStringKeyword() {
      return {
        type: "TSStringKeyword"
      };
    }
    function tsSymbolKeyword() {
      return {
        type: "TSSymbolKeyword"
      };
    }
    function tsUndefinedKeyword() {
      return {
        type: "TSUndefinedKeyword"
      };
    }
    function tsUnknownKeyword() {
      return {
        type: "TSUnknownKeyword"
      };
    }
    function tsVoidKeyword() {
      return {
        type: "TSVoidKeyword"
      };
    }
    function tsThisType() {
      return {
        type: "TSThisType"
      };
    }
    function tsFunctionType(typeParameters, parameters, typeAnnotation) {
      if (typeParameters === void 0) {
        typeParameters = null;
      }
      if (typeAnnotation === void 0) {
        typeAnnotation = null;
      }
      return validateNode({
        type: "TSFunctionType",
        typeParameters: typeParameters,
        parameters: parameters,
        typeAnnotation: typeAnnotation
      });
    }
    function tsConstructorType(typeParameters, parameters, typeAnnotation) {
      if (typeParameters === void 0) {
        typeParameters = null;
      }
      if (typeAnnotation === void 0) {
        typeAnnotation = null;
      }
      return validateNode({
        type: "TSConstructorType",
        typeParameters: typeParameters,
        parameters: parameters,
        typeAnnotation: typeAnnotation
      });
    }
    function tsTypeReference(typeName, typeParameters) {
      if (typeParameters === void 0) {
        typeParameters = null;
      }
      return validateNode({
        type: "TSTypeReference",
        typeName: typeName,
        typeParameters: typeParameters
      });
    }
    function tsTypePredicate(parameterName, typeAnnotation, asserts) {
      if (typeAnnotation === void 0) {
        typeAnnotation = null;
      }
      if (asserts === void 0) {
        asserts = null;
      }
      return validateNode({
        type: "TSTypePredicate",
        parameterName: parameterName,
        typeAnnotation: typeAnnotation,
        asserts: asserts
      });
    }
    function tsTypeQuery(exprName, typeParameters) {
      if (typeParameters === void 0) {
        typeParameters = null;
      }
      return validateNode({
        type: "TSTypeQuery",
        exprName: exprName,
        typeParameters: typeParameters
      });
    }
    function tsTypeLiteral(members) {
      return validateNode({
        type: "TSTypeLiteral",
        members: members
      });
    }
    function tsArrayType(elementType) {
      return validateNode({
        type: "TSArrayType",
        elementType: elementType
      });
    }
    function tsTupleType(elementTypes) {
      return validateNode({
        type: "TSTupleType",
        elementTypes: elementTypes
      });
    }
    function tsOptionalType(typeAnnotation) {
      return validateNode({
        type: "TSOptionalType",
        typeAnnotation: typeAnnotation
      });
    }
    function tsRestType(typeAnnotation) {
      return validateNode({
        type: "TSRestType",
        typeAnnotation: typeAnnotation
      });
    }
    function tsNamedTupleMember(label, elementType, optional) {
      if (optional === void 0) {
        optional = false;
      }
      return validateNode({
        type: "TSNamedTupleMember",
        label: label,
        elementType: elementType,
        optional: optional
      });
    }
    function tsUnionType(types) {
      return validateNode({
        type: "TSUnionType",
        types: types
      });
    }
    function tsIntersectionType(types) {
      return validateNode({
        type: "TSIntersectionType",
        types: types
      });
    }
    function tsConditionalType(checkType, extendsType, trueType, falseType) {
      return validateNode({
        type: "TSConditionalType",
        checkType: checkType,
        extendsType: extendsType,
        trueType: trueType,
        falseType: falseType
      });
    }
    function tsInferType(typeParameter) {
      return validateNode({
        type: "TSInferType",
        typeParameter: typeParameter
      });
    }
    function tsParenthesizedType(typeAnnotation) {
      return validateNode({
        type: "TSParenthesizedType",
        typeAnnotation: typeAnnotation
      });
    }
    function tsTypeOperator(typeAnnotation) {
      return validateNode({
        type: "TSTypeOperator",
        typeAnnotation: typeAnnotation,
        operator: null
      });
    }
    function tsIndexedAccessType(objectType, indexType) {
      return validateNode({
        type: "TSIndexedAccessType",
        objectType: objectType,
        indexType: indexType
      });
    }
    function tsMappedType(typeParameter, typeAnnotation, nameType) {
      if (typeAnnotation === void 0) {
        typeAnnotation = null;
      }
      if (nameType === void 0) {
        nameType = null;
      }
      return validateNode({
        type: "TSMappedType",
        typeParameter: typeParameter,
        typeAnnotation: typeAnnotation,
        nameType: nameType
      });
    }
    function tsLiteralType(literal) {
      return validateNode({
        type: "TSLiteralType",
        literal: literal
      });
    }
    function tsExpressionWithTypeArguments(expression, typeParameters) {
      if (typeParameters === void 0) {
        typeParameters = null;
      }
      return validateNode({
        type: "TSExpressionWithTypeArguments",
        expression: expression,
        typeParameters: typeParameters
      });
    }
    function tsInterfaceDeclaration(id, typeParameters, _extends, body) {
      if (typeParameters === void 0) {
        typeParameters = null;
      }
      if (_extends === void 0) {
        _extends = null;
      }
      return validateNode({
        type: "TSInterfaceDeclaration",
        id: id,
        typeParameters: typeParameters,
        "extends": _extends,
        body: body
      });
    }
    function tsInterfaceBody(body) {
      return validateNode({
        type: "TSInterfaceBody",
        body: body
      });
    }
    function tsTypeAliasDeclaration(id, typeParameters, typeAnnotation) {
      if (typeParameters === void 0) {
        typeParameters = null;
      }
      return validateNode({
        type: "TSTypeAliasDeclaration",
        id: id,
        typeParameters: typeParameters,
        typeAnnotation: typeAnnotation
      });
    }
    function tsInstantiationExpression(expression, typeParameters) {
      if (typeParameters === void 0) {
        typeParameters = null;
      }
      return validateNode({
        type: "TSInstantiationExpression",
        expression: expression,
        typeParameters: typeParameters
      });
    }
    function tsAsExpression(expression, typeAnnotation) {
      return validateNode({
        type: "TSAsExpression",
        expression: expression,
        typeAnnotation: typeAnnotation
      });
    }
    function tsSatisfiesExpression(expression, typeAnnotation) {
      return validateNode({
        type: "TSSatisfiesExpression",
        expression: expression,
        typeAnnotation: typeAnnotation
      });
    }
    function tsTypeAssertion(typeAnnotation, expression) {
      return validateNode({
        type: "TSTypeAssertion",
        typeAnnotation: typeAnnotation,
        expression: expression
      });
    }
    function tsEnumDeclaration(id, members) {
      return validateNode({
        type: "TSEnumDeclaration",
        id: id,
        members: members
      });
    }
    function tsEnumMember(id, initializer) {
      if (initializer === void 0) {
        initializer = null;
      }
      return validateNode({
        type: "TSEnumMember",
        id: id,
        initializer: initializer
      });
    }
    function tsModuleDeclaration(id, body) {
      return validateNode({
        type: "TSModuleDeclaration",
        id: id,
        body: body
      });
    }
    function tsModuleBlock(body) {
      return validateNode({
        type: "TSModuleBlock",
        body: body
      });
    }
    function tsImportType(argument, qualifier, typeParameters) {
      if (qualifier === void 0) {
        qualifier = null;
      }
      if (typeParameters === void 0) {
        typeParameters = null;
      }
      return validateNode({
        type: "TSImportType",
        argument: argument,
        qualifier: qualifier,
        typeParameters: typeParameters
      });
    }
    function tsImportEqualsDeclaration(id, moduleReference) {
      return validateNode({
        type: "TSImportEqualsDeclaration",
        id: id,
        moduleReference: moduleReference,
        isExport: null
      });
    }
    function tsExternalModuleReference(expression) {
      return validateNode({
        type: "TSExternalModuleReference",
        expression: expression
      });
    }
    function tsNonNullExpression(expression) {
      return validateNode({
        type: "TSNonNullExpression",
        expression: expression
      });
    }
    function tsExportAssignment(expression) {
      return validateNode({
        type: "TSExportAssignment",
        expression: expression
      });
    }
    function tsNamespaceExportDeclaration(id) {
      return validateNode({
        type: "TSNamespaceExportDeclaration",
        id: id
      });
    }
    function tsTypeAnnotation(typeAnnotation) {
      return validateNode({
        type: "TSTypeAnnotation",
        typeAnnotation: typeAnnotation
      });
    }
    function tsTypeParameterInstantiation(params) {
      return validateNode({
        type: "TSTypeParameterInstantiation",
        params: params
      });
    }
    function tsTypeParameterDeclaration(params) {
      return validateNode({
        type: "TSTypeParameterDeclaration",
        params: params
      });
    }
    function tsTypeParameter(constraint, _default, name) {
      if (constraint === void 0) {
        constraint = null;
      }
      if (_default === void 0) {
        _default = null;
      }
      return validateNode({
        type: "TSTypeParameter",
        constraint: constraint,
        "default": _default,
        name: name
      });
    }
    function NumberLiteral(value) {
      deprecationWarning$1("NumberLiteral", "NumericLiteral", "The node type ");
      return numericLiteral$8(value);
    }
    function RegexLiteral(pattern, flags) {
      if (flags === void 0) {
        flags = "";
      }
      deprecationWarning$1("RegexLiteral", "RegExpLiteral", "The node type ");
      return regExpLiteral(pattern, flags);
    }
    function RestProperty(argument) {
      deprecationWarning$1("RestProperty", "RestElement", "The node type ");
      return restElement$2(argument);
    }
    function SpreadProperty(argument) {
      deprecationWarning$1("SpreadProperty", "SpreadElement", "The node type ");
      return spreadElement$2(argument);
    }
  
    function cleanJSXElementLiteralChild(child, args) {
      var lines = child.value.split(/\r\n|\n|\r/);
      var lastNonEmptyLine = 0;
      for (var i = 0; i < lines.length; i++) {
        if (lines[i].match(/[^ \t]/)) {
          lastNonEmptyLine = i;
        }
      }
      var str = "";
      for (var _i = 0; _i < lines.length; _i++) {
        var line = lines[_i];
        var isFirstLine = _i === 0;
        var isLastLine = _i === lines.length - 1;
        var isLastNonEmptyLine = _i === lastNonEmptyLine;
        var trimmedLine = line.replace(/\t/g, " ");
        if (!isFirstLine) {
          trimmedLine = trimmedLine.replace(/^[ ]+/, "");
        }
        if (!isLastLine) {
          trimmedLine = trimmedLine.replace(/[ ]+$/, "");
        }
        if (trimmedLine) {
          if (!isLastNonEmptyLine) {
            trimmedLine += " ";
          }
          str += trimmedLine;
        }
      }
      if (str) args.push(inherits$1(stringLiteral$8(str), child));
    }
  
    function buildChildren(node) {
      var elements = [];
      for (var i = 0; i < node.children.length; i++) {
        var child = node.children[i];
        if (isJSXText(child)) {
          cleanJSXElementLiteralChild(child, elements);
          continue;
        }
        if (isJSXExpressionContainer$1(child)) child = child.expression;
        if (isJSXEmptyExpression(child)) continue;
        elements.push(child);
      }
      return elements;
    }
  
    function isNode(node) {
      return !!(node && VISITOR_KEYS$5[node.type]);
    }
  
    function assertNode(node) {
      if (!isNode(node)) {
        var _node$type;
        var type = (_node$type = node == null ? void 0 : node.type) != null ? _node$type : JSON.stringify(node);
        throw new TypeError("Not a valid node of type \"" + type + "\"");
      }
    }
  
    function assert$3(type, node, opts) {
      if (!is$1(type, node, opts)) {
        throw new Error("Expected type \"" + type + "\" with option " + JSON.stringify(opts) + ", " + ("but instead got \"" + node.type + "\"."));
      }
    }
    function assertArrayExpression(node, opts) {
      assert$3("ArrayExpression", node, opts);
    }
    function assertAssignmentExpression(node, opts) {
      assert$3("AssignmentExpression", node, opts);
    }
    function assertBinaryExpression(node, opts) {
      assert$3("BinaryExpression", node, opts);
    }
    function assertInterpreterDirective(node, opts) {
      assert$3("InterpreterDirective", node, opts);
    }
    function assertDirective(node, opts) {
      assert$3("Directive", node, opts);
    }
    function assertDirectiveLiteral(node, opts) {
      assert$3("DirectiveLiteral", node, opts);
    }
    function assertBlockStatement(node, opts) {
      assert$3("BlockStatement", node, opts);
    }
    function assertBreakStatement(node, opts) {
      assert$3("BreakStatement", node, opts);
    }
    function assertCallExpression(node, opts) {
      assert$3("CallExpression", node, opts);
    }
    function assertCatchClause(node, opts) {
      assert$3("CatchClause", node, opts);
    }
    function assertConditionalExpression(node, opts) {
      assert$3("ConditionalExpression", node, opts);
    }
    function assertContinueStatement(node, opts) {
      assert$3("ContinueStatement", node, opts);
    }
    function assertDebuggerStatement(node, opts) {
      assert$3("DebuggerStatement", node, opts);
    }
    function assertDoWhileStatement(node, opts) {
      assert$3("DoWhileStatement", node, opts);
    }
    function assertEmptyStatement(node, opts) {
      assert$3("EmptyStatement", node, opts);
    }
    function assertExpressionStatement$1(node, opts) {
      assert$3("ExpressionStatement", node, opts);
    }
    function assertFile(node, opts) {
      assert$3("File", node, opts);
    }
    function assertForInStatement(node, opts) {
      assert$3("ForInStatement", node, opts);
    }
    function assertForStatement(node, opts) {
      assert$3("ForStatement", node, opts);
    }
    function assertFunctionDeclaration(node, opts) {
      assert$3("FunctionDeclaration", node, opts);
    }
    function assertFunctionExpression(node, opts) {
      assert$3("FunctionExpression", node, opts);
    }
    function assertIdentifier(node, opts) {
      assert$3("Identifier", node, opts);
    }
    function assertIfStatement(node, opts) {
      assert$3("IfStatement", node, opts);
    }
    function assertLabeledStatement(node, opts) {
      assert$3("LabeledStatement", node, opts);
    }
    function assertStringLiteral(node, opts) {
      assert$3("StringLiteral", node, opts);
    }
    function assertNumericLiteral(node, opts) {
      assert$3("NumericLiteral", node, opts);
    }
    function assertNullLiteral(node, opts) {
      assert$3("NullLiteral", node, opts);
    }
    function assertBooleanLiteral(node, opts) {
      assert$3("BooleanLiteral", node, opts);
    }
    function assertRegExpLiteral(node, opts) {
      assert$3("RegExpLiteral", node, opts);
    }
    function assertLogicalExpression(node, opts) {
      assert$3("LogicalExpression", node, opts);
    }
    function assertMemberExpression(node, opts) {
      assert$3("MemberExpression", node, opts);
    }
    function assertNewExpression(node, opts) {
      assert$3("NewExpression", node, opts);
    }
    function assertProgram(node, opts) {
      assert$3("Program", node, opts);
    }
    function assertObjectExpression(node, opts) {
      assert$3("ObjectExpression", node, opts);
    }
    function assertObjectMethod(node, opts) {
      assert$3("ObjectMethod", node, opts);
    }
    function assertObjectProperty(node, opts) {
      assert$3("ObjectProperty", node, opts);
    }
    function assertRestElement(node, opts) {
      assert$3("RestElement", node, opts);
    }
    function assertReturnStatement(node, opts) {
      assert$3("ReturnStatement", node, opts);
    }
    function assertSequenceExpression(node, opts) {
      assert$3("SequenceExpression", node, opts);
    }
    function assertParenthesizedExpression(node, opts) {
      assert$3("ParenthesizedExpression", node, opts);
    }
    function assertSwitchCase(node, opts) {
      assert$3("SwitchCase", node, opts);
    }
    function assertSwitchStatement(node, opts) {
      assert$3("SwitchStatement", node, opts);
    }
    function assertThisExpression(node, opts) {
      assert$3("ThisExpression", node, opts);
    }
    function assertThrowStatement(node, opts) {
      assert$3("ThrowStatement", node, opts);
    }
    function assertTryStatement(node, opts) {
      assert$3("TryStatement", node, opts);
    }
    function assertUnaryExpression(node, opts) {
      assert$3("UnaryExpression", node, opts);
    }
    function assertUpdateExpression(node, opts) {
      assert$3("UpdateExpression", node, opts);
    }
    function assertVariableDeclaration(node, opts) {
      assert$3("VariableDeclaration", node, opts);
    }
    function assertVariableDeclarator(node, opts) {
      assert$3("VariableDeclarator", node, opts);
    }
    function assertWhileStatement(node, opts) {
      assert$3("WhileStatement", node, opts);
    }
    function assertWithStatement(node, opts) {
      assert$3("WithStatement", node, opts);
    }
    function assertAssignmentPattern(node, opts) {
      assert$3("AssignmentPattern", node, opts);
    }
    function assertArrayPattern(node, opts) {
      assert$3("ArrayPattern", node, opts);
    }
    function assertArrowFunctionExpression(node, opts) {
      assert$3("ArrowFunctionExpression", node, opts);
    }
    function assertClassBody(node, opts) {
      assert$3("ClassBody", node, opts);
    }
    function assertClassExpression(node, opts) {
      assert$3("ClassExpression", node, opts);
    }
    function assertClassDeclaration(node, opts) {
      assert$3("ClassDeclaration", node, opts);
    }
    function assertExportAllDeclaration(node, opts) {
      assert$3("ExportAllDeclaration", node, opts);
    }
    function assertExportDefaultDeclaration(node, opts) {
      assert$3("ExportDefaultDeclaration", node, opts);
    }
    function assertExportNamedDeclaration(node, opts) {
      assert$3("ExportNamedDeclaration", node, opts);
    }
    function assertExportSpecifier$1(node, opts) {
      assert$3("ExportSpecifier", node, opts);
    }
    function assertForOfStatement(node, opts) {
      assert$3("ForOfStatement", node, opts);
    }
    function assertImportDeclaration(node, opts) {
      assert$3("ImportDeclaration", node, opts);
    }
    function assertImportDefaultSpecifier(node, opts) {
      assert$3("ImportDefaultSpecifier", node, opts);
    }
    function assertImportNamespaceSpecifier(node, opts) {
      assert$3("ImportNamespaceSpecifier", node, opts);
    }
    function assertImportSpecifier(node, opts) {
      assert$3("ImportSpecifier", node, opts);
    }
    function assertMetaProperty(node, opts) {
      assert$3("MetaProperty", node, opts);
    }
    function assertClassMethod(node, opts) {
      assert$3("ClassMethod", node, opts);
    }
    function assertObjectPattern(node, opts) {
      assert$3("ObjectPattern", node, opts);
    }
    function assertSpreadElement(node, opts) {
      assert$3("SpreadElement", node, opts);
    }
    function assertSuper(node, opts) {
      assert$3("Super", node, opts);
    }
    function assertTaggedTemplateExpression(node, opts) {
      assert$3("TaggedTemplateExpression", node, opts);
    }
    function assertTemplateElement(node, opts) {
      assert$3("TemplateElement", node, opts);
    }
    function assertTemplateLiteral(node, opts) {
      assert$3("TemplateLiteral", node, opts);
    }
    function assertYieldExpression(node, opts) {
      assert$3("YieldExpression", node, opts);
    }
    function assertAwaitExpression(node, opts) {
      assert$3("AwaitExpression", node, opts);
    }
    function assertImport(node, opts) {
      assert$3("Import", node, opts);
    }
    function assertBigIntLiteral(node, opts) {
      assert$3("BigIntLiteral", node, opts);
    }
    function assertExportNamespaceSpecifier(node, opts) {
      assert$3("ExportNamespaceSpecifier", node, opts);
    }
    function assertOptionalMemberExpression(node, opts) {
      assert$3("OptionalMemberExpression", node, opts);
    }
    function assertOptionalCallExpression(node, opts) {
      assert$3("OptionalCallExpression", node, opts);
    }
    function assertClassProperty(node, opts) {
      assert$3("ClassProperty", node, opts);
    }
    function assertClassAccessorProperty(node, opts) {
      assert$3("ClassAccessorProperty", node, opts);
    }
    function assertClassPrivateProperty(node, opts) {
      assert$3("ClassPrivateProperty", node, opts);
    }
    function assertClassPrivateMethod(node, opts) {
      assert$3("ClassPrivateMethod", node, opts);
    }
    function assertPrivateName(node, opts) {
      assert$3("PrivateName", node, opts);
    }
    function assertStaticBlock(node, opts) {
      assert$3("StaticBlock", node, opts);
    }
    function assertAnyTypeAnnotation(node, opts) {
      assert$3("AnyTypeAnnotation", node, opts);
    }
    function assertArrayTypeAnnotation(node, opts) {
      assert$3("ArrayTypeAnnotation", node, opts);
    }
    function assertBooleanTypeAnnotation(node, opts) {
      assert$3("BooleanTypeAnnotation", node, opts);
    }
    function assertBooleanLiteralTypeAnnotation(node, opts) {
      assert$3("BooleanLiteralTypeAnnotation", node, opts);
    }
    function assertNullLiteralTypeAnnotation(node, opts) {
      assert$3("NullLiteralTypeAnnotation", node, opts);
    }
    function assertClassImplements(node, opts) {
      assert$3("ClassImplements", node, opts);
    }
    function assertDeclareClass(node, opts) {
      assert$3("DeclareClass", node, opts);
    }
    function assertDeclareFunction(node, opts) {
      assert$3("DeclareFunction", node, opts);
    }
    function assertDeclareInterface(node, opts) {
      assert$3("DeclareInterface", node, opts);
    }
    function assertDeclareModule(node, opts) {
      assert$3("DeclareModule", node, opts);
    }
    function assertDeclareModuleExports(node, opts) {
      assert$3("DeclareModuleExports", node, opts);
    }
    function assertDeclareTypeAlias(node, opts) {
      assert$3("DeclareTypeAlias", node, opts);
    }
    function assertDeclareOpaqueType(node, opts) {
      assert$3("DeclareOpaqueType", node, opts);
    }
    function assertDeclareVariable(node, opts) {
      assert$3("DeclareVariable", node, opts);
    }
    function assertDeclareExportDeclaration(node, opts) {
      assert$3("DeclareExportDeclaration", node, opts);
    }
    function assertDeclareExportAllDeclaration(node, opts) {
      assert$3("DeclareExportAllDeclaration", node, opts);
    }
    function assertDeclaredPredicate(node, opts) {
      assert$3("DeclaredPredicate", node, opts);
    }
    function assertExistsTypeAnnotation(node, opts) {
      assert$3("ExistsTypeAnnotation", node, opts);
    }
    function assertFunctionTypeAnnotation(node, opts) {
      assert$3("FunctionTypeAnnotation", node, opts);
    }
    function assertFunctionTypeParam(node, opts) {
      assert$3("FunctionTypeParam", node, opts);
    }
    function assertGenericTypeAnnotation(node, opts) {
      assert$3("GenericTypeAnnotation", node, opts);
    }
    function assertInferredPredicate(node, opts) {
      assert$3("InferredPredicate", node, opts);
    }
    function assertInterfaceExtends(node, opts) {
      assert$3("InterfaceExtends", node, opts);
    }
    function assertInterfaceDeclaration(node, opts) {
      assert$3("InterfaceDeclaration", node, opts);
    }
    function assertInterfaceTypeAnnotation(node, opts) {
      assert$3("InterfaceTypeAnnotation", node, opts);
    }
    function assertIntersectionTypeAnnotation(node, opts) {
      assert$3("IntersectionTypeAnnotation", node, opts);
    }
    function assertMixedTypeAnnotation(node, opts) {
      assert$3("MixedTypeAnnotation", node, opts);
    }
    function assertEmptyTypeAnnotation(node, opts) {
      assert$3("EmptyTypeAnnotation", node, opts);
    }
    function assertNullableTypeAnnotation(node, opts) {
      assert$3("NullableTypeAnnotation", node, opts);
    }
    function assertNumberLiteralTypeAnnotation(node, opts) {
      assert$3("NumberLiteralTypeAnnotation", node, opts);
    }
    function assertNumberTypeAnnotation(node, opts) {
      assert$3("NumberTypeAnnotation", node, opts);
    }
    function assertObjectTypeAnnotation(node, opts) {
      assert$3("ObjectTypeAnnotation", node, opts);
    }
    function assertObjectTypeInternalSlot(node, opts) {
      assert$3("ObjectTypeInternalSlot", node, opts);
    }
    function assertObjectTypeCallProperty(node, opts) {
      assert$3("ObjectTypeCallProperty", node, opts);
    }
    function assertObjectTypeIndexer(node, opts) {
      assert$3("ObjectTypeIndexer", node, opts);
    }
    function assertObjectTypeProperty(node, opts) {
      assert$3("ObjectTypeProperty", node, opts);
    }
    function assertObjectTypeSpreadProperty(node, opts) {
      assert$3("ObjectTypeSpreadProperty", node, opts);
    }
    function assertOpaqueType(node, opts) {
      assert$3("OpaqueType", node, opts);
    }
    function assertQualifiedTypeIdentifier(node, opts) {
      assert$3("QualifiedTypeIdentifier", node, opts);
    }
    function assertStringLiteralTypeAnnotation(node, opts) {
      assert$3("StringLiteralTypeAnnotation", node, opts);
    }
    function assertStringTypeAnnotation(node, opts) {
      assert$3("StringTypeAnnotation", node, opts);
    }
    function assertSymbolTypeAnnotation(node, opts) {
      assert$3("SymbolTypeAnnotation", node, opts);
    }
    function assertThisTypeAnnotation(node, opts) {
      assert$3("ThisTypeAnnotation", node, opts);
    }
    function assertTupleTypeAnnotation(node, opts) {
      assert$3("TupleTypeAnnotation", node, opts);
    }
    function assertTypeofTypeAnnotation(node, opts) {
      assert$3("TypeofTypeAnnotation", node, opts);
    }
    function assertTypeAlias(node, opts) {
      assert$3("TypeAlias", node, opts);
    }
    function assertTypeAnnotation(node, opts) {
      assert$3("TypeAnnotation", node, opts);
    }
    function assertTypeCastExpression(node, opts) {
      assert$3("TypeCastExpression", node, opts);
    }
    function assertTypeParameter(node, opts) {
      assert$3("TypeParameter", node, opts);
    }
    function assertTypeParameterDeclaration(node, opts) {
      assert$3("TypeParameterDeclaration", node, opts);
    }
    function assertTypeParameterInstantiation(node, opts) {
      assert$3("TypeParameterInstantiation", node, opts);
    }
    function assertUnionTypeAnnotation(node, opts) {
      assert$3("UnionTypeAnnotation", node, opts);
    }
    function assertVariance(node, opts) {
      assert$3("Variance", node, opts);
    }
    function assertVoidTypeAnnotation(node, opts) {
      assert$3("VoidTypeAnnotation", node, opts);
    }
    function assertEnumDeclaration(node, opts) {
      assert$3("EnumDeclaration", node, opts);
    }
    function assertEnumBooleanBody(node, opts) {
      assert$3("EnumBooleanBody", node, opts);
    }
    function assertEnumNumberBody(node, opts) {
      assert$3("EnumNumberBody", node, opts);
    }
    function assertEnumStringBody(node, opts) {
      assert$3("EnumStringBody", node, opts);
    }
    function assertEnumSymbolBody(node, opts) {
      assert$3("EnumSymbolBody", node, opts);
    }
    function assertEnumBooleanMember(node, opts) {
      assert$3("EnumBooleanMember", node, opts);
    }
    function assertEnumNumberMember(node, opts) {
      assert$3("EnumNumberMember", node, opts);
    }
    function assertEnumStringMember(node, opts) {
      assert$3("EnumStringMember", node, opts);
    }
    function assertEnumDefaultedMember(node, opts) {
      assert$3("EnumDefaultedMember", node, opts);
    }
    function assertIndexedAccessType(node, opts) {
      assert$3("IndexedAccessType", node, opts);
    }
    function assertOptionalIndexedAccessType(node, opts) {
      assert$3("OptionalIndexedAccessType", node, opts);
    }
    function assertJSXAttribute(node, opts) {
      assert$3("JSXAttribute", node, opts);
    }
    function assertJSXClosingElement(node, opts) {
      assert$3("JSXClosingElement", node, opts);
    }
    function assertJSXElement(node, opts) {
      assert$3("JSXElement", node, opts);
    }
    function assertJSXEmptyExpression(node, opts) {
      assert$3("JSXEmptyExpression", node, opts);
    }
    function assertJSXExpressionContainer(node, opts) {
      assert$3("JSXExpressionContainer", node, opts);
    }
    function assertJSXSpreadChild(node, opts) {
      assert$3("JSXSpreadChild", node, opts);
    }
    function assertJSXIdentifier(node, opts) {
      assert$3("JSXIdentifier", node, opts);
    }
    function assertJSXMemberExpression(node, opts) {
      assert$3("JSXMemberExpression", node, opts);
    }
    function assertJSXNamespacedName(node, opts) {
      assert$3("JSXNamespacedName", node, opts);
    }
    function assertJSXOpeningElement(node, opts) {
      assert$3("JSXOpeningElement", node, opts);
    }
    function assertJSXSpreadAttribute(node, opts) {
      assert$3("JSXSpreadAttribute", node, opts);
    }
    function assertJSXText(node, opts) {
      assert$3("JSXText", node, opts);
    }
    function assertJSXFragment(node, opts) {
      assert$3("JSXFragment", node, opts);
    }
    function assertJSXOpeningFragment(node, opts) {
      assert$3("JSXOpeningFragment", node, opts);
    }
    function assertJSXClosingFragment(node, opts) {
      assert$3("JSXClosingFragment", node, opts);
    }
    function assertNoop(node, opts) {
      assert$3("Noop", node, opts);
    }
    function assertPlaceholder(node, opts) {
      assert$3("Placeholder", node, opts);
    }
    function assertV8IntrinsicIdentifier(node, opts) {
      assert$3("V8IntrinsicIdentifier", node, opts);
    }
    function assertArgumentPlaceholder(node, opts) {
      assert$3("ArgumentPlaceholder", node, opts);
    }
    function assertBindExpression(node, opts) {
      assert$3("BindExpression", node, opts);
    }
    function assertImportAttribute(node, opts) {
      assert$3("ImportAttribute", node, opts);
    }
    function assertDecorator(node, opts) {
      assert$3("Decorator", node, opts);
    }
    function assertDoExpression(node, opts) {
      assert$3("DoExpression", node, opts);
    }
    function assertExportDefaultSpecifier(node, opts) {
      assert$3("ExportDefaultSpecifier", node, opts);
    }
    function assertRecordExpression(node, opts) {
      assert$3("RecordExpression", node, opts);
    }
    function assertTupleExpression(node, opts) {
      assert$3("TupleExpression", node, opts);
    }
    function assertDecimalLiteral(node, opts) {
      assert$3("DecimalLiteral", node, opts);
    }
    function assertModuleExpression(node, opts) {
      assert$3("ModuleExpression", node, opts);
    }
    function assertTopicReference(node, opts) {
      assert$3("TopicReference", node, opts);
    }
    function assertPipelineTopicExpression(node, opts) {
      assert$3("PipelineTopicExpression", node, opts);
    }
    function assertPipelineBareFunction(node, opts) {
      assert$3("PipelineBareFunction", node, opts);
    }
    function assertPipelinePrimaryTopicReference(node, opts) {
      assert$3("PipelinePrimaryTopicReference", node, opts);
    }
    function assertTSParameterProperty(node, opts) {
      assert$3("TSParameterProperty", node, opts);
    }
    function assertTSDeclareFunction(node, opts) {
      assert$3("TSDeclareFunction", node, opts);
    }
    function assertTSDeclareMethod(node, opts) {
      assert$3("TSDeclareMethod", node, opts);
    }
    function assertTSQualifiedName(node, opts) {
      assert$3("TSQualifiedName", node, opts);
    }
    function assertTSCallSignatureDeclaration(node, opts) {
      assert$3("TSCallSignatureDeclaration", node, opts);
    }
    function assertTSConstructSignatureDeclaration(node, opts) {
      assert$3("TSConstructSignatureDeclaration", node, opts);
    }
    function assertTSPropertySignature(node, opts) {
      assert$3("TSPropertySignature", node, opts);
    }
    function assertTSMethodSignature(node, opts) {
      assert$3("TSMethodSignature", node, opts);
    }
    function assertTSIndexSignature(node, opts) {
      assert$3("TSIndexSignature", node, opts);
    }
    function assertTSAnyKeyword(node, opts) {
      assert$3("TSAnyKeyword", node, opts);
    }
    function assertTSBooleanKeyword(node, opts) {
      assert$3("TSBooleanKeyword", node, opts);
    }
    function assertTSBigIntKeyword(node, opts) {
      assert$3("TSBigIntKeyword", node, opts);
    }
    function assertTSIntrinsicKeyword(node, opts) {
      assert$3("TSIntrinsicKeyword", node, opts);
    }
    function assertTSNeverKeyword(node, opts) {
      assert$3("TSNeverKeyword", node, opts);
    }
    function assertTSNullKeyword(node, opts) {
      assert$3("TSNullKeyword", node, opts);
    }
    function assertTSNumberKeyword(node, opts) {
      assert$3("TSNumberKeyword", node, opts);
    }
    function assertTSObjectKeyword(node, opts) {
      assert$3("TSObjectKeyword", node, opts);
    }
    function assertTSStringKeyword(node, opts) {
      assert$3("TSStringKeyword", node, opts);
    }
    function assertTSSymbolKeyword(node, opts) {
      assert$3("TSSymbolKeyword", node, opts);
    }
    function assertTSUndefinedKeyword(node, opts) {
      assert$3("TSUndefinedKeyword", node, opts);
    }
    function assertTSUnknownKeyword(node, opts) {
      assert$3("TSUnknownKeyword", node, opts);
    }
    function assertTSVoidKeyword(node, opts) {
      assert$3("TSVoidKeyword", node, opts);
    }
    function assertTSThisType(node, opts) {
      assert$3("TSThisType", node, opts);
    }
    function assertTSFunctionType(node, opts) {
      assert$3("TSFunctionType", node, opts);
    }
    function assertTSConstructorType(node, opts) {
      assert$3("TSConstructorType", node, opts);
    }
    function assertTSTypeReference(node, opts) {
      assert$3("TSTypeReference", node, opts);
    }
    function assertTSTypePredicate(node, opts) {
      assert$3("TSTypePredicate", node, opts);
    }
    function assertTSTypeQuery(node, opts) {
      assert$3("TSTypeQuery", node, opts);
    }
    function assertTSTypeLiteral(node, opts) {
      assert$3("TSTypeLiteral", node, opts);
    }
    function assertTSArrayType(node, opts) {
      assert$3("TSArrayType", node, opts);
    }
    function assertTSTupleType(node, opts) {
      assert$3("TSTupleType", node, opts);
    }
    function assertTSOptionalType(node, opts) {
      assert$3("TSOptionalType", node, opts);
    }
    function assertTSRestType(node, opts) {
      assert$3("TSRestType", node, opts);
    }
    function assertTSNamedTupleMember(node, opts) {
      assert$3("TSNamedTupleMember", node, opts);
    }
    function assertTSUnionType(node, opts) {
      assert$3("TSUnionType", node, opts);
    }
    function assertTSIntersectionType(node, opts) {
      assert$3("TSIntersectionType", node, opts);
    }
    function assertTSConditionalType(node, opts) {
      assert$3("TSConditionalType", node, opts);
    }
    function assertTSInferType(node, opts) {
      assert$3("TSInferType", node, opts);
    }
    function assertTSParenthesizedType(node, opts) {
      assert$3("TSParenthesizedType", node, opts);
    }
    function assertTSTypeOperator(node, opts) {
      assert$3("TSTypeOperator", node, opts);
    }
    function assertTSIndexedAccessType(node, opts) {
      assert$3("TSIndexedAccessType", node, opts);
    }
    function assertTSMappedType(node, opts) {
      assert$3("TSMappedType", node, opts);
    }
    function assertTSLiteralType(node, opts) {
      assert$3("TSLiteralType", node, opts);
    }
    function assertTSExpressionWithTypeArguments(node, opts) {
      assert$3("TSExpressionWithTypeArguments", node, opts);
    }
    function assertTSInterfaceDeclaration(node, opts) {
      assert$3("TSInterfaceDeclaration", node, opts);
    }
    function assertTSInterfaceBody(node, opts) {
      assert$3("TSInterfaceBody", node, opts);
    }
    function assertTSTypeAliasDeclaration(node, opts) {
      assert$3("TSTypeAliasDeclaration", node, opts);
    }
    function assertTSInstantiationExpression(node, opts) {
      assert$3("TSInstantiationExpression", node, opts);
    }
    function assertTSAsExpression(node, opts) {
      assert$3("TSAsExpression", node, opts);
    }
    function assertTSSatisfiesExpression(node, opts) {
      assert$3("TSSatisfiesExpression", node, opts);
    }
    function assertTSTypeAssertion(node, opts) {
      assert$3("TSTypeAssertion", node, opts);
    }
    function assertTSEnumDeclaration(node, opts) {
      assert$3("TSEnumDeclaration", node, opts);
    }
    function assertTSEnumMember(node, opts) {
      assert$3("TSEnumMember", node, opts);
    }
    function assertTSModuleDeclaration(node, opts) {
      assert$3("TSModuleDeclaration", node, opts);
    }
    function assertTSModuleBlock(node, opts) {
      assert$3("TSModuleBlock", node, opts);
    }
    function assertTSImportType(node, opts) {
      assert$3("TSImportType", node, opts);
    }
    function assertTSImportEqualsDeclaration(node, opts) {
      assert$3("TSImportEqualsDeclaration", node, opts);
    }
    function assertTSExternalModuleReference(node, opts) {
      assert$3("TSExternalModuleReference", node, opts);
    }
    function assertTSNonNullExpression(node, opts) {
      assert$3("TSNonNullExpression", node, opts);
    }
    function assertTSExportAssignment(node, opts) {
      assert$3("TSExportAssignment", node, opts);
    }
    function assertTSNamespaceExportDeclaration(node, opts) {
      assert$3("TSNamespaceExportDeclaration", node, opts);
    }
    function assertTSTypeAnnotation(node, opts) {
      assert$3("TSTypeAnnotation", node, opts);
    }
    function assertTSTypeParameterInstantiation(node, opts) {
      assert$3("TSTypeParameterInstantiation", node, opts);
    }
    function assertTSTypeParameterDeclaration(node, opts) {
      assert$3("TSTypeParameterDeclaration", node, opts);
    }
    function assertTSTypeParameter(node, opts) {
      assert$3("TSTypeParameter", node, opts);
    }
    function assertStandardized(node, opts) {
      assert$3("Standardized", node, opts);
    }
    function assertExpression$1(node, opts) {
      assert$3("Expression", node, opts);
    }
    function assertBinary(node, opts) {
      assert$3("Binary", node, opts);
    }
    function assertScopable(node, opts) {
      assert$3("Scopable", node, opts);
    }
    function assertBlockParent(node, opts) {
      assert$3("BlockParent", node, opts);
    }
    function assertBlock(node, opts) {
      assert$3("Block", node, opts);
    }
    function assertStatement(node, opts) {
      assert$3("Statement", node, opts);
    }
    function assertTerminatorless(node, opts) {
      assert$3("Terminatorless", node, opts);
    }
    function assertCompletionStatement(node, opts) {
      assert$3("CompletionStatement", node, opts);
    }
    function assertConditional(node, opts) {
      assert$3("Conditional", node, opts);
    }
    function assertLoop(node, opts) {
      assert$3("Loop", node, opts);
    }
    function assertWhile(node, opts) {
      assert$3("While", node, opts);
    }
    function assertExpressionWrapper(node, opts) {
      assert$3("ExpressionWrapper", node, opts);
    }
    function assertFor(node, opts) {
      assert$3("For", node, opts);
    }
    function assertForXStatement(node, opts) {
      assert$3("ForXStatement", node, opts);
    }
    function assertFunction$1(node, opts) {
      assert$3("Function", node, opts);
    }
    function assertFunctionParent(node, opts) {
      assert$3("FunctionParent", node, opts);
    }
    function assertPureish(node, opts) {
      assert$3("Pureish", node, opts);
    }
    function assertDeclaration(node, opts) {
      assert$3("Declaration", node, opts);
    }
    function assertPatternLike(node, opts) {
      assert$3("PatternLike", node, opts);
    }
    function assertLVal(node, opts) {
      assert$3("LVal", node, opts);
    }
    function assertTSEntityName(node, opts) {
      assert$3("TSEntityName", node, opts);
    }
    function assertLiteral(node, opts) {
      assert$3("Literal", node, opts);
    }
    function assertImmutable(node, opts) {
      assert$3("Immutable", node, opts);
    }
    function assertUserWhitespacable(node, opts) {
      assert$3("UserWhitespacable", node, opts);
    }
    function assertMethod(node, opts) {
      assert$3("Method", node, opts);
    }
    function assertObjectMember(node, opts) {
      assert$3("ObjectMember", node, opts);
    }
    function assertProperty(node, opts) {
      assert$3("Property", node, opts);
    }
    function assertUnaryLike(node, opts) {
      assert$3("UnaryLike", node, opts);
    }
    function assertPattern(node, opts) {
      assert$3("Pattern", node, opts);
    }
    function assertClass(node, opts) {
      assert$3("Class", node, opts);
    }
    function assertImportOrExportDeclaration(node, opts) {
      assert$3("ImportOrExportDeclaration", node, opts);
    }
    function assertExportDeclaration(node, opts) {
      assert$3("ExportDeclaration", node, opts);
    }
    function assertModuleSpecifier(node, opts) {
      assert$3("ModuleSpecifier", node, opts);
    }
    function assertAccessor(node, opts) {
      assert$3("Accessor", node, opts);
    }
    function assertPrivate(node, opts) {
      assert$3("Private", node, opts);
    }
    function assertFlow(node, opts) {
      assert$3("Flow", node, opts);
    }
    function assertFlowType(node, opts) {
      assert$3("FlowType", node, opts);
    }
    function assertFlowBaseAnnotation(node, opts) {
      assert$3("FlowBaseAnnotation", node, opts);
    }
    function assertFlowDeclaration(node, opts) {
      assert$3("FlowDeclaration", node, opts);
    }
    function assertFlowPredicate(node, opts) {
      assert$3("FlowPredicate", node, opts);
    }
    function assertEnumBody(node, opts) {
      assert$3("EnumBody", node, opts);
    }
    function assertEnumMember(node, opts) {
      assert$3("EnumMember", node, opts);
    }
    function assertJSX(node, opts) {
      assert$3("JSX", node, opts);
    }
    function assertMiscellaneous(node, opts) {
      assert$3("Miscellaneous", node, opts);
    }
    function assertTypeScript(node, opts) {
      assert$3("TypeScript", node, opts);
    }
    function assertTSTypeElement(node, opts) {
      assert$3("TSTypeElement", node, opts);
    }
    function assertTSType(node, opts) {
      assert$3("TSType", node, opts);
    }
    function assertTSBaseType(node, opts) {
      assert$3("TSBaseType", node, opts);
    }
    function assertNumberLiteral(node, opts) {
      deprecationWarning$1("assertNumberLiteral", "assertNumericLiteral");
      assert$3("NumberLiteral", node, opts);
    }
    function assertRegexLiteral(node, opts) {
      deprecationWarning$1("assertRegexLiteral", "assertRegExpLiteral");
      assert$3("RegexLiteral", node, opts);
    }
    function assertRestProperty(node, opts) {
      deprecationWarning$1("assertRestProperty", "assertRestElement");
      assert$3("RestProperty", node, opts);
    }
    function assertSpreadProperty(node, opts) {
      deprecationWarning$1("assertSpreadProperty", "assertSpreadElement");
      assert$3("SpreadProperty", node, opts);
    }
    function assertModuleDeclaration(node, opts) {
      deprecationWarning$1("assertModuleDeclaration", "assertImportOrExportDeclaration");
      assert$3("ModuleDeclaration", node, opts);
    }
  
    function createTypeAnnotationBasedOnTypeof$1(type) {
      switch (type) {
        case "string":
          return stringTypeAnnotation$2();
        case "number":
          return numberTypeAnnotation$2();
        case "undefined":
          return voidTypeAnnotation$3();
        case "boolean":
          return booleanTypeAnnotation$1();
        case "function":
          return genericTypeAnnotation$1(identifier$i("Function"));
        case "object":
          return genericTypeAnnotation$1(identifier$i("Object"));
        case "symbol":
          return genericTypeAnnotation$1(identifier$i("Symbol"));
        case "bigint":
          return anyTypeAnnotation$2();
      }
      throw new Error("Invalid typeof value: " + type);
    }
  
    function getQualifiedName$1(node) {
      return isIdentifier$j(node) ? node.name : node.id.name + "." + getQualifiedName$1(node.qualification);
    }
    function removeTypeDuplicates$1(nodesIn) {
      var nodes = Array.from(nodesIn);
      var generics = new Map();
      var bases = new Map();
      var typeGroups = new Set();
      var types = [];
      for (var i = 0; i < nodes.length; i++) {
        var node = nodes[i];
        if (!node) continue;
        if (types.indexOf(node) >= 0) {
          continue;
        }
        if (isAnyTypeAnnotation$1(node)) {
          return [node];
        }
        if (isFlowBaseAnnotation$1(node)) {
          bases.set(node.type, node);
          continue;
        }
        if (isUnionTypeAnnotation$2(node)) {
          if (!typeGroups.has(node.types)) {
            nodes.push.apply(nodes, _toConsumableArray(node.types));
            typeGroups.add(node.types);
          }
          continue;
        }
        if (isGenericTypeAnnotation$1(node)) {
          var name = getQualifiedName$1(node.id);
          if (generics.has(name)) {
            var existing = generics.get(name);
            if (existing.typeParameters) {
              if (node.typeParameters) {
                var _existing$typeParamet;
                (_existing$typeParamet = existing.typeParameters.params).push.apply(_existing$typeParamet, _toConsumableArray(node.typeParameters.params));
                existing.typeParameters.params = removeTypeDuplicates$1(existing.typeParameters.params);
              }
            } else {
              existing = node.typeParameters;
            }
          } else {
            generics.set(name, node);
          }
          continue;
        }
        types.push(node);
      }
      for (var _iterator = _createForOfIteratorHelperLoose(bases), _step; !(_step = _iterator()).done;) {
        var _step$value = _slicedToArray(_step.value, 2),
          baseType = _step$value[1];
        types.push(baseType);
      }
      for (var _iterator2 = _createForOfIteratorHelperLoose(generics), _step2; !(_step2 = _iterator2()).done;) {
        var _step2$value = _slicedToArray(_step2.value, 2),
          genericName = _step2$value[1];
        types.push(genericName);
      }
      return types;
    }
  
    function createFlowUnionType$1(types) {
      var flattened = removeTypeDuplicates$1(types);
      if (flattened.length === 1) {
        return flattened[0];
      } else {
        return unionTypeAnnotation$1(flattened);
      }
    }
  
    function getQualifiedName(node) {
      return isIdentifier$j(node) ? node.name : node.right.name + "." + getQualifiedName(node.left);
    }
    function removeTypeDuplicates(nodesIn) {
      var nodes = Array.from(nodesIn);
      var generics = new Map();
      var bases = new Map();
      var typeGroups = new Set();
      var types = [];
      for (var i = 0; i < nodes.length; i++) {
        var node = nodes[i];
        if (!node) continue;
        if (types.indexOf(node) >= 0) {
          continue;
        }
        if (isTSAnyKeyword(node)) {
          return [node];
        }
        if (isTSBaseType(node)) {
          bases.set(node.type, node);
          continue;
        }
        if (isTSUnionType$1(node)) {
          if (!typeGroups.has(node.types)) {
            nodes.push.apply(nodes, _toConsumableArray(node.types));
            typeGroups.add(node.types);
          }
          continue;
        }
        if (isTSTypeReference$1(node) && node.typeParameters) {
          var name = getQualifiedName(node.typeName);
          if (generics.has(name)) {
            var existing = generics.get(name);
            if (existing.typeParameters) {
              if (node.typeParameters) {
                var _existing$typeParamet;
                (_existing$typeParamet = existing.typeParameters.params).push.apply(_existing$typeParamet, _toConsumableArray(node.typeParameters.params));
                existing.typeParameters.params = removeTypeDuplicates(existing.typeParameters.params);
              }
            } else {
              existing = node.typeParameters;
            }
          } else {
            generics.set(name, node);
          }
          continue;
        }
        types.push(node);
      }
      for (var _iterator = _createForOfIteratorHelperLoose(bases), _step; !(_step = _iterator()).done;) {
        var _step$value = _slicedToArray(_step.value, 2),
          baseType = _step$value[1];
        types.push(baseType);
      }
      for (var _iterator2 = _createForOfIteratorHelperLoose(generics), _step2; !(_step2 = _iterator2()).done;) {
        var _step2$value = _slicedToArray(_step2.value, 2),
          genericName = _step2$value[1];
        types.push(genericName);
      }
      return types;
    }
  
    function createTSUnionType$1(typeAnnotations) {
      var types = typeAnnotations.map(function (type) {
        return isTSTypeAnnotation$1(type) ? type.typeAnnotation : type;
      });
      var flattened = removeTypeDuplicates(types);
      if (flattened.length === 1) {
        return flattened[0];
      } else {
        return tsUnionType(flattened);
      }
    }
  
    var has$9 = Function.call.bind(Object.prototype.hasOwnProperty);
    function cloneIfNode(obj, deep, withoutLoc, commentsCache) {
      if (obj && typeof obj.type === "string") {
        return cloneNodeInternal(obj, deep, withoutLoc, commentsCache);
      }
      return obj;
    }
    function cloneIfNodeOrArray(obj, deep, withoutLoc, commentsCache) {
      if (Array.isArray(obj)) {
        return obj.map(function (node) {
          return cloneIfNode(node, deep, withoutLoc, commentsCache);
        });
      }
      return cloneIfNode(obj, deep, withoutLoc, commentsCache);
    }
    function cloneNode$j(node, deep, withoutLoc) {
      if (deep === void 0) {
        deep = true;
      }
      if (withoutLoc === void 0) {
        withoutLoc = false;
      }
      return cloneNodeInternal(node, deep, withoutLoc, new Map());
    }
    function cloneNodeInternal(node, deep, withoutLoc, commentsCache) {
      if (deep === void 0) {
        deep = true;
      }
      if (withoutLoc === void 0) {
        withoutLoc = false;
      }
      if (!node) return node;
      var type = node.type;
      var newNode = {
        type: node.type
      };
      if (isIdentifier$j(node)) {
        newNode.name = node.name;
        if (has$9(node, "optional") && typeof node.optional === "boolean") {
          newNode.optional = node.optional;
        }
        if (has$9(node, "typeAnnotation")) {
          newNode.typeAnnotation = deep ? cloneIfNodeOrArray(node.typeAnnotation, true, withoutLoc, commentsCache) : node.typeAnnotation;
        }
      } else if (!has$9(NODE_FIELDS, type)) {
        throw new Error("Unknown node type: \"" + type + "\"");
      } else {
        for (var _i = 0, _Object$keys = Object.keys(NODE_FIELDS[type]); _i < _Object$keys.length; _i++) {
          var field = _Object$keys[_i];
          if (has$9(node, field)) {
            if (deep) {
              newNode[field] = isFile(node) && field === "comments" ? maybeCloneComments(node.comments, deep, withoutLoc, commentsCache) : cloneIfNodeOrArray(node[field], true, withoutLoc, commentsCache);
            } else {
              newNode[field] = node[field];
            }
          }
        }
      }
      if (has$9(node, "loc")) {
        if (withoutLoc) {
          newNode.loc = null;
        } else {
          newNode.loc = node.loc;
        }
      }
      if (has$9(node, "leadingComments")) {
        newNode.leadingComments = maybeCloneComments(node.leadingComments, deep, withoutLoc, commentsCache);
      }
      if (has$9(node, "innerComments")) {
        newNode.innerComments = maybeCloneComments(node.innerComments, deep, withoutLoc, commentsCache);
      }
      if (has$9(node, "trailingComments")) {
        newNode.trailingComments = maybeCloneComments(node.trailingComments, deep, withoutLoc, commentsCache);
      }
      if (has$9(node, "extra")) {
        newNode.extra = Object.assign({}, node.extra);
      }
      return newNode;
    }
    function maybeCloneComments(comments, deep, withoutLoc, commentsCache) {
      if (!comments || !deep) {
        return comments;
      }
      return comments.map(function (comment) {
        var cache = commentsCache.get(comment);
        if (cache) return cache;
        var type = comment.type,
          value = comment.value,
          loc = comment.loc;
        var ret = {
          type: type,
          value: value,
          loc: loc
        };
        if (withoutLoc) {
          ret.loc = null;
        }
        commentsCache.set(comment, ret);
        return ret;
      });
    }
  
    function clone(node) {
      return cloneNode$j(node, false);
    }
  
    function cloneDeep$1(node) {
      return cloneNode$j(node);
    }
  
    function cloneDeepWithoutLoc(node) {
      return cloneNode$j(node, true, true);
    }
  
    function cloneWithoutLoc(node) {
      return cloneNode$j(node, false, true);
    }
  
    function addComments$1(node, type, comments) {
      if (!comments || !node) return node;
      var key = type + "Comments";
      if (node[key]) {
        if (type === "leading") {
          node[key] = comments.concat(node[key]);
        } else {
          var _node$key;
          (_node$key = node[key]).push.apply(_node$key, _toConsumableArray(comments));
        }
      } else {
        node[key] = comments;
      }
      return node;
    }
  
    function addComment$2(node, type, content, line) {
      return addComments$1(node, type, [{
        type: line ? "CommentLine" : "CommentBlock",
        value: content
      }]);
    }
  
    function inherit(key, child, parent) {
      if (child && parent) {
        child[key] = Array.from(new Set([].concat(child[key], parent[key]).filter(Boolean)));
      }
    }
  
    function inheritInnerComments(child, parent) {
      inherit("innerComments", child, parent);
    }
  
    function inheritLeadingComments$1(child, parent) {
      inherit("leadingComments", child, parent);
    }
  
    function inheritTrailingComments$1(child, parent) {
      inherit("trailingComments", child, parent);
    }
  
    function inheritsComments$1(child, parent) {
      inheritTrailingComments$1(child, parent);
      inheritLeadingComments$1(child, parent);
      inheritInnerComments(child, parent);
      return child;
    }
  
    function removeComments$1(node) {
      COMMENT_KEYS.forEach(function (key) {
        node[key] = null;
      });
      return node;
    }
  
    var STANDARDIZED_TYPES = FLIPPED_ALIAS_KEYS$3["Standardized"];
    var EXPRESSION_TYPES = FLIPPED_ALIAS_KEYS$3["Expression"];
    var BINARY_TYPES = FLIPPED_ALIAS_KEYS$3["Binary"];
    var SCOPABLE_TYPES = FLIPPED_ALIAS_KEYS$3["Scopable"];
    var BLOCKPARENT_TYPES = FLIPPED_ALIAS_KEYS$3["BlockParent"];
    var BLOCK_TYPES = FLIPPED_ALIAS_KEYS$3["Block"];
    var STATEMENT_TYPES = FLIPPED_ALIAS_KEYS$3["Statement"];
    var TERMINATORLESS_TYPES = FLIPPED_ALIAS_KEYS$3["Terminatorless"];
    var COMPLETIONSTATEMENT_TYPES = FLIPPED_ALIAS_KEYS$3["CompletionStatement"];
    var CONDITIONAL_TYPES = FLIPPED_ALIAS_KEYS$3["Conditional"];
    var LOOP_TYPES = FLIPPED_ALIAS_KEYS$3["Loop"];
    var WHILE_TYPES = FLIPPED_ALIAS_KEYS$3["While"];
    var EXPRESSIONWRAPPER_TYPES = FLIPPED_ALIAS_KEYS$3["ExpressionWrapper"];
    var FOR_TYPES = FLIPPED_ALIAS_KEYS$3["For"];
    var FORXSTATEMENT_TYPES = FLIPPED_ALIAS_KEYS$3["ForXStatement"];
    var FUNCTION_TYPES$1 = FLIPPED_ALIAS_KEYS$3["Function"];
    var FUNCTIONPARENT_TYPES = FLIPPED_ALIAS_KEYS$3["FunctionParent"];
    var PUREISH_TYPES = FLIPPED_ALIAS_KEYS$3["Pureish"];
    var DECLARATION_TYPES = FLIPPED_ALIAS_KEYS$3["Declaration"];
    var PATTERNLIKE_TYPES = FLIPPED_ALIAS_KEYS$3["PatternLike"];
    var LVAL_TYPES = FLIPPED_ALIAS_KEYS$3["LVal"];
    var TSENTITYNAME_TYPES = FLIPPED_ALIAS_KEYS$3["TSEntityName"];
    var LITERAL_TYPES = FLIPPED_ALIAS_KEYS$3["Literal"];
    var IMMUTABLE_TYPES = FLIPPED_ALIAS_KEYS$3["Immutable"];
    var USERWHITESPACABLE_TYPES = FLIPPED_ALIAS_KEYS$3["UserWhitespacable"];
    var METHOD_TYPES = FLIPPED_ALIAS_KEYS$3["Method"];
    var OBJECTMEMBER_TYPES = FLIPPED_ALIAS_KEYS$3["ObjectMember"];
    var PROPERTY_TYPES = FLIPPED_ALIAS_KEYS$3["Property"];
    var UNARYLIKE_TYPES = FLIPPED_ALIAS_KEYS$3["UnaryLike"];
    var PATTERN_TYPES = FLIPPED_ALIAS_KEYS$3["Pattern"];
    var CLASS_TYPES = FLIPPED_ALIAS_KEYS$3["Class"];
    var IMPORTOREXPORTDECLARATION_TYPES = FLIPPED_ALIAS_KEYS$3["ImportOrExportDeclaration"];
    var EXPORTDECLARATION_TYPES = FLIPPED_ALIAS_KEYS$3["ExportDeclaration"];
    var MODULESPECIFIER_TYPES = FLIPPED_ALIAS_KEYS$3["ModuleSpecifier"];
    var ACCESSOR_TYPES = FLIPPED_ALIAS_KEYS$3["Accessor"];
    var PRIVATE_TYPES = FLIPPED_ALIAS_KEYS$3["Private"];
    var FLOW_TYPES = FLIPPED_ALIAS_KEYS$3["Flow"];
    var FLOWTYPE_TYPES = FLIPPED_ALIAS_KEYS$3["FlowType"];
    var FLOWBASEANNOTATION_TYPES = FLIPPED_ALIAS_KEYS$3["FlowBaseAnnotation"];
    var FLOWDECLARATION_TYPES = FLIPPED_ALIAS_KEYS$3["FlowDeclaration"];
    var FLOWPREDICATE_TYPES = FLIPPED_ALIAS_KEYS$3["FlowPredicate"];
    var ENUMBODY_TYPES = FLIPPED_ALIAS_KEYS$3["EnumBody"];
    var ENUMMEMBER_TYPES = FLIPPED_ALIAS_KEYS$3["EnumMember"];
    var JSX_TYPES = FLIPPED_ALIAS_KEYS$3["JSX"];
    var MISCELLANEOUS_TYPES = FLIPPED_ALIAS_KEYS$3["Miscellaneous"];
    var TYPESCRIPT_TYPES = FLIPPED_ALIAS_KEYS$3["TypeScript"];
    var TSTYPEELEMENT_TYPES = FLIPPED_ALIAS_KEYS$3["TSTypeElement"];
    var TSTYPE_TYPES = FLIPPED_ALIAS_KEYS$3["TSType"];
    var TSBASETYPE_TYPES = FLIPPED_ALIAS_KEYS$3["TSBaseType"];
    var MODULEDECLARATION_TYPES = IMPORTOREXPORTDECLARATION_TYPES;
  
    function toBlock(node, parent) {
      if (isBlockStatement$2(node)) {
        return node;
      }
      var blockNodes = [];
      if (isEmptyStatement(node)) {
        blockNodes = [];
      } else {
        if (!isStatement$8(node)) {
          if (isFunction$4(parent)) {
            node = returnStatement$3(node);
          } else {
            node = expressionStatement$a(node);
          }
        }
        blockNodes = [node];
      }
      return blockStatement$6(blockNodes);
    }
  
    function ensureBlock$1(node, key) {
      if (key === void 0) {
        key = "body";
      }
      var result = toBlock(node[key], node);
      node[key] = result;
      return result;
    }
  
    function toIdentifier$1(input) {
      input = input + "";
      var name = "";
      for (var _iterator = _createForOfIteratorHelperLoose(input), _step; !(_step = _iterator()).done;) {
        var c = _step.value;
        name += isIdentifierChar(c.codePointAt(0)) ? c : "-";
      }
      name = name.replace(/^[-0-9]+/, "");
      name = name.replace(/[-\s]+(.)?/g, function (match, c) {
        return c ? c.toUpperCase() : "";
      });
      if (!isValidIdentifier$1(name)) {
        name = "_" + name;
      }
      return name || "_";
    }
  
    function toBindingIdentifierName$1(name) {
      name = toIdentifier$1(name);
      if (name === "eval" || name === "arguments") name = "_" + name;
      return name;
    }
  
    function toComputedKey$2(node, key) {
      if (key === void 0) {
        key = node.key || node.property;
      }
      if (!node.computed && isIdentifier$j(key)) key = stringLiteral$8(key.name);
      return key;
    }
  
    function toExpression$1(node) {
      if (isExpressionStatement$3(node)) {
        node = node.expression;
      }
      if (isExpression$4(node)) {
        return node;
      }
      if (isClass$2(node)) {
        node.type = "ClassExpression";
      } else if (isFunction$4(node)) {
        node.type = "FunctionExpression";
      }
      if (!isExpression$4(node)) {
        throw new Error("cannot turn " + node.type + " to an expression");
      }
      return node;
    }
  
    function traverseFast$2(node, enter, opts) {
      if (!node) return;
      var keys = VISITOR_KEYS$5[node.type];
      if (!keys) return;
      opts = opts || {};
      enter(node, opts);
      for (var _iterator = _createForOfIteratorHelperLoose(keys), _step; !(_step = _iterator()).done;) {
        var key = _step.value;
        var subNode = node[key];
        if (Array.isArray(subNode)) {
          for (var _iterator2 = _createForOfIteratorHelperLoose(subNode), _step2; !(_step2 = _iterator2()).done;) {
            var _node = _step2.value;
            traverseFast$2(_node, enter, opts);
          }
        } else {
          traverseFast$2(subNode, enter, opts);
        }
      }
    }
  
    var CLEAR_KEYS = ["tokens", "start", "end", "loc", "raw", "rawValue"];
    var CLEAR_KEYS_PLUS_COMMENTS = [].concat(_toConsumableArray(COMMENT_KEYS), ["comments"], CLEAR_KEYS);
    function removeProperties$1(node, opts) {
      if (opts === void 0) {
        opts = {};
      }
      var map = opts.preserveComments ? CLEAR_KEYS : CLEAR_KEYS_PLUS_COMMENTS;
      for (var _iterator = _createForOfIteratorHelperLoose(map), _step; !(_step = _iterator()).done;) {
        var _key = _step.value;
        if (node[_key] != null) node[_key] = undefined;
      }
      for (var _i = 0, _Object$keys = Object.keys(node); _i < _Object$keys.length; _i++) {
        var key = _Object$keys[_i];
        if (key[0] === "_" && node[key] != null) node[key] = undefined;
      }
      var symbols = Object.getOwnPropertySymbols(node);
      for (var _iterator2 = _createForOfIteratorHelperLoose(symbols), _step2; !(_step2 = _iterator2()).done;) {
        var sym = _step2.value;
        node[sym] = null;
      }
    }
  
    function removePropertiesDeep$1(tree, opts) {
      traverseFast$2(tree, removeProperties$1, opts);
      return tree;
    }
  
    function toKeyAlias(node, key) {
      if (key === void 0) {
        key = node.key;
      }
      var alias;
      if (node.kind === "method") {
        return toKeyAlias.increment() + "";
      } else if (isIdentifier$j(key)) {
        alias = key.name;
      } else if (isStringLiteral$6(key)) {
        alias = JSON.stringify(key.value);
      } else {
        alias = JSON.stringify(removePropertiesDeep$1(cloneNode$j(key)));
      }
      if (node.computed) {
        alias = "[" + alias + "]";
      }
      if (node["static"]) {
        alias = "static:" + alias;
      }
      return alias;
    }
    toKeyAlias.uid = 0;
    toKeyAlias.increment = function () {
      if (toKeyAlias.uid >= Number.MAX_SAFE_INTEGER) {
        return toKeyAlias.uid = 0;
      } else {
        return toKeyAlias.uid++;
      }
    };
  
    function getBindingIdentifiers$2(node, duplicates, outerOnly) {
      var search = [].concat(node);
      var ids = Object.create(null);
      while (search.length) {
        var id = search.shift();
        if (!id) continue;
        var keys = getBindingIdentifiers$2.keys[id.type];
        if (isIdentifier$j(id)) {
          if (duplicates) {
            var _ids = ids[id.name] = ids[id.name] || [];
            _ids.push(id);
          } else {
            ids[id.name] = id;
          }
          continue;
        }
        if (isExportDeclaration$3(id) && !isExportAllDeclaration$1(id)) {
          if (isDeclaration$1(id.declaration)) {
            search.push(id.declaration);
          }
          continue;
        }
        if (outerOnly) {
          if (isFunctionDeclaration$2(id)) {
            search.push(id.id);
            continue;
          }
          if (isFunctionExpression$1(id)) {
            continue;
          }
        }
        if (keys) {
          for (var i = 0; i < keys.length; i++) {
            var key = keys[i];
            var nodes = id[key];
            if (nodes) {
              Array.isArray(nodes) ? search.push.apply(search, _toConsumableArray(nodes)) : search.push(nodes);
            }
          }
        }
      }
      return ids;
    }
    getBindingIdentifiers$2.keys = {
      DeclareClass: ["id"],
      DeclareFunction: ["id"],
      DeclareModule: ["id"],
      DeclareVariable: ["id"],
      DeclareInterface: ["id"],
      DeclareTypeAlias: ["id"],
      DeclareOpaqueType: ["id"],
      InterfaceDeclaration: ["id"],
      TypeAlias: ["id"],
      OpaqueType: ["id"],
      CatchClause: ["param"],
      LabeledStatement: ["label"],
      UnaryExpression: ["argument"],
      AssignmentExpression: ["left"],
      ImportSpecifier: ["local"],
      ImportNamespaceSpecifier: ["local"],
      ImportDefaultSpecifier: ["local"],
      ImportDeclaration: ["specifiers"],
      ExportSpecifier: ["exported"],
      ExportNamespaceSpecifier: ["exported"],
      ExportDefaultSpecifier: ["exported"],
      FunctionDeclaration: ["id", "params"],
      FunctionExpression: ["id", "params"],
      ArrowFunctionExpression: ["params"],
      ObjectMethod: ["params"],
      ClassMethod: ["params"],
      ClassPrivateMethod: ["params"],
      ForInStatement: ["left"],
      ForOfStatement: ["left"],
      ClassDeclaration: ["id"],
      ClassExpression: ["id"],
      RestElement: ["argument"],
      UpdateExpression: ["argument"],
      ObjectProperty: ["value"],
      AssignmentPattern: ["left"],
      ArrayPattern: ["elements"],
      ObjectPattern: ["properties"],
      VariableDeclaration: ["declarations"],
      VariableDeclarator: ["id"]
    };
  
    function gatherSequenceExpressions(nodes, scope, declars) {
      var exprs = [];
      var ensureLastUndefined = true;
      for (var _iterator = _createForOfIteratorHelperLoose(nodes), _step; !(_step = _iterator()).done;) {
        var node = _step.value;
        if (!isEmptyStatement(node)) {
          ensureLastUndefined = false;
        }
        if (isExpression$4(node)) {
          exprs.push(node);
        } else if (isExpressionStatement$3(node)) {
          exprs.push(node.expression);
        } else if (isVariableDeclaration$3(node)) {
          if (node.kind !== "var") return;
          for (var _iterator2 = _createForOfIteratorHelperLoose(node.declarations), _step2; !(_step2 = _iterator2()).done;) {
            var declar = _step2.value;
            var bindings = getBindingIdentifiers$2(declar);
            for (var _i = 0, _Object$keys = Object.keys(bindings); _i < _Object$keys.length; _i++) {
              var key = _Object$keys[_i];
              declars.push({
                kind: node.kind,
                id: cloneNode$j(bindings[key])
              });
            }
            if (declar.init) {
              exprs.push(assignmentExpression$d("=", declar.id, declar.init));
            }
          }
          ensureLastUndefined = true;
        } else if (isIfStatement$2(node)) {
          var consequent = node.consequent ? gatherSequenceExpressions([node.consequent], scope, declars) : scope.buildUndefinedNode();
          var alternate = node.alternate ? gatherSequenceExpressions([node.alternate], scope, declars) : scope.buildUndefinedNode();
          if (!consequent || !alternate) return;
          exprs.push(conditionalExpression$4(node.test, consequent, alternate));
        } else if (isBlockStatement$2(node)) {
          var body = gatherSequenceExpressions(node.body, scope, declars);
          if (!body) return;
          exprs.push(body);
        } else if (isEmptyStatement(node)) {
          if (nodes.indexOf(node) === 0) {
            ensureLastUndefined = true;
          }
        } else {
          return;
        }
      }
      if (ensureLastUndefined) {
        exprs.push(scope.buildUndefinedNode());
      }
      if (exprs.length === 1) {
        return exprs[0];
      } else {
        return sequenceExpression$7(exprs);
      }
    }
  
    function toSequenceExpression$1(nodes, scope) {
      if (!(nodes != null && nodes.length)) return;
      var declars = [];
      var result = gatherSequenceExpressions(nodes, scope, declars);
      if (!result) return;
      for (var _i = 0, _declars = declars; _i < _declars.length; _i++) {
        var declar = _declars[_i];
        scope.push(declar);
      }
      return result;
    }
  
    function toStatement(node, ignore) {
      if (isStatement$8(node)) {
        return node;
      }
      var mustHaveId = false;
      var newType;
      if (isClass$2(node)) {
        mustHaveId = true;
        newType = "ClassDeclaration";
      } else if (isFunction$4(node)) {
        mustHaveId = true;
        newType = "FunctionDeclaration";
      } else if (isAssignmentExpression$4(node)) {
        return expressionStatement$a(node);
      }
      if (mustHaveId && !node.id) {
        newType = false;
      }
      if (!newType) {
        if (ignore) {
          return false;
        } else {
          throw new Error("cannot turn " + node.type + " to a statement");
        }
      }
      node.type = newType;
      return node;
    }
  
    var objectToString = Function.call.bind(Object.prototype.toString);
    function isRegExp(value) {
      return objectToString(value) === "[object RegExp]";
    }
    function isPlainObject(value) {
      if (typeof value !== "object" || value === null || Object.prototype.toString.call(value) !== "[object Object]") {
        return false;
      }
      var proto = Object.getPrototypeOf(value);
      return proto === null || Object.getPrototypeOf(proto) === null;
    }
    function valueToNode$1(value) {
      if (value === undefined) {
        return identifier$i("undefined");
      }
      if (value === true || value === false) {
        return booleanLiteral$4(value);
      }
      if (value === null) {
        return nullLiteral$2();
      }
      if (typeof value === "string") {
        return stringLiteral$8(value);
      }
      if (typeof value === "number") {
        var result;
        if (Number.isFinite(value)) {
          result = numericLiteral$8(Math.abs(value));
        } else {
          var numerator;
          if (Number.isNaN(value)) {
            numerator = numericLiteral$8(0);
          } else {
            numerator = numericLiteral$8(1);
          }
          result = binaryExpression$5("/", numerator, numericLiteral$8(0));
        }
        if (value < 0 || Object.is(value, -0)) {
          result = unaryExpression$7("-", result);
        }
        return result;
      }
      if (isRegExp(value)) {
        var pattern = value.source;
        var flags = value.toString().match(/\/([a-z]+|)$/)[1];
        return regExpLiteral(pattern, flags);
      }
      if (Array.isArray(value)) {
        return arrayExpression$1(value.map(valueToNode$1));
      }
      if (isPlainObject(value)) {
        var props = [];
        for (var _i = 0, _Object$keys = Object.keys(value); _i < _Object$keys.length; _i++) {
          var key = _Object$keys[_i];
          var nodeKey = void 0;
          if (isValidIdentifier$1(key)) {
            nodeKey = identifier$i(key);
          } else {
            nodeKey = stringLiteral$8(key);
          }
          props.push(objectProperty$1(nodeKey, valueToNode$1(value[key])));
        }
        return objectExpression$3(props);
      }
      throw new Error("don't know how to turn this value into a node");
    }
  
    function appendToMemberExpression(member, append, computed) {
      if (computed === void 0) {
        computed = false;
      }
      member.object = memberExpression$c(member.object, member.property, member.computed);
      member.property = append;
      member.computed = !!computed;
      return member;
    }
  
    function inherits$1(child, parent) {
      if (!child || !parent) return child;
      for (var _iterator = _createForOfIteratorHelperLoose(INHERIT_KEYS.optional), _step; !(_step = _iterator()).done;) {
        var _key = _step.value;
        if (child[_key] == null) {
          child[_key] = parent[_key];
        }
      }
      for (var _i = 0, _Object$keys = Object.keys(parent); _i < _Object$keys.length; _i++) {
        var key = _Object$keys[_i];
        if (key[0] === "_" && key !== "__clone") {
          child[key] = parent[key];
        }
      }
      for (var _iterator2 = _createForOfIteratorHelperLoose(INHERIT_KEYS.force), _step2; !(_step2 = _iterator2()).done;) {
        var _key2 = _step2.value;
        child[_key2] = parent[_key2];
      }
      inheritsComments$1(child, parent);
      return child;
    }
  
    function prependToMemberExpression(member, prepend) {
      if (isSuper$3(member.object)) {
        throw new Error("Cannot prepend node to super property access (`super.foo`).");
      }
      member.object = memberExpression$c(prepend, member.object);
      return member;
    }
  
    function getOuterBindingIdentifiers$2(node, duplicates) {
      return getBindingIdentifiers$2(node, duplicates, true);
    }
  
    function traverse$2(node, handlers, state) {
      if (typeof handlers === "function") {
        handlers = {
          enter: handlers
        };
      }
      var _handlers = handlers,
        enter = _handlers.enter,
        exit = _handlers.exit;
      traverseSimpleImpl(node, enter, exit, state, []);
    }
    function traverseSimpleImpl(node, enter, exit, state, ancestors) {
      var keys = VISITOR_KEYS$5[node.type];
      if (!keys) return;
      if (enter) enter(node, ancestors, state);
      for (var _iterator = _createForOfIteratorHelperLoose(keys), _step; !(_step = _iterator()).done;) {
        var key = _step.value;
        var subNode = node[key];
        if (Array.isArray(subNode)) {
          for (var i = 0; i < subNode.length; i++) {
            var child = subNode[i];
            if (!child) continue;
            ancestors.push({
              node: node,
              key: key,
              index: i
            });
            traverseSimpleImpl(child, enter, exit, state, ancestors);
            ancestors.pop();
          }
        } else if (subNode) {
          ancestors.push({
            node: node,
            key: key
          });
          traverseSimpleImpl(subNode, enter, exit, state, ancestors);
          ancestors.pop();
        }
      }
      if (exit) exit(node, ancestors, state);
    }
  
    function isBinding$1(node, parent, grandparent) {
      if (grandparent && node.type === "Identifier" && parent.type === "ObjectProperty" && grandparent.type === "ObjectExpression") {
        return false;
      }
      var keys = getBindingIdentifiers$2.keys[parent.type];
      if (keys) {
        for (var i = 0; i < keys.length; i++) {
          var key = keys[i];
          var val = parent[key];
          if (Array.isArray(val)) {
            if (val.indexOf(node) >= 0) return true;
          } else {
            if (val === node) return true;
          }
        }
      }
      return false;
    }
  
    function isLet(node) {
      return isVariableDeclaration$3(node) && (node.kind !== "var" || node[BLOCK_SCOPED_SYMBOL]);
    }
  
    function isBlockScoped$2(node) {
      return isFunctionDeclaration$2(node) || isClassDeclaration$2(node) || isLet(node);
    }
  
    function isImmutable(node) {
      if (isType$2(node.type, "Immutable")) return true;
      if (isIdentifier$j(node)) {
        if (node.name === "undefined") {
          return true;
        } else {
          return false;
        }
      }
      return false;
    }
  
    function isNodesEquivalent(a, b) {
      if (typeof a !== "object" || typeof b !== "object" || a == null || b == null) {
        return a === b;
      }
      if (a.type !== b.type) {
        return false;
      }
      var fields = Object.keys(NODE_FIELDS[a.type] || a.type);
      var visitorKeys = VISITOR_KEYS$5[a.type];
      for (var _i = 0, _fields = fields; _i < _fields.length; _i++) {
        var field = _fields[_i];
        var val_a = a[field];
        var val_b = b[field];
        if (typeof val_a !== typeof val_b) {
          return false;
        }
        if (val_a == null && val_b == null) {
          continue;
        } else if (val_a == null || val_b == null) {
          return false;
        }
        if (Array.isArray(val_a)) {
          if (!Array.isArray(val_b)) {
            return false;
          }
          if (val_a.length !== val_b.length) {
            return false;
          }
          for (var i = 0; i < val_a.length; i++) {
            if (!isNodesEquivalent(val_a[i], val_b[i])) {
              return false;
            }
          }
          continue;
        }
        if (typeof val_a === "object" && !(visitorKeys != null && visitorKeys.includes(field))) {
          for (var _i2 = 0, _Object$keys = Object.keys(val_a); _i2 < _Object$keys.length; _i2++) {
            var key = _Object$keys[_i2];
            if (val_a[key] !== val_b[key]) {
              return false;
            }
          }
          continue;
        }
        if (!isNodesEquivalent(val_a, val_b)) {
          return false;
        }
      }
      return true;
    }
  
    function isReferenced$2(node, parent, grandparent) {
      switch (parent.type) {
        case "MemberExpression":
        case "OptionalMemberExpression":
          if (parent.property === node) {
            return !!parent.computed;
          }
          return parent.object === node;
        case "JSXMemberExpression":
          return parent.object === node;
        case "VariableDeclarator":
          return parent.init === node;
        case "ArrowFunctionExpression":
          return parent.body === node;
        case "PrivateName":
          return false;
        case "ClassMethod":
        case "ClassPrivateMethod":
        case "ObjectMethod":
          if (parent.key === node) {
            return !!parent.computed;
          }
          return false;
        case "ObjectProperty":
          if (parent.key === node) {
            return !!parent.computed;
          }
          return !grandparent || grandparent.type !== "ObjectPattern";
        case "ClassProperty":
        case "ClassAccessorProperty":
          if (parent.key === node) {
            return !!parent.computed;
          }
          return true;
        case "ClassPrivateProperty":
          return parent.key !== node;
        case "ClassDeclaration":
        case "ClassExpression":
          return parent.superClass === node;
        case "AssignmentExpression":
          return parent.right === node;
        case "AssignmentPattern":
          return parent.right === node;
        case "LabeledStatement":
          return false;
        case "CatchClause":
          return false;
        case "RestElement":
          return false;
        case "BreakStatement":
        case "ContinueStatement":
          return false;
        case "FunctionDeclaration":
        case "FunctionExpression":
          return false;
        case "ExportNamespaceSpecifier":
        case "ExportDefaultSpecifier":
          return false;
        case "ExportSpecifier":
          if (grandparent != null && grandparent.source) {
            return false;
          }
          return parent.local === node;
        case "ImportDefaultSpecifier":
        case "ImportNamespaceSpecifier":
        case "ImportSpecifier":
          return false;
        case "ImportAttribute":
          return false;
        case "JSXAttribute":
          return false;
        case "ObjectPattern":
        case "ArrayPattern":
          return false;
        case "MetaProperty":
          return false;
        case "ObjectTypeProperty":
          return parent.key !== node;
        case "TSEnumMember":
          return parent.id !== node;
        case "TSPropertySignature":
          if (parent.key === node) {
            return !!parent.computed;
          }
          return true;
      }
      return true;
    }
  
    function isScope$1(node, parent) {
      if (isBlockStatement$2(node) && (isFunction$4(parent) || isCatchClause(parent))) {
        return false;
      }
      if (isPattern(node) && (isFunction$4(parent) || isCatchClause(parent))) {
        return true;
      }
      return isScopable(node);
    }
  
    function isSpecifierDefault(specifier) {
      return isImportDefaultSpecifier$1(specifier) || isIdentifier$j(specifier.imported || specifier.exported, {
        name: "default"
      });
    }
  
    var RESERVED_WORDS_ES3_ONLY = new Set(["abstract", "boolean", "byte", "char", "double", "enum", "final", "float", "goto", "implements", "int", "interface", "long", "native", "package", "private", "protected", "public", "short", "static", "synchronized", "throws", "transient", "volatile"]);
    function isValidES3Identifier(name) {
      return isValidIdentifier$1(name) && !RESERVED_WORDS_ES3_ONLY.has(name);
    }
  
    function isVar$1(node) {
      return isVariableDeclaration$3(node, {
        kind: "var"
      }) && !node[BLOCK_SCOPED_SYMBOL];
    }
  
    var react$3 = {
      isReactComponent: isReactComponent,
      isCompatTag: isCompatTag$1,
      buildChildren: buildChildren
    };
  
    var t$8 = /*#__PURE__*/Object.freeze({
      __proto__: null,
      react: react$3,
      assertNode: assertNode,
      createTypeAnnotationBasedOnTypeof: createTypeAnnotationBasedOnTypeof$1,
      createUnionTypeAnnotation: createFlowUnionType$1,
      createFlowUnionType: createFlowUnionType$1,
      createTSUnionType: createTSUnionType$1,
      cloneNode: cloneNode$j,
      clone: clone,
      cloneDeep: cloneDeep$1,
      cloneDeepWithoutLoc: cloneDeepWithoutLoc,
      cloneWithoutLoc: cloneWithoutLoc,
      addComment: addComment$2,
      addComments: addComments$1,
      inheritInnerComments: inheritInnerComments,
      inheritLeadingComments: inheritLeadingComments$1,
      inheritsComments: inheritsComments$1,
      inheritTrailingComments: inheritTrailingComments$1,
      removeComments: removeComments$1,
      ensureBlock: ensureBlock$1,
      toBindingIdentifierName: toBindingIdentifierName$1,
      toBlock: toBlock,
      toComputedKey: toComputedKey$2,
      toExpression: toExpression$1,
      toIdentifier: toIdentifier$1,
      toKeyAlias: toKeyAlias,
      toSequenceExpression: toSequenceExpression$1,
      toStatement: toStatement,
      valueToNode: valueToNode$1,
      appendToMemberExpression: appendToMemberExpression,
      inherits: inherits$1,
      prependToMemberExpression: prependToMemberExpression,
      removeProperties: removeProperties$1,
      removePropertiesDeep: removePropertiesDeep$1,
      removeTypeDuplicates: removeTypeDuplicates$1,
      getBindingIdentifiers: getBindingIdentifiers$2,
      getOuterBindingIdentifiers: getOuterBindingIdentifiers$2,
      traverse: traverse$2,
      traverseFast: traverseFast$2,
      shallowEqual: shallowEqual$2,
      is: is$1,
      isBinding: isBinding$1,
      isBlockScoped: isBlockScoped$2,
      isImmutable: isImmutable,
      isLet: isLet,
      isNode: isNode,
      isNodesEquivalent: isNodesEquivalent,
      isPlaceholderType: isPlaceholderType,
      isReferenced: isReferenced$2,
      isScope: isScope$1,
      isSpecifierDefault: isSpecifierDefault,
      isType: isType$2,
      isValidES3Identifier: isValidES3Identifier,
      isValidIdentifier: isValidIdentifier$1,
      isVar: isVar$1,
      matchesPattern: matchesPattern$2,
      validate: validate$5,
      buildMatchMemberExpression: buildMatchMemberExpression$1,
      __internal__deprecationWarning: deprecationWarning$1,
      assertArrayExpression: assertArrayExpression,
      assertAssignmentExpression: assertAssignmentExpression,
      assertBinaryExpression: assertBinaryExpression,
      assertInterpreterDirective: assertInterpreterDirective,
      assertDirective: assertDirective,
      assertDirectiveLiteral: assertDirectiveLiteral,
      assertBlockStatement: assertBlockStatement,
      assertBreakStatement: assertBreakStatement,
      assertCallExpression: assertCallExpression,
      assertCatchClause: assertCatchClause,
      assertConditionalExpression: assertConditionalExpression,
      assertContinueStatement: assertContinueStatement,
      assertDebuggerStatement: assertDebuggerStatement,
      assertDoWhileStatement: assertDoWhileStatement,
      assertEmptyStatement: assertEmptyStatement,
      assertExpressionStatement: assertExpressionStatement$1,
      assertFile: assertFile,
      assertForInStatement: assertForInStatement,
      assertForStatement: assertForStatement,
      assertFunctionDeclaration: assertFunctionDeclaration,
      assertFunctionExpression: assertFunctionExpression,
      assertIdentifier: assertIdentifier,
      assertIfStatement: assertIfStatement,
      assertLabeledStatement: assertLabeledStatement,
      assertStringLiteral: assertStringLiteral,
      assertNumericLiteral: assertNumericLiteral,
      assertNullLiteral: assertNullLiteral,
      assertBooleanLiteral: assertBooleanLiteral,
      assertRegExpLiteral: assertRegExpLiteral,
      assertLogicalExpression: assertLogicalExpression,
      assertMemberExpression: assertMemberExpression,
      assertNewExpression: assertNewExpression,
      assertProgram: assertProgram,
      assertObjectExpression: assertObjectExpression,
      assertObjectMethod: assertObjectMethod,
      assertObjectProperty: assertObjectProperty,
      assertRestElement: assertRestElement,
      assertReturnStatement: assertReturnStatement,
      assertSequenceExpression: assertSequenceExpression,
      assertParenthesizedExpression: assertParenthesizedExpression,
      assertSwitchCase: assertSwitchCase,
      assertSwitchStatement: assertSwitchStatement,
      assertThisExpression: assertThisExpression,
      assertThrowStatement: assertThrowStatement,
      assertTryStatement: assertTryStatement,
      assertUnaryExpression: assertUnaryExpression,
      assertUpdateExpression: assertUpdateExpression,
      assertVariableDeclaration: assertVariableDeclaration,
      assertVariableDeclarator: assertVariableDeclarator,
      assertWhileStatement: assertWhileStatement,
      assertWithStatement: assertWithStatement,
      assertAssignmentPattern: assertAssignmentPattern,
      assertArrayPattern: assertArrayPattern,
      assertArrowFunctionExpression: assertArrowFunctionExpression,
      assertClassBody: assertClassBody,
      assertClassExpression: assertClassExpression,
      assertClassDeclaration: assertClassDeclaration,
      assertExportAllDeclaration: assertExportAllDeclaration,
      assertExportDefaultDeclaration: assertExportDefaultDeclaration,
      assertExportNamedDeclaration: assertExportNamedDeclaration,
      assertExportSpecifier: assertExportSpecifier$1,
      assertForOfStatement: assertForOfStatement,
      assertImportDeclaration: assertImportDeclaration,
      assertImportDefaultSpecifier: assertImportDefaultSpecifier,
      assertImportNamespaceSpecifier: assertImportNamespaceSpecifier,
      assertImportSpecifier: assertImportSpecifier,
      assertMetaProperty: assertMetaProperty,
      assertClassMethod: assertClassMethod,
      assertObjectPattern: assertObjectPattern,
      assertSpreadElement: assertSpreadElement,
      assertSuper: assertSuper,
      assertTaggedTemplateExpression: assertTaggedTemplateExpression,
      assertTemplateElement: assertTemplateElement,
      assertTemplateLiteral: assertTemplateLiteral,
      assertYieldExpression: assertYieldExpression,
      assertAwaitExpression: assertAwaitExpression,
      assertImport: assertImport,
      assertBigIntLiteral: assertBigIntLiteral,
      assertExportNamespaceSpecifier: assertExportNamespaceSpecifier,
      assertOptionalMemberExpression: assertOptionalMemberExpression,
      assertOptionalCallExpression: assertOptionalCallExpression,
      assertClassProperty: assertClassProperty,
      assertClassAccessorProperty: assertClassAccessorProperty,
      assertClassPrivateProperty: assertClassPrivateProperty,
      assertClassPrivateMethod: assertClassPrivateMethod,
      assertPrivateName: assertPrivateName,
      assertStaticBlock: assertStaticBlock,
      assertAnyTypeAnnotation: assertAnyTypeAnnotation,
      assertArrayTypeAnnotation: assertArrayTypeAnnotation,
      assertBooleanTypeAnnotation: assertBooleanTypeAnnotation,
      assertBooleanLiteralTypeAnnotation: assertBooleanLiteralTypeAnnotation,
      assertNullLiteralTypeAnnotation: assertNullLiteralTypeAnnotation,
      assertClassImplements: assertClassImplements,
      assertDeclareClass: assertDeclareClass,
      assertDeclareFunction: assertDeclareFunction,
      assertDeclareInterface: assertDeclareInterface,
      assertDeclareModule: assertDeclareModule,
      assertDeclareModuleExports: assertDeclareModuleExports,
      assertDeclareTypeAlias: assertDeclareTypeAlias,
      assertDeclareOpaqueType: assertDeclareOpaqueType,
      assertDeclareVariable: assertDeclareVariable,
      assertDeclareExportDeclaration: assertDeclareExportDeclaration,
      assertDeclareExportAllDeclaration: assertDeclareExportAllDeclaration,
      assertDeclaredPredicate: assertDeclaredPredicate,
      assertExistsTypeAnnotation: assertExistsTypeAnnotation,
      assertFunctionTypeAnnotation: assertFunctionTypeAnnotation,
      assertFunctionTypeParam: assertFunctionTypeParam,
      assertGenericTypeAnnotation: assertGenericTypeAnnotation,
      assertInferredPredicate: assertInferredPredicate,
      assertInterfaceExtends: assertInterfaceExtends,
      assertInterfaceDeclaration: assertInterfaceDeclaration,
      assertInterfaceTypeAnnotation: assertInterfaceTypeAnnotation,
      assertIntersectionTypeAnnotation: assertIntersectionTypeAnnotation,
      assertMixedTypeAnnotation: assertMixedTypeAnnotation,
      assertEmptyTypeAnnotation: assertEmptyTypeAnnotation,
      assertNullableTypeAnnotation: assertNullableTypeAnnotation,
      assertNumberLiteralTypeAnnotation: assertNumberLiteralTypeAnnotation,
      assertNumberTypeAnnotation: assertNumberTypeAnnotation,
      assertObjectTypeAnnotation: assertObjectTypeAnnotation,
      assertObjectTypeInternalSlot: assertObjectTypeInternalSlot,
      assertObjectTypeCallProperty: assertObjectTypeCallProperty,
      assertObjectTypeIndexer: assertObjectTypeIndexer,
      assertObjectTypeProperty: assertObjectTypeProperty,
      assertObjectTypeSpreadProperty: assertObjectTypeSpreadProperty,
      assertOpaqueType: assertOpaqueType,
      assertQualifiedTypeIdentifier: assertQualifiedTypeIdentifier,
      assertStringLiteralTypeAnnotation: assertStringLiteralTypeAnnotation,
      assertStringTypeAnnotation: assertStringTypeAnnotation,
      assertSymbolTypeAnnotation: assertSymbolTypeAnnotation,
      assertThisTypeAnnotation: assertThisTypeAnnotation,
      assertTupleTypeAnnotation: assertTupleTypeAnnotation,
      assertTypeofTypeAnnotation: assertTypeofTypeAnnotation,
      assertTypeAlias: assertTypeAlias,
      assertTypeAnnotation: assertTypeAnnotation,
      assertTypeCastExpression: assertTypeCastExpression,
      assertTypeParameter: assertTypeParameter,
      assertTypeParameterDeclaration: assertTypeParameterDeclaration,
      assertTypeParameterInstantiation: assertTypeParameterInstantiation,
      assertUnionTypeAnnotation: assertUnionTypeAnnotation,
      assertVariance: assertVariance,
      assertVoidTypeAnnotation: assertVoidTypeAnnotation,
      assertEnumDeclaration: assertEnumDeclaration,
      assertEnumBooleanBody: assertEnumBooleanBody,
      assertEnumNumberBody: assertEnumNumberBody,
      assertEnumStringBody: assertEnumStringBody,
      assertEnumSymbolBody: assertEnumSymbolBody,
      assertEnumBooleanMember: assertEnumBooleanMember,
      assertEnumNumberMember: assertEnumNumberMember,
      assertEnumStringMember: assertEnumStringMember,
      assertEnumDefaultedMember: assertEnumDefaultedMember,
      assertIndexedAccessType: assertIndexedAccessType,
      assertOptionalIndexedAccessType: assertOptionalIndexedAccessType,
      assertJSXAttribute: assertJSXAttribute,
      assertJSXClosingElement: assertJSXClosingElement,
      assertJSXElement: assertJSXElement,
      assertJSXEmptyExpression: assertJSXEmptyExpression,
      assertJSXExpressionContainer: assertJSXExpressionContainer,
      assertJSXSpreadChild: assertJSXSpreadChild,
      assertJSXIdentifier: assertJSXIdentifier,
      assertJSXMemberExpression: assertJSXMemberExpression,
      assertJSXNamespacedName: assertJSXNamespacedName,
      assertJSXOpeningElement: assertJSXOpeningElement,
      assertJSXSpreadAttribute: assertJSXSpreadAttribute,
      assertJSXText: assertJSXText,
      assertJSXFragment: assertJSXFragment,
      assertJSXOpeningFragment: assertJSXOpeningFragment,
      assertJSXClosingFragment: assertJSXClosingFragment,
      assertNoop: assertNoop,
      assertPlaceholder: assertPlaceholder,
      assertV8IntrinsicIdentifier: assertV8IntrinsicIdentifier,
      assertArgumentPlaceholder: assertArgumentPlaceholder,
      assertBindExpression: assertBindExpression,
      assertImportAttribute: assertImportAttribute,
      assertDecorator: assertDecorator,
      assertDoExpression: assertDoExpression,
      assertExportDefaultSpecifier: assertExportDefaultSpecifier,
      assertRecordExpression: assertRecordExpression,
      assertTupleExpression: assertTupleExpression,
      assertDecimalLiteral: assertDecimalLiteral,
      assertModuleExpression: assertModuleExpression,
      assertTopicReference: assertTopicReference,
      assertPipelineTopicExpression: assertPipelineTopicExpression,
      assertPipelineBareFunction: assertPipelineBareFunction,
      assertPipelinePrimaryTopicReference: assertPipelinePrimaryTopicReference,
      assertTSParameterProperty: assertTSParameterProperty,
      assertTSDeclareFunction: assertTSDeclareFunction,
      assertTSDeclareMethod: assertTSDeclareMethod,
      assertTSQualifiedName: assertTSQualifiedName,
      assertTSCallSignatureDeclaration: assertTSCallSignatureDeclaration,
      assertTSConstructSignatureDeclaration: assertTSConstructSignatureDeclaration,
      assertTSPropertySignature: assertTSPropertySignature,
      assertTSMethodSignature: assertTSMethodSignature,
      assertTSIndexSignature: assertTSIndexSignature,
      assertTSAnyKeyword: assertTSAnyKeyword,
      assertTSBooleanKeyword: assertTSBooleanKeyword,
      assertTSBigIntKeyword: assertTSBigIntKeyword,
      assertTSIntrinsicKeyword: assertTSIntrinsicKeyword,
      assertTSNeverKeyword: assertTSNeverKeyword,
      assertTSNullKeyword: assertTSNullKeyword,
      assertTSNumberKeyword: assertTSNumberKeyword,
      assertTSObjectKeyword: assertTSObjectKeyword,
      assertTSStringKeyword: assertTSStringKeyword,
      assertTSSymbolKeyword: assertTSSymbolKeyword,
      assertTSUndefinedKeyword: assertTSUndefinedKeyword,
      assertTSUnknownKeyword: assertTSUnknownKeyword,
      assertTSVoidKeyword: assertTSVoidKeyword,
      assertTSThisType: assertTSThisType,
      assertTSFunctionType: assertTSFunctionType,
      assertTSConstructorType: assertTSConstructorType,
      assertTSTypeReference: assertTSTypeReference,
      assertTSTypePredicate: assertTSTypePredicate,
      assertTSTypeQuery: assertTSTypeQuery,
      assertTSTypeLiteral: assertTSTypeLiteral,
      assertTSArrayType: assertTSArrayType,
      assertTSTupleType: assertTSTupleType,
      assertTSOptionalType: assertTSOptionalType,
      assertTSRestType: assertTSRestType,
      assertTSNamedTupleMember: assertTSNamedTupleMember,
      assertTSUnionType: assertTSUnionType,
      assertTSIntersectionType: assertTSIntersectionType,
      assertTSConditionalType: assertTSConditionalType,
      assertTSInferType: assertTSInferType,
      assertTSParenthesizedType: assertTSParenthesizedType,
      assertTSTypeOperator: assertTSTypeOperator,
      assertTSIndexedAccessType: assertTSIndexedAccessType,
      assertTSMappedType: assertTSMappedType,
      assertTSLiteralType: assertTSLiteralType,
      assertTSExpressionWithTypeArguments: assertTSExpressionWithTypeArguments,
      assertTSInterfaceDeclaration: assertTSInterfaceDeclaration,
      assertTSInterfaceBody: assertTSInterfaceBody,
      assertTSTypeAliasDeclaration: assertTSTypeAliasDeclaration,
      assertTSInstantiationExpression: assertTSInstantiationExpression,
      assertTSAsExpression: assertTSAsExpression,
      assertTSSatisfiesExpression: assertTSSatisfiesExpression,
      assertTSTypeAssertion: assertTSTypeAssertion,
      assertTSEnumDeclaration: assertTSEnumDeclaration,
      assertTSEnumMember: assertTSEnumMember,
      assertTSModuleDeclaration: assertTSModuleDeclaration,
      assertTSModuleBlock: assertTSModuleBlock,
      assertTSImportType: assertTSImportType,
      assertTSImportEqualsDeclaration: assertTSImportEqualsDeclaration,
      assertTSExternalModuleReference: assertTSExternalModuleReference,
      assertTSNonNullExpression: assertTSNonNullExpression,
      assertTSExportAssignment: assertTSExportAssignment,
      assertTSNamespaceExportDeclaration: assertTSNamespaceExportDeclaration,
      assertTSTypeAnnotation: assertTSTypeAnnotation,
      assertTSTypeParameterInstantiation: assertTSTypeParameterInstantiation,
      assertTSTypeParameterDeclaration: assertTSTypeParameterDeclaration,
      assertTSTypeParameter: assertTSTypeParameter,
      assertStandardized: assertStandardized,
      assertExpression: assertExpression$1,
      assertBinary: assertBinary,
      assertScopable: assertScopable,
      assertBlockParent: assertBlockParent,
      assertBlock: assertBlock,
      assertStatement: assertStatement,
      assertTerminatorless: assertTerminatorless,
      assertCompletionStatement: assertCompletionStatement,
      assertConditional: assertConditional,
      assertLoop: assertLoop,
      assertWhile: assertWhile,
      assertExpressionWrapper: assertExpressionWrapper,
      assertFor: assertFor,
      assertForXStatement: assertForXStatement,
      assertFunction: assertFunction$1,
      assertFunctionParent: assertFunctionParent,
      assertPureish: assertPureish,
      assertDeclaration: assertDeclaration,
      assertPatternLike: assertPatternLike,
      assertLVal: assertLVal,
      assertTSEntityName: assertTSEntityName,
      assertLiteral: assertLiteral,
      assertImmutable: assertImmutable,
      assertUserWhitespacable: assertUserWhitespacable,
      assertMethod: assertMethod,
      assertObjectMember: assertObjectMember,
      assertProperty: assertProperty,
      assertUnaryLike: assertUnaryLike,
      assertPattern: assertPattern,
      assertClass: assertClass,
      assertImportOrExportDeclaration: assertImportOrExportDeclaration,
      assertExportDeclaration: assertExportDeclaration,
      assertModuleSpecifier: assertModuleSpecifier,
      assertAccessor: assertAccessor,
      assertPrivate: assertPrivate,
      assertFlow: assertFlow,
      assertFlowType: assertFlowType,
      assertFlowBaseAnnotation: assertFlowBaseAnnotation,
      assertFlowDeclaration: assertFlowDeclaration,
      assertFlowPredicate: assertFlowPredicate,
      assertEnumBody: assertEnumBody,
      assertEnumMember: assertEnumMember,
      assertJSX: assertJSX,
      assertMiscellaneous: assertMiscellaneous,
      assertTypeScript: assertTypeScript,
      assertTSTypeElement: assertTSTypeElement,
      assertTSType: assertTSType,
      assertTSBaseType: assertTSBaseType,
      assertNumberLiteral: assertNumberLiteral,
      assertRegexLiteral: assertRegexLiteral,
      assertRestProperty: assertRestProperty,
      assertSpreadProperty: assertSpreadProperty,
      assertModuleDeclaration: assertModuleDeclaration,
      arrayExpression: arrayExpression$1,
      assignmentExpression: assignmentExpression$d,
      binaryExpression: binaryExpression$5,
      interpreterDirective: interpreterDirective$1,
      directive: directive$1,
      directiveLiteral: directiveLiteral$1,
      blockStatement: blockStatement$6,
      breakStatement: breakStatement,
      callExpression: callExpression$e,
      catchClause: catchClause,
      conditionalExpression: conditionalExpression$4,
      continueStatement: continueStatement,
      debuggerStatement: debuggerStatement,
      doWhileStatement: doWhileStatement,
      emptyStatement: emptyStatement$1,
      expressionStatement: expressionStatement$a,
      file: file$2,
      forInStatement: forInStatement,
      forStatement: forStatement,
      functionDeclaration: functionDeclaration,
      functionExpression: functionExpression$2,
      identifier: identifier$i,
      ifStatement: ifStatement,
      labeledStatement: labeledStatement,
      stringLiteral: stringLiteral$8,
      numericLiteral: numericLiteral$8,
      nullLiteral: nullLiteral$2,
      booleanLiteral: booleanLiteral$4,
      regExpLiteral: regExpLiteral,
      logicalExpression: logicalExpression$3,
      memberExpression: memberExpression$c,
      newExpression: newExpression,
      program: program$3,
      objectExpression: objectExpression$3,
      objectMethod: objectMethod,
      objectProperty: objectProperty$1,
      restElement: restElement$2,
      returnStatement: returnStatement$3,
      sequenceExpression: sequenceExpression$7,
      parenthesizedExpression: parenthesizedExpression,
      switchCase: switchCase,
      switchStatement: switchStatement,
      thisExpression: thisExpression$4,
      throwStatement: throwStatement,
      tryStatement: tryStatement,
      unaryExpression: unaryExpression$7,
      updateExpression: updateExpression$1,
      variableDeclaration: variableDeclaration$8,
      variableDeclarator: variableDeclarator$8,
      whileStatement: whileStatement,
      withStatement: withStatement,
      assignmentPattern: assignmentPattern,
      arrayPattern: arrayPattern,
      arrowFunctionExpression: arrowFunctionExpression$4,
      classBody: classBody,
      classExpression: classExpression,
      classDeclaration: classDeclaration,
      exportAllDeclaration: exportAllDeclaration,
      exportDefaultDeclaration: exportDefaultDeclaration,
      exportNamedDeclaration: exportNamedDeclaration$2,
      exportSpecifier: exportSpecifier$2,
      forOfStatement: forOfStatement,
      importDeclaration: importDeclaration$1,
      importDefaultSpecifier: importDefaultSpecifier$1,
      importNamespaceSpecifier: importNamespaceSpecifier$1,
      importSpecifier: importSpecifier$1,
      metaProperty: metaProperty$1,
      classMethod: classMethod,
      objectPattern: objectPattern$1,
      spreadElement: spreadElement$2,
      'super': _super$1,
      taggedTemplateExpression: taggedTemplateExpression,
      templateElement: templateElement,
      templateLiteral: templateLiteral,
      yieldExpression: yieldExpression$2,
      awaitExpression: awaitExpression$1,
      'import': _import,
      bigIntLiteral: bigIntLiteral,
      exportNamespaceSpecifier: exportNamespaceSpecifier,
      optionalMemberExpression: optionalMemberExpression$2,
      optionalCallExpression: optionalCallExpression$2,
      classProperty: classProperty,
      classAccessorProperty: classAccessorProperty,
      classPrivateProperty: classPrivateProperty,
      classPrivateMethod: classPrivateMethod,
      privateName: privateName,
      staticBlock: staticBlock,
      anyTypeAnnotation: anyTypeAnnotation$2,
      arrayTypeAnnotation: arrayTypeAnnotation$1,
      booleanTypeAnnotation: booleanTypeAnnotation$1,
      booleanLiteralTypeAnnotation: booleanLiteralTypeAnnotation,
      nullLiteralTypeAnnotation: nullLiteralTypeAnnotation$1,
      classImplements: classImplements,
      declareClass: declareClass,
      declareFunction: declareFunction,
      declareInterface: declareInterface,
      declareModule: declareModule,
      declareModuleExports: declareModuleExports,
      declareTypeAlias: declareTypeAlias,
      declareOpaqueType: declareOpaqueType,
      declareVariable: declareVariable,
      declareExportDeclaration: declareExportDeclaration,
      declareExportAllDeclaration: declareExportAllDeclaration,
      declaredPredicate: declaredPredicate,
      existsTypeAnnotation: existsTypeAnnotation,
      functionTypeAnnotation: functionTypeAnnotation,
      functionTypeParam: functionTypeParam,
      genericTypeAnnotation: genericTypeAnnotation$1,
      inferredPredicate: inferredPredicate,
      interfaceExtends: interfaceExtends,
      interfaceDeclaration: interfaceDeclaration,
      interfaceTypeAnnotation: interfaceTypeAnnotation,
      intersectionTypeAnnotation: intersectionTypeAnnotation,
      mixedTypeAnnotation: mixedTypeAnnotation,
      emptyTypeAnnotation: emptyTypeAnnotation,
      nullableTypeAnnotation: nullableTypeAnnotation,
      numberLiteralTypeAnnotation: numberLiteralTypeAnnotation,
      numberTypeAnnotation: numberTypeAnnotation$2,
      objectTypeAnnotation: objectTypeAnnotation,
      objectTypeInternalSlot: objectTypeInternalSlot,
      objectTypeCallProperty: objectTypeCallProperty,
      objectTypeIndexer: objectTypeIndexer,
      objectTypeProperty: objectTypeProperty,
      objectTypeSpreadProperty: objectTypeSpreadProperty,
      opaqueType: opaqueType,
      qualifiedTypeIdentifier: qualifiedTypeIdentifier,
      stringLiteralTypeAnnotation: stringLiteralTypeAnnotation,
      stringTypeAnnotation: stringTypeAnnotation$2,
      symbolTypeAnnotation: symbolTypeAnnotation,
      thisTypeAnnotation: thisTypeAnnotation,
      tupleTypeAnnotation: tupleTypeAnnotation$1,
      typeofTypeAnnotation: typeofTypeAnnotation,
      typeAlias: typeAlias,
      typeAnnotation: typeAnnotation,
      typeCastExpression: typeCastExpression,
      typeParameter: typeParameter,
      typeParameterDeclaration: typeParameterDeclaration,
      typeParameterInstantiation: typeParameterInstantiation,
      unionTypeAnnotation: unionTypeAnnotation$1,
      variance: variance,
      voidTypeAnnotation: voidTypeAnnotation$3,
      enumDeclaration: enumDeclaration,
      enumBooleanBody: enumBooleanBody,
      enumNumberBody: enumNumberBody,
      enumStringBody: enumStringBody,
      enumSymbolBody: enumSymbolBody,
      enumBooleanMember: enumBooleanMember,
      enumNumberMember: enumNumberMember,
      enumStringMember: enumStringMember,
      enumDefaultedMember: enumDefaultedMember,
      indexedAccessType: indexedAccessType,
      optionalIndexedAccessType: optionalIndexedAccessType,
      jsxAttribute: jsxAttribute,
      jSXAttribute: jsxAttribute,
      jsxClosingElement: jsxClosingElement,
      jSXClosingElement: jsxClosingElement,
      jsxElement: jsxElement,
      jSXElement: jsxElement,
      jsxEmptyExpression: jsxEmptyExpression,
      jSXEmptyExpression: jsxEmptyExpression,
      jsxExpressionContainer: jsxExpressionContainer$1,
      jSXExpressionContainer: jsxExpressionContainer$1,
      jsxSpreadChild: jsxSpreadChild,
      jSXSpreadChild: jsxSpreadChild,
      jsxIdentifier: jsxIdentifier$2,
      jSXIdentifier: jsxIdentifier$2,
      jsxMemberExpression: jsxMemberExpression$1,
      jSXMemberExpression: jsxMemberExpression$1,
      jsxNamespacedName: jsxNamespacedName,
      jSXNamespacedName: jsxNamespacedName,
      jsxOpeningElement: jsxOpeningElement,
      jSXOpeningElement: jsxOpeningElement,
      jsxSpreadAttribute: jsxSpreadAttribute,
      jSXSpreadAttribute: jsxSpreadAttribute,
      jsxText: jsxText,
      jSXText: jsxText,
      jsxFragment: jsxFragment,
      jSXFragment: jsxFragment,
      jsxOpeningFragment: jsxOpeningFragment,
      jSXOpeningFragment: jsxOpeningFragment,
      jsxClosingFragment: jsxClosingFragment,
      jSXClosingFragment: jsxClosingFragment,
      noop: noop$1,
      placeholder: placeholder,
      v8IntrinsicIdentifier: v8IntrinsicIdentifier,
      argumentPlaceholder: argumentPlaceholder,
      bindExpression: bindExpression,
      importAttribute: importAttribute,
      decorator: decorator,
      doExpression: doExpression,
      exportDefaultSpecifier: exportDefaultSpecifier,
      recordExpression: recordExpression,
      tupleExpression: tupleExpression,
      decimalLiteral: decimalLiteral,
      moduleExpression: moduleExpression,
      topicReference: topicReference,
      pipelineTopicExpression: pipelineTopicExpression,
      pipelineBareFunction: pipelineBareFunction,
      pipelinePrimaryTopicReference: pipelinePrimaryTopicReference,
      tsParameterProperty: tsParameterProperty,
      tSParameterProperty: tsParameterProperty,
      tsDeclareFunction: tsDeclareFunction,
      tSDeclareFunction: tsDeclareFunction,
      tsDeclareMethod: tsDeclareMethod,
      tSDeclareMethod: tsDeclareMethod,
      tsQualifiedName: tsQualifiedName,
      tSQualifiedName: tsQualifiedName,
      tsCallSignatureDeclaration: tsCallSignatureDeclaration,
      tSCallSignatureDeclaration: tsCallSignatureDeclaration,
      tsConstructSignatureDeclaration: tsConstructSignatureDeclaration,
      tSConstructSignatureDeclaration: tsConstructSignatureDeclaration,
      tsPropertySignature: tsPropertySignature,
      tSPropertySignature: tsPropertySignature,
      tsMethodSignature: tsMethodSignature,
      tSMethodSignature: tsMethodSignature,
      tsIndexSignature: tsIndexSignature,
      tSIndexSignature: tsIndexSignature,
      tsAnyKeyword: tsAnyKeyword,
      tSAnyKeyword: tsAnyKeyword,
      tsBooleanKeyword: tsBooleanKeyword,
      tSBooleanKeyword: tsBooleanKeyword,
      tsBigIntKeyword: tsBigIntKeyword,
      tSBigIntKeyword: tsBigIntKeyword,
      tsIntrinsicKeyword: tsIntrinsicKeyword,
      tSIntrinsicKeyword: tsIntrinsicKeyword,
      tsNeverKeyword: tsNeverKeyword,
      tSNeverKeyword: tsNeverKeyword,
      tsNullKeyword: tsNullKeyword,
      tSNullKeyword: tsNullKeyword,
      tsNumberKeyword: tsNumberKeyword,
      tSNumberKeyword: tsNumberKeyword,
      tsObjectKeyword: tsObjectKeyword,
      tSObjectKeyword: tsObjectKeyword,
      tsStringKeyword: tsStringKeyword,
      tSStringKeyword: tsStringKeyword,
      tsSymbolKeyword: tsSymbolKeyword,
      tSSymbolKeyword: tsSymbolKeyword,
      tsUndefinedKeyword: tsUndefinedKeyword,
      tSUndefinedKeyword: tsUndefinedKeyword,
      tsUnknownKeyword: tsUnknownKeyword,
      tSUnknownKeyword: tsUnknownKeyword,
      tsVoidKeyword: tsVoidKeyword,
      tSVoidKeyword: tsVoidKeyword,
      tsThisType: tsThisType,
      tSThisType: tsThisType,
      tsFunctionType: tsFunctionType,
      tSFunctionType: tsFunctionType,
      tsConstructorType: tsConstructorType,
      tSConstructorType: tsConstructorType,
      tsTypeReference: tsTypeReference,
      tSTypeReference: tsTypeReference,
      tsTypePredicate: tsTypePredicate,
      tSTypePredicate: tsTypePredicate,
      tsTypeQuery: tsTypeQuery,
      tSTypeQuery: tsTypeQuery,
      tsTypeLiteral: tsTypeLiteral,
      tSTypeLiteral: tsTypeLiteral,
      tsArrayType: tsArrayType,
      tSArrayType: tsArrayType,
      tsTupleType: tsTupleType,
      tSTupleType: tsTupleType,
      tsOptionalType: tsOptionalType,
      tSOptionalType: tsOptionalType,
      tsRestType: tsRestType,
      tSRestType: tsRestType,
      tsNamedTupleMember: tsNamedTupleMember,
      tSNamedTupleMember: tsNamedTupleMember,
      tsUnionType: tsUnionType,
      tSUnionType: tsUnionType,
      tsIntersectionType: tsIntersectionType,
      tSIntersectionType: tsIntersectionType,
      tsConditionalType: tsConditionalType,
      tSConditionalType: tsConditionalType,
      tsInferType: tsInferType,
      tSInferType: tsInferType,
      tsParenthesizedType: tsParenthesizedType,
      tSParenthesizedType: tsParenthesizedType,
      tsTypeOperator: tsTypeOperator,
      tSTypeOperator: tsTypeOperator,
      tsIndexedAccessType: tsIndexedAccessType,
      tSIndexedAccessType: tsIndexedAccessType,
      tsMappedType: tsMappedType,
      tSMappedType: tsMappedType,
      tsLiteralType: tsLiteralType,
      tSLiteralType: tsLiteralType,
      tsExpressionWithTypeArguments: tsExpressionWithTypeArguments,
      tSExpressionWithTypeArguments: tsExpressionWithTypeArguments,
      tsInterfaceDeclaration: tsInterfaceDeclaration,
      tSInterfaceDeclaration: tsInterfaceDeclaration,
      tsInterfaceBody: tsInterfaceBody,
      tSInterfaceBody: tsInterfaceBody,
      tsTypeAliasDeclaration: tsTypeAliasDeclaration,
      tSTypeAliasDeclaration: tsTypeAliasDeclaration,
      tsInstantiationExpression: tsInstantiationExpression,
      tSInstantiationExpression: tsInstantiationExpression,
      tsAsExpression: tsAsExpression,
      tSAsExpression: tsAsExpression,
      tsSatisfiesExpression: tsSatisfiesExpression,
      tSSatisfiesExpression: tsSatisfiesExpression,
      tsTypeAssertion: tsTypeAssertion,
      tSTypeAssertion: tsTypeAssertion,
      tsEnumDeclaration: tsEnumDeclaration,
      tSEnumDeclaration: tsEnumDeclaration,
      tsEnumMember: tsEnumMember,
      tSEnumMember: tsEnumMember,
      tsModuleDeclaration: tsModuleDeclaration,
      tSModuleDeclaration: tsModuleDeclaration,
      tsModuleBlock: tsModuleBlock,
      tSModuleBlock: tsModuleBlock,
      tsImportType: tsImportType,
      tSImportType: tsImportType,
      tsImportEqualsDeclaration: tsImportEqualsDeclaration,
      tSImportEqualsDeclaration: tsImportEqualsDeclaration,
      tsExternalModuleReference: tsExternalModuleReference,
      tSExternalModuleReference: tsExternalModuleReference,
      tsNonNullExpression: tsNonNullExpression,
      tSNonNullExpression: tsNonNullExpression,
      tsExportAssignment: tsExportAssignment,
      tSExportAssignment: tsExportAssignment,
      tsNamespaceExportDeclaration: tsNamespaceExportDeclaration,
      tSNamespaceExportDeclaration: tsNamespaceExportDeclaration,
      tsTypeAnnotation: tsTypeAnnotation,
      tSTypeAnnotation: tsTypeAnnotation,
      tsTypeParameterInstantiation: tsTypeParameterInstantiation,
      tSTypeParameterInstantiation: tsTypeParameterInstantiation,
      tsTypeParameterDeclaration: tsTypeParameterDeclaration,
      tSTypeParameterDeclaration: tsTypeParameterDeclaration,
      tsTypeParameter: tsTypeParameter,
      tSTypeParameter: tsTypeParameter,
      numberLiteral: NumberLiteral,
      regexLiteral: RegexLiteral,
      restProperty: RestProperty,
      spreadProperty: SpreadProperty,
      ArrayExpression: arrayExpression$1,
      AssignmentExpression: assignmentExpression$d,
      BinaryExpression: binaryExpression$5,
      InterpreterDirective: interpreterDirective$1,
      Directive: directive$1,
      DirectiveLiteral: directiveLiteral$1,
      BlockStatement: blockStatement$6,
      BreakStatement: breakStatement,
      CallExpression: callExpression$e,
      CatchClause: catchClause,
      ConditionalExpression: conditionalExpression$4,
      ContinueStatement: continueStatement,
      DebuggerStatement: debuggerStatement,
      DoWhileStatement: doWhileStatement,
      EmptyStatement: emptyStatement$1,
      ExpressionStatement: expressionStatement$a,
      File: file$2,
      ForInStatement: forInStatement,
      ForStatement: forStatement,
      FunctionDeclaration: functionDeclaration,
      FunctionExpression: functionExpression$2,
      Identifier: identifier$i,
      IfStatement: ifStatement,
      LabeledStatement: labeledStatement,
      StringLiteral: stringLiteral$8,
      NumericLiteral: numericLiteral$8,
      NullLiteral: nullLiteral$2,
      BooleanLiteral: booleanLiteral$4,
      RegExpLiteral: regExpLiteral,
      LogicalExpression: logicalExpression$3,
      MemberExpression: memberExpression$c,
      NewExpression: newExpression,
      Program: program$3,
      ObjectExpression: objectExpression$3,
      ObjectMethod: objectMethod,
      ObjectProperty: objectProperty$1,
      RestElement: restElement$2,
      ReturnStatement: returnStatement$3,
      SequenceExpression: sequenceExpression$7,
      ParenthesizedExpression: parenthesizedExpression,
      SwitchCase: switchCase,
      SwitchStatement: switchStatement,
      ThisExpression: thisExpression$4,
      ThrowStatement: throwStatement,
      TryStatement: tryStatement,
      UnaryExpression: unaryExpression$7,
      UpdateExpression: updateExpression$1,
      VariableDeclaration: variableDeclaration$8,
      VariableDeclarator: variableDeclarator$8,
      WhileStatement: whileStatement,
      WithStatement: withStatement,
      AssignmentPattern: assignmentPattern,
      ArrayPattern: arrayPattern,
      ArrowFunctionExpression: arrowFunctionExpression$4,
      ClassBody: classBody,
      ClassExpression: classExpression,
      ClassDeclaration: classDeclaration,
      ExportAllDeclaration: exportAllDeclaration,
      ExportDefaultDeclaration: exportDefaultDeclaration,
      ExportNamedDeclaration: exportNamedDeclaration$2,
      ExportSpecifier: exportSpecifier$2,
      ForOfStatement: forOfStatement,
      ImportDeclaration: importDeclaration$1,
      ImportDefaultSpecifier: importDefaultSpecifier$1,
      ImportNamespaceSpecifier: importNamespaceSpecifier$1,
      ImportSpecifier: importSpecifier$1,
      MetaProperty: metaProperty$1,
      ClassMethod: classMethod,
      ObjectPattern: objectPattern$1,
      SpreadElement: spreadElement$2,
      Super: _super$1,
      TaggedTemplateExpression: taggedTemplateExpression,
      TemplateElement: templateElement,
      TemplateLiteral: templateLiteral,
      YieldExpression: yieldExpression$2,
      AwaitExpression: awaitExpression$1,
      Import: _import,
      BigIntLiteral: bigIntLiteral,
      ExportNamespaceSpecifier: exportNamespaceSpecifier,
      OptionalMemberExpression: optionalMemberExpression$2,
      OptionalCallExpression: optionalCallExpression$2,
      ClassProperty: classProperty,
      ClassAccessorProperty: classAccessorProperty,
      ClassPrivateProperty: classPrivateProperty,
      ClassPrivateMethod: classPrivateMethod,
      PrivateName: privateName,
      StaticBlock: staticBlock,
      AnyTypeAnnotation: anyTypeAnnotation$2,
      ArrayTypeAnnotation: arrayTypeAnnotation$1,
      BooleanTypeAnnotation: booleanTypeAnnotation$1,
      BooleanLiteralTypeAnnotation: booleanLiteralTypeAnnotation,
      NullLiteralTypeAnnotation: nullLiteralTypeAnnotation$1,
      ClassImplements: classImplements,
      DeclareClass: declareClass,
      DeclareFunction: declareFunction,
      DeclareInterface: declareInterface,
      DeclareModule: declareModule,
      DeclareModuleExports: declareModuleExports,
      DeclareTypeAlias: declareTypeAlias,
      DeclareOpaqueType: declareOpaqueType,
      DeclareVariable: declareVariable,
      DeclareExportDeclaration: declareExportDeclaration,
      DeclareExportAllDeclaration: declareExportAllDeclaration,
      DeclaredPredicate: declaredPredicate,
      ExistsTypeAnnotation: existsTypeAnnotation,
      FunctionTypeAnnotation: functionTypeAnnotation,
      FunctionTypeParam: functionTypeParam,
      GenericTypeAnnotation: genericTypeAnnotation$1,
      InferredPredicate: inferredPredicate,
      InterfaceExtends: interfaceExtends,
      InterfaceDeclaration: interfaceDeclaration,
      InterfaceTypeAnnotation: interfaceTypeAnnotation,
      IntersectionTypeAnnotation: intersectionTypeAnnotation,
      MixedTypeAnnotation: mixedTypeAnnotation,
      EmptyTypeAnnotation: emptyTypeAnnotation,
      NullableTypeAnnotation: nullableTypeAnnotation,
      NumberLiteralTypeAnnotation: numberLiteralTypeAnnotation,
      NumberTypeAnnotation: numberTypeAnnotation$2,
      ObjectTypeAnnotation: objectTypeAnnotation,
      ObjectTypeInternalSlot: objectTypeInternalSlot,
      ObjectTypeCallProperty: objectTypeCallProperty,
      ObjectTypeIndexer: objectTypeIndexer,
      ObjectTypeProperty: objectTypeProperty,
      ObjectTypeSpreadProperty: objectTypeSpreadProperty,
      OpaqueType: opaqueType,
      QualifiedTypeIdentifier: qualifiedTypeIdentifier,
      StringLiteralTypeAnnotation: stringLiteralTypeAnnotation,
      StringTypeAnnotation: stringTypeAnnotation$2,
      SymbolTypeAnnotation: symbolTypeAnnotation,
      ThisTypeAnnotation: thisTypeAnnotation,
      TupleTypeAnnotation: tupleTypeAnnotation$1,
      TypeofTypeAnnotation: typeofTypeAnnotation,
      TypeAlias: typeAlias,
      TypeAnnotation: typeAnnotation,
      TypeCastExpression: typeCastExpression,
      TypeParameter: typeParameter,
      TypeParameterDeclaration: typeParameterDeclaration,
      TypeParameterInstantiation: typeParameterInstantiation,
      UnionTypeAnnotation: unionTypeAnnotation$1,
      Variance: variance,
      VoidTypeAnnotation: voidTypeAnnotation$3,
      EnumDeclaration: enumDeclaration,
      EnumBooleanBody: enumBooleanBody,
      EnumNumberBody: enumNumberBody,
      EnumStringBody: enumStringBody,
      EnumSymbolBody: enumSymbolBody,
      EnumBooleanMember: enumBooleanMember,
      EnumNumberMember: enumNumberMember,
      EnumStringMember: enumStringMember,
      EnumDefaultedMember: enumDefaultedMember,
      IndexedAccessType: indexedAccessType,
      OptionalIndexedAccessType: optionalIndexedAccessType,
      JSXAttribute: jsxAttribute,
      JSXClosingElement: jsxClosingElement,
      JSXElement: jsxElement,
      JSXEmptyExpression: jsxEmptyExpression,
      JSXExpressionContainer: jsxExpressionContainer$1,
      JSXSpreadChild: jsxSpreadChild,
      JSXIdentifier: jsxIdentifier$2,
      JSXMemberExpression: jsxMemberExpression$1,
      JSXNamespacedName: jsxNamespacedName,
      JSXOpeningElement: jsxOpeningElement,
      JSXSpreadAttribute: jsxSpreadAttribute,
      JSXText: jsxText,
      JSXFragment: jsxFragment,
      JSXOpeningFragment: jsxOpeningFragment,
      JSXClosingFragment: jsxClosingFragment,
      Noop: noop$1,
      Placeholder: placeholder,
      V8IntrinsicIdentifier: v8IntrinsicIdentifier,
      ArgumentPlaceholder: argumentPlaceholder,
      BindExpression: bindExpression,
      ImportAttribute: importAttribute,
      Decorator: decorator,
      DoExpression: doExpression,
      ExportDefaultSpecifier: exportDefaultSpecifier,
      RecordExpression: recordExpression,
      TupleExpression: tupleExpression,
      DecimalLiteral: decimalLiteral,
      ModuleExpression: moduleExpression,
      TopicReference: topicReference,
      PipelineTopicExpression: pipelineTopicExpression,
      PipelineBareFunction: pipelineBareFunction,
      PipelinePrimaryTopicReference: pipelinePrimaryTopicReference,
      TSParameterProperty: tsParameterProperty,
      TSDeclareFunction: tsDeclareFunction,
      TSDeclareMethod: tsDeclareMethod,
      TSQualifiedName: tsQualifiedName,
      TSCallSignatureDeclaration: tsCallSignatureDeclaration,
      TSConstructSignatureDeclaration: tsConstructSignatureDeclaration,
      TSPropertySignature: tsPropertySignature,
      TSMethodSignature: tsMethodSignature,
      TSIndexSignature: tsIndexSignature,
      TSAnyKeyword: tsAnyKeyword,
      TSBooleanKeyword: tsBooleanKeyword,
      TSBigIntKeyword: tsBigIntKeyword,
      TSIntrinsicKeyword: tsIntrinsicKeyword,
      TSNeverKeyword: tsNeverKeyword,
      TSNullKeyword: tsNullKeyword,
      TSNumberKeyword: tsNumberKeyword,
      TSObjectKeyword: tsObjectKeyword,
      TSStringKeyword: tsStringKeyword,
      TSSymbolKeyword: tsSymbolKeyword,
      TSUndefinedKeyword: tsUndefinedKeyword,
      TSUnknownKeyword: tsUnknownKeyword,
      TSVoidKeyword: tsVoidKeyword,
      TSThisType: tsThisType,
      TSFunctionType: tsFunctionType,
      TSConstructorType: tsConstructorType,
      TSTypeReference: tsTypeReference,
      TSTypePredicate: tsTypePredicate,
      TSTypeQuery: tsTypeQuery,
      TSTypeLiteral: tsTypeLiteral,
      TSArrayType: tsArrayType,
      TSTupleType: tsTupleType,
      TSOptionalType: tsOptionalType,
      TSRestType: tsRestType,
      TSNamedTupleMember: tsNamedTupleMember,
      TSUnionType: tsUnionType,
      TSIntersectionType: tsIntersectionType,
      TSConditionalType: tsConditionalType,
      TSInferType: tsInferType,
      TSParenthesizedType: tsParenthesizedType,
      TSTypeOperator: tsTypeOperator,
      TSIndexedAccessType: tsIndexedAccessType,
      TSMappedType: tsMappedType,
      TSLiteralType: tsLiteralType,
      TSExpressionWithTypeArguments: tsExpressionWithTypeArguments,
      TSInterfaceDeclaration: tsInterfaceDeclaration,
      TSInterfaceBody: tsInterfaceBody,
      TSTypeAliasDeclaration: tsTypeAliasDeclaration,
      TSInstantiationExpression: tsInstantiationExpression,
      TSAsExpression: tsAsExpression,
      TSSatisfiesExpression: tsSatisfiesExpression,
      TSTypeAssertion: tsTypeAssertion,
      TSEnumDeclaration: tsEnumDeclaration,
      TSEnumMember: tsEnumMember,
      TSModuleDeclaration: tsModuleDeclaration,
      TSModuleBlock: tsModuleBlock,
      TSImportType: tsImportType,
      TSImportEqualsDeclaration: tsImportEqualsDeclaration,
      TSExternalModuleReference: tsExternalModuleReference,
      TSNonNullExpression: tsNonNullExpression,
      TSExportAssignment: tsExportAssignment,
      TSNamespaceExportDeclaration: tsNamespaceExportDeclaration,
      TSTypeAnnotation: tsTypeAnnotation,
      TSTypeParameterInstantiation: tsTypeParameterInstantiation,
      TSTypeParameterDeclaration: tsTypeParameterDeclaration,
      TSTypeParameter: tsTypeParameter,
      NumberLiteral: NumberLiteral,
      RegexLiteral: RegexLiteral,
      RestProperty: RestProperty,
      SpreadProperty: SpreadProperty,
      STANDARDIZED_TYPES: STANDARDIZED_TYPES,
      EXPRESSION_TYPES: EXPRESSION_TYPES,
      BINARY_TYPES: BINARY_TYPES,
      SCOPABLE_TYPES: SCOPABLE_TYPES,
      BLOCKPARENT_TYPES: BLOCKPARENT_TYPES,
      BLOCK_TYPES: BLOCK_TYPES,
      STATEMENT_TYPES: STATEMENT_TYPES,
      TERMINATORLESS_TYPES: TERMINATORLESS_TYPES,
      COMPLETIONSTATEMENT_TYPES: COMPLETIONSTATEMENT_TYPES,
      CONDITIONAL_TYPES: CONDITIONAL_TYPES,
      LOOP_TYPES: LOOP_TYPES,
      WHILE_TYPES: WHILE_TYPES,
      EXPRESSIONWRAPPER_TYPES: EXPRESSIONWRAPPER_TYPES,
      FOR_TYPES: FOR_TYPES,
      FORXSTATEMENT_TYPES: FORXSTATEMENT_TYPES,
      FUNCTION_TYPES: FUNCTION_TYPES$1,
      FUNCTIONPARENT_TYPES: FUNCTIONPARENT_TYPES,
      PUREISH_TYPES: PUREISH_TYPES,
      DECLARATION_TYPES: DECLARATION_TYPES,
      PATTERNLIKE_TYPES: PATTERNLIKE_TYPES,
      LVAL_TYPES: LVAL_TYPES,
      TSENTITYNAME_TYPES: TSENTITYNAME_TYPES,
      LITERAL_TYPES: LITERAL_TYPES,
      IMMUTABLE_TYPES: IMMUTABLE_TYPES,
      USERWHITESPACABLE_TYPES: USERWHITESPACABLE_TYPES,
      METHOD_TYPES: METHOD_TYPES,
      OBJECTMEMBER_TYPES: OBJECTMEMBER_TYPES,
      PROPERTY_TYPES: PROPERTY_TYPES,
      UNARYLIKE_TYPES: UNARYLIKE_TYPES,
      PATTERN_TYPES: PATTERN_TYPES,
      CLASS_TYPES: CLASS_TYPES,
      IMPORTOREXPORTDECLARATION_TYPES: IMPORTOREXPORTDECLARATION_TYPES,
      EXPORTDECLARATION_TYPES: EXPORTDECLARATION_TYPES,
      MODULESPECIFIER_TYPES: MODULESPECIFIER_TYPES,
      ACCESSOR_TYPES: ACCESSOR_TYPES,
      PRIVATE_TYPES: PRIVATE_TYPES,
      FLOW_TYPES: FLOW_TYPES,
      FLOWTYPE_TYPES: FLOWTYPE_TYPES,
      FLOWBASEANNOTATION_TYPES: FLOWBASEANNOTATION_TYPES,
      FLOWDECLARATION_TYPES: FLOWDECLARATION_TYPES,
      FLOWPREDICATE_TYPES: FLOWPREDICATE_TYPES,
      ENUMBODY_TYPES: ENUMBODY_TYPES,
      ENUMMEMBER_TYPES: ENUMMEMBER_TYPES,
      JSX_TYPES: JSX_TYPES,
      MISCELLANEOUS_TYPES: MISCELLANEOUS_TYPES,
      TYPESCRIPT_TYPES: TYPESCRIPT_TYPES,
      TSTYPEELEMENT_TYPES: TSTYPEELEMENT_TYPES,
      TSTYPE_TYPES: TSTYPE_TYPES,
      TSBASETYPE_TYPES: TSBASETYPE_TYPES,
      MODULEDECLARATION_TYPES: MODULEDECLARATION_TYPES,
      STATEMENT_OR_BLOCK_KEYS: STATEMENT_OR_BLOCK_KEYS$1,
      FLATTENABLE_KEYS: FLATTENABLE_KEYS,
      FOR_INIT_KEYS: FOR_INIT_KEYS,
      COMMENT_KEYS: COMMENT_KEYS,
      LOGICAL_OPERATORS: LOGICAL_OPERATORS$3,
      UPDATE_OPERATORS: UPDATE_OPERATORS,
      BOOLEAN_NUMBER_BINARY_OPERATORS: BOOLEAN_NUMBER_BINARY_OPERATORS$1,
      EQUALITY_BINARY_OPERATORS: EQUALITY_BINARY_OPERATORS,
      COMPARISON_BINARY_OPERATORS: COMPARISON_BINARY_OPERATORS,
      BOOLEAN_BINARY_OPERATORS: BOOLEAN_BINARY_OPERATORS$1,
      NUMBER_BINARY_OPERATORS: NUMBER_BINARY_OPERATORS$1,
      BINARY_OPERATORS: BINARY_OPERATORS,
      ASSIGNMENT_OPERATORS: ASSIGNMENT_OPERATORS,
      BOOLEAN_UNARY_OPERATORS: BOOLEAN_UNARY_OPERATORS$1,
      NUMBER_UNARY_OPERATORS: NUMBER_UNARY_OPERATORS$1,
      STRING_UNARY_OPERATORS: STRING_UNARY_OPERATORS$1,
      UNARY_OPERATORS: UNARY_OPERATORS,
      INHERIT_KEYS: INHERIT_KEYS,
      BLOCK_SCOPED_SYMBOL: BLOCK_SCOPED_SYMBOL,
      NOT_LOCAL_BINDING: NOT_LOCAL_BINDING$2,
      VISITOR_KEYS: VISITOR_KEYS$5,
      ALIAS_KEYS: ALIAS_KEYS,
      FLIPPED_ALIAS_KEYS: FLIPPED_ALIAS_KEYS$3,
      NODE_FIELDS: NODE_FIELDS,
      BUILDER_KEYS: BUILDER_KEYS,
      DEPRECATED_ALIASES: DEPRECATED_ALIASES$1,
      DEPRECATED_KEYS: DEPRECATED_KEYS$1,
      NODE_PARENT_VALIDATIONS: NODE_PARENT_VALIDATIONS,
      PLACEHOLDERS: PLACEHOLDERS,
      PLACEHOLDERS_ALIAS: PLACEHOLDERS_ALIAS,
      PLACEHOLDERS_FLIPPED_ALIAS: PLACEHOLDERS_FLIPPED_ALIAS,
      TYPES: TYPES$1,
      isArrayExpression: isArrayExpression$2,
      isAssignmentExpression: isAssignmentExpression$4,
      isBinaryExpression: isBinaryExpression$1,
      isInterpreterDirective: isInterpreterDirective,
      isDirective: isDirective,
      isDirectiveLiteral: isDirectiveLiteral,
      isBlockStatement: isBlockStatement$2,
      isBreakStatement: isBreakStatement,
      isCallExpression: isCallExpression$8,
      isCatchClause: isCatchClause,
      isConditionalExpression: isConditionalExpression$1,
      isContinueStatement: isContinueStatement,
      isDebuggerStatement: isDebuggerStatement,
      isDoWhileStatement: isDoWhileStatement,
      isEmptyStatement: isEmptyStatement,
      isExpressionStatement: isExpressionStatement$3,
      isFile: isFile,
      isForInStatement: isForInStatement$1,
      isForStatement: isForStatement$3,
      isFunctionDeclaration: isFunctionDeclaration$2,
      isFunctionExpression: isFunctionExpression$1,
      isIdentifier: isIdentifier$j,
      isIfStatement: isIfStatement$2,
      isLabeledStatement: isLabeledStatement,
      isStringLiteral: isStringLiteral$6,
      isNumericLiteral: isNumericLiteral,
      isNullLiteral: isNullLiteral$2,
      isBooleanLiteral: isBooleanLiteral,
      isRegExpLiteral: isRegExpLiteral$2,
      isLogicalExpression: isLogicalExpression$1,
      isMemberExpression: isMemberExpression$8,
      isNewExpression: isNewExpression$4,
      isProgram: isProgram$1,
      isObjectExpression: isObjectExpression$3,
      isObjectMethod: isObjectMethod$1,
      isObjectProperty: isObjectProperty$5,
      isRestElement: isRestElement$3,
      isReturnStatement: isReturnStatement$1,
      isSequenceExpression: isSequenceExpression$2,
      isParenthesizedExpression: isParenthesizedExpression$1,
      isSwitchCase: isSwitchCase,
      isSwitchStatement: isSwitchStatement$1,
      isThisExpression: isThisExpression$2,
      isThrowStatement: isThrowStatement$1,
      isTryStatement: isTryStatement,
      isUnaryExpression: isUnaryExpression$1,
      isUpdateExpression: isUpdateExpression$2,
      isVariableDeclaration: isVariableDeclaration$3,
      isVariableDeclarator: isVariableDeclarator$2,
      isWhileStatement: isWhileStatement$1,
      isWithStatement: isWithStatement,
      isAssignmentPattern: isAssignmentPattern$5,
      isArrayPattern: isArrayPattern$1,
      isArrowFunctionExpression: isArrowFunctionExpression$1,
      isClassBody: isClassBody$2,
      isClassExpression: isClassExpression$1,
      isClassDeclaration: isClassDeclaration$2,
      isExportAllDeclaration: isExportAllDeclaration$1,
      isExportDefaultDeclaration: isExportDefaultDeclaration$3,
      isExportNamedDeclaration: isExportNamedDeclaration$3,
      isExportSpecifier: isExportSpecifier,
      isForOfStatement: isForOfStatement$2,
      isImportDeclaration: isImportDeclaration$2,
      isImportDefaultSpecifier: isImportDefaultSpecifier$1,
      isImportNamespaceSpecifier: isImportNamespaceSpecifier$1,
      isImportSpecifier: isImportSpecifier$1,
      isMetaProperty: isMetaProperty$1,
      isClassMethod: isClassMethod,
      isObjectPattern: isObjectPattern$2,
      isSpreadElement: isSpreadElement$1,
      isSuper: isSuper$3,
      isTaggedTemplateExpression: isTaggedTemplateExpression$2,
      isTemplateElement: isTemplateElement,
      isTemplateLiteral: isTemplateLiteral$2,
      isYieldExpression: isYieldExpression$1,
      isAwaitExpression: isAwaitExpression$1,
      isImport: isImport,
      isBigIntLiteral: isBigIntLiteral,
      isExportNamespaceSpecifier: isExportNamespaceSpecifier$1,
      isOptionalMemberExpression: isOptionalMemberExpression$3,
      isOptionalCallExpression: isOptionalCallExpression$3,
      isClassProperty: isClassProperty,
      isClassAccessorProperty: isClassAccessorProperty,
      isClassPrivateProperty: isClassPrivateProperty,
      isClassPrivateMethod: isClassPrivateMethod,
      isPrivateName: isPrivateName$3,
      isStaticBlock: isStaticBlock,
      isAnyTypeAnnotation: isAnyTypeAnnotation$1,
      isArrayTypeAnnotation: isArrayTypeAnnotation$2,
      isBooleanTypeAnnotation: isBooleanTypeAnnotation$1,
      isBooleanLiteralTypeAnnotation: isBooleanLiteralTypeAnnotation,
      isNullLiteralTypeAnnotation: isNullLiteralTypeAnnotation,
      isClassImplements: isClassImplements,
      isDeclareClass: isDeclareClass,
      isDeclareFunction: isDeclareFunction,
      isDeclareInterface: isDeclareInterface,
      isDeclareModule: isDeclareModule,
      isDeclareModuleExports: isDeclareModuleExports,
      isDeclareTypeAlias: isDeclareTypeAlias,
      isDeclareOpaqueType: isDeclareOpaqueType,
      isDeclareVariable: isDeclareVariable,
      isDeclareExportDeclaration: isDeclareExportDeclaration$1,
      isDeclareExportAllDeclaration: isDeclareExportAllDeclaration,
      isDeclaredPredicate: isDeclaredPredicate,
      isExistsTypeAnnotation: isExistsTypeAnnotation,
      isFunctionTypeAnnotation: isFunctionTypeAnnotation,
      isFunctionTypeParam: isFunctionTypeParam,
      isGenericTypeAnnotation: isGenericTypeAnnotation$1,
      isInferredPredicate: isInferredPredicate,
      isInterfaceExtends: isInterfaceExtends,
      isInterfaceDeclaration: isInterfaceDeclaration,
      isInterfaceTypeAnnotation: isInterfaceTypeAnnotation,
      isIntersectionTypeAnnotation: isIntersectionTypeAnnotation$1,
      isMixedTypeAnnotation: isMixedTypeAnnotation$1,
      isEmptyTypeAnnotation: isEmptyTypeAnnotation$1,
      isNullableTypeAnnotation: isNullableTypeAnnotation$1,
      isNumberLiteralTypeAnnotation: isNumberLiteralTypeAnnotation,
      isNumberTypeAnnotation: isNumberTypeAnnotation$1,
      isObjectTypeAnnotation: isObjectTypeAnnotation,
      isObjectTypeInternalSlot: isObjectTypeInternalSlot,
      isObjectTypeCallProperty: isObjectTypeCallProperty,
      isObjectTypeIndexer: isObjectTypeIndexer,
      isObjectTypeProperty: isObjectTypeProperty,
      isObjectTypeSpreadProperty: isObjectTypeSpreadProperty,
      isOpaqueType: isOpaqueType,
      isQualifiedTypeIdentifier: isQualifiedTypeIdentifier,
      isStringLiteralTypeAnnotation: isStringLiteralTypeAnnotation,
      isStringTypeAnnotation: isStringTypeAnnotation$1,
      isSymbolTypeAnnotation: isSymbolTypeAnnotation,
      isThisTypeAnnotation: isThisTypeAnnotation,
      isTupleTypeAnnotation: isTupleTypeAnnotation$1,
      isTypeofTypeAnnotation: isTypeofTypeAnnotation,
      isTypeAlias: isTypeAlias,
      isTypeAnnotation: isTypeAnnotation$2,
      isTypeCastExpression: isTypeCastExpression$1,
      isTypeParameter: isTypeParameter,
      isTypeParameterDeclaration: isTypeParameterDeclaration,
      isTypeParameterInstantiation: isTypeParameterInstantiation,
      isUnionTypeAnnotation: isUnionTypeAnnotation$2,
      isVariance: isVariance,
      isVoidTypeAnnotation: isVoidTypeAnnotation$1,
      isEnumDeclaration: isEnumDeclaration,
      isEnumBooleanBody: isEnumBooleanBody,
      isEnumNumberBody: isEnumNumberBody,
      isEnumStringBody: isEnumStringBody,
      isEnumSymbolBody: isEnumSymbolBody,
      isEnumBooleanMember: isEnumBooleanMember,
      isEnumNumberMember: isEnumNumberMember,
      isEnumStringMember: isEnumStringMember,
      isEnumDefaultedMember: isEnumDefaultedMember,
      isIndexedAccessType: isIndexedAccessType$1,
      isOptionalIndexedAccessType: isOptionalIndexedAccessType,
      isJSXAttribute: isJSXAttribute,
      isJSXClosingElement: isJSXClosingElement,
      isJSXElement: isJSXElement,
      isJSXEmptyExpression: isJSXEmptyExpression,
      isJSXExpressionContainer: isJSXExpressionContainer$1,
      isJSXSpreadChild: isJSXSpreadChild,
      isJSXIdentifier: isJSXIdentifier$3,
      isJSXMemberExpression: isJSXMemberExpression$2,
      isJSXNamespacedName: isJSXNamespacedName$1,
      isJSXOpeningElement: isJSXOpeningElement,
      isJSXSpreadAttribute: isJSXSpreadAttribute$1,
      isJSXText: isJSXText,
      isJSXFragment: isJSXFragment,
      isJSXOpeningFragment: isJSXOpeningFragment,
      isJSXClosingFragment: isJSXClosingFragment,
      isNoop: isNoop,
      isPlaceholder: isPlaceholder$1,
      isV8IntrinsicIdentifier: isV8IntrinsicIdentifier,
      isArgumentPlaceholder: isArgumentPlaceholder,
      isBindExpression: isBindExpression,
      isImportAttribute: isImportAttribute,
      isDecorator: isDecorator,
      isDoExpression: isDoExpression,
      isExportDefaultSpecifier: isExportDefaultSpecifier$1,
      isRecordExpression: isRecordExpression$1,
      isTupleExpression: isTupleExpression$1,
      isDecimalLiteral: isDecimalLiteral,
      isModuleExpression: isModuleExpression,
      isTopicReference: isTopicReference$1,
      isPipelineTopicExpression: isPipelineTopicExpression,
      isPipelineBareFunction: isPipelineBareFunction,
      isPipelinePrimaryTopicReference: isPipelinePrimaryTopicReference,
      isTSParameterProperty: isTSParameterProperty,
      isTSDeclareFunction: isTSDeclareFunction,
      isTSDeclareMethod: isTSDeclareMethod,
      isTSQualifiedName: isTSQualifiedName,
      isTSCallSignatureDeclaration: isTSCallSignatureDeclaration,
      isTSConstructSignatureDeclaration: isTSConstructSignatureDeclaration,
      isTSPropertySignature: isTSPropertySignature,
      isTSMethodSignature: isTSMethodSignature,
      isTSIndexSignature: isTSIndexSignature,
      isTSAnyKeyword: isTSAnyKeyword,
      isTSBooleanKeyword: isTSBooleanKeyword,
      isTSBigIntKeyword: isTSBigIntKeyword,
      isTSIntrinsicKeyword: isTSIntrinsicKeyword,
      isTSNeverKeyword: isTSNeverKeyword,
      isTSNullKeyword: isTSNullKeyword,
      isTSNumberKeyword: isTSNumberKeyword,
      isTSObjectKeyword: isTSObjectKeyword,
      isTSStringKeyword: isTSStringKeyword,
      isTSSymbolKeyword: isTSSymbolKeyword,
      isTSUndefinedKeyword: isTSUndefinedKeyword,
      isTSUnknownKeyword: isTSUnknownKeyword,
      isTSVoidKeyword: isTSVoidKeyword,
      isTSThisType: isTSThisType,
      isTSFunctionType: isTSFunctionType,
      isTSConstructorType: isTSConstructorType,
      isTSTypeReference: isTSTypeReference$1,
      isTSTypePredicate: isTSTypePredicate,
      isTSTypeQuery: isTSTypeQuery,
      isTSTypeLiteral: isTSTypeLiteral,
      isTSArrayType: isTSArrayType$2,
      isTSTupleType: isTSTupleType,
      isTSOptionalType: isTSOptionalType$1,
      isTSRestType: isTSRestType$1,
      isTSNamedTupleMember: isTSNamedTupleMember,
      isTSUnionType: isTSUnionType$1,
      isTSIntersectionType: isTSIntersectionType$1,
      isTSConditionalType: isTSConditionalType,
      isTSInferType: isTSInferType,
      isTSParenthesizedType: isTSParenthesizedType,
      isTSTypeOperator: isTSTypeOperator,
      isTSIndexedAccessType: isTSIndexedAccessType,
      isTSMappedType: isTSMappedType,
      isTSLiteralType: isTSLiteralType,
      isTSExpressionWithTypeArguments: isTSExpressionWithTypeArguments,
      isTSInterfaceDeclaration: isTSInterfaceDeclaration,
      isTSInterfaceBody: isTSInterfaceBody$1,
      isTSTypeAliasDeclaration: isTSTypeAliasDeclaration,
      isTSInstantiationExpression: isTSInstantiationExpression$1,
      isTSAsExpression: isTSAsExpression$2,
      isTSSatisfiesExpression: isTSSatisfiesExpression$2,
      isTSTypeAssertion: isTSTypeAssertion$2,
      isTSEnumDeclaration: isTSEnumDeclaration$1,
      isTSEnumMember: isTSEnumMember,
      isTSModuleDeclaration: isTSModuleDeclaration,
      isTSModuleBlock: isTSModuleBlock,
      isTSImportType: isTSImportType,
      isTSImportEqualsDeclaration: isTSImportEqualsDeclaration,
      isTSExternalModuleReference: isTSExternalModuleReference,
      isTSNonNullExpression: isTSNonNullExpression$2,
      isTSExportAssignment: isTSExportAssignment,
      isTSNamespaceExportDeclaration: isTSNamespaceExportDeclaration,
      isTSTypeAnnotation: isTSTypeAnnotation$1,
      isTSTypeParameterInstantiation: isTSTypeParameterInstantiation,
      isTSTypeParameterDeclaration: isTSTypeParameterDeclaration,
      isTSTypeParameter: isTSTypeParameter,
      isStandardized: isStandardized,
      isExpression: isExpression$4,
      isBinary: isBinary$3,
      isScopable: isScopable,
      isBlockParent: isBlockParent,
      isBlock: isBlock,
      isStatement: isStatement$8,
      isTerminatorless: isTerminatorless,
      isCompletionStatement: isCompletionStatement,
      isConditional: isConditional$1,
      isLoop: isLoop$1,
      isWhile: isWhile,
      isExpressionWrapper: isExpressionWrapper,
      isFor: isFor$2,
      isForXStatement: isForXStatement$1,
      isFunction: isFunction$4,
      isFunctionParent: isFunctionParent,
      isPureish: isPureish$2,
      isDeclaration: isDeclaration$1,
      isPatternLike: isPatternLike,
      isLVal: isLVal,
      isTSEntityName: isTSEntityName,
      isLiteral: isLiteral$6,
      isUserWhitespacable: isUserWhitespacable,
      isMethod: isMethod$1,
      isObjectMember: isObjectMember,
      isProperty: isProperty$1,
      isUnaryLike: isUnaryLike$1,
      isPattern: isPattern,
      isClass: isClass$2,
      isImportOrExportDeclaration: isImportOrExportDeclaration,
      isExportDeclaration: isExportDeclaration$3,
      isModuleSpecifier: isModuleSpecifier$1,
      isAccessor: isAccessor,
      isPrivate: isPrivate,
      isFlow: isFlow$1,
      isFlowType: isFlowType$1,
      isFlowBaseAnnotation: isFlowBaseAnnotation$1,
      isFlowDeclaration: isFlowDeclaration,
      isFlowPredicate: isFlowPredicate,
      isEnumBody: isEnumBody,
      isEnumMember: isEnumMember,
      isJSX: isJSX,
      isMiscellaneous: isMiscellaneous,
      isTypeScript: isTypeScript,
      isTSTypeElement: isTSTypeElement,
      isTSType: isTSType,
      isTSBaseType: isTSBaseType,
      isNumberLiteral: isNumberLiteral,
      isRegexLiteral: isRegexLiteral,
      isRestProperty: isRestProperty$1,
      isSpreadProperty: isSpreadProperty$1,
      isModuleDeclaration: isModuleDeclaration
    });
  
    var DEPRECATED_KEYS = DEPRECATED_KEYS$1,
      DEPRECATED_ALIASES = DEPRECATED_ALIASES$1,
      FLIPPED_ALIAS_KEYS$2 = FLIPPED_ALIAS_KEYS$3,
      TYPES = TYPES$1,
      deprecationWarning = deprecationWarning$1;
    function isVirtualType(type) {
      return type in virtualTypes;
    }
    function explode$1(visitor) {
      if (visitor._exploded) return visitor;
      visitor._exploded = true;
      for (var _i = 0, _arr = Object.keys(visitor); _i < _arr.length; _i++) {
        var nodeType = _arr[_i];
        if (shouldIgnoreKey(nodeType)) continue;
        var parts = nodeType.split("|");
        if (parts.length === 1) continue;
        var fns = visitor[nodeType];
        delete visitor[nodeType];
        for (var _iterator = _createForOfIteratorHelperLoose(parts), _step; !(_step = _iterator()).done;) {
          var part = _step.value;
          visitor[part] = fns;
        }
      }
      verify(visitor);
      delete visitor.__esModule;
      ensureEntranceObjects(visitor);
      ensureCallbackArrays(visitor);
      for (var _i2 = 0, _Object$keys = Object.keys(visitor); _i2 < _Object$keys.length; _i2++) {
        var _nodeType = _Object$keys[_i2];
        if (shouldIgnoreKey(_nodeType)) continue;
        if (!isVirtualType(_nodeType)) continue;
        var _fns = visitor[_nodeType];
        for (var _i3 = 0, _Object$keys2 = Object.keys(_fns); _i3 < _Object$keys2.length; _i3++) {
          var type = _Object$keys2[_i3];
          _fns[type] = wrapCheck(_nodeType, _fns[type]);
        }
        delete visitor[_nodeType];
        var types = virtualTypes[_nodeType];
        if (types !== null) {
          for (var _iterator2 = _createForOfIteratorHelperLoose(types), _step2; !(_step2 = _iterator2()).done;) {
            var _type = _step2.value;
            if (visitor[_type]) {
              mergePair(visitor[_type], _fns);
            } else {
              visitor[_type] = _fns;
            }
          }
        } else {
          mergePair(visitor, _fns);
        }
      }
      for (var _i4 = 0, _arr2 = Object.keys(visitor); _i4 < _arr2.length; _i4++) {
        var _nodeType2 = _arr2[_i4];
        if (shouldIgnoreKey(_nodeType2)) continue;
        var aliases = FLIPPED_ALIAS_KEYS$2[_nodeType2];
        if (_nodeType2 in DEPRECATED_KEYS) {
          var deprecatedKey = DEPRECATED_KEYS[_nodeType2];
          deprecationWarning(_nodeType2, deprecatedKey, "Visitor ");
          aliases = [deprecatedKey];
        } else if (_nodeType2 in DEPRECATED_ALIASES) {
          var deprecatedAlias = DEPRECATED_ALIASES[_nodeType2];
          deprecationWarning(_nodeType2, deprecatedAlias, "Visitor ");
          aliases = FLIPPED_ALIAS_KEYS$2[deprecatedAlias];
        }
        if (!aliases) continue;
        var _fns2 = visitor[_nodeType2];
        delete visitor[_nodeType2];
        for (var _iterator3 = _createForOfIteratorHelperLoose(aliases), _step3; !(_step3 = _iterator3()).done;) {
          var alias = _step3.value;
          var existing = visitor[alias];
          if (existing) {
            mergePair(existing, _fns2);
          } else {
            visitor[alias] = Object.assign({}, _fns2);
          }
        }
      }
      for (var _i5 = 0, _Object$keys3 = Object.keys(visitor); _i5 < _Object$keys3.length; _i5++) {
        var _nodeType3 = _Object$keys3[_i5];
        if (shouldIgnoreKey(_nodeType3)) continue;
        ensureCallbackArrays(visitor[_nodeType3]);
      }
      return visitor;
    }
    function verify(visitor) {
      if (visitor._verified) return;
      if (typeof visitor === "function") {
        throw new Error("You passed `traverse()` a function when it expected a visitor object, " + "are you sure you didn't mean `{ enter: Function }`?");
      }
      for (var _i6 = 0, _arr3 = Object.keys(visitor); _i6 < _arr3.length; _i6++) {
        var nodeType = _arr3[_i6];
        if (nodeType === "enter" || nodeType === "exit") {
          validateVisitorMethods(nodeType, visitor[nodeType]);
        }
        if (shouldIgnoreKey(nodeType)) continue;
        if (TYPES.indexOf(nodeType) < 0) {
          throw new Error("You gave us a visitor for the node type " + nodeType + " but it's not a valid type");
        }
        var _visitors = visitor[nodeType];
        if (typeof _visitors === "object") {
          for (var _i7 = 0, _Object$keys4 = Object.keys(_visitors); _i7 < _Object$keys4.length; _i7++) {
            var visitorKey = _Object$keys4[_i7];
            if (visitorKey === "enter" || visitorKey === "exit") {
              validateVisitorMethods(nodeType + "." + visitorKey, _visitors[visitorKey]);
            } else {
              throw new Error("You passed `traverse()` a visitor object with the property " + (nodeType + " that has the invalid property " + visitorKey));
            }
          }
        }
      }
      visitor._verified = true;
    }
    function validateVisitorMethods(path, val) {
      var fns = [].concat(val);
      for (var _iterator4 = _createForOfIteratorHelperLoose(fns), _step4; !(_step4 = _iterator4()).done;) {
        var fn = _step4.value;
        if (typeof fn !== "function") {
          throw new TypeError("Non-function found defined in " + path + " with type " + typeof fn);
        }
      }
    }
    function merge$1(visitors, states, wrapper) {
      if (states === void 0) {
        states = [];
      }
      var rootVisitor = {};
      for (var i = 0; i < visitors.length; i++) {
        var visitor = visitors[i];
        var state = states[i];
        explode$1(visitor);
        for (var _i8 = 0, _arr4 = Object.keys(visitor); _i8 < _arr4.length; _i8++) {
          var type = _arr4[_i8];
          var visitorType = visitor[type];
          if (state || wrapper) {
            visitorType = wrapWithStateOrWrapper(visitorType, state, wrapper);
          }
          var nodeVisitor = rootVisitor[type] || (rootVisitor[type] = {});
          mergePair(nodeVisitor, visitorType);
        }
      }
      return rootVisitor;
    }
    function wrapWithStateOrWrapper(oldVisitor, state, wrapper) {
      var newVisitor = {};
      var _loop = function _loop() {
        var key = _arr5[_i9];
        var fns = oldVisitor[key];
        if (!Array.isArray(fns)) return "continue";
        fns = fns.map(function (fn) {
          var newFn = fn;
          if (state) {
            newFn = function newFn(path) {
              return fn.call(state, path, state);
            };
          }
          if (wrapper) {
            newFn = wrapper(state.key, key, newFn);
          }
          if (newFn !== fn) {
            newFn.toString = function () {
              return fn.toString();
            };
          }
          return newFn;
        });
        newVisitor[key] = fns;
      };
      for (var _i9 = 0, _arr5 = Object.keys(oldVisitor); _i9 < _arr5.length; _i9++) {
        var _ret = _loop();
        if (_ret === "continue") continue;
      }
      return newVisitor;
    }
    function ensureEntranceObjects(obj) {
      for (var _i10 = 0, _arr6 = Object.keys(obj); _i10 < _arr6.length; _i10++) {
        var key = _arr6[_i10];
        if (shouldIgnoreKey(key)) continue;
        var fns = obj[key];
        if (typeof fns === "function") {
          obj[key] = {
            enter: fns
          };
        }
      }
    }
    function ensureCallbackArrays(obj) {
      if (obj.enter && !Array.isArray(obj.enter)) obj.enter = [obj.enter];
      if (obj.exit && !Array.isArray(obj.exit)) obj.exit = [obj.exit];
    }
    function wrapCheck(nodeType, fn) {
      var newFn = function newFn(path) {
        if (path["is" + nodeType]()) {
          return fn.apply(this, arguments);
        }
      };
      newFn.toString = function () {
        return fn.toString();
      };
      return newFn;
    }
    function shouldIgnoreKey(key) {
      if (key[0] === "_") return true;
      if (key === "enter" || key === "exit" || key === "shouldSkip") return true;
      if (key === "denylist" || key === "noScope" || key === "skipKeys") {
        return true;
      }
      {
        if (key === "blacklist") {
          return true;
        }
      }
      return false;
    }
    function mergePair(dest, src) {
      for (var _i11 = 0, _Object$keys5 = Object.keys(src); _i11 < _Object$keys5.length; _i11++) {
        var key = _Object$keys5[_i11];
        dest[key] = [].concat(dest[key] || [], src[key]);
      }
    }
  
    var visitors = /*#__PURE__*/Object.freeze({
      __proto__: null,
      explode: explode$1,
      verify: verify,
      merge: merge$1
    });
  
    var path$2 = new WeakMap();
    var scope = new WeakMap();
    function clear() {
      clearPath();
      clearScope();
    }
    function clearPath() {
      path$2 = new WeakMap();
    }
    function clearScope() {
      scope = new WeakMap();
    }
  
    var cache$1 = /*#__PURE__*/Object.freeze({
      __proto__: null,
      get path () { return path$2; },
      get scope () { return scope; },
      clear: clear,
      clearPath: clearPath,
      clearScope: clearScope
    });
  
    var browser$4 = {exports: {}};
  
    var ms;
    var hasRequiredMs;
    function requireMs() {
      if (hasRequiredMs) return ms;
      hasRequiredMs = 1;
      var s = 1000;
      var m = s * 60;
      var h = m * 60;
      var d = h * 24;
      var w = d * 7;
      var y = d * 365.25;
      ms = function ms(val, options) {
        options = options || {};
        var type = typeof val;
        if (type === 'string' && val.length > 0) {
          return parse(val);
        } else if (type === 'number' && isFinite(val)) {
          return options["long"] ? fmtLong(val) : fmtShort(val);
        }
        throw new Error('val is not a non-empty string or a valid number. val=' + JSON.stringify(val));
      };
      function parse(str) {
        str = String(str);
        if (str.length > 100) {
          return;
        }
        var match = /^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);
        if (!match) {
          return;
        }
        var n = parseFloat(match[1]);
        var type = (match[2] || 'ms').toLowerCase();
        switch (type) {
          case 'years':
          case 'year':
          case 'yrs':
          case 'yr':
          case 'y':
            return n * y;
          case 'weeks':
          case 'week':
          case 'w':
            return n * w;
          case 'days':
          case 'day':
          case 'd':
            return n * d;
          case 'hours':
          case 'hour':
          case 'hrs':
          case 'hr':
          case 'h':
            return n * h;
          case 'minutes':
          case 'minute':
          case 'mins':
          case 'min':
          case 'm':
            return n * m;
          case 'seconds':
          case 'second':
          case 'secs':
          case 'sec':
          case 's':
            return n * s;
          case 'milliseconds':
          case 'millisecond':
          case 'msecs':
          case 'msec':
          case 'ms':
            return n;
          default:
            return undefined;
        }
      }
      function fmtShort(ms) {
        var msAbs = Math.abs(ms);
        if (msAbs >= d) {
          return Math.round(ms / d) + 'd';
        }
        if (msAbs >= h) {
          return Math.round(ms / h) + 'h';
        }
        if (msAbs >= m) {
          return Math.round(ms / m) + 'm';
        }
        if (msAbs >= s) {
          return Math.round(ms / s) + 's';
        }
        return ms + 'ms';
      }
      function fmtLong(ms) {
        var msAbs = Math.abs(ms);
        if (msAbs >= d) {
          return plural(ms, msAbs, d, 'day');
        }
        if (msAbs >= h) {
          return plural(ms, msAbs, h, 'hour');
        }
        if (msAbs >= m) {
          return plural(ms, msAbs, m, 'minute');
        }
        if (msAbs >= s) {
          return plural(ms, msAbs, s, 'second');
        }
        return ms + ' ms';
      }
      function plural(ms, msAbs, n, name) {
        var isPlural = msAbs >= n * 1.5;
        return Math.round(ms / n) + ' ' + name + (isPlural ? 's' : '');
      }
      return ms;
    }
  
    function setup$1(env) {
      createDebug.debug = createDebug;
      createDebug["default"] = createDebug;
      createDebug.coerce = coerce;
      createDebug.disable = disable;
      createDebug.enable = enable;
      createDebug.enabled = enabled;
      createDebug.humanize = requireMs();
      createDebug.destroy = destroy;
      Object.keys(env).forEach(function (key) {
        createDebug[key] = env[key];
      });
      createDebug.names = [];
      createDebug.skips = [];
      createDebug.formatters = {};
      function selectColor(namespace) {
        var hash = 0;
        for (var i = 0; i < namespace.length; i++) {
          hash = (hash << 5) - hash + namespace.charCodeAt(i);
          hash |= 0;
        }
        return createDebug.colors[Math.abs(hash) % createDebug.colors.length];
      }
      createDebug.selectColor = selectColor;
      function createDebug(namespace) {
        var prevTime;
        var enableOverride = null;
        var namespacesCache;
        var enabledCache;
        function debug() {
          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
            args[_key] = arguments[_key];
          }
          if (!debug.enabled) {
            return;
          }
          var self = debug;
          var curr = Number(new Date());
          var ms = curr - (prevTime || curr);
          self.diff = ms;
          self.prev = prevTime;
          self.curr = curr;
          prevTime = curr;
          args[0] = createDebug.coerce(args[0]);
          if (typeof args[0] !== 'string') {
            args.unshift('%O');
          }
          var index = 0;
          args[0] = args[0].replace(/%([a-zA-Z%])/g, function (match, format) {
            if (match === '%%') {
              return '%';
            }
            index++;
            var formatter = createDebug.formatters[format];
            if (typeof formatter === 'function') {
              var val = args[index];
              match = formatter.call(self, val);
              args.splice(index, 1);
              index--;
            }
            return match;
          });
          createDebug.formatArgs.call(self, args);
          var logFn = self.log || createDebug.log;
          logFn.apply(self, args);
        }
        debug.namespace = namespace;
        debug.useColors = createDebug.useColors();
        debug.color = createDebug.selectColor(namespace);
        debug.extend = extend;
        debug.destroy = createDebug.destroy;
        Object.defineProperty(debug, 'enabled', {
          enumerable: true,
          configurable: false,
          get: function get() {
            if (enableOverride !== null) {
              return enableOverride;
            }
            if (namespacesCache !== createDebug.namespaces) {
              namespacesCache = createDebug.namespaces;
              enabledCache = createDebug.enabled(namespace);
            }
            return enabledCache;
          },
          set: function set(v) {
            enableOverride = v;
          }
        });
        if (typeof createDebug.init === 'function') {
          createDebug.init(debug);
        }
        return debug;
      }
      function extend(namespace, delimiter) {
        var newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);
        newDebug.log = this.log;
        return newDebug;
      }
      function enable(namespaces) {
        createDebug.save(namespaces);
        createDebug.namespaces = namespaces;
        createDebug.names = [];
        createDebug.skips = [];
        var i;
        var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
        var len = split.length;
        for (i = 0; i < len; i++) {
          if (!split[i]) {
            continue;
          }
          namespaces = split[i].replace(/\*/g, '.*?');
          if (namespaces[0] === '-') {
            createDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));
          } else {
            createDebug.names.push(new RegExp('^' + namespaces + '$'));
          }
        }
      }
      function disable() {
        var namespaces = [].concat(_toConsumableArray(createDebug.names.map(toNamespace)), _toConsumableArray(createDebug.skips.map(toNamespace).map(function (namespace) {
          return '-' + namespace;
        }))).join(',');
        createDebug.enable('');
        return namespaces;
      }
      function enabled(name) {
        if (name[name.length - 1] === '*') {
          return true;
        }
        var i;
        var len;
        for (i = 0, len = createDebug.skips.length; i < len; i++) {
          if (createDebug.skips[i].test(name)) {
            return false;
          }
        }
        for (i = 0, len = createDebug.names.length; i < len; i++) {
          if (createDebug.names[i].test(name)) {
            return true;
          }
        }
        return false;
      }
      function toNamespace(regexp) {
        return regexp.toString().substring(2, regexp.toString().length - 2).replace(/\.\*\?$/, '*');
      }
      function coerce(val) {
        if (val instanceof Error) {
          return val.stack || val.message;
        }
        return val;
      }
      function destroy() {
        console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');
      }
      createDebug.enable(createDebug.load());
      return createDebug;
    }
    var common = setup$1;
  
    (function (module, exports) {
      exports.formatArgs = formatArgs;
      exports.save = save;
      exports.load = load;
      exports.useColors = useColors;
      exports.storage = localstorage();
      exports.destroy = function () {
        var warned = false;
        return function () {
          if (!warned) {
            warned = true;
            console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');
          }
        };
      }();
      exports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];
      function useColors() {
        if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {
          return true;
        }
        if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) {
          return false;
        }
        return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31 || typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/);
      }
      function formatArgs(args) {
        args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);
        if (!this.useColors) {
          return;
        }
        var c = 'color: ' + this.color;
        args.splice(1, 0, c, 'color: inherit');
        var index = 0;
        var lastC = 0;
        args[0].replace(/%[a-zA-Z%]/g, function (match) {
          if (match === '%%') {
            return;
          }
          index++;
          if (match === '%c') {
            lastC = index;
          }
        });
        args.splice(lastC, 0, c);
      }
      exports.log = console.debug || console.log || function () {};
      function save(namespaces) {
        try {
          if (namespaces) {
            exports.storage.setItem('debug', namespaces);
          } else {
            exports.storage.removeItem('debug');
          }
        } catch (error) {}
      }
      function load() {
        var r;
        try {
          r = exports.storage.getItem('debug');
        } catch (error) {}
        if (!r && typeof browser$1$1 !== 'undefined' && 'env' in browser$1$1) {
          r = browser$1$1.env.DEBUG;
        }
        return r;
      }
      function localstorage() {
        try {
          return localStorage;
        } catch (error) {}
      }
      module.exports = common(exports);
      var formatters = module.exports.formatters;
      formatters.j = function (v) {
        try {
          return JSON.stringify(v);
        } catch (error) {
          return '[UnexpectedJSONParseError]: ' + error.message;
        }
      };
    })(browser$4, browser$4.exports);
    var buildDebug = browser$4.exports;
  
    var cloneNode$i = cloneNode$j,
      exportNamedDeclaration$1 = exportNamedDeclaration$2,
      exportSpecifier$1 = exportSpecifier$2,
      identifier$h = identifier$i,
      variableDeclaration$7 = variableDeclaration$8,
      variableDeclarator$7 = variableDeclarator$8;
    function splitExportDeclaration(exportDeclaration) {
      if (!exportDeclaration.isExportDeclaration() || exportDeclaration.isExportAllDeclaration()) {
        throw new Error("Only default and named export declarations can be split.");
      }
      if (exportDeclaration.isExportDefaultDeclaration()) {
        var _declaration = exportDeclaration.get("declaration");
        var standaloneDeclaration = _declaration.isFunctionDeclaration() || _declaration.isClassDeclaration();
        var scope = _declaration.isScope() ? _declaration.scope.parent : _declaration.scope;
        var id = _declaration.node.id;
        var needBindingRegistration = false;
        if (!id) {
          needBindingRegistration = true;
          id = scope.generateUidIdentifier("default");
          if (standaloneDeclaration || _declaration.isFunctionExpression() || _declaration.isClassExpression()) {
            _declaration.node.id = cloneNode$i(id);
          }
        }
        var updatedDeclaration = standaloneDeclaration ? _declaration.node : variableDeclaration$7("var", [variableDeclarator$7(cloneNode$i(id), _declaration.node)]);
        var updatedExportDeclaration = exportNamedDeclaration$1(null, [exportSpecifier$1(cloneNode$i(id), identifier$h("default"))]);
        exportDeclaration.insertAfter(updatedExportDeclaration);
        exportDeclaration.replaceWith(updatedDeclaration);
        if (needBindingRegistration) {
          scope.registerDeclaration(exportDeclaration);
        }
        return exportDeclaration;
      } else if (exportDeclaration.get("specifiers").length > 0) {
        throw new Error("It doesn't make sense to split exported specifiers.");
      }
      var declaration = exportDeclaration.get("declaration");
      var bindingIdentifiers = declaration.getOuterBindingIdentifiers();
      var specifiers = Object.keys(bindingIdentifiers).map(function (name) {
        return exportSpecifier$1(identifier$h(name), identifier$h(name));
      });
      var aliasDeclar = exportNamedDeclaration$1(null, specifiers);
      exportDeclaration.insertAfter(aliasDeclar);
      exportDeclaration.replaceWith(declaration.node);
      return exportDeclaration;
    }
  
    function requeueComputedKeyAndDecorators(path) {
      var context = path.context,
        node = path.node;
      if (node.computed) {
        context.maybeQueue(path.get("key"));
      }
      if (node.decorators) {
        for (var _iterator = _createForOfIteratorHelperLoose(path.get("decorators")), _step; !(_step = _iterator()).done;) {
          var decorator = _step.value;
          context.maybeQueue(decorator);
        }
      }
    }
    var visitor$5 = {
      FunctionParent: function FunctionParent(path) {
        if (path.isArrowFunctionExpression()) {
          return;
        } else {
          path.skip();
          if (path.isMethod()) {
            requeueComputedKeyAndDecorators(path);
          }
        }
      },
      Property: function Property(path) {
        if (path.isObjectProperty()) {
          return;
        }
        path.skip();
        requeueComputedKeyAndDecorators(path);
      }
    };
  
    var renameVisitor = {
      ReferencedIdentifier: function ReferencedIdentifier(_ref, state) {
        var node = _ref.node;
        if (node.name === state.oldName) {
          node.name = state.newName;
        }
      },
      Scope: function Scope(path, state) {
        if (!path.scope.bindingIdentifierEquals(state.oldName, state.binding.identifier)) {
          path.skip();
          if (path.isMethod()) {
            requeueComputedKeyAndDecorators(path);
          }
        }
      },
      "AssignmentExpression|Declaration|VariableDeclarator": function AssignmentExpressionDeclarationVariableDeclarator(path, state) {
        if (path.isVariableDeclaration()) return;
        var ids = path.getOuterBindingIdentifiers();
        for (var name in ids) {
          if (name === state.oldName) ids[name].name = state.newName;
        }
      }
    };
    var Renamer = function () {
      function Renamer(binding, oldName, newName) {
        this.newName = newName;
        this.oldName = oldName;
        this.binding = binding;
      }
      var _proto = Renamer.prototype;
      _proto.maybeConvertFromExportDeclaration = function maybeConvertFromExportDeclaration(parentDeclar) {
        var maybeExportDeclar = parentDeclar.parentPath;
        if (!maybeExportDeclar.isExportDeclaration()) {
          return;
        }
        if (maybeExportDeclar.isExportDefaultDeclaration()) {
          var declaration = maybeExportDeclar.node.declaration;
          if (isDeclaration$1(declaration) && !declaration.id) {
            return;
          }
        }
        if (maybeExportDeclar.isExportAllDeclaration()) {
          return;
        }
        splitExportDeclaration(maybeExportDeclar);
      };
      _proto.maybeConvertFromClassFunctionDeclaration = function maybeConvertFromClassFunctionDeclaration(path) {
        return path;
      };
      _proto.maybeConvertFromClassFunctionExpression = function maybeConvertFromClassFunctionExpression(path) {
        return path;
      };
      _proto.rename = function rename() {
        var binding = this.binding,
          oldName = this.oldName,
          newName = this.newName;
        var scope = binding.scope,
          path = binding.path;
        var parentDeclar = path.find(function (path) {
          return path.isDeclaration() || path.isFunctionExpression() || path.isClassExpression();
        });
        if (parentDeclar) {
          var bindingIds = parentDeclar.getOuterBindingIdentifiers();
          if (bindingIds[oldName] === binding.identifier) {
            this.maybeConvertFromExportDeclaration(parentDeclar);
          }
        }
        var blockToTraverse = arguments[0] || scope.block;
        traverseNode(blockToTraverse, explode$1(renameVisitor), scope, this, scope.path, {
          discriminant: true
        });
        if (!arguments[0]) {
          scope.removeOwnBinding(oldName);
          scope.bindings[newName] = binding;
          this.binding.identifier.name = newName;
        }
        if (parentDeclar) {
          this.maybeConvertFromClassFunctionDeclaration(path);
          this.maybeConvertFromClassFunctionExpression(path);
        }
      };
      return _createClass(Renamer);
    }();
  
    var Binding = function () {
      function Binding(_ref) {
        var identifier = _ref.identifier,
          scope = _ref.scope,
          path = _ref.path,
          kind = _ref.kind;
        this.identifier = void 0;
        this.scope = void 0;
        this.path = void 0;
        this.kind = void 0;
        this.constantViolations = [];
        this.constant = true;
        this.referencePaths = [];
        this.referenced = false;
        this.references = 0;
        this.identifier = identifier;
        this.scope = scope;
        this.path = path;
        this.kind = kind;
        if ((kind === "var" || kind === "hoisted") && isDeclaredInLoop(path || function () {
          throw new Error("Internal Babel error: unreachable ");
        }())) {
          this.reassign(path);
        }
        this.clearValue();
      }
      var _proto = Binding.prototype;
      _proto.deoptValue = function deoptValue() {
        this.clearValue();
        this.hasDeoptedValue = true;
      };
      _proto.setValue = function setValue(value) {
        if (this.hasDeoptedValue) return;
        this.hasValue = true;
        this.value = value;
      };
      _proto.clearValue = function clearValue() {
        this.hasDeoptedValue = false;
        this.hasValue = false;
        this.value = null;
      };
      _proto.reassign = function reassign(path) {
        this.constant = false;
        if (this.constantViolations.indexOf(path) !== -1) {
          return;
        }
        this.constantViolations.push(path);
      };
      _proto.reference = function reference(path) {
        if (this.referencePaths.indexOf(path) !== -1) {
          return;
        }
        this.referenced = true;
        this.references++;
        this.referencePaths.push(path);
      };
      _proto.dereference = function dereference() {
        this.references--;
        this.referenced = !!this.references;
      };
      return _createClass(Binding);
    }();
    function isDeclaredInLoop(path) {
      for (var parentPath = path.parentPath, key = path.key; parentPath; _parentPath = parentPath, parentPath = _parentPath.parentPath, key = _parentPath.key, _parentPath) {
        var _parentPath;
        if (parentPath.isFunctionParent()) return false;
        if (parentPath.isWhile() || parentPath.isForXStatement() || parentPath.isForStatement() && key === "body") {
          return true;
        }
      }
      return false;
    }
  
    var builtin$1 = {
        "Array": false,
        "ArrayBuffer": false,
        Atomics: false,
        BigInt: false,
        BigInt64Array: false,
        BigUint64Array: false,
        "Boolean": false,
        constructor: false,
        "DataView": false,
        "Date": false,
        "decodeURI": false,
        "decodeURIComponent": false,
        "encodeURI": false,
        "encodeURIComponent": false,
        "Error": false,
        "escape": false,
        "eval": false,
        "EvalError": false,
        FinalizationRegistry: false,
        "Float32Array": false,
        "Float64Array": false,
        "Function": false,
        globalThis: false,
        hasOwnProperty: false,
        "Infinity": false,
        "Int16Array": false,
        "Int32Array": false,
        "Int8Array": false,
        "isFinite": false,
        "isNaN": false,
        isPrototypeOf: false,
        "JSON": false,
        "Map": false,
        "Math": false,
        "NaN": false,
        "Number": false,
        "Object": false,
        "parseFloat": false,
        "parseInt": false,
        "Promise": false,
        propertyIsEnumerable: false,
        "Proxy": false,
        "RangeError": false,
        "ReferenceError": false,
        "Reflect": false,
        "RegExp": false,
        "Set": false,
        SharedArrayBuffer: false,
        "String": false,
        "Symbol": false,
        "SyntaxError": false,
        toLocaleString: false,
        toString: false,
        "TypeError": false,
        "Uint16Array": false,
        "Uint32Array": false,
        "Uint8Array": false,
        "Uint8ClampedArray": false,
        "undefined": false,
        "unescape": false,
        "URIError": false,
        valueOf: false,
        "WeakMap": false,
        WeakRef: false,
        "WeakSet": false
    };
    var es5$1 = {
        "Array": false,
        "Boolean": false,
        constructor: false,
        "Date": false,
        "decodeURI": false,
        "decodeURIComponent": false,
        "encodeURI": false,
        "encodeURIComponent": false,
        "Error": false,
        "escape": false,
        "eval": false,
        "EvalError": false,
        "Function": false,
        hasOwnProperty: false,
        "Infinity": false,
        "isFinite": false,
        "isNaN": false,
        isPrototypeOf: false,
        "JSON": false,
        "Math": false,
        "NaN": false,
        "Number": false,
        "Object": false,
        "parseFloat": false,
        "parseInt": false,
        propertyIsEnumerable: false,
        "RangeError": false,
        "ReferenceError": false,
        "RegExp": false,
        "String": false,
        "SyntaxError": false,
        toLocaleString: false,
        toString: false,
        "TypeError": false,
        "undefined": false,
        "unescape": false,
        "URIError": false,
        valueOf: false
    };
    var es2015$1 = {
        "Array": false,
        "ArrayBuffer": false,
        "Boolean": false,
        constructor: false,
        "DataView": false,
        "Date": false,
        "decodeURI": false,
        "decodeURIComponent": false,
        "encodeURI": false,
        "encodeURIComponent": false,
        "Error": false,
        "escape": false,
        "eval": false,
        "EvalError": false,
        "Float32Array": false,
        "Float64Array": false,
        "Function": false,
        hasOwnProperty: false,
        "Infinity": false,
        "Int16Array": false,
        "Int32Array": false,
        "Int8Array": false,
        "isFinite": false,
        "isNaN": false,
        isPrototypeOf: false,
        "JSON": false,
        "Map": false,
        "Math": false,
        "NaN": false,
        "Number": false,
        "Object": false,
        "parseFloat": false,
        "parseInt": false,
        "Promise": false,
        propertyIsEnumerable: false,
        "Proxy": false,
        "RangeError": false,
        "ReferenceError": false,
        "Reflect": false,
        "RegExp": false,
        "Set": false,
        "String": false,
        "Symbol": false,
        "SyntaxError": false,
        toLocaleString: false,
        toString: false,
        "TypeError": false,
        "Uint16Array": false,
        "Uint32Array": false,
        "Uint8Array": false,
        "Uint8ClampedArray": false,
        "undefined": false,
        "unescape": false,
        "URIError": false,
        valueOf: false,
        "WeakMap": false,
        "WeakSet": false
    };
    var es2017$1 = {
        "Array": false,
        "ArrayBuffer": false,
        Atomics: false,
        "Boolean": false,
        constructor: false,
        "DataView": false,
        "Date": false,
        "decodeURI": false,
        "decodeURIComponent": false,
        "encodeURI": false,
        "encodeURIComponent": false,
        "Error": false,
        "escape": false,
        "eval": false,
        "EvalError": false,
        "Float32Array": false,
        "Float64Array": false,
        "Function": false,
        hasOwnProperty: false,
        "Infinity": false,
        "Int16Array": false,
        "Int32Array": false,
        "Int8Array": false,
        "isFinite": false,
        "isNaN": false,
        isPrototypeOf: false,
        "JSON": false,
        "Map": false,
        "Math": false,
        "NaN": false,
        "Number": false,
        "Object": false,
        "parseFloat": false,
        "parseInt": false,
        "Promise": false,
        propertyIsEnumerable: false,
        "Proxy": false,
        "RangeError": false,
        "ReferenceError": false,
        "Reflect": false,
        "RegExp": false,
        "Set": false,
        SharedArrayBuffer: false,
        "String": false,
        "Symbol": false,
        "SyntaxError": false,
        toLocaleString: false,
        toString: false,
        "TypeError": false,
        "Uint16Array": false,
        "Uint32Array": false,
        "Uint8Array": false,
        "Uint8ClampedArray": false,
        "undefined": false,
        "unescape": false,
        "URIError": false,
        valueOf: false,
        "WeakMap": false,
        "WeakSet": false
    };
    var es2020 = {
        "Array": false,
        "ArrayBuffer": false,
        Atomics: false,
        BigInt: false,
        BigInt64Array: false,
        BigUint64Array: false,
        "Boolean": false,
        constructor: false,
        "DataView": false,
        "Date": false,
        "decodeURI": false,
        "decodeURIComponent": false,
        "encodeURI": false,
        "encodeURIComponent": false,
        "Error": false,
        "escape": false,
        "eval": false,
        "EvalError": false,
        "Float32Array": false,
        "Float64Array": false,
        "Function": false,
        globalThis: false,
        hasOwnProperty: false,
        "Infinity": false,
        "Int16Array": false,
        "Int32Array": false,
        "Int8Array": false,
        "isFinite": false,
        "isNaN": false,
        isPrototypeOf: false,
        "JSON": false,
        "Map": false,
        "Math": false,
        "NaN": false,
        "Number": false,
        "Object": false,
        "parseFloat": false,
        "parseInt": false,
        "Promise": false,
        propertyIsEnumerable: false,
        "Proxy": false,
        "RangeError": false,
        "ReferenceError": false,
        "Reflect": false,
        "RegExp": false,
        "Set": false,
        SharedArrayBuffer: false,
        "String": false,
        "Symbol": false,
        "SyntaxError": false,
        toLocaleString: false,
        toString: false,
        "TypeError": false,
        "Uint16Array": false,
        "Uint32Array": false,
        "Uint8Array": false,
        "Uint8ClampedArray": false,
        "undefined": false,
        "unescape": false,
        "URIError": false,
        valueOf: false,
        "WeakMap": false,
        "WeakSet": false
    };
    var es2021 = {
        "Array": false,
        "ArrayBuffer": false,
        Atomics: false,
        BigInt: false,
        BigInt64Array: false,
        BigUint64Array: false,
        "Boolean": false,
        constructor: false,
        "DataView": false,
        "Date": false,
        "decodeURI": false,
        "decodeURIComponent": false,
        "encodeURI": false,
        "encodeURIComponent": false,
        "Error": false,
        "escape": false,
        "eval": false,
        "EvalError": false,
        FinalizationRegistry: false,
        "Float32Array": false,
        "Float64Array": false,
        "Function": false,
        globalThis: false,
        hasOwnProperty: false,
        "Infinity": false,
        "Int16Array": false,
        "Int32Array": false,
        "Int8Array": false,
        "isFinite": false,
        "isNaN": false,
        isPrototypeOf: false,
        "JSON": false,
        "Map": false,
        "Math": false,
        "NaN": false,
        "Number": false,
        "Object": false,
        "parseFloat": false,
        "parseInt": false,
        "Promise": false,
        propertyIsEnumerable: false,
        "Proxy": false,
        "RangeError": false,
        "ReferenceError": false,
        "Reflect": false,
        "RegExp": false,
        "Set": false,
        SharedArrayBuffer: false,
        "String": false,
        "Symbol": false,
        "SyntaxError": false,
        toLocaleString: false,
        toString: false,
        "TypeError": false,
        "Uint16Array": false,
        "Uint32Array": false,
        "Uint8Array": false,
        "Uint8ClampedArray": false,
        "undefined": false,
        "unescape": false,
        "URIError": false,
        valueOf: false,
        "WeakMap": false,
        WeakRef: false,
        "WeakSet": false
    };
    var browser$3 = {
        AbortController: false,
        AbortSignal: false,
        addEventListener: false,
        alert: false,
        AnalyserNode: false,
        Animation: false,
        AnimationEffectReadOnly: false,
        AnimationEffectTiming: false,
        AnimationEffectTimingReadOnly: false,
        AnimationEvent: false,
        AnimationPlaybackEvent: false,
        AnimationTimeline: false,
        applicationCache: false,
        ApplicationCache: false,
        ApplicationCacheErrorEvent: false,
        atob: false,
        Attr: false,
        Audio: false,
        AudioBuffer: false,
        AudioBufferSourceNode: false,
        AudioContext: false,
        AudioDestinationNode: false,
        AudioListener: false,
        AudioNode: false,
        AudioParam: false,
        AudioProcessingEvent: false,
        AudioScheduledSourceNode: false,
        "AudioWorkletGlobalScope ": false,
        AudioWorkletNode: false,
        AudioWorkletProcessor: false,
        BarProp: false,
        BaseAudioContext: false,
        BatteryManager: false,
        BeforeUnloadEvent: false,
        BiquadFilterNode: false,
        Blob: false,
        BlobEvent: false,
        blur: false,
        BroadcastChannel: false,
        btoa: false,
        BudgetService: false,
        ByteLengthQueuingStrategy: false,
        Cache: false,
        caches: false,
        CacheStorage: false,
        cancelAnimationFrame: false,
        cancelIdleCallback: false,
        CanvasCaptureMediaStreamTrack: false,
        CanvasGradient: false,
        CanvasPattern: false,
        CanvasRenderingContext2D: false,
        ChannelMergerNode: false,
        ChannelSplitterNode: false,
        CharacterData: false,
        clearInterval: false,
        clearTimeout: false,
        clientInformation: false,
        ClipboardEvent: false,
        close: false,
        closed: false,
        CloseEvent: false,
        Comment: false,
        CompositionEvent: false,
        confirm: false,
        console: false,
        ConstantSourceNode: false,
        ConvolverNode: false,
        CountQueuingStrategy: false,
        createImageBitmap: false,
        Credential: false,
        CredentialsContainer: false,
        crypto: false,
        Crypto: false,
        CryptoKey: false,
        CSS: false,
        CSSConditionRule: false,
        CSSFontFaceRule: false,
        CSSGroupingRule: false,
        CSSImportRule: false,
        CSSKeyframeRule: false,
        CSSKeyframesRule: false,
        CSSMediaRule: false,
        CSSNamespaceRule: false,
        CSSPageRule: false,
        CSSRule: false,
        CSSRuleList: false,
        CSSStyleDeclaration: false,
        CSSStyleRule: false,
        CSSStyleSheet: false,
        CSSSupportsRule: false,
        CustomElementRegistry: false,
        customElements: false,
        CustomEvent: false,
        DataTransfer: false,
        DataTransferItem: false,
        DataTransferItemList: false,
        defaultstatus: false,
        defaultStatus: false,
        DelayNode: false,
        DeviceMotionEvent: false,
        DeviceOrientationEvent: false,
        devicePixelRatio: false,
        dispatchEvent: false,
        document: false,
        Document: false,
        DocumentFragment: false,
        DocumentType: false,
        DOMError: false,
        DOMException: false,
        DOMImplementation: false,
        DOMMatrix: false,
        DOMMatrixReadOnly: false,
        DOMParser: false,
        DOMPoint: false,
        DOMPointReadOnly: false,
        DOMQuad: false,
        DOMRect: false,
        DOMRectReadOnly: false,
        DOMStringList: false,
        DOMStringMap: false,
        DOMTokenList: false,
        DragEvent: false,
        DynamicsCompressorNode: false,
        Element: false,
        ErrorEvent: false,
        event: false,
        Event: false,
        EventSource: false,
        EventTarget: false,
        external: false,
        fetch: false,
        File: false,
        FileList: false,
        FileReader: false,
        find: false,
        focus: false,
        FocusEvent: false,
        FontFace: false,
        FontFaceSetLoadEvent: false,
        FormData: false,
        frameElement: false,
        frames: false,
        GainNode: false,
        Gamepad: false,
        GamepadButton: false,
        GamepadEvent: false,
        getComputedStyle: false,
        getSelection: false,
        HashChangeEvent: false,
        Headers: false,
        history: false,
        History: false,
        HTMLAllCollection: false,
        HTMLAnchorElement: false,
        HTMLAreaElement: false,
        HTMLAudioElement: false,
        HTMLBaseElement: false,
        HTMLBodyElement: false,
        HTMLBRElement: false,
        HTMLButtonElement: false,
        HTMLCanvasElement: false,
        HTMLCollection: false,
        HTMLContentElement: false,
        HTMLDataElement: false,
        HTMLDataListElement: false,
        HTMLDetailsElement: false,
        HTMLDialogElement: false,
        HTMLDirectoryElement: false,
        HTMLDivElement: false,
        HTMLDListElement: false,
        HTMLDocument: false,
        HTMLElement: false,
        HTMLEmbedElement: false,
        HTMLFieldSetElement: false,
        HTMLFontElement: false,
        HTMLFormControlsCollection: false,
        HTMLFormElement: false,
        HTMLFrameElement: false,
        HTMLFrameSetElement: false,
        HTMLHeadElement: false,
        HTMLHeadingElement: false,
        HTMLHRElement: false,
        HTMLHtmlElement: false,
        HTMLIFrameElement: false,
        HTMLImageElement: false,
        HTMLInputElement: false,
        HTMLLabelElement: false,
        HTMLLegendElement: false,
        HTMLLIElement: false,
        HTMLLinkElement: false,
        HTMLMapElement: false,
        HTMLMarqueeElement: false,
        HTMLMediaElement: false,
        HTMLMenuElement: false,
        HTMLMetaElement: false,
        HTMLMeterElement: false,
        HTMLModElement: false,
        HTMLObjectElement: false,
        HTMLOListElement: false,
        HTMLOptGroupElement: false,
        HTMLOptionElement: false,
        HTMLOptionsCollection: false,
        HTMLOutputElement: false,
        HTMLParagraphElement: false,
        HTMLParamElement: false,
        HTMLPictureElement: false,
        HTMLPreElement: false,
        HTMLProgressElement: false,
        HTMLQuoteElement: false,
        HTMLScriptElement: false,
        HTMLSelectElement: false,
        HTMLShadowElement: false,
        HTMLSlotElement: false,
        HTMLSourceElement: false,
        HTMLSpanElement: false,
        HTMLStyleElement: false,
        HTMLTableCaptionElement: false,
        HTMLTableCellElement: false,
        HTMLTableColElement: false,
        HTMLTableElement: false,
        HTMLTableRowElement: false,
        HTMLTableSectionElement: false,
        HTMLTemplateElement: false,
        HTMLTextAreaElement: false,
        HTMLTimeElement: false,
        HTMLTitleElement: false,
        HTMLTrackElement: false,
        HTMLUListElement: false,
        HTMLUnknownElement: false,
        HTMLVideoElement: false,
        IDBCursor: false,
        IDBCursorWithValue: false,
        IDBDatabase: false,
        IDBFactory: false,
        IDBIndex: false,
        IDBKeyRange: false,
        IDBObjectStore: false,
        IDBOpenDBRequest: false,
        IDBRequest: false,
        IDBTransaction: false,
        IDBVersionChangeEvent: false,
        IdleDeadline: false,
        IIRFilterNode: false,
        Image: false,
        ImageBitmap: false,
        ImageBitmapRenderingContext: false,
        ImageCapture: false,
        ImageData: false,
        indexedDB: false,
        innerHeight: false,
        innerWidth: false,
        InputEvent: false,
        IntersectionObserver: false,
        IntersectionObserverEntry: false,
        "Intl": false,
        isSecureContext: false,
        KeyboardEvent: false,
        KeyframeEffect: false,
        KeyframeEffectReadOnly: false,
        length: false,
        localStorage: false,
        location: true,
        Location: false,
        locationbar: false,
        matchMedia: false,
        MediaDeviceInfo: false,
        MediaDevices: false,
        MediaElementAudioSourceNode: false,
        MediaEncryptedEvent: false,
        MediaError: false,
        MediaKeyMessageEvent: false,
        MediaKeySession: false,
        MediaKeyStatusMap: false,
        MediaKeySystemAccess: false,
        MediaList: false,
        MediaQueryList: false,
        MediaQueryListEvent: false,
        MediaRecorder: false,
        MediaSettingsRange: false,
        MediaSource: false,
        MediaStream: false,
        MediaStreamAudioDestinationNode: false,
        MediaStreamAudioSourceNode: false,
        MediaStreamEvent: false,
        MediaStreamTrack: false,
        MediaStreamTrackEvent: false,
        menubar: false,
        MessageChannel: false,
        MessageEvent: false,
        MessagePort: false,
        MIDIAccess: false,
        MIDIConnectionEvent: false,
        MIDIInput: false,
        MIDIInputMap: false,
        MIDIMessageEvent: false,
        MIDIOutput: false,
        MIDIOutputMap: false,
        MIDIPort: false,
        MimeType: false,
        MimeTypeArray: false,
        MouseEvent: false,
        moveBy: false,
        moveTo: false,
        MutationEvent: false,
        MutationObserver: false,
        MutationRecord: false,
        name: false,
        NamedNodeMap: false,
        NavigationPreloadManager: false,
        navigator: false,
        Navigator: false,
        NetworkInformation: false,
        Node: false,
        NodeFilter: false,
        NodeIterator: false,
        NodeList: false,
        Notification: false,
        OfflineAudioCompletionEvent: false,
        OfflineAudioContext: false,
        offscreenBuffering: false,
        OffscreenCanvas: true,
        OffscreenCanvasRenderingContext2D: false,
        onabort: true,
        onafterprint: true,
        onanimationend: true,
        onanimationiteration: true,
        onanimationstart: true,
        onappinstalled: true,
        onauxclick: true,
        onbeforeinstallprompt: true,
        onbeforeprint: true,
        onbeforeunload: true,
        onblur: true,
        oncancel: true,
        oncanplay: true,
        oncanplaythrough: true,
        onchange: true,
        onclick: true,
        onclose: true,
        oncontextmenu: true,
        oncuechange: true,
        ondblclick: true,
        ondevicemotion: true,
        ondeviceorientation: true,
        ondeviceorientationabsolute: true,
        ondrag: true,
        ondragend: true,
        ondragenter: true,
        ondragleave: true,
        ondragover: true,
        ondragstart: true,
        ondrop: true,
        ondurationchange: true,
        onemptied: true,
        onended: true,
        onerror: true,
        onfocus: true,
        ongotpointercapture: true,
        onhashchange: true,
        oninput: true,
        oninvalid: true,
        onkeydown: true,
        onkeypress: true,
        onkeyup: true,
        onlanguagechange: true,
        onload: true,
        onloadeddata: true,
        onloadedmetadata: true,
        onloadstart: true,
        onlostpointercapture: true,
        onmessage: true,
        onmessageerror: true,
        onmousedown: true,
        onmouseenter: true,
        onmouseleave: true,
        onmousemove: true,
        onmouseout: true,
        onmouseover: true,
        onmouseup: true,
        onmousewheel: true,
        onoffline: true,
        ononline: true,
        onpagehide: true,
        onpageshow: true,
        onpause: true,
        onplay: true,
        onplaying: true,
        onpointercancel: true,
        onpointerdown: true,
        onpointerenter: true,
        onpointerleave: true,
        onpointermove: true,
        onpointerout: true,
        onpointerover: true,
        onpointerup: true,
        onpopstate: true,
        onprogress: true,
        onratechange: true,
        onrejectionhandled: true,
        onreset: true,
        onresize: true,
        onscroll: true,
        onsearch: true,
        onseeked: true,
        onseeking: true,
        onselect: true,
        onstalled: true,
        onstorage: true,
        onsubmit: true,
        onsuspend: true,
        ontimeupdate: true,
        ontoggle: true,
        ontransitionend: true,
        onunhandledrejection: true,
        onunload: true,
        onvolumechange: true,
        onwaiting: true,
        onwheel: true,
        open: false,
        openDatabase: false,
        opener: false,
        Option: false,
        origin: false,
        OscillatorNode: false,
        outerHeight: false,
        outerWidth: false,
        PageTransitionEvent: false,
        pageXOffset: false,
        pageYOffset: false,
        PannerNode: false,
        parent: false,
        Path2D: false,
        PaymentAddress: false,
        PaymentRequest: false,
        PaymentRequestUpdateEvent: false,
        PaymentResponse: false,
        performance: false,
        Performance: false,
        PerformanceEntry: false,
        PerformanceLongTaskTiming: false,
        PerformanceMark: false,
        PerformanceMeasure: false,
        PerformanceNavigation: false,
        PerformanceNavigationTiming: false,
        PerformanceObserver: false,
        PerformanceObserverEntryList: false,
        PerformancePaintTiming: false,
        PerformanceResourceTiming: false,
        PerformanceTiming: false,
        PeriodicWave: false,
        Permissions: false,
        PermissionStatus: false,
        personalbar: false,
        PhotoCapabilities: false,
        Plugin: false,
        PluginArray: false,
        PointerEvent: false,
        PopStateEvent: false,
        postMessage: false,
        Presentation: false,
        PresentationAvailability: false,
        PresentationConnection: false,
        PresentationConnectionAvailableEvent: false,
        PresentationConnectionCloseEvent: false,
        PresentationConnectionList: false,
        PresentationReceiver: false,
        PresentationRequest: false,
        print: false,
        ProcessingInstruction: false,
        ProgressEvent: false,
        PromiseRejectionEvent: false,
        prompt: false,
        PushManager: false,
        PushSubscription: false,
        PushSubscriptionOptions: false,
        queueMicrotask: false,
        RadioNodeList: false,
        Range: false,
        ReadableStream: false,
        registerProcessor: false,
        RemotePlayback: false,
        removeEventListener: false,
        Request: false,
        requestAnimationFrame: false,
        requestIdleCallback: false,
        resizeBy: false,
        ResizeObserver: false,
        ResizeObserverEntry: false,
        resizeTo: false,
        Response: false,
        RTCCertificate: false,
        RTCDataChannel: false,
        RTCDataChannelEvent: false,
        RTCDtlsTransport: false,
        RTCIceCandidate: false,
        RTCIceGatherer: false,
        RTCIceTransport: false,
        RTCPeerConnection: false,
        RTCPeerConnectionIceEvent: false,
        RTCRtpContributingSource: false,
        RTCRtpReceiver: false,
        RTCRtpSender: false,
        RTCSctpTransport: false,
        RTCSessionDescription: false,
        RTCStatsReport: false,
        RTCTrackEvent: false,
        screen: false,
        Screen: false,
        screenLeft: false,
        ScreenOrientation: false,
        screenTop: false,
        screenX: false,
        screenY: false,
        ScriptProcessorNode: false,
        scroll: false,
        scrollbars: false,
        scrollBy: false,
        scrollTo: false,
        scrollX: false,
        scrollY: false,
        SecurityPolicyViolationEvent: false,
        Selection: false,
        self: false,
        ServiceWorker: false,
        ServiceWorkerContainer: false,
        ServiceWorkerRegistration: false,
        sessionStorage: false,
        setInterval: false,
        setTimeout: false,
        ShadowRoot: false,
        SharedWorker: false,
        SourceBuffer: false,
        SourceBufferList: false,
        speechSynthesis: false,
        SpeechSynthesisEvent: false,
        SpeechSynthesisUtterance: false,
        StaticRange: false,
        status: false,
        statusbar: false,
        StereoPannerNode: false,
        stop: false,
        Storage: false,
        StorageEvent: false,
        StorageManager: false,
        styleMedia: false,
        StyleSheet: false,
        StyleSheetList: false,
        SubtleCrypto: false,
        SVGAElement: false,
        SVGAngle: false,
        SVGAnimatedAngle: false,
        SVGAnimatedBoolean: false,
        SVGAnimatedEnumeration: false,
        SVGAnimatedInteger: false,
        SVGAnimatedLength: false,
        SVGAnimatedLengthList: false,
        SVGAnimatedNumber: false,
        SVGAnimatedNumberList: false,
        SVGAnimatedPreserveAspectRatio: false,
        SVGAnimatedRect: false,
        SVGAnimatedString: false,
        SVGAnimatedTransformList: false,
        SVGAnimateElement: false,
        SVGAnimateMotionElement: false,
        SVGAnimateTransformElement: false,
        SVGAnimationElement: false,
        SVGCircleElement: false,
        SVGClipPathElement: false,
        SVGComponentTransferFunctionElement: false,
        SVGDefsElement: false,
        SVGDescElement: false,
        SVGDiscardElement: false,
        SVGElement: false,
        SVGEllipseElement: false,
        SVGFEBlendElement: false,
        SVGFEColorMatrixElement: false,
        SVGFEComponentTransferElement: false,
        SVGFECompositeElement: false,
        SVGFEConvolveMatrixElement: false,
        SVGFEDiffuseLightingElement: false,
        SVGFEDisplacementMapElement: false,
        SVGFEDistantLightElement: false,
        SVGFEDropShadowElement: false,
        SVGFEFloodElement: false,
        SVGFEFuncAElement: false,
        SVGFEFuncBElement: false,
        SVGFEFuncGElement: false,
        SVGFEFuncRElement: false,
        SVGFEGaussianBlurElement: false,
        SVGFEImageElement: false,
        SVGFEMergeElement: false,
        SVGFEMergeNodeElement: false,
        SVGFEMorphologyElement: false,
        SVGFEOffsetElement: false,
        SVGFEPointLightElement: false,
        SVGFESpecularLightingElement: false,
        SVGFESpotLightElement: false,
        SVGFETileElement: false,
        SVGFETurbulenceElement: false,
        SVGFilterElement: false,
        SVGForeignObjectElement: false,
        SVGGElement: false,
        SVGGeometryElement: false,
        SVGGradientElement: false,
        SVGGraphicsElement: false,
        SVGImageElement: false,
        SVGLength: false,
        SVGLengthList: false,
        SVGLinearGradientElement: false,
        SVGLineElement: false,
        SVGMarkerElement: false,
        SVGMaskElement: false,
        SVGMatrix: false,
        SVGMetadataElement: false,
        SVGMPathElement: false,
        SVGNumber: false,
        SVGNumberList: false,
        SVGPathElement: false,
        SVGPatternElement: false,
        SVGPoint: false,
        SVGPointList: false,
        SVGPolygonElement: false,
        SVGPolylineElement: false,
        SVGPreserveAspectRatio: false,
        SVGRadialGradientElement: false,
        SVGRect: false,
        SVGRectElement: false,
        SVGScriptElement: false,
        SVGSetElement: false,
        SVGStopElement: false,
        SVGStringList: false,
        SVGStyleElement: false,
        SVGSVGElement: false,
        SVGSwitchElement: false,
        SVGSymbolElement: false,
        SVGTextContentElement: false,
        SVGTextElement: false,
        SVGTextPathElement: false,
        SVGTextPositioningElement: false,
        SVGTitleElement: false,
        SVGTransform: false,
        SVGTransformList: false,
        SVGTSpanElement: false,
        SVGUnitTypes: false,
        SVGUseElement: false,
        SVGViewElement: false,
        TaskAttributionTiming: false,
        Text: false,
        TextDecoder: false,
        TextEncoder: false,
        TextEvent: false,
        TextMetrics: false,
        TextTrack: false,
        TextTrackCue: false,
        TextTrackCueList: false,
        TextTrackList: false,
        TimeRanges: false,
        toolbar: false,
        top: false,
        Touch: false,
        TouchEvent: false,
        TouchList: false,
        TrackEvent: false,
        TransitionEvent: false,
        TreeWalker: false,
        UIEvent: false,
        URL: false,
        URLSearchParams: false,
        ValidityState: false,
        visualViewport: false,
        VisualViewport: false,
        VTTCue: false,
        WaveShaperNode: false,
        WebAssembly: false,
        WebGL2RenderingContext: false,
        WebGLActiveInfo: false,
        WebGLBuffer: false,
        WebGLContextEvent: false,
        WebGLFramebuffer: false,
        WebGLProgram: false,
        WebGLQuery: false,
        WebGLRenderbuffer: false,
        WebGLRenderingContext: false,
        WebGLSampler: false,
        WebGLShader: false,
        WebGLShaderPrecisionFormat: false,
        WebGLSync: false,
        WebGLTexture: false,
        WebGLTransformFeedback: false,
        WebGLUniformLocation: false,
        WebGLVertexArrayObject: false,
        WebSocket: false,
        WheelEvent: false,
        window: false,
        Window: false,
        Worker: false,
        WritableStream: false,
        XMLDocument: false,
        XMLHttpRequest: false,
        XMLHttpRequestEventTarget: false,
        XMLHttpRequestUpload: false,
        XMLSerializer: false,
        XPathEvaluator: false,
        XPathExpression: false,
        XPathResult: false,
        XSLTProcessor: false
    };
    var worker$1 = {
        addEventListener: false,
        applicationCache: false,
        atob: false,
        Blob: false,
        BroadcastChannel: false,
        btoa: false,
        Cache: false,
        caches: false,
        clearInterval: false,
        clearTimeout: false,
        close: true,
        console: false,
        fetch: false,
        FileReaderSync: false,
        FormData: false,
        Headers: false,
        IDBCursor: false,
        IDBCursorWithValue: false,
        IDBDatabase: false,
        IDBFactory: false,
        IDBIndex: false,
        IDBKeyRange: false,
        IDBObjectStore: false,
        IDBOpenDBRequest: false,
        IDBRequest: false,
        IDBTransaction: false,
        IDBVersionChangeEvent: false,
        ImageData: false,
        importScripts: true,
        indexedDB: false,
        location: false,
        MessageChannel: false,
        MessagePort: false,
        name: false,
        navigator: false,
        Notification: false,
        onclose: true,
        onconnect: true,
        onerror: true,
        onlanguagechange: true,
        onmessage: true,
        onoffline: true,
        ononline: true,
        onrejectionhandled: true,
        onunhandledrejection: true,
        performance: false,
        Performance: false,
        PerformanceEntry: false,
        PerformanceMark: false,
        PerformanceMeasure: false,
        PerformanceNavigation: false,
        PerformanceResourceTiming: false,
        PerformanceTiming: false,
        postMessage: true,
        "Promise": false,
        queueMicrotask: false,
        removeEventListener: false,
        Request: false,
        Response: false,
        self: true,
        ServiceWorkerRegistration: false,
        setInterval: false,
        setTimeout: false,
        TextDecoder: false,
        TextEncoder: false,
        URL: false,
        URLSearchParams: false,
        WebSocket: false,
        Worker: false,
        WorkerGlobalScope: false,
        XMLHttpRequest: false
    };
    var node$2 = {
        __dirname: false,
        __filename: false,
        Buffer: false,
        clearImmediate: false,
        clearInterval: false,
        clearTimeout: false,
        console: false,
        exports: true,
        global: false,
        "Intl": false,
        module: false,
        process: false,
        queueMicrotask: false,
        require: false,
        setImmediate: false,
        setInterval: false,
        setTimeout: false,
        TextDecoder: false,
        TextEncoder: false,
        URL: false,
        URLSearchParams: false
    };
    var nodeBuiltin = {
        Buffer: false,
        clearImmediate: false,
        clearInterval: false,
        clearTimeout: false,
        console: false,
        global: false,
        "Intl": false,
        process: false,
        queueMicrotask: false,
        setImmediate: false,
        setInterval: false,
        setTimeout: false,
        TextDecoder: false,
        TextEncoder: false,
        URL: false,
        URLSearchParams: false
    };
    var commonjs$1 = {
        exports: true,
        global: false,
        module: false,
        require: false
    };
    var amd$1 = {
        define: false,
        require: false
    };
    var mocha$1 = {
        after: false,
        afterEach: false,
        before: false,
        beforeEach: false,
        context: false,
        describe: false,
        it: false,
        mocha: false,
        run: false,
        setup: false,
        specify: false,
        suite: false,
        suiteSetup: false,
        suiteTeardown: false,
        teardown: false,
        test: false,
        xcontext: false,
        xdescribe: false,
        xit: false,
        xspecify: false
    };
    var jasmine$1 = {
        afterAll: false,
        afterEach: false,
        beforeAll: false,
        beforeEach: false,
        describe: false,
        expect: false,
        expectAsync: false,
        fail: false,
        fdescribe: false,
        fit: false,
        it: false,
        jasmine: false,
        pending: false,
        runs: false,
        spyOn: false,
        spyOnAllFunctions: false,
        spyOnProperty: false,
        waits: false,
        waitsFor: false,
        xdescribe: false,
        xit: false
    };
    var jest$1 = {
        afterAll: false,
        afterEach: false,
        beforeAll: false,
        beforeEach: false,
        describe: false,
        expect: false,
        fdescribe: false,
        fit: false,
        it: false,
        jest: false,
        pit: false,
        require: false,
        test: false,
        xdescribe: false,
        xit: false,
        xtest: false
    };
    var qunit$1 = {
        asyncTest: false,
        deepEqual: false,
        equal: false,
        expect: false,
        module: false,
        notDeepEqual: false,
        notEqual: false,
        notOk: false,
        notPropEqual: false,
        notStrictEqual: false,
        ok: false,
        propEqual: false,
        QUnit: false,
        raises: false,
        start: false,
        stop: false,
        strictEqual: false,
        test: false,
        throws: false
    };
    var phantomjs$1 = {
        console: true,
        exports: true,
        phantom: true,
        require: true,
        WebPage: true
    };
    var couch$1 = {
        emit: false,
        exports: false,
        getRow: false,
        log: false,
        module: false,
        provides: false,
        require: false,
        respond: false,
        send: false,
        start: false,
        sum: false
    };
    var rhino$1 = {
        defineClass: false,
        deserialize: false,
        gc: false,
        help: false,
        importClass: false,
        importPackage: false,
        java: false,
        load: false,
        loadClass: false,
        Packages: false,
        print: false,
        quit: false,
        readFile: false,
        readUrl: false,
        runCommand: false,
        seal: false,
        serialize: false,
        spawn: false,
        sync: false,
        toint32: false,
        version: false
    };
    var nashorn$1 = {
        __DIR__: false,
        __FILE__: false,
        __LINE__: false,
        com: false,
        edu: false,
        exit: false,
        java: false,
        Java: false,
        javafx: false,
        JavaImporter: false,
        javax: false,
        JSAdapter: false,
        load: false,
        loadWithNewGlobal: false,
        org: false,
        Packages: false,
        print: false,
        quit: false
    };
    var wsh$1 = {
        ActiveXObject: false,
        CollectGarbage: false,
        Debug: false,
        Enumerator: false,
        GetObject: false,
        RuntimeObject: false,
        ScriptEngine: false,
        ScriptEngineBuildVersion: false,
        ScriptEngineMajorVersion: false,
        ScriptEngineMinorVersion: false,
        VBArray: false,
        WScript: false,
        WSH: false
    };
    var jquery$1 = {
        $: false,
        jQuery: false
    };
    var yui$1 = {
        YAHOO: false,
        YAHOO_config: false,
        YUI: false,
        YUI_config: false
    };
    var shelljs$1 = {
        cat: false,
        cd: false,
        chmod: false,
        config: false,
        cp: false,
        dirs: false,
        echo: false,
        env: false,
        error: false,
        exec: false,
        exit: false,
        find: false,
        grep: false,
        ln: false,
        ls: false,
        mkdir: false,
        mv: false,
        popd: false,
        pushd: false,
        pwd: false,
        rm: false,
        sed: false,
        set: false,
        target: false,
        tempdir: false,
        test: false,
        touch: false,
        which: false
    };
    var prototypejs$1 = {
        $: false,
        $$: false,
        $A: false,
        $break: false,
        $continue: false,
        $F: false,
        $H: false,
        $R: false,
        $w: false,
        Abstract: false,
        Ajax: false,
        Autocompleter: false,
        Builder: false,
        Class: false,
        Control: false,
        Draggable: false,
        Draggables: false,
        Droppables: false,
        Effect: false,
        Element: false,
        Enumerable: false,
        Event: false,
        Field: false,
        Form: false,
        Hash: false,
        Insertion: false,
        ObjectRange: false,
        PeriodicalExecuter: false,
        Position: false,
        Prototype: false,
        Scriptaculous: false,
        Selector: false,
        Sortable: false,
        SortableObserver: false,
        Sound: false,
        Template: false,
        Toggle: false,
        Try: false
    };
    var meteor$1 = {
        $: false,
        Accounts: false,
        AccountsClient: false,
        AccountsCommon: false,
        AccountsServer: false,
        App: false,
        Assets: false,
        Blaze: false,
        check: false,
        Cordova: false,
        DDP: false,
        DDPRateLimiter: false,
        DDPServer: false,
        Deps: false,
        EJSON: false,
        Email: false,
        HTTP: false,
        Log: false,
        Match: false,
        Meteor: false,
        Mongo: false,
        MongoInternals: false,
        Npm: false,
        Package: false,
        Plugin: false,
        process: false,
        Random: false,
        ReactiveDict: false,
        ReactiveVar: false,
        Router: false,
        ServiceConfiguration: false,
        Session: false,
        share: false,
        Spacebars: false,
        Template: false,
        Tinytest: false,
        Tracker: false,
        UI: false,
        Utils: false,
        WebApp: false,
        WebAppInternals: false
    };
    var mongo$1 = {
        _isWindows: false,
        _rand: false,
        BulkWriteResult: false,
        cat: false,
        cd: false,
        connect: false,
        db: false,
        getHostName: false,
        getMemInfo: false,
        hostname: false,
        ISODate: false,
        listFiles: false,
        load: false,
        ls: false,
        md5sumFile: false,
        mkdir: false,
        Mongo: false,
        NumberInt: false,
        NumberLong: false,
        ObjectId: false,
        PlanCache: false,
        print: false,
        printjson: false,
        pwd: false,
        quit: false,
        removeFile: false,
        rs: false,
        sh: false,
        UUID: false,
        version: false,
        WriteResult: false
    };
    var applescript$1 = {
        $: false,
        Application: false,
        Automation: false,
        console: false,
        delay: false,
        Library: false,
        ObjC: false,
        ObjectSpecifier: false,
        Path: false,
        Progress: false,
        Ref: false
    };
    var serviceworker$1 = {
        addEventListener: false,
        applicationCache: false,
        atob: false,
        Blob: false,
        BroadcastChannel: false,
        btoa: false,
        Cache: false,
        caches: false,
        CacheStorage: false,
        clearInterval: false,
        clearTimeout: false,
        Client: false,
        clients: false,
        Clients: false,
        close: true,
        console: false,
        ExtendableEvent: false,
        ExtendableMessageEvent: false,
        fetch: false,
        FetchEvent: false,
        FileReaderSync: false,
        FormData: false,
        Headers: false,
        IDBCursor: false,
        IDBCursorWithValue: false,
        IDBDatabase: false,
        IDBFactory: false,
        IDBIndex: false,
        IDBKeyRange: false,
        IDBObjectStore: false,
        IDBOpenDBRequest: false,
        IDBRequest: false,
        IDBTransaction: false,
        IDBVersionChangeEvent: false,
        ImageData: false,
        importScripts: false,
        indexedDB: false,
        location: false,
        MessageChannel: false,
        MessagePort: false,
        name: false,
        navigator: false,
        Notification: false,
        onclose: true,
        onconnect: true,
        onerror: true,
        onfetch: true,
        oninstall: true,
        onlanguagechange: true,
        onmessage: true,
        onmessageerror: true,
        onnotificationclick: true,
        onnotificationclose: true,
        onoffline: true,
        ononline: true,
        onpush: true,
        onpushsubscriptionchange: true,
        onrejectionhandled: true,
        onsync: true,
        onunhandledrejection: true,
        performance: false,
        Performance: false,
        PerformanceEntry: false,
        PerformanceMark: false,
        PerformanceMeasure: false,
        PerformanceNavigation: false,
        PerformanceResourceTiming: false,
        PerformanceTiming: false,
        postMessage: true,
        "Promise": false,
        queueMicrotask: false,
        registration: false,
        removeEventListener: false,
        Request: false,
        Response: false,
        self: false,
        ServiceWorker: false,
        ServiceWorkerContainer: false,
        ServiceWorkerGlobalScope: false,
        ServiceWorkerMessageEvent: false,
        ServiceWorkerRegistration: false,
        setInterval: false,
        setTimeout: false,
        skipWaiting: false,
        TextDecoder: false,
        TextEncoder: false,
        URL: false,
        URLSearchParams: false,
        WebSocket: false,
        WindowClient: false,
        Worker: false,
        WorkerGlobalScope: false,
        XMLHttpRequest: false
    };
    var atomtest$1 = {
        advanceClock: false,
        atom: false,
        fakeClearInterval: false,
        fakeClearTimeout: false,
        fakeSetInterval: false,
        fakeSetTimeout: false,
        resetTimeouts: false,
        waitsForPromise: false
    };
    var embertest$1 = {
        andThen: false,
        click: false,
        currentPath: false,
        currentRouteName: false,
        currentURL: false,
        fillIn: false,
        find: false,
        findAll: false,
        findWithAssert: false,
        keyEvent: false,
        pauseTest: false,
        resumeTest: false,
        triggerEvent: false,
        visit: false,
        wait: false
    };
    var protractor$1 = {
        $: false,
        $$: false,
        browser: false,
        by: false,
        By: false,
        DartObject: false,
        element: false,
        protractor: false
    };
    var webextensions$1 = {
        browser: false,
        chrome: false,
        opr: false
    };
    var greasemonkey$1 = {
        cloneInto: false,
        createObjectIn: false,
        exportFunction: false,
        GM: false,
        GM_addStyle: false,
        GM_addValueChangeListener: false,
        GM_deleteValue: false,
        GM_download: false,
        GM_getResourceText: false,
        GM_getResourceURL: false,
        GM_getTab: false,
        GM_getTabs: false,
        GM_getValue: false,
        GM_info: false,
        GM_listValues: false,
        GM_log: false,
        GM_notification: false,
        GM_openInTab: false,
        GM_registerMenuCommand: false,
        GM_removeValueChangeListener: false,
        GM_saveTab: false,
        GM_setClipboard: false,
        GM_setValue: false,
        GM_unregisterMenuCommand: false,
        GM_xmlhttpRequest: false,
        unsafeWindow: false
    };
    var devtools$1 = {
        $: false,
        $_: false,
        $$: false,
        $0: false,
        $1: false,
        $2: false,
        $3: false,
        $4: false,
        $x: false,
        chrome: false,
        clear: false,
        copy: false,
        debug: false,
        dir: false,
        dirxml: false,
        getEventListeners: false,
        inspect: false,
        keys: false,
        monitor: false,
        monitorEvents: false,
        profile: false,
        profileEnd: false,
        queryObjects: false,
        table: false,
        undebug: false,
        unmonitor: false,
        unmonitorEvents: false,
        values: false
    };
    var require$$0$b = {
        builtin: builtin$1,
        es5: es5$1,
        es2015: es2015$1,
        es2017: es2017$1,
        es2020: es2020,
        es2021: es2021,
        browser: browser$3,
        worker: worker$1,
        node: node$2,
        nodeBuiltin: nodeBuiltin,
        commonjs: commonjs$1,
        amd: amd$1,
        mocha: mocha$1,
        jasmine: jasmine$1,
        jest: jest$1,
        qunit: qunit$1,
        phantomjs: phantomjs$1,
        couch: couch$1,
        rhino: rhino$1,
        nashorn: nashorn$1,
        wsh: wsh$1,
        jquery: jquery$1,
        yui: yui$1,
        shelljs: shelljs$1,
        prototypejs: prototypejs$1,
        meteor: meteor$1,
        mongo: mongo$1,
        applescript: applescript$1,
        serviceworker: serviceworker$1,
        atomtest: atomtest$1,
        embertest: embertest$1,
        protractor: protractor$1,
        "shared-node-browser": {
        clearInterval: false,
        clearTimeout: false,
        console: false,
        setInterval: false,
        setTimeout: false,
        URL: false,
        URLSearchParams: false
    },
        webextensions: webextensions$1,
        greasemonkey: greasemonkey$1,
        devtools: devtools$1
    };
  
    var globalsBABEL_8_BREAKINGTrue;
    var hasRequiredGlobalsBABEL_8_BREAKINGTrue;
    function requireGlobalsBABEL_8_BREAKINGTrue() {
      if (hasRequiredGlobalsBABEL_8_BREAKINGTrue) return globalsBABEL_8_BREAKINGTrue;
      hasRequiredGlobalsBABEL_8_BREAKINGTrue = 1;
      globalsBABEL_8_BREAKINGTrue = require$$0$b;
      return globalsBABEL_8_BREAKINGTrue;
    }
  
    var builtin = {
        "Array": false,
        "ArrayBuffer": false,
        Atomics: false,
        BigInt: false,
        BigInt64Array: false,
        BigUint64Array: false,
        "Boolean": false,
        constructor: false,
        "DataView": false,
        "Date": false,
        "decodeURI": false,
        "decodeURIComponent": false,
        "encodeURI": false,
        "encodeURIComponent": false,
        "Error": false,
        "escape": false,
        "eval": false,
        "EvalError": false,
        "Float32Array": false,
        "Float64Array": false,
        "Function": false,
        globalThis: false,
        hasOwnProperty: false,
        "Infinity": false,
        "Int16Array": false,
        "Int32Array": false,
        "Int8Array": false,
        "isFinite": false,
        "isNaN": false,
        isPrototypeOf: false,
        "JSON": false,
        "Map": false,
        "Math": false,
        "NaN": false,
        "Number": false,
        "Object": false,
        "parseFloat": false,
        "parseInt": false,
        "Promise": false,
        propertyIsEnumerable: false,
        "Proxy": false,
        "RangeError": false,
        "ReferenceError": false,
        "Reflect": false,
        "RegExp": false,
        "Set": false,
        SharedArrayBuffer: false,
        "String": false,
        "Symbol": false,
        "SyntaxError": false,
        toLocaleString: false,
        toString: false,
        "TypeError": false,
        "Uint16Array": false,
        "Uint32Array": false,
        "Uint8Array": false,
        "Uint8ClampedArray": false,
        "undefined": false,
        "unescape": false,
        "URIError": false,
        valueOf: false,
        "WeakMap": false,
        "WeakSet": false
    };
    var es5 = {
        "Array": false,
        "Boolean": false,
        constructor: false,
        "Date": false,
        "decodeURI": false,
        "decodeURIComponent": false,
        "encodeURI": false,
        "encodeURIComponent": false,
        "Error": false,
        "escape": false,
        "eval": false,
        "EvalError": false,
        "Function": false,
        hasOwnProperty: false,
        "Infinity": false,
        "isFinite": false,
        "isNaN": false,
        isPrototypeOf: false,
        "JSON": false,
        "Math": false,
        "NaN": false,
        "Number": false,
        "Object": false,
        "parseFloat": false,
        "parseInt": false,
        propertyIsEnumerable: false,
        "RangeError": false,
        "ReferenceError": false,
        "RegExp": false,
        "String": false,
        "SyntaxError": false,
        toLocaleString: false,
        toString: false,
        "TypeError": false,
        "undefined": false,
        "unescape": false,
        "URIError": false,
        valueOf: false
    };
    var es2015 = {
        "Array": false,
        "ArrayBuffer": false,
        "Boolean": false,
        constructor: false,
        "DataView": false,
        "Date": false,
        "decodeURI": false,
        "decodeURIComponent": false,
        "encodeURI": false,
        "encodeURIComponent": false,
        "Error": false,
        "escape": false,
        "eval": false,
        "EvalError": false,
        "Float32Array": false,
        "Float64Array": false,
        "Function": false,
        hasOwnProperty: false,
        "Infinity": false,
        "Int16Array": false,
        "Int32Array": false,
        "Int8Array": false,
        "isFinite": false,
        "isNaN": false,
        isPrototypeOf: false,
        "JSON": false,
        "Map": false,
        "Math": false,
        "NaN": false,
        "Number": false,
        "Object": false,
        "parseFloat": false,
        "parseInt": false,
        "Promise": false,
        propertyIsEnumerable: false,
        "Proxy": false,
        "RangeError": false,
        "ReferenceError": false,
        "Reflect": false,
        "RegExp": false,
        "Set": false,
        "String": false,
        "Symbol": false,
        "SyntaxError": false,
        toLocaleString: false,
        toString: false,
        "TypeError": false,
        "Uint16Array": false,
        "Uint32Array": false,
        "Uint8Array": false,
        "Uint8ClampedArray": false,
        "undefined": false,
        "unescape": false,
        "URIError": false,
        valueOf: false,
        "WeakMap": false,
        "WeakSet": false
    };
    var es2017 = {
        "Array": false,
        "ArrayBuffer": false,
        Atomics: false,
        "Boolean": false,
        constructor: false,
        "DataView": false,
        "Date": false,
        "decodeURI": false,
        "decodeURIComponent": false,
        "encodeURI": false,
        "encodeURIComponent": false,
        "Error": false,
        "escape": false,
        "eval": false,
        "EvalError": false,
        "Float32Array": false,
        "Float64Array": false,
        "Function": false,
        hasOwnProperty: false,
        "Infinity": false,
        "Int16Array": false,
        "Int32Array": false,
        "Int8Array": false,
        "isFinite": false,
        "isNaN": false,
        isPrototypeOf: false,
        "JSON": false,
        "Map": false,
        "Math": false,
        "NaN": false,
        "Number": false,
        "Object": false,
        "parseFloat": false,
        "parseInt": false,
        "Promise": false,
        propertyIsEnumerable: false,
        "Proxy": false,
        "RangeError": false,
        "ReferenceError": false,
        "Reflect": false,
        "RegExp": false,
        "Set": false,
        SharedArrayBuffer: false,
        "String": false,
        "Symbol": false,
        "SyntaxError": false,
        toLocaleString: false,
        toString: false,
        "TypeError": false,
        "Uint16Array": false,
        "Uint32Array": false,
        "Uint8Array": false,
        "Uint8ClampedArray": false,
        "undefined": false,
        "unescape": false,
        "URIError": false,
        valueOf: false,
        "WeakMap": false,
        "WeakSet": false
    };
    var browser$2 = {
        AbortController: false,
        AbortSignal: false,
        addEventListener: false,
        alert: false,
        AnalyserNode: false,
        Animation: false,
        AnimationEffectReadOnly: false,
        AnimationEffectTiming: false,
        AnimationEffectTimingReadOnly: false,
        AnimationEvent: false,
        AnimationPlaybackEvent: false,
        AnimationTimeline: false,
        applicationCache: false,
        ApplicationCache: false,
        ApplicationCacheErrorEvent: false,
        atob: false,
        Attr: false,
        Audio: false,
        AudioBuffer: false,
        AudioBufferSourceNode: false,
        AudioContext: false,
        AudioDestinationNode: false,
        AudioListener: false,
        AudioNode: false,
        AudioParam: false,
        AudioProcessingEvent: false,
        AudioScheduledSourceNode: false,
        "AudioWorkletGlobalScope ": false,
        AudioWorkletNode: false,
        AudioWorkletProcessor: false,
        BarProp: false,
        BaseAudioContext: false,
        BatteryManager: false,
        BeforeUnloadEvent: false,
        BiquadFilterNode: false,
        Blob: false,
        BlobEvent: false,
        blur: false,
        BroadcastChannel: false,
        btoa: false,
        BudgetService: false,
        ByteLengthQueuingStrategy: false,
        Cache: false,
        caches: false,
        CacheStorage: false,
        cancelAnimationFrame: false,
        cancelIdleCallback: false,
        CanvasCaptureMediaStreamTrack: false,
        CanvasGradient: false,
        CanvasPattern: false,
        CanvasRenderingContext2D: false,
        ChannelMergerNode: false,
        ChannelSplitterNode: false,
        CharacterData: false,
        clearInterval: false,
        clearTimeout: false,
        clientInformation: false,
        ClipboardEvent: false,
        close: false,
        closed: false,
        CloseEvent: false,
        Comment: false,
        CompositionEvent: false,
        confirm: false,
        console: false,
        ConstantSourceNode: false,
        ConvolverNode: false,
        CountQueuingStrategy: false,
        createImageBitmap: false,
        Credential: false,
        CredentialsContainer: false,
        crypto: false,
        Crypto: false,
        CryptoKey: false,
        CSS: false,
        CSSConditionRule: false,
        CSSFontFaceRule: false,
        CSSGroupingRule: false,
        CSSImportRule: false,
        CSSKeyframeRule: false,
        CSSKeyframesRule: false,
        CSSMediaRule: false,
        CSSNamespaceRule: false,
        CSSPageRule: false,
        CSSRule: false,
        CSSRuleList: false,
        CSSStyleDeclaration: false,
        CSSStyleRule: false,
        CSSStyleSheet: false,
        CSSSupportsRule: false,
        CustomElementRegistry: false,
        customElements: false,
        CustomEvent: false,
        DataTransfer: false,
        DataTransferItem: false,
        DataTransferItemList: false,
        defaultstatus: false,
        defaultStatus: false,
        DelayNode: false,
        DeviceMotionEvent: false,
        DeviceOrientationEvent: false,
        devicePixelRatio: false,
        dispatchEvent: false,
        document: false,
        Document: false,
        DocumentFragment: false,
        DocumentType: false,
        DOMError: false,
        DOMException: false,
        DOMImplementation: false,
        DOMMatrix: false,
        DOMMatrixReadOnly: false,
        DOMParser: false,
        DOMPoint: false,
        DOMPointReadOnly: false,
        DOMQuad: false,
        DOMRect: false,
        DOMRectReadOnly: false,
        DOMStringList: false,
        DOMStringMap: false,
        DOMTokenList: false,
        DragEvent: false,
        DynamicsCompressorNode: false,
        Element: false,
        ErrorEvent: false,
        event: false,
        Event: false,
        EventSource: false,
        EventTarget: false,
        external: false,
        fetch: false,
        File: false,
        FileList: false,
        FileReader: false,
        find: false,
        focus: false,
        FocusEvent: false,
        FontFace: false,
        FontFaceSetLoadEvent: false,
        FormData: false,
        frameElement: false,
        frames: false,
        GainNode: false,
        Gamepad: false,
        GamepadButton: false,
        GamepadEvent: false,
        getComputedStyle: false,
        getSelection: false,
        HashChangeEvent: false,
        Headers: false,
        history: false,
        History: false,
        HTMLAllCollection: false,
        HTMLAnchorElement: false,
        HTMLAreaElement: false,
        HTMLAudioElement: false,
        HTMLBaseElement: false,
        HTMLBodyElement: false,
        HTMLBRElement: false,
        HTMLButtonElement: false,
        HTMLCanvasElement: false,
        HTMLCollection: false,
        HTMLContentElement: false,
        HTMLDataElement: false,
        HTMLDataListElement: false,
        HTMLDetailsElement: false,
        HTMLDialogElement: false,
        HTMLDirectoryElement: false,
        HTMLDivElement: false,
        HTMLDListElement: false,
        HTMLDocument: false,
        HTMLElement: false,
        HTMLEmbedElement: false,
        HTMLFieldSetElement: false,
        HTMLFontElement: false,
        HTMLFormControlsCollection: false,
        HTMLFormElement: false,
        HTMLFrameElement: false,
        HTMLFrameSetElement: false,
        HTMLHeadElement: false,
        HTMLHeadingElement: false,
        HTMLHRElement: false,
        HTMLHtmlElement: false,
        HTMLIFrameElement: false,
        HTMLImageElement: false,
        HTMLInputElement: false,
        HTMLLabelElement: false,
        HTMLLegendElement: false,
        HTMLLIElement: false,
        HTMLLinkElement: false,
        HTMLMapElement: false,
        HTMLMarqueeElement: false,
        HTMLMediaElement: false,
        HTMLMenuElement: false,
        HTMLMetaElement: false,
        HTMLMeterElement: false,
        HTMLModElement: false,
        HTMLObjectElement: false,
        HTMLOListElement: false,
        HTMLOptGroupElement: false,
        HTMLOptionElement: false,
        HTMLOptionsCollection: false,
        HTMLOutputElement: false,
        HTMLParagraphElement: false,
        HTMLParamElement: false,
        HTMLPictureElement: false,
        HTMLPreElement: false,
        HTMLProgressElement: false,
        HTMLQuoteElement: false,
        HTMLScriptElement: false,
        HTMLSelectElement: false,
        HTMLShadowElement: false,
        HTMLSlotElement: false,
        HTMLSourceElement: false,
        HTMLSpanElement: false,
        HTMLStyleElement: false,
        HTMLTableCaptionElement: false,
        HTMLTableCellElement: false,
        HTMLTableColElement: false,
        HTMLTableElement: false,
        HTMLTableRowElement: false,
        HTMLTableSectionElement: false,
        HTMLTemplateElement: false,
        HTMLTextAreaElement: false,
        HTMLTimeElement: false,
        HTMLTitleElement: false,
        HTMLTrackElement: false,
        HTMLUListElement: false,
        HTMLUnknownElement: false,
        HTMLVideoElement: false,
        IDBCursor: false,
        IDBCursorWithValue: false,
        IDBDatabase: false,
        IDBFactory: false,
        IDBIndex: false,
        IDBKeyRange: false,
        IDBObjectStore: false,
        IDBOpenDBRequest: false,
        IDBRequest: false,
        IDBTransaction: false,
        IDBVersionChangeEvent: false,
        IdleDeadline: false,
        IIRFilterNode: false,
        Image: false,
        ImageBitmap: false,
        ImageBitmapRenderingContext: false,
        ImageCapture: false,
        ImageData: false,
        indexedDB: false,
        innerHeight: false,
        innerWidth: false,
        InputEvent: false,
        IntersectionObserver: false,
        IntersectionObserverEntry: false,
        "Intl": false,
        isSecureContext: false,
        KeyboardEvent: false,
        KeyframeEffect: false,
        KeyframeEffectReadOnly: false,
        length: false,
        localStorage: false,
        location: true,
        Location: false,
        locationbar: false,
        matchMedia: false,
        MediaDeviceInfo: false,
        MediaDevices: false,
        MediaElementAudioSourceNode: false,
        MediaEncryptedEvent: false,
        MediaError: false,
        MediaKeyMessageEvent: false,
        MediaKeySession: false,
        MediaKeyStatusMap: false,
        MediaKeySystemAccess: false,
        MediaList: false,
        MediaQueryList: false,
        MediaQueryListEvent: false,
        MediaRecorder: false,
        MediaSettingsRange: false,
        MediaSource: false,
        MediaStream: false,
        MediaStreamAudioDestinationNode: false,
        MediaStreamAudioSourceNode: false,
        MediaStreamEvent: false,
        MediaStreamTrack: false,
        MediaStreamTrackEvent: false,
        menubar: false,
        MessageChannel: false,
        MessageEvent: false,
        MessagePort: false,
        MIDIAccess: false,
        MIDIConnectionEvent: false,
        MIDIInput: false,
        MIDIInputMap: false,
        MIDIMessageEvent: false,
        MIDIOutput: false,
        MIDIOutputMap: false,
        MIDIPort: false,
        MimeType: false,
        MimeTypeArray: false,
        MouseEvent: false,
        moveBy: false,
        moveTo: false,
        MutationEvent: false,
        MutationObserver: false,
        MutationRecord: false,
        name: false,
        NamedNodeMap: false,
        NavigationPreloadManager: false,
        navigator: false,
        Navigator: false,
        NetworkInformation: false,
        Node: false,
        NodeFilter: false,
        NodeIterator: false,
        NodeList: false,
        Notification: false,
        OfflineAudioCompletionEvent: false,
        OfflineAudioContext: false,
        offscreenBuffering: false,
        OffscreenCanvas: true,
        onabort: true,
        onafterprint: true,
        onanimationend: true,
        onanimationiteration: true,
        onanimationstart: true,
        onappinstalled: true,
        onauxclick: true,
        onbeforeinstallprompt: true,
        onbeforeprint: true,
        onbeforeunload: true,
        onblur: true,
        oncancel: true,
        oncanplay: true,
        oncanplaythrough: true,
        onchange: true,
        onclick: true,
        onclose: true,
        oncontextmenu: true,
        oncuechange: true,
        ondblclick: true,
        ondevicemotion: true,
        ondeviceorientation: true,
        ondeviceorientationabsolute: true,
        ondrag: true,
        ondragend: true,
        ondragenter: true,
        ondragleave: true,
        ondragover: true,
        ondragstart: true,
        ondrop: true,
        ondurationchange: true,
        onemptied: true,
        onended: true,
        onerror: true,
        onfocus: true,
        ongotpointercapture: true,
        onhashchange: true,
        oninput: true,
        oninvalid: true,
        onkeydown: true,
        onkeypress: true,
        onkeyup: true,
        onlanguagechange: true,
        onload: true,
        onloadeddata: true,
        onloadedmetadata: true,
        onloadstart: true,
        onlostpointercapture: true,
        onmessage: true,
        onmessageerror: true,
        onmousedown: true,
        onmouseenter: true,
        onmouseleave: true,
        onmousemove: true,
        onmouseout: true,
        onmouseover: true,
        onmouseup: true,
        onmousewheel: true,
        onoffline: true,
        ononline: true,
        onpagehide: true,
        onpageshow: true,
        onpause: true,
        onplay: true,
        onplaying: true,
        onpointercancel: true,
        onpointerdown: true,
        onpointerenter: true,
        onpointerleave: true,
        onpointermove: true,
        onpointerout: true,
        onpointerover: true,
        onpointerup: true,
        onpopstate: true,
        onprogress: true,
        onratechange: true,
        onrejectionhandled: true,
        onreset: true,
        onresize: true,
        onscroll: true,
        onsearch: true,
        onseeked: true,
        onseeking: true,
        onselect: true,
        onstalled: true,
        onstorage: true,
        onsubmit: true,
        onsuspend: true,
        ontimeupdate: true,
        ontoggle: true,
        ontransitionend: true,
        onunhandledrejection: true,
        onunload: true,
        onvolumechange: true,
        onwaiting: true,
        onwheel: true,
        open: false,
        openDatabase: false,
        opener: false,
        Option: false,
        origin: false,
        OscillatorNode: false,
        outerHeight: false,
        outerWidth: false,
        PageTransitionEvent: false,
        pageXOffset: false,
        pageYOffset: false,
        PannerNode: false,
        parent: false,
        Path2D: false,
        PaymentAddress: false,
        PaymentRequest: false,
        PaymentRequestUpdateEvent: false,
        PaymentResponse: false,
        performance: false,
        Performance: false,
        PerformanceEntry: false,
        PerformanceLongTaskTiming: false,
        PerformanceMark: false,
        PerformanceMeasure: false,
        PerformanceNavigation: false,
        PerformanceNavigationTiming: false,
        PerformanceObserver: false,
        PerformanceObserverEntryList: false,
        PerformancePaintTiming: false,
        PerformanceResourceTiming: false,
        PerformanceTiming: false,
        PeriodicWave: false,
        Permissions: false,
        PermissionStatus: false,
        personalbar: false,
        PhotoCapabilities: false,
        Plugin: false,
        PluginArray: false,
        PointerEvent: false,
        PopStateEvent: false,
        postMessage: false,
        Presentation: false,
        PresentationAvailability: false,
        PresentationConnection: false,
        PresentationConnectionAvailableEvent: false,
        PresentationConnectionCloseEvent: false,
        PresentationConnectionList: false,
        PresentationReceiver: false,
        PresentationRequest: false,
        print: false,
        ProcessingInstruction: false,
        ProgressEvent: false,
        PromiseRejectionEvent: false,
        prompt: false,
        PushManager: false,
        PushSubscription: false,
        PushSubscriptionOptions: false,
        queueMicrotask: false,
        RadioNodeList: false,
        Range: false,
        ReadableStream: false,
        registerProcessor: false,
        RemotePlayback: false,
        removeEventListener: false,
        Request: false,
        requestAnimationFrame: false,
        requestIdleCallback: false,
        resizeBy: false,
        ResizeObserver: false,
        ResizeObserverEntry: false,
        resizeTo: false,
        Response: false,
        RTCCertificate: false,
        RTCDataChannel: false,
        RTCDataChannelEvent: false,
        RTCDtlsTransport: false,
        RTCIceCandidate: false,
        RTCIceGatherer: false,
        RTCIceTransport: false,
        RTCPeerConnection: false,
        RTCPeerConnectionIceEvent: false,
        RTCRtpContributingSource: false,
        RTCRtpReceiver: false,
        RTCRtpSender: false,
        RTCSctpTransport: false,
        RTCSessionDescription: false,
        RTCStatsReport: false,
        RTCTrackEvent: false,
        screen: false,
        Screen: false,
        screenLeft: false,
        ScreenOrientation: false,
        screenTop: false,
        screenX: false,
        screenY: false,
        ScriptProcessorNode: false,
        scroll: false,
        scrollbars: false,
        scrollBy: false,
        scrollTo: false,
        scrollX: false,
        scrollY: false,
        SecurityPolicyViolationEvent: false,
        Selection: false,
        self: false,
        ServiceWorker: false,
        ServiceWorkerContainer: false,
        ServiceWorkerRegistration: false,
        sessionStorage: false,
        setInterval: false,
        setTimeout: false,
        ShadowRoot: false,
        SharedWorker: false,
        SourceBuffer: false,
        SourceBufferList: false,
        speechSynthesis: false,
        SpeechSynthesisEvent: false,
        SpeechSynthesisUtterance: false,
        StaticRange: false,
        status: false,
        statusbar: false,
        StereoPannerNode: false,
        stop: false,
        Storage: false,
        StorageEvent: false,
        StorageManager: false,
        styleMedia: false,
        StyleSheet: false,
        StyleSheetList: false,
        SubtleCrypto: false,
        SVGAElement: false,
        SVGAngle: false,
        SVGAnimatedAngle: false,
        SVGAnimatedBoolean: false,
        SVGAnimatedEnumeration: false,
        SVGAnimatedInteger: false,
        SVGAnimatedLength: false,
        SVGAnimatedLengthList: false,
        SVGAnimatedNumber: false,
        SVGAnimatedNumberList: false,
        SVGAnimatedPreserveAspectRatio: false,
        SVGAnimatedRect: false,
        SVGAnimatedString: false,
        SVGAnimatedTransformList: false,
        SVGAnimateElement: false,
        SVGAnimateMotionElement: false,
        SVGAnimateTransformElement: false,
        SVGAnimationElement: false,
        SVGCircleElement: false,
        SVGClipPathElement: false,
        SVGComponentTransferFunctionElement: false,
        SVGDefsElement: false,
        SVGDescElement: false,
        SVGDiscardElement: false,
        SVGElement: false,
        SVGEllipseElement: false,
        SVGFEBlendElement: false,
        SVGFEColorMatrixElement: false,
        SVGFEComponentTransferElement: false,
        SVGFECompositeElement: false,
        SVGFEConvolveMatrixElement: false,
        SVGFEDiffuseLightingElement: false,
        SVGFEDisplacementMapElement: false,
        SVGFEDistantLightElement: false,
        SVGFEDropShadowElement: false,
        SVGFEFloodElement: false,
        SVGFEFuncAElement: false,
        SVGFEFuncBElement: false,
        SVGFEFuncGElement: false,
        SVGFEFuncRElement: false,
        SVGFEGaussianBlurElement: false,
        SVGFEImageElement: false,
        SVGFEMergeElement: false,
        SVGFEMergeNodeElement: false,
        SVGFEMorphologyElement: false,
        SVGFEOffsetElement: false,
        SVGFEPointLightElement: false,
        SVGFESpecularLightingElement: false,
        SVGFESpotLightElement: false,
        SVGFETileElement: false,
        SVGFETurbulenceElement: false,
        SVGFilterElement: false,
        SVGForeignObjectElement: false,
        SVGGElement: false,
        SVGGeometryElement: false,
        SVGGradientElement: false,
        SVGGraphicsElement: false,
        SVGImageElement: false,
        SVGLength: false,
        SVGLengthList: false,
        SVGLinearGradientElement: false,
        SVGLineElement: false,
        SVGMarkerElement: false,
        SVGMaskElement: false,
        SVGMatrix: false,
        SVGMetadataElement: false,
        SVGMPathElement: false,
        SVGNumber: false,
        SVGNumberList: false,
        SVGPathElement: false,
        SVGPatternElement: false,
        SVGPoint: false,
        SVGPointList: false,
        SVGPolygonElement: false,
        SVGPolylineElement: false,
        SVGPreserveAspectRatio: false,
        SVGRadialGradientElement: false,
        SVGRect: false,
        SVGRectElement: false,
        SVGScriptElement: false,
        SVGSetElement: false,
        SVGStopElement: false,
        SVGStringList: false,
        SVGStyleElement: false,
        SVGSVGElement: false,
        SVGSwitchElement: false,
        SVGSymbolElement: false,
        SVGTextContentElement: false,
        SVGTextElement: false,
        SVGTextPathElement: false,
        SVGTextPositioningElement: false,
        SVGTitleElement: false,
        SVGTransform: false,
        SVGTransformList: false,
        SVGTSpanElement: false,
        SVGUnitTypes: false,
        SVGUseElement: false,
        SVGViewElement: false,
        TaskAttributionTiming: false,
        Text: false,
        TextDecoder: false,
        TextEncoder: false,
        TextEvent: false,
        TextMetrics: false,
        TextTrack: false,
        TextTrackCue: false,
        TextTrackCueList: false,
        TextTrackList: false,
        TimeRanges: false,
        toolbar: false,
        top: false,
        Touch: false,
        TouchEvent: false,
        TouchList: false,
        TrackEvent: false,
        TransitionEvent: false,
        TreeWalker: false,
        UIEvent: false,
        URL: false,
        URLSearchParams: false,
        ValidityState: false,
        visualViewport: false,
        VisualViewport: false,
        VTTCue: false,
        WaveShaperNode: false,
        WebAssembly: false,
        WebGL2RenderingContext: false,
        WebGLActiveInfo: false,
        WebGLBuffer: false,
        WebGLContextEvent: false,
        WebGLFramebuffer: false,
        WebGLProgram: false,
        WebGLQuery: false,
        WebGLRenderbuffer: false,
        WebGLRenderingContext: false,
        WebGLSampler: false,
        WebGLShader: false,
        WebGLShaderPrecisionFormat: false,
        WebGLSync: false,
        WebGLTexture: false,
        WebGLTransformFeedback: false,
        WebGLUniformLocation: false,
        WebGLVertexArrayObject: false,
        WebSocket: false,
        WheelEvent: false,
        window: false,
        Window: false,
        Worker: false,
        WritableStream: false,
        XMLDocument: false,
        XMLHttpRequest: false,
        XMLHttpRequestEventTarget: false,
        XMLHttpRequestUpload: false,
        XMLSerializer: false,
        XPathEvaluator: false,
        XPathExpression: false,
        XPathResult: false,
        XSLTProcessor: false
    };
    var worker = {
        addEventListener: false,
        applicationCache: false,
        atob: false,
        Blob: false,
        BroadcastChannel: false,
        btoa: false,
        Cache: false,
        caches: false,
        clearInterval: false,
        clearTimeout: false,
        close: true,
        console: false,
        fetch: false,
        FileReaderSync: false,
        FormData: false,
        Headers: false,
        IDBCursor: false,
        IDBCursorWithValue: false,
        IDBDatabase: false,
        IDBFactory: false,
        IDBIndex: false,
        IDBKeyRange: false,
        IDBObjectStore: false,
        IDBOpenDBRequest: false,
        IDBRequest: false,
        IDBTransaction: false,
        IDBVersionChangeEvent: false,
        ImageData: false,
        importScripts: true,
        indexedDB: false,
        location: false,
        MessageChannel: false,
        MessagePort: false,
        name: false,
        navigator: false,
        Notification: false,
        onclose: true,
        onconnect: true,
        onerror: true,
        onlanguagechange: true,
        onmessage: true,
        onoffline: true,
        ononline: true,
        onrejectionhandled: true,
        onunhandledrejection: true,
        performance: false,
        Performance: false,
        PerformanceEntry: false,
        PerformanceMark: false,
        PerformanceMeasure: false,
        PerformanceNavigation: false,
        PerformanceResourceTiming: false,
        PerformanceTiming: false,
        postMessage: true,
        "Promise": false,
        queueMicrotask: false,
        removeEventListener: false,
        Request: false,
        Response: false,
        self: true,
        ServiceWorkerRegistration: false,
        setInterval: false,
        setTimeout: false,
        TextDecoder: false,
        TextEncoder: false,
        URL: false,
        URLSearchParams: false,
        WebSocket: false,
        Worker: false,
        WorkerGlobalScope: false,
        XMLHttpRequest: false
    };
    var node$1 = {
        __dirname: false,
        __filename: false,
        Buffer: false,
        clearImmediate: false,
        clearInterval: false,
        clearTimeout: false,
        console: false,
        exports: true,
        global: false,
        "Intl": false,
        module: false,
        process: false,
        queueMicrotask: false,
        require: false,
        setImmediate: false,
        setInterval: false,
        setTimeout: false,
        TextDecoder: false,
        TextEncoder: false,
        URL: false,
        URLSearchParams: false
    };
    var commonjs = {
        exports: true,
        global: false,
        module: false,
        require: false
    };
    var amd = {
        define: false,
        require: false
    };
    var mocha = {
        after: false,
        afterEach: false,
        before: false,
        beforeEach: false,
        context: false,
        describe: false,
        it: false,
        mocha: false,
        run: false,
        setup: false,
        specify: false,
        suite: false,
        suiteSetup: false,
        suiteTeardown: false,
        teardown: false,
        test: false,
        xcontext: false,
        xdescribe: false,
        xit: false,
        xspecify: false
    };
    var jasmine = {
        afterAll: false,
        afterEach: false,
        beforeAll: false,
        beforeEach: false,
        describe: false,
        expect: false,
        fail: false,
        fdescribe: false,
        fit: false,
        it: false,
        jasmine: false,
        pending: false,
        runs: false,
        spyOn: false,
        spyOnProperty: false,
        waits: false,
        waitsFor: false,
        xdescribe: false,
        xit: false
    };
    var jest = {
        afterAll: false,
        afterEach: false,
        beforeAll: false,
        beforeEach: false,
        describe: false,
        expect: false,
        fdescribe: false,
        fit: false,
        it: false,
        jest: false,
        pit: false,
        require: false,
        test: false,
        xdescribe: false,
        xit: false,
        xtest: false
    };
    var qunit = {
        asyncTest: false,
        deepEqual: false,
        equal: false,
        expect: false,
        module: false,
        notDeepEqual: false,
        notEqual: false,
        notOk: false,
        notPropEqual: false,
        notStrictEqual: false,
        ok: false,
        propEqual: false,
        QUnit: false,
        raises: false,
        start: false,
        stop: false,
        strictEqual: false,
        test: false,
        throws: false
    };
    var phantomjs = {
        console: true,
        exports: true,
        phantom: true,
        require: true,
        WebPage: true
    };
    var couch = {
        emit: false,
        exports: false,
        getRow: false,
        log: false,
        module: false,
        provides: false,
        require: false,
        respond: false,
        send: false,
        start: false,
        sum: false
    };
    var rhino = {
        defineClass: false,
        deserialize: false,
        gc: false,
        help: false,
        importClass: false,
        importPackage: false,
        java: false,
        load: false,
        loadClass: false,
        Packages: false,
        print: false,
        quit: false,
        readFile: false,
        readUrl: false,
        runCommand: false,
        seal: false,
        serialize: false,
        spawn: false,
        sync: false,
        toint32: false,
        version: false
    };
    var nashorn = {
        __DIR__: false,
        __FILE__: false,
        __LINE__: false,
        com: false,
        edu: false,
        exit: false,
        java: false,
        Java: false,
        javafx: false,
        JavaImporter: false,
        javax: false,
        JSAdapter: false,
        load: false,
        loadWithNewGlobal: false,
        org: false,
        Packages: false,
        print: false,
        quit: false
    };
    var wsh = {
        ActiveXObject: true,
        Enumerator: true,
        GetObject: true,
        ScriptEngine: true,
        ScriptEngineBuildVersion: true,
        ScriptEngineMajorVersion: true,
        ScriptEngineMinorVersion: true,
        VBArray: true,
        WScript: true,
        WSH: true,
        XDomainRequest: true
    };
    var jquery = {
        $: false,
        jQuery: false
    };
    var yui = {
        YAHOO: false,
        YAHOO_config: false,
        YUI: false,
        YUI_config: false
    };
    var shelljs = {
        cat: false,
        cd: false,
        chmod: false,
        config: false,
        cp: false,
        dirs: false,
        echo: false,
        env: false,
        error: false,
        exec: false,
        exit: false,
        find: false,
        grep: false,
        ln: false,
        ls: false,
        mkdir: false,
        mv: false,
        popd: false,
        pushd: false,
        pwd: false,
        rm: false,
        sed: false,
        set: false,
        target: false,
        tempdir: false,
        test: false,
        touch: false,
        which: false
    };
    var prototypejs = {
        $: false,
        $$: false,
        $A: false,
        $break: false,
        $continue: false,
        $F: false,
        $H: false,
        $R: false,
        $w: false,
        Abstract: false,
        Ajax: false,
        Autocompleter: false,
        Builder: false,
        Class: false,
        Control: false,
        Draggable: false,
        Draggables: false,
        Droppables: false,
        Effect: false,
        Element: false,
        Enumerable: false,
        Event: false,
        Field: false,
        Form: false,
        Hash: false,
        Insertion: false,
        ObjectRange: false,
        PeriodicalExecuter: false,
        Position: false,
        Prototype: false,
        Scriptaculous: false,
        Selector: false,
        Sortable: false,
        SortableObserver: false,
        Sound: false,
        Template: false,
        Toggle: false,
        Try: false
    };
    var meteor = {
        _: false,
        $: false,
        Accounts: false,
        AccountsClient: false,
        AccountsCommon: false,
        AccountsServer: false,
        App: false,
        Assets: false,
        Blaze: false,
        check: false,
        Cordova: false,
        DDP: false,
        DDPRateLimiter: false,
        DDPServer: false,
        Deps: false,
        EJSON: false,
        Email: false,
        HTTP: false,
        Log: false,
        Match: false,
        Meteor: false,
        Mongo: false,
        MongoInternals: false,
        Npm: false,
        Package: false,
        Plugin: false,
        process: false,
        Random: false,
        ReactiveDict: false,
        ReactiveVar: false,
        Router: false,
        ServiceConfiguration: false,
        Session: false,
        share: false,
        Spacebars: false,
        Template: false,
        Tinytest: false,
        Tracker: false,
        UI: false,
        Utils: false,
        WebApp: false,
        WebAppInternals: false
    };
    var mongo = {
        _isWindows: false,
        _rand: false,
        BulkWriteResult: false,
        cat: false,
        cd: false,
        connect: false,
        db: false,
        getHostName: false,
        getMemInfo: false,
        hostname: false,
        ISODate: false,
        listFiles: false,
        load: false,
        ls: false,
        md5sumFile: false,
        mkdir: false,
        Mongo: false,
        NumberInt: false,
        NumberLong: false,
        ObjectId: false,
        PlanCache: false,
        print: false,
        printjson: false,
        pwd: false,
        quit: false,
        removeFile: false,
        rs: false,
        sh: false,
        UUID: false,
        version: false,
        WriteResult: false
    };
    var applescript = {
        $: false,
        Application: false,
        Automation: false,
        console: false,
        delay: false,
        Library: false,
        ObjC: false,
        ObjectSpecifier: false,
        Path: false,
        Progress: false,
        Ref: false
    };
    var serviceworker = {
        addEventListener: false,
        applicationCache: false,
        atob: false,
        Blob: false,
        BroadcastChannel: false,
        btoa: false,
        Cache: false,
        caches: false,
        CacheStorage: false,
        clearInterval: false,
        clearTimeout: false,
        Client: false,
        clients: false,
        Clients: false,
        close: true,
        console: false,
        ExtendableEvent: false,
        ExtendableMessageEvent: false,
        fetch: false,
        FetchEvent: false,
        FileReaderSync: false,
        FormData: false,
        Headers: false,
        IDBCursor: false,
        IDBCursorWithValue: false,
        IDBDatabase: false,
        IDBFactory: false,
        IDBIndex: false,
        IDBKeyRange: false,
        IDBObjectStore: false,
        IDBOpenDBRequest: false,
        IDBRequest: false,
        IDBTransaction: false,
        IDBVersionChangeEvent: false,
        ImageData: false,
        importScripts: false,
        indexedDB: false,
        location: false,
        MessageChannel: false,
        MessagePort: false,
        name: false,
        navigator: false,
        Notification: false,
        onclose: true,
        onconnect: true,
        onerror: true,
        onfetch: true,
        oninstall: true,
        onlanguagechange: true,
        onmessage: true,
        onmessageerror: true,
        onnotificationclick: true,
        onnotificationclose: true,
        onoffline: true,
        ononline: true,
        onpush: true,
        onpushsubscriptionchange: true,
        onrejectionhandled: true,
        onsync: true,
        onunhandledrejection: true,
        performance: false,
        Performance: false,
        PerformanceEntry: false,
        PerformanceMark: false,
        PerformanceMeasure: false,
        PerformanceNavigation: false,
        PerformanceResourceTiming: false,
        PerformanceTiming: false,
        postMessage: true,
        "Promise": false,
        queueMicrotask: false,
        registration: false,
        removeEventListener: false,
        Request: false,
        Response: false,
        self: false,
        ServiceWorker: false,
        ServiceWorkerContainer: false,
        ServiceWorkerGlobalScope: false,
        ServiceWorkerMessageEvent: false,
        ServiceWorkerRegistration: false,
        setInterval: false,
        setTimeout: false,
        skipWaiting: false,
        TextDecoder: false,
        TextEncoder: false,
        URL: false,
        URLSearchParams: false,
        WebSocket: false,
        WindowClient: false,
        Worker: false,
        WorkerGlobalScope: false,
        XMLHttpRequest: false
    };
    var atomtest = {
        advanceClock: false,
        fakeClearInterval: false,
        fakeClearTimeout: false,
        fakeSetInterval: false,
        fakeSetTimeout: false,
        resetTimeouts: false,
        waitsForPromise: false
    };
    var embertest = {
        andThen: false,
        click: false,
        currentPath: false,
        currentRouteName: false,
        currentURL: false,
        fillIn: false,
        find: false,
        findAll: false,
        findWithAssert: false,
        keyEvent: false,
        pauseTest: false,
        resumeTest: false,
        triggerEvent: false,
        visit: false,
        wait: false
    };
    var protractor = {
        $: false,
        $$: false,
        browser: false,
        by: false,
        By: false,
        DartObject: false,
        element: false,
        protractor: false
    };
    var webextensions = {
        browser: false,
        chrome: false,
        opr: false
    };
    var greasemonkey = {
        cloneInto: false,
        createObjectIn: false,
        exportFunction: false,
        GM: false,
        GM_addStyle: false,
        GM_deleteValue: false,
        GM_getResourceText: false,
        GM_getResourceURL: false,
        GM_getValue: false,
        GM_info: false,
        GM_listValues: false,
        GM_log: false,
        GM_openInTab: false,
        GM_registerMenuCommand: false,
        GM_setClipboard: false,
        GM_setValue: false,
        GM_xmlhttpRequest: false,
        unsafeWindow: false
    };
    var devtools = {
        $: false,
        $_: false,
        $$: false,
        $0: false,
        $1: false,
        $2: false,
        $3: false,
        $4: false,
        $x: false,
        chrome: false,
        clear: false,
        copy: false,
        debug: false,
        dir: false,
        dirxml: false,
        getEventListeners: false,
        inspect: false,
        keys: false,
        monitor: false,
        monitorEvents: false,
        profile: false,
        profileEnd: false,
        queryObjects: false,
        table: false,
        undebug: false,
        unmonitor: false,
        unmonitorEvents: false,
        values: false
    };
    var require$$0$a = {
        builtin: builtin,
        es5: es5,
        es2015: es2015,
        es2017: es2017,
        browser: browser$2,
        worker: worker,
        node: node$1,
        commonjs: commonjs,
        amd: amd,
        mocha: mocha,
        jasmine: jasmine,
        jest: jest,
        qunit: qunit,
        phantomjs: phantomjs,
        couch: couch,
        rhino: rhino,
        nashorn: nashorn,
        wsh: wsh,
        jquery: jquery,
        yui: yui,
        shelljs: shelljs,
        prototypejs: prototypejs,
        meteor: meteor,
        mongo: mongo,
        applescript: applescript,
        serviceworker: serviceworker,
        atomtest: atomtest,
        embertest: embertest,
        protractor: protractor,
        "shared-node-browser": {
        clearInterval: false,
        clearTimeout: false,
        console: false,
        setInterval: false,
        setTimeout: false,
        URL: false,
        URLSearchParams: false
    },
        webextensions: webextensions,
        greasemonkey: greasemonkey,
        devtools: devtools
    };
  
    var globalsBABEL_8_BREAKINGFalse;
    var hasRequiredGlobalsBABEL_8_BREAKINGFalse;
    function requireGlobalsBABEL_8_BREAKINGFalse() {
      if (hasRequiredGlobalsBABEL_8_BREAKINGFalse) return globalsBABEL_8_BREAKINGFalse;
      hasRequiredGlobalsBABEL_8_BREAKINGFalse = 1;
      globalsBABEL_8_BREAKINGFalse = require$$0$a;
      return globalsBABEL_8_BREAKINGFalse;
    }
  
    function bool$9(value) {
      if (value == null) return false;
      return value && value !== "false" && value !== "0";
    }
    var globals = bool$9(browser$1$1.env["BABEL_8_BREAKING"]) ? requireGlobalsBABEL_8_BREAKINGTrue() : requireGlobalsBABEL_8_BREAKINGFalse();
  
    var NOT_LOCAL_BINDING$1 = NOT_LOCAL_BINDING$2,
      callExpression$d = callExpression$e,
      cloneNode$h = cloneNode$j,
      getBindingIdentifiers$1 = getBindingIdentifiers$2,
      identifier$g = identifier$i,
      isArrayExpression$1 = isArrayExpression$2,
      isBinary$2 = isBinary$3,
      isClass$1 = isClass$2,
      isClassBody$1 = isClassBody$2,
      isClassDeclaration$1 = isClassDeclaration$2,
      isExportAllDeclaration = isExportAllDeclaration$1,
      isExportDefaultDeclaration$2 = isExportDefaultDeclaration$3,
      isExportNamedDeclaration$2 = isExportNamedDeclaration$3,
      isFunctionDeclaration$1 = isFunctionDeclaration$2,
      isIdentifier$i = isIdentifier$j,
      isImportDeclaration$1 = isImportDeclaration$2,
      isLiteral$5 = isLiteral$6,
      isMethod = isMethod$1,
      isModuleSpecifier = isModuleSpecifier$1,
      isNullLiteral$1 = isNullLiteral$2,
      isObjectExpression$2 = isObjectExpression$3,
      isProperty = isProperty$1,
      isPureish$1 = isPureish$2,
      isRegExpLiteral$1 = isRegExpLiteral$2,
      isSuper$2 = isSuper$3,
      isTaggedTemplateExpression$1 = isTaggedTemplateExpression$2,
      isTemplateLiteral$1 = isTemplateLiteral$2,
      isThisExpression$1 = isThisExpression$2,
      isUnaryExpression = isUnaryExpression$1,
      isVariableDeclaration$2 = isVariableDeclaration$3,
      matchesPattern$1 = matchesPattern$2,
      memberExpression$b = memberExpression$c,
      numericLiteral$7 = numericLiteral$8,
      toIdentifier = toIdentifier$1,
      unaryExpression$6 = unaryExpression$7,
      variableDeclaration$6 = variableDeclaration$8,
      variableDeclarator$6 = variableDeclarator$8,
      isRecordExpression = isRecordExpression$1,
      isTupleExpression = isTupleExpression$1,
      isObjectProperty$4 = isObjectProperty$5,
      isTopicReference = isTopicReference$1,
      isMetaProperty = isMetaProperty$1,
      isPrivateName$2 = isPrivateName$3,
      isExportDeclaration$2 = isExportDeclaration$3;
    function gatherNodeParts(node, parts) {
      switch (node == null ? void 0 : node.type) {
        default:
          if (isImportDeclaration$1(node) || isExportDeclaration$2(node)) {
            if ((isExportAllDeclaration(node) || isExportNamedDeclaration$2(node) || isImportDeclaration$1(node)) && node.source) {
              gatherNodeParts(node.source, parts);
            } else if ((isExportNamedDeclaration$2(node) || isImportDeclaration$1(node)) && node.specifiers && node.specifiers.length) {
              for (var _iterator = _createForOfIteratorHelperLoose(node.specifiers), _step; !(_step = _iterator()).done;) {
                var e = _step.value;
                gatherNodeParts(e, parts);
              }
            } else if ((isExportDefaultDeclaration$2(node) || isExportNamedDeclaration$2(node)) && node.declaration) {
              gatherNodeParts(node.declaration, parts);
            }
          } else if (isModuleSpecifier(node)) {
            gatherNodeParts(node.local, parts);
          } else if (isLiteral$5(node) && !isNullLiteral$1(node) && !isRegExpLiteral$1(node) && !isTemplateLiteral$1(node)) {
            parts.push(node.value);
          }
          break;
        case "MemberExpression":
        case "OptionalMemberExpression":
        case "JSXMemberExpression":
          gatherNodeParts(node.object, parts);
          gatherNodeParts(node.property, parts);
          break;
        case "Identifier":
        case "JSXIdentifier":
          parts.push(node.name);
          break;
        case "CallExpression":
        case "OptionalCallExpression":
        case "NewExpression":
          gatherNodeParts(node.callee, parts);
          break;
        case "ObjectExpression":
        case "ObjectPattern":
          for (var _iterator2 = _createForOfIteratorHelperLoose(node.properties), _step2; !(_step2 = _iterator2()).done;) {
            var _e = _step2.value;
            gatherNodeParts(_e, parts);
          }
          break;
        case "SpreadElement":
        case "RestElement":
          gatherNodeParts(node.argument, parts);
          break;
        case "ObjectProperty":
        case "ObjectMethod":
        case "ClassProperty":
        case "ClassMethod":
        case "ClassPrivateProperty":
        case "ClassPrivateMethod":
          gatherNodeParts(node.key, parts);
          break;
        case "ThisExpression":
          parts.push("this");
          break;
        case "Super":
          parts.push("super");
          break;
        case "Import":
          parts.push("import");
          break;
        case "DoExpression":
          parts.push("do");
          break;
        case "YieldExpression":
          parts.push("yield");
          gatherNodeParts(node.argument, parts);
          break;
        case "AwaitExpression":
          parts.push("await");
          gatherNodeParts(node.argument, parts);
          break;
        case "AssignmentExpression":
          gatherNodeParts(node.left, parts);
          break;
        case "VariableDeclarator":
          gatherNodeParts(node.id, parts);
          break;
        case "FunctionExpression":
        case "FunctionDeclaration":
        case "ClassExpression":
        case "ClassDeclaration":
          gatherNodeParts(node.id, parts);
          break;
        case "PrivateName":
          gatherNodeParts(node.id, parts);
          break;
        case "ParenthesizedExpression":
          gatherNodeParts(node.expression, parts);
          break;
        case "UnaryExpression":
        case "UpdateExpression":
          gatherNodeParts(node.argument, parts);
          break;
        case "MetaProperty":
          gatherNodeParts(node.meta, parts);
          gatherNodeParts(node.property, parts);
          break;
        case "JSXElement":
          gatherNodeParts(node.openingElement, parts);
          break;
        case "JSXOpeningElement":
          gatherNodeParts(node.name, parts);
          break;
        case "JSXFragment":
          gatherNodeParts(node.openingFragment, parts);
          break;
        case "JSXOpeningFragment":
          parts.push("Fragment");
          break;
        case "JSXNamespacedName":
          gatherNodeParts(node.namespace, parts);
          gatherNodeParts(node.name, parts);
          break;
      }
    }
    var collectorVisitor = {
      ForStatement: function ForStatement(path) {
        var declar = path.get("init");
        if (declar.isVar()) {
          var scope = path.scope;
          var parentScope = scope.getFunctionParent() || scope.getProgramParent();
          parentScope.registerBinding("var", declar);
        }
      },
      Declaration: function Declaration(path) {
        if (path.isBlockScoped()) return;
        if (path.isImportDeclaration()) return;
        if (path.isExportDeclaration()) return;
        var parent = path.scope.getFunctionParent() || path.scope.getProgramParent();
        parent.registerDeclaration(path);
      },
      ImportDeclaration: function ImportDeclaration(path) {
        var parent = path.scope.getBlockParent();
        parent.registerDeclaration(path);
      },
      ReferencedIdentifier: function ReferencedIdentifier(path, state) {
        state.references.push(path);
      },
      ForXStatement: function ForXStatement(path, state) {
        var left = path.get("left");
        if (left.isPattern() || left.isIdentifier()) {
          state.constantViolations.push(path);
        } else if (left.isVar()) {
          var scope = path.scope;
          var parentScope = scope.getFunctionParent() || scope.getProgramParent();
          parentScope.registerBinding("var", left);
        }
      },
      ExportDeclaration: {
        exit: function exit(path) {
          var node = path.node,
            scope = path.scope;
          if (isExportAllDeclaration(node)) return;
          var declar = node.declaration;
          if (isClassDeclaration$1(declar) || isFunctionDeclaration$1(declar)) {
            var id = declar.id;
            if (!id) return;
            var binding = scope.getBinding(id.name);
            binding == null ? void 0 : binding.reference(path);
          } else if (isVariableDeclaration$2(declar)) {
            for (var _iterator3 = _createForOfIteratorHelperLoose(declar.declarations), _step3; !(_step3 = _iterator3()).done;) {
              var decl = _step3.value;
              for (var _i = 0, _Object$keys = Object.keys(getBindingIdentifiers$1(decl)); _i < _Object$keys.length; _i++) {
                var _name = _Object$keys[_i];
                var _binding = scope.getBinding(_name);
                _binding == null ? void 0 : _binding.reference(path);
              }
            }
          }
        }
      },
      LabeledStatement: function LabeledStatement(path) {
        path.scope.getBlockParent().registerDeclaration(path);
      },
      AssignmentExpression: function AssignmentExpression(path, state) {
        state.assignments.push(path);
      },
      UpdateExpression: function UpdateExpression(path, state) {
        state.constantViolations.push(path);
      },
      UnaryExpression: function UnaryExpression(path, state) {
        if (path.node.operator === "delete") {
          state.constantViolations.push(path);
        }
      },
      BlockScoped: function BlockScoped(path) {
        var scope = path.scope;
        if (scope.path === path) scope = scope.parent;
        var parent = scope.getBlockParent();
        parent.registerDeclaration(path);
        if (path.isClassDeclaration() && path.node.id) {
          var id = path.node.id;
          var _name2 = id.name;
          path.scope.bindings[_name2] = path.scope.parent.getBinding(_name2);
        }
      },
      CatchClause: function CatchClause(path) {
        path.scope.registerBinding("let", path);
      },
      Function: function Function(path) {
        var params = path.get("params");
        for (var _iterator4 = _createForOfIteratorHelperLoose(params), _step4; !(_step4 = _iterator4()).done;) {
          var param = _step4.value;
          path.scope.registerBinding("param", param);
        }
        if (path.isFunctionExpression() && path.has("id") && !path.get("id").node[NOT_LOCAL_BINDING$1]) {
          path.scope.registerBinding("local", path.get("id"), path);
        }
      },
      ClassExpression: function ClassExpression(path) {
        if (path.has("id") && !path.get("id").node[NOT_LOCAL_BINDING$1]) {
          path.scope.registerBinding("local", path);
        }
      }
    };
    var uid = 0;
    var Scope$1 = function () {
      function Scope(path) {
        this.uid = void 0;
        this.path = void 0;
        this.block = void 0;
        this.labels = void 0;
        this.inited = void 0;
        this.bindings = void 0;
        this.references = void 0;
        this.globals = void 0;
        this.uids = void 0;
        this.data = void 0;
        this.crawling = void 0;
        var node = path.node;
        var cached = scope.get(node);
        if ((cached == null ? void 0 : cached.path) === path) {
          return cached;
        }
        scope.set(node, this);
        this.uid = uid++;
        this.block = node;
        this.path = path;
        this.labels = new Map();
        this.inited = false;
      }
      var _proto = Scope.prototype;
      _proto.traverse = function traverse$1(node, opts, state) {
        traverse(node, opts, this, state, this.path);
      };
      _proto.generateDeclaredUidIdentifier = function generateDeclaredUidIdentifier(name) {
        var id = this.generateUidIdentifier(name);
        this.push({
          id: id
        });
        return cloneNode$h(id);
      };
      _proto.generateUidIdentifier = function generateUidIdentifier(name) {
        return identifier$g(this.generateUid(name));
      };
      _proto.generateUid = function generateUid(name) {
        if (name === void 0) {
          name = "temp";
        }
        name = toIdentifier(name).replace(/^_+/, "").replace(/[0-9]+$/g, "");
        var uid;
        var i = 1;
        do {
          uid = this._generateUid(name, i);
          i++;
        } while (this.hasLabel(uid) || this.hasBinding(uid) || this.hasGlobal(uid) || this.hasReference(uid));
        var program = this.getProgramParent();
        program.references[uid] = true;
        program.uids[uid] = true;
        return uid;
      };
      _proto._generateUid = function _generateUid(name, i) {
        var id = name;
        if (i > 1) id += i;
        return "_" + id;
      };
      _proto.generateUidBasedOnNode = function generateUidBasedOnNode(node, defaultName) {
        var parts = [];
        gatherNodeParts(node, parts);
        var id = parts.join("$");
        id = id.replace(/^_/, "") || defaultName || "ref";
        return this.generateUid(id.slice(0, 20));
      };
      _proto.generateUidIdentifierBasedOnNode = function generateUidIdentifierBasedOnNode(node, defaultName) {
        return identifier$g(this.generateUidBasedOnNode(node, defaultName));
      };
      _proto.isStatic = function isStatic(node) {
        if (isThisExpression$1(node) || isSuper$2(node) || isTopicReference(node)) {
          return true;
        }
        if (isIdentifier$i(node)) {
          var binding = this.getBinding(node.name);
          if (binding) {
            return binding.constant;
          } else {
            return this.hasBinding(node.name);
          }
        }
        return false;
      };
      _proto.maybeGenerateMemoised = function maybeGenerateMemoised(node, dontPush) {
        if (this.isStatic(node)) {
          return null;
        } else {
          var id = this.generateUidIdentifierBasedOnNode(node);
          if (!dontPush) {
            this.push({
              id: id
            });
            return cloneNode$h(id);
          }
          return id;
        }
      };
      _proto.checkBlockScopedCollisions = function checkBlockScopedCollisions(local, kind, name, id) {
        if (kind === "param") return;
        if (local.kind === "local") return;
        var duplicate = kind === "let" || local.kind === "let" || local.kind === "const" || local.kind === "module" || local.kind === "param" && kind === "const";
        if (duplicate) {
          throw this.hub.buildError(id, "Duplicate declaration \"" + name + "\"", TypeError);
        }
      };
      _proto.rename = function rename(oldName, newName) {
        var binding = this.getBinding(oldName);
        if (binding) {
          newName || (newName = this.generateUidIdentifier(oldName).name);
          var renamer = new Renamer(binding, oldName, newName);
          {
            renamer.rename(arguments[2]);
          }
        }
      };
      _proto._renameFromMap = function _renameFromMap(map, oldName, newName, value) {
        if (map[oldName]) {
          map[newName] = value;
          map[oldName] = null;
        }
      };
      _proto.dump = function dump() {
        var sep = "-".repeat(60);
        console.log(sep);
        var scope = this;
        do {
          console.log("#", scope.block.type);
          for (var _i2 = 0, _Object$keys2 = Object.keys(scope.bindings); _i2 < _Object$keys2.length; _i2++) {
            var _name3 = _Object$keys2[_i2];
            var binding = scope.bindings[_name3];
            console.log(" -", _name3, {
              constant: binding.constant,
              references: binding.references,
              violations: binding.constantViolations.length,
              kind: binding.kind
            });
          }
        } while (scope = scope.parent);
        console.log(sep);
      };
      _proto.toArray = function toArray(node, i, arrayLikeIsIterable) {
        if (isIdentifier$i(node)) {
          var binding = this.getBinding(node.name);
          if (binding != null && binding.constant && binding.path.isGenericType("Array")) {
            return node;
          }
        }
        if (isArrayExpression$1(node)) {
          return node;
        }
        if (isIdentifier$i(node, {
          name: "arguments"
        })) {
          return callExpression$d(memberExpression$b(memberExpression$b(memberExpression$b(identifier$g("Array"), identifier$g("prototype")), identifier$g("slice")), identifier$g("call")), [node]);
        }
        var helperName;
        var args = [node];
        if (i === true) {
          helperName = "toConsumableArray";
        } else if (typeof i === "number") {
          args.push(numericLiteral$7(i));
          helperName = "slicedToArray";
        } else {
          helperName = "toArray";
        }
        if (arrayLikeIsIterable) {
          args.unshift(this.hub.addHelper(helperName));
          helperName = "maybeArrayLike";
        }
        return callExpression$d(this.hub.addHelper(helperName), args);
      };
      _proto.hasLabel = function hasLabel(name) {
        return !!this.getLabel(name);
      };
      _proto.getLabel = function getLabel(name) {
        return this.labels.get(name);
      };
      _proto.registerLabel = function registerLabel(path) {
        this.labels.set(path.node.label.name, path);
      };
      _proto.registerDeclaration = function registerDeclaration(path) {
        if (path.isLabeledStatement()) {
          this.registerLabel(path);
        } else if (path.isFunctionDeclaration()) {
          this.registerBinding("hoisted", path.get("id"), path);
        } else if (path.isVariableDeclaration()) {
          var declarations = path.get("declarations");
          var kind = path.node.kind;
          for (var _iterator5 = _createForOfIteratorHelperLoose(declarations), _step5; !(_step5 = _iterator5()).done;) {
            var declar = _step5.value;
            this.registerBinding(kind === "using" ? "const" : kind, declar);
          }
        } else if (path.isClassDeclaration()) {
          if (path.node.declare) return;
          this.registerBinding("let", path);
        } else if (path.isImportDeclaration()) {
          var isTypeDeclaration = path.node.importKind === "type" || path.node.importKind === "typeof";
          var specifiers = path.get("specifiers");
          for (var _iterator6 = _createForOfIteratorHelperLoose(specifiers), _step6; !(_step6 = _iterator6()).done;) {
            var specifier = _step6.value;
            var isTypeSpecifier = isTypeDeclaration || specifier.isImportSpecifier() && (specifier.node.importKind === "type" || specifier.node.importKind === "typeof");
            this.registerBinding(isTypeSpecifier ? "unknown" : "module", specifier);
          }
        } else if (path.isExportDeclaration()) {
          var _declar = path.get("declaration");
          if (_declar.isClassDeclaration() || _declar.isFunctionDeclaration() || _declar.isVariableDeclaration()) {
            this.registerDeclaration(_declar);
          }
        } else {
          this.registerBinding("unknown", path);
        }
      };
      _proto.buildUndefinedNode = function buildUndefinedNode() {
        return unaryExpression$6("void", numericLiteral$7(0), true);
      };
      _proto.registerConstantViolation = function registerConstantViolation(path) {
        var ids = path.getBindingIdentifiers();
        for (var _i3 = 0, _Object$keys3 = Object.keys(ids); _i3 < _Object$keys3.length; _i3++) {
          var _name4 = _Object$keys3[_i3];
          var binding = this.getBinding(_name4);
          if (binding) binding.reassign(path);
        }
      };
      _proto.registerBinding = function registerBinding(kind, path, bindingPath) {
        if (bindingPath === void 0) {
          bindingPath = path;
        }
        if (!kind) throw new ReferenceError("no `kind`");
        if (path.isVariableDeclaration()) {
          var declarators = path.get("declarations");
          for (var _iterator7 = _createForOfIteratorHelperLoose(declarators), _step7; !(_step7 = _iterator7()).done;) {
            var declar = _step7.value;
            this.registerBinding(kind, declar);
          }
          return;
        }
        var parent = this.getProgramParent();
        var ids = path.getOuterBindingIdentifiers(true);
        for (var _i4 = 0, _Object$keys4 = Object.keys(ids); _i4 < _Object$keys4.length; _i4++) {
          var _name5 = _Object$keys4[_i4];
          parent.references[_name5] = true;
          for (var _iterator8 = _createForOfIteratorHelperLoose(ids[_name5]), _step8; !(_step8 = _iterator8()).done;) {
            var id = _step8.value;
            var local = this.getOwnBinding(_name5);
            if (local) {
              if (local.identifier === id) continue;
              this.checkBlockScopedCollisions(local, kind, _name5, id);
            }
            if (local) {
              this.registerConstantViolation(bindingPath);
            } else {
              this.bindings[_name5] = new Binding({
                identifier: id,
                scope: this,
                path: bindingPath,
                kind: kind
              });
            }
          }
        }
      };
      _proto.addGlobal = function addGlobal(node) {
        this.globals[node.name] = node;
      };
      _proto.hasUid = function hasUid(name) {
        var scope = this;
        do {
          if (scope.uids[name]) return true;
        } while (scope = scope.parent);
        return false;
      };
      _proto.hasGlobal = function hasGlobal(name) {
        var scope = this;
        do {
          if (scope.globals[name]) return true;
        } while (scope = scope.parent);
        return false;
      };
      _proto.hasReference = function hasReference(name) {
        return !!this.getProgramParent().references[name];
      };
      _proto.isPure = function isPure(node, constantsOnly) {
        if (isIdentifier$i(node)) {
          var binding = this.getBinding(node.name);
          if (!binding) return false;
          if (constantsOnly) return binding.constant;
          return true;
        } else if (isThisExpression$1(node) || isMetaProperty(node) || isTopicReference(node) || isPrivateName$2(node)) {
          return true;
        } else if (isClass$1(node)) {
          var _node$decorators;
          if (node.superClass && !this.isPure(node.superClass, constantsOnly)) {
            return false;
          }
          if (((_node$decorators = node.decorators) == null ? void 0 : _node$decorators.length) > 0) {
            return false;
          }
          return this.isPure(node.body, constantsOnly);
        } else if (isClassBody$1(node)) {
          for (var _iterator9 = _createForOfIteratorHelperLoose(node.body), _step9; !(_step9 = _iterator9()).done;) {
            var method = _step9.value;
            if (!this.isPure(method, constantsOnly)) return false;
          }
          return true;
        } else if (isBinary$2(node)) {
          return this.isPure(node.left, constantsOnly) && this.isPure(node.right, constantsOnly);
        } else if (isArrayExpression$1(node) || isTupleExpression(node)) {
          for (var _iterator10 = _createForOfIteratorHelperLoose(node.elements), _step10; !(_step10 = _iterator10()).done;) {
            var elem = _step10.value;
            if (elem !== null && !this.isPure(elem, constantsOnly)) return false;
          }
          return true;
        } else if (isObjectExpression$2(node) || isRecordExpression(node)) {
          for (var _iterator11 = _createForOfIteratorHelperLoose(node.properties), _step11; !(_step11 = _iterator11()).done;) {
            var prop = _step11.value;
            if (!this.isPure(prop, constantsOnly)) return false;
          }
          return true;
        } else if (isMethod(node)) {
          var _node$decorators2;
          if (node.computed && !this.isPure(node.key, constantsOnly)) return false;
          if (((_node$decorators2 = node.decorators) == null ? void 0 : _node$decorators2.length) > 0) {
            return false;
          }
          return true;
        } else if (isProperty(node)) {
          var _node$decorators3;
          if (node.computed && !this.isPure(node.key, constantsOnly)) return false;
          if (((_node$decorators3 = node.decorators) == null ? void 0 : _node$decorators3.length) > 0) {
            return false;
          }
          if (isObjectProperty$4(node) || node["static"]) {
            if (node.value !== null && !this.isPure(node.value, constantsOnly)) {
              return false;
            }
          }
          return true;
        } else if (isUnaryExpression(node)) {
          return this.isPure(node.argument, constantsOnly);
        } else if (isTaggedTemplateExpression$1(node)) {
          return matchesPattern$1(node.tag, "String.raw") && !this.hasBinding("String", true) && this.isPure(node.quasi, constantsOnly);
        } else if (isTemplateLiteral$1(node)) {
          for (var _iterator12 = _createForOfIteratorHelperLoose(node.expressions), _step12; !(_step12 = _iterator12()).done;) {
            var expression = _step12.value;
            if (!this.isPure(expression, constantsOnly)) return false;
          }
          return true;
        } else {
          return isPureish$1(node);
        }
      };
      _proto.setData = function setData(key, val) {
        return this.data[key] = val;
      };
      _proto.getData = function getData(key) {
        var scope = this;
        do {
          var data = scope.data[key];
          if (data != null) return data;
        } while (scope = scope.parent);
      };
      _proto.removeData = function removeData(key) {
        var scope = this;
        do {
          var data = scope.data[key];
          if (data != null) scope.data[key] = null;
        } while (scope = scope.parent);
      };
      _proto.init = function init() {
        if (!this.inited) {
          this.inited = true;
          this.crawl();
        }
      };
      _proto.crawl = function crawl() {
        var path = this.path;
        this.references = Object.create(null);
        this.bindings = Object.create(null);
        this.globals = Object.create(null);
        this.uids = Object.create(null);
        this.data = Object.create(null);
        var programParent = this.getProgramParent();
        if (programParent.crawling) return;
        var state = {
          references: [],
          constantViolations: [],
          assignments: []
        };
        this.crawling = true;
        if (path.type !== "Program" && collectorVisitor._exploded) {
          for (var _iterator13 = _createForOfIteratorHelperLoose(collectorVisitor.enter), _step13; !(_step13 = _iterator13()).done;) {
            var _visit = _step13.value;
            _visit(path, state);
          }
          var typeVisitors = collectorVisitor[path.type];
          if (typeVisitors) {
            for (var _iterator14 = _createForOfIteratorHelperLoose(typeVisitors.enter), _step14; !(_step14 = _iterator14()).done;) {
              var visit = _step14.value;
              visit(path, state);
            }
          }
        }
        path.traverse(collectorVisitor, state);
        this.crawling = false;
        for (var _iterator15 = _createForOfIteratorHelperLoose(state.assignments), _step15; !(_step15 = _iterator15()).done;) {
          var _path = _step15.value;
          var ids = _path.getBindingIdentifiers();
          for (var _i5 = 0, _Object$keys5 = Object.keys(ids); _i5 < _Object$keys5.length; _i5++) {
            var _name6 = _Object$keys5[_i5];
            if (_path.scope.getBinding(_name6)) continue;
            programParent.addGlobal(ids[_name6]);
          }
          _path.scope.registerConstantViolation(_path);
        }
        for (var _iterator16 = _createForOfIteratorHelperLoose(state.references), _step16; !(_step16 = _iterator16()).done;) {
          var ref = _step16.value;
          var binding = ref.scope.getBinding(ref.node.name);
          if (binding) {
            binding.reference(ref);
          } else {
            programParent.addGlobal(ref.node);
          }
        }
        for (var _iterator17 = _createForOfIteratorHelperLoose(state.constantViolations), _step17; !(_step17 = _iterator17()).done;) {
          var _path2 = _step17.value;
          _path2.scope.registerConstantViolation(_path2);
        }
      };
      _proto.push = function push(opts) {
        var path = this.path;
        if (path.isPattern()) {
          path = this.getPatternParent().path;
        } else if (!path.isBlockStatement() && !path.isProgram()) {
          path = this.getBlockParent().path;
        }
        if (path.isSwitchStatement()) {
          path = (this.getFunctionParent() || this.getProgramParent()).path;
        }
        if (path.isLoop() || path.isCatchClause() || path.isFunction()) {
          path.ensureBlock();
          path = path.get("body");
        }
        var unique = opts.unique;
        var kind = opts.kind || "var";
        var blockHoist = opts._blockHoist == null ? 2 : opts._blockHoist;
        var dataKey = "declaration:" + kind + ":" + blockHoist;
        var declarPath = !unique && path.getData(dataKey);
        if (!declarPath) {
          var declar = variableDeclaration$6(kind, []);
          declar._blockHoist = blockHoist;
          var _unshiftContainer = path.unshiftContainer("body", [declar]);
          var _unshiftContainer2 = _slicedToArray(_unshiftContainer, 1);
          declarPath = _unshiftContainer2[0];
          if (!unique) path.setData(dataKey, declarPath);
        }
        var declarator = variableDeclarator$6(opts.id, opts.init);
        var len = declarPath.node.declarations.push(declarator);
        path.scope.registerBinding(kind, declarPath.get("declarations")[len - 1]);
      };
      _proto.getProgramParent = function getProgramParent() {
        var scope = this;
        do {
          if (scope.path.isProgram()) {
            return scope;
          }
        } while (scope = scope.parent);
        throw new Error("Couldn't find a Program");
      };
      _proto.getFunctionParent = function getFunctionParent() {
        var scope = this;
        do {
          if (scope.path.isFunctionParent()) {
            return scope;
          }
        } while (scope = scope.parent);
        return null;
      };
      _proto.getBlockParent = function getBlockParent() {
        var scope = this;
        do {
          if (scope.path.isBlockParent()) {
            return scope;
          }
        } while (scope = scope.parent);
        throw new Error("We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...");
      };
      _proto.getPatternParent = function getPatternParent() {
        var scope = this;
        do {
          if (!scope.path.isPattern()) {
            return scope.getBlockParent();
          }
        } while (scope = scope.parent.parent);
        throw new Error("We couldn't find a BlockStatement, For, Switch, Function, Loop or Program...");
      };
      _proto.getAllBindings = function getAllBindings() {
        var ids = Object.create(null);
        var scope = this;
        do {
          for (var _i6 = 0, _Object$keys6 = Object.keys(scope.bindings); _i6 < _Object$keys6.length; _i6++) {
            var _key = _Object$keys6[_i6];
            if (_key in ids === false) {
              ids[_key] = scope.bindings[_key];
            }
          }
          scope = scope.parent;
        } while (scope);
        return ids;
      };
      _proto.getAllBindingsOfKind = function getAllBindingsOfKind() {
        var ids = Object.create(null);
        for (var _len = arguments.length, kinds = new Array(_len), _key2 = 0; _key2 < _len; _key2++) {
          kinds[_key2] = arguments[_key2];
        }
        for (var _i7 = 0, _kinds = kinds; _i7 < _kinds.length; _i7++) {
          var kind = _kinds[_i7];
          var scope = this;
          do {
            for (var _i8 = 0, _Object$keys7 = Object.keys(scope.bindings); _i8 < _Object$keys7.length; _i8++) {
              var _name7 = _Object$keys7[_i8];
              var binding = scope.bindings[_name7];
              if (binding.kind === kind) ids[_name7] = binding;
            }
            scope = scope.parent;
          } while (scope);
        }
        return ids;
      };
      _proto.bindingIdentifierEquals = function bindingIdentifierEquals(name, node) {
        return this.getBindingIdentifier(name) === node;
      };
      _proto.getBinding = function getBinding(name) {
        var scope = this;
        var previousPath;
        do {
          var binding = scope.getOwnBinding(name);
          if (binding) {
            var _previousPath;
            if ((_previousPath = previousPath) != null && _previousPath.isPattern() && binding.kind !== "param" && binding.kind !== "local") ; else {
              return binding;
            }
          } else if (!binding && name === "arguments" && scope.path.isFunction() && !scope.path.isArrowFunctionExpression()) {
            break;
          }
          previousPath = scope.path;
        } while (scope = scope.parent);
      };
      _proto.getOwnBinding = function getOwnBinding(name) {
        return this.bindings[name];
      };
      _proto.getBindingIdentifier = function getBindingIdentifier(name) {
        var _this$getBinding;
        return (_this$getBinding = this.getBinding(name)) == null ? void 0 : _this$getBinding.identifier;
      };
      _proto.getOwnBindingIdentifier = function getOwnBindingIdentifier(name) {
        var binding = this.bindings[name];
        return binding == null ? void 0 : binding.identifier;
      };
      _proto.hasOwnBinding = function hasOwnBinding(name) {
        return !!this.getOwnBinding(name);
      };
      _proto.hasBinding = function hasBinding(name, opts) {
        var _opts, _opts2, _opts3;
        if (!name) return false;
        if (this.hasOwnBinding(name)) return true;
        {
          if (typeof opts === "boolean") opts = {
            noGlobals: opts
          };
        }
        if (this.parentHasBinding(name, opts)) return true;
        if (!((_opts = opts) != null && _opts.noUids) && this.hasUid(name)) return true;
        if (!((_opts2 = opts) != null && _opts2.noGlobals) && Scope.globals.includes(name)) return true;
        if (!((_opts3 = opts) != null && _opts3.noGlobals) && Scope.contextVariables.includes(name)) return true;
        return false;
      };
      _proto.parentHasBinding = function parentHasBinding(name, opts) {
        var _this$parent;
        return (_this$parent = this.parent) == null ? void 0 : _this$parent.hasBinding(name, opts);
      };
      _proto.moveBindingTo = function moveBindingTo(name, scope) {
        var info = this.getBinding(name);
        if (info) {
          info.scope.removeOwnBinding(name);
          info.scope = scope;
          scope.bindings[name] = info;
        }
      };
      _proto.removeOwnBinding = function removeOwnBinding(name) {
        delete this.bindings[name];
      };
      _proto.removeBinding = function removeBinding(name) {
        var _this$getBinding2;
        (_this$getBinding2 = this.getBinding(name)) == null ? void 0 : _this$getBinding2.scope.removeOwnBinding(name);
        var scope = this;
        do {
          if (scope.uids[name]) {
            scope.uids[name] = false;
          }
        } while (scope = scope.parent);
      };
      _createClass(Scope, [{
        key: "parent",
        get: function get() {
          var _parent;
          var parent,
            path = this.path;
          do {
            var shouldSkip = path.key === "key" || path.listKey === "decorators";
            path = path.parentPath;
            if (shouldSkip && path.isMethod()) path = path.parentPath;
            if (path && path.isScope()) parent = path;
          } while (path && !parent);
          return (_parent = parent) == null ? void 0 : _parent.scope;
        }
      }, {
        key: "parentBlock",
        get: function get() {
          return this.path.parent;
        }
      }, {
        key: "hub",
        get: function get() {
          return this.path.hub;
        }
      }]);
      return Scope;
    }();
    Scope$1.globals = Object.keys(globals.builtin);
    Scope$1.contextVariables = ["arguments", "undefined", "Infinity", "NaN"];
  
    var genMapping_umd$1 = {exports: {}};
  
    var setArray_umd = {exports: {}};
  
    var hasRequiredSetArray_umd;
    function requireSetArray_umd() {
      if (hasRequiredSetArray_umd) return setArray_umd.exports;
      hasRequiredSetArray_umd = 1;
      (function (module, exports) {
        (function (global, factory) {
          factory(exports) ;
        })(commonjsGlobal, function (exports) {
          exports.get = void 0;
          exports.put = void 0;
          exports.pop = void 0;
          var SetArray = _createClass(function SetArray() {
            this._indexes = {
              __proto__: null
            };
            this.array = [];
          });
          (function () {
            exports.get = function (strarr, key) {
              return strarr._indexes[key];
            };
            exports.put = function (strarr, key) {
              var index = exports.get(strarr, key);
              if (index !== undefined) return index;
              var array = strarr.array,
                indexes = strarr._indexes;
              return indexes[key] = array.push(key) - 1;
            };
            exports.pop = function (strarr) {
              var array = strarr.array,
                indexes = strarr._indexes;
              if (array.length === 0) return;
              var last = array.pop();
              indexes[last] = undefined;
            };
          })();
          exports.SetArray = SetArray;
          Object.defineProperty(exports, '__esModule', {
            value: true
          });
        });
      })(setArray_umd, setArray_umd.exports);
      return setArray_umd.exports;
    }
  
    var lookup$1 = [];
    var revLookup$1 = [];
    var Arr$1 = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;
    var inited = false;
    function init () {
      inited = true;
      var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
      for (var i = 0, len = code.length; i < len; ++i) {
        lookup$1[i] = code[i];
        revLookup$1[code.charCodeAt(i)] = i;
      }
  
      revLookup$1['-'.charCodeAt(0)] = 62;
      revLookup$1['_'.charCodeAt(0)] = 63;
    }
  
    function toByteArray$1 (b64) {
      if (!inited) {
        init();
      }
      var i, j, l, tmp, placeHolders, arr;
      var len = b64.length;
  
      if (len % 4 > 0) {
        throw new Error('Invalid string. Length must be a multiple of 4')
      }
  
      // the number of equal signs (place holders)
      // if there are two placeholders, than the two characters before it
      // represent one byte
      // if there is only one, then the three characters before it represent 2 bytes
      // this is just a cheap hack to not do indexOf twice
      placeHolders = b64[len - 2] === '=' ? 2 : b64[len - 1] === '=' ? 1 : 0;
  
      // base64 is 4/3 + up to two characters of the original data
      arr = new Arr$1(len * 3 / 4 - placeHolders);
  
      // if there are placeholders, only get up to the last complete 4 chars
      l = placeHolders > 0 ? len - 4 : len;
  
      var L = 0;
  
      for (i = 0, j = 0; i < l; i += 4, j += 3) {
        tmp = (revLookup$1[b64.charCodeAt(i)] << 18) | (revLookup$1[b64.charCodeAt(i + 1)] << 12) | (revLookup$1[b64.charCodeAt(i + 2)] << 6) | revLookup$1[b64.charCodeAt(i + 3)];
        arr[L++] = (tmp >> 16) & 0xFF;
        arr[L++] = (tmp >> 8) & 0xFF;
        arr[L++] = tmp & 0xFF;
      }
  
      if (placeHolders === 2) {
        tmp = (revLookup$1[b64.charCodeAt(i)] << 2) | (revLookup$1[b64.charCodeAt(i + 1)] >> 4);
        arr[L++] = tmp & 0xFF;
      } else if (placeHolders === 1) {
        tmp = (revLookup$1[b64.charCodeAt(i)] << 10) | (revLookup$1[b64.charCodeAt(i + 1)] << 4) | (revLookup$1[b64.charCodeAt(i + 2)] >> 2);
        arr[L++] = (tmp >> 8) & 0xFF;
        arr[L++] = tmp & 0xFF;
      }
  
      return arr
    }
  
    function tripletToBase64$1 (num) {
      return lookup$1[num >> 18 & 0x3F] + lookup$1[num >> 12 & 0x3F] + lookup$1[num >> 6 & 0x3F] + lookup$1[num & 0x3F]
    }
  
    function encodeChunk$1 (uint8, start, end) {
      var tmp;
      var output = [];
      for (var i = start; i < end; i += 3) {
        tmp = (uint8[i] << 16) + (uint8[i + 1] << 8) + (uint8[i + 2]);
        output.push(tripletToBase64$1(tmp));
      }
      return output.join('')
    }
  
    function fromByteArray$1 (uint8) {
      if (!inited) {
        init();
      }
      var tmp;
      var len = uint8.length;
      var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes
      var output = '';
      var parts = [];
      var maxChunkLength = 16383; // must be multiple of 3
  
      // go through the array every three bytes, we'll deal with trailing stuff later
      for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
        parts.push(encodeChunk$1(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));
      }
  
      // pad the end with zeros, but make sure to not forget the extra bytes
      if (extraBytes === 1) {
        tmp = uint8[len - 1];
        output += lookup$1[tmp >> 2];
        output += lookup$1[(tmp << 4) & 0x3F];
        output += '==';
      } else if (extraBytes === 2) {
        tmp = (uint8[len - 2] << 8) + (uint8[len - 1]);
        output += lookup$1[tmp >> 10];
        output += lookup$1[(tmp >> 4) & 0x3F];
        output += lookup$1[(tmp << 2) & 0x3F];
        output += '=';
      }
  
      parts.push(output);
  
      return parts.join('')
    }
  
    function read (buffer, offset, isLE, mLen, nBytes) {
      var e, m;
      var eLen = nBytes * 8 - mLen - 1;
      var eMax = (1 << eLen) - 1;
      var eBias = eMax >> 1;
      var nBits = -7;
      var i = isLE ? (nBytes - 1) : 0;
      var d = isLE ? -1 : 1;
      var s = buffer[offset + i];
  
      i += d;
  
      e = s & ((1 << (-nBits)) - 1);
      s >>= (-nBits);
      nBits += eLen;
      for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
  
      m = e & ((1 << (-nBits)) - 1);
      e >>= (-nBits);
      nBits += mLen;
      for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
  
      if (e === 0) {
        e = 1 - eBias;
      } else if (e === eMax) {
        return m ? NaN : ((s ? -1 : 1) * Infinity)
      } else {
        m = m + Math.pow(2, mLen);
        e = e - eBias;
      }
      return (s ? -1 : 1) * m * Math.pow(2, e - mLen)
    }
  
    function write (buffer, value, offset, isLE, mLen, nBytes) {
      var e, m, c;
      var eLen = nBytes * 8 - mLen - 1;
      var eMax = (1 << eLen) - 1;
      var eBias = eMax >> 1;
      var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);
      var i = isLE ? 0 : (nBytes - 1);
      var d = isLE ? 1 : -1;
      var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;
  
      value = Math.abs(value);
  
      if (isNaN(value) || value === Infinity) {
        m = isNaN(value) ? 1 : 0;
        e = eMax;
      } else {
        e = Math.floor(Math.log(value) / Math.LN2);
        if (value * (c = Math.pow(2, -e)) < 1) {
          e--;
          c *= 2;
        }
        if (e + eBias >= 1) {
          value += rt / c;
        } else {
          value += rt * Math.pow(2, 1 - eBias);
        }
        if (value * c >= 2) {
          e++;
          c /= 2;
        }
  
        if (e + eBias >= eMax) {
          m = 0;
          e = eMax;
        } else if (e + eBias >= 1) {
          m = (value * c - 1) * Math.pow(2, mLen);
          e = e + eBias;
        } else {
          m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
          e = 0;
        }
      }
  
      for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
  
      e = (e << mLen) | m;
      eLen += mLen;
      for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
  
      buffer[offset + i - d] |= s * 128;
    }
  
    var toString = {}.toString;
  
    var isArray$1 = Array.isArray || function (arr) {
      return toString.call(arr) == '[object Array]';
    };
  
    /*!
     * The buffer module from node.js, for the browser.
     *
     * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
     * @license  MIT
     */
  
    var INSPECT_MAX_BYTES = 50;
  
    /**
     * If `Buffer.TYPED_ARRAY_SUPPORT`:
     *   === true    Use Uint8Array implementation (fastest)
     *   === false   Use Object implementation (most compatible, even IE6)
     *
     * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,
     * Opera 11.6+, iOS 4.2+.
     *
     * Due to various browser bugs, sometimes the Object implementation will be used even
     * when the browser supports typed arrays.
     *
     * Note:
     *
     *   - Firefox 4-29 lacks support for adding new properties to `Uint8Array` instances,
     *     See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438.
     *
     *   - Chrome 9-10 is missing the `TypedArray.prototype.subarray` function.
     *
     *   - IE10 has a broken `TypedArray.prototype.subarray` function which returns arrays of
     *     incorrect length in some situations.
  
     * We detect these buggy browsers and set `Buffer.TYPED_ARRAY_SUPPORT` to `false` so they
     * get the Object implementation, which is slower but behaves correctly.
     */
    Buffer$1.TYPED_ARRAY_SUPPORT = global$1.TYPED_ARRAY_SUPPORT !== undefined
      ? global$1.TYPED_ARRAY_SUPPORT
      : true;
  
    /*
     * Export kMaxLength after typed array support is determined.
     */
    kMaxLength();
  
    function kMaxLength () {
      return Buffer$1.TYPED_ARRAY_SUPPORT
        ? 0x7fffffff
        : 0x3fffffff
    }
  
    function createBuffer (that, length) {
      if (kMaxLength() < length) {
        throw new RangeError('Invalid typed array length')
      }
      if (Buffer$1.TYPED_ARRAY_SUPPORT) {
        // Return an augmented `Uint8Array` instance, for best performance
        that = new Uint8Array(length);
        that.__proto__ = Buffer$1.prototype;
      } else {
        // Fallback: Return an object instance of the Buffer class
        if (that === null) {
          that = new Buffer$1(length);
        }
        that.length = length;
      }
  
      return that
    }
  
    /**
     * The Buffer constructor returns instances of `Uint8Array` that have their
     * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of
     * `Uint8Array`, so the returned instances will have all the node `Buffer` methods
     * and the `Uint8Array` methods. Square bracket notation works as expected -- it
     * returns a single octet.
     *
     * The `Uint8Array` prototype remains unmodified.
     */
  
    function Buffer$1 (arg, encodingOrOffset, length) {
      if (!Buffer$1.TYPED_ARRAY_SUPPORT && !(this instanceof Buffer$1)) {
        return new Buffer$1(arg, encodingOrOffset, length)
      }
  
      // Common case.
      if (typeof arg === 'number') {
        if (typeof encodingOrOffset === 'string') {
          throw new Error(
            'If encoding is specified then the first argument must be a string'
          )
        }
        return allocUnsafe(this, arg)
      }
      return from(this, arg, encodingOrOffset, length)
    }
  
    Buffer$1.poolSize = 8192; // not used by this implementation
  
    // TODO: Legacy, not needed anymore. Remove in next major version.
    Buffer$1._augment = function (arr) {
      arr.__proto__ = Buffer$1.prototype;
      return arr
    };
  
    function from (that, value, encodingOrOffset, length) {
      if (typeof value === 'number') {
        throw new TypeError('"value" argument must not be a number')
      }
  
      if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
        return fromArrayBuffer(that, value, encodingOrOffset, length)
      }
  
      if (typeof value === 'string') {
        return fromString(that, value, encodingOrOffset)
      }
  
      return fromObject(that, value)
    }
  
    /**
     * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError
     * if value is a number.
     * Buffer.from(str[, encoding])
     * Buffer.from(array)
     * Buffer.from(buffer)
     * Buffer.from(arrayBuffer[, byteOffset[, length]])
     **/
    Buffer$1.from = function (value, encodingOrOffset, length) {
      return from(null, value, encodingOrOffset, length)
    };
  
    if (Buffer$1.TYPED_ARRAY_SUPPORT) {
      Buffer$1.prototype.__proto__ = Uint8Array.prototype;
      Buffer$1.__proto__ = Uint8Array;
    }
  
    function assertSize (size) {
      if (typeof size !== 'number') {
        throw new TypeError('"size" argument must be a number')
      } else if (size < 0) {
        throw new RangeError('"size" argument must not be negative')
      }
    }
  
    function alloc (that, size, fill, encoding) {
      assertSize(size);
      if (size <= 0) {
        return createBuffer(that, size)
      }
      if (fill !== undefined) {
        // Only pay attention to encoding if it's a string. This
        // prevents accidentally sending in a number that would
        // be interpretted as a start offset.
        return typeof encoding === 'string'
          ? createBuffer(that, size).fill(fill, encoding)
          : createBuffer(that, size).fill(fill)
      }
      return createBuffer(that, size)
    }
  
    /**
     * Creates a new filled Buffer instance.
     * alloc(size[, fill[, encoding]])
     **/
    Buffer$1.alloc = function (size, fill, encoding) {
      return alloc(null, size, fill, encoding)
    };
  
    function allocUnsafe (that, size) {
      assertSize(size);
      that = createBuffer(that, size < 0 ? 0 : checked(size) | 0);
      if (!Buffer$1.TYPED_ARRAY_SUPPORT) {
        for (var i = 0; i < size; ++i) {
          that[i] = 0;
        }
      }
      return that
    }
  
    /**
     * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.
     * */
    Buffer$1.allocUnsafe = function (size) {
      return allocUnsafe(null, size)
    };
    /**
     * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.
     */
    Buffer$1.allocUnsafeSlow = function (size) {
      return allocUnsafe(null, size)
    };
  
    function fromString (that, string, encoding) {
      if (typeof encoding !== 'string' || encoding === '') {
        encoding = 'utf8';
      }
  
      if (!Buffer$1.isEncoding(encoding)) {
        throw new TypeError('"encoding" must be a valid string encoding')
      }
  
      var length = byteLength$1(string, encoding) | 0;
      that = createBuffer(that, length);
  
      var actual = that.write(string, encoding);
  
      if (actual !== length) {
        // Writing a hex string, for example, that contains invalid characters will
        // cause everything after the first invalid character to be ignored. (e.g.
        // 'abxxcd' will be treated as 'ab')
        that = that.slice(0, actual);
      }
  
      return that
    }
  
    function fromArrayLike (that, array) {
      var length = array.length < 0 ? 0 : checked(array.length) | 0;
      that = createBuffer(that, length);
      for (var i = 0; i < length; i += 1) {
        that[i] = array[i] & 255;
      }
      return that
    }
  
    function fromArrayBuffer (that, array, byteOffset, length) {
      array.byteLength; // this throws if `array` is not a valid ArrayBuffer
  
      if (byteOffset < 0 || array.byteLength < byteOffset) {
        throw new RangeError('\'offset\' is out of bounds')
      }
  
      if (array.byteLength < byteOffset + (length || 0)) {
        throw new RangeError('\'length\' is out of bounds')
      }
  
      if (byteOffset === undefined && length === undefined) {
        array = new Uint8Array(array);
      } else if (length === undefined) {
        array = new Uint8Array(array, byteOffset);
      } else {
        array = new Uint8Array(array, byteOffset, length);
      }
  
      if (Buffer$1.TYPED_ARRAY_SUPPORT) {
        // Return an augmented `Uint8Array` instance, for best performance
        that = array;
        that.__proto__ = Buffer$1.prototype;
      } else {
        // Fallback: Return an object instance of the Buffer class
        that = fromArrayLike(that, array);
      }
      return that
    }
  
    function fromObject (that, obj) {
      if (internalIsBuffer(obj)) {
        var len = checked(obj.length) | 0;
        that = createBuffer(that, len);
  
        if (that.length === 0) {
          return that
        }
  
        obj.copy(that, 0, 0, len);
        return that
      }
  
      if (obj) {
        if ((typeof ArrayBuffer !== 'undefined' &&
            obj.buffer instanceof ArrayBuffer) || 'length' in obj) {
          if (typeof obj.length !== 'number' || isnan(obj.length)) {
            return createBuffer(that, 0)
          }
          return fromArrayLike(that, obj)
        }
  
        if (obj.type === 'Buffer' && isArray$1(obj.data)) {
          return fromArrayLike(that, obj.data)
        }
      }
  
      throw new TypeError('First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.')
    }
  
    function checked (length) {
      // Note: cannot use `length < kMaxLength()` here because that fails when
      // length is NaN (which is otherwise coerced to zero.)
      if (length >= kMaxLength()) {
        throw new RangeError('Attempt to allocate Buffer larger than maximum ' +
                             'size: 0x' + kMaxLength().toString(16) + ' bytes')
      }
      return length | 0
    }
    Buffer$1.isBuffer = isBuffer$1;
    function internalIsBuffer (b) {
      return !!(b != null && b._isBuffer)
    }
  
    Buffer$1.compare = function compare (a, b) {
      if (!internalIsBuffer(a) || !internalIsBuffer(b)) {
        throw new TypeError('Arguments must be Buffers')
      }
  
      if (a === b) return 0
  
      var x = a.length;
      var y = b.length;
  
      for (var i = 0, len = Math.min(x, y); i < len; ++i) {
        if (a[i] !== b[i]) {
          x = a[i];
          y = b[i];
          break
        }
      }
  
      if (x < y) return -1
      if (y < x) return 1
      return 0
    };
  
    Buffer$1.isEncoding = function isEncoding (encoding) {
      switch (String(encoding).toLowerCase()) {
        case 'hex':
        case 'utf8':
        case 'utf-8':
        case 'ascii':
        case 'latin1':
        case 'binary':
        case 'base64':
        case 'ucs2':
        case 'ucs-2':
        case 'utf16le':
        case 'utf-16le':
          return true
        default:
          return false
      }
    };
  
    Buffer$1.concat = function concat (list, length) {
      if (!isArray$1(list)) {
        throw new TypeError('"list" argument must be an Array of Buffers')
      }
  
      if (list.length === 0) {
        return Buffer$1.alloc(0)
      }
  
      var i;
      if (length === undefined) {
        length = 0;
        for (i = 0; i < list.length; ++i) {
          length += list[i].length;
        }
      }
  
      var buffer = Buffer$1.allocUnsafe(length);
      var pos = 0;
      for (i = 0; i < list.length; ++i) {
        var buf = list[i];
        if (!internalIsBuffer(buf)) {
          throw new TypeError('"list" argument must be an Array of Buffers')
        }
        buf.copy(buffer, pos);
        pos += buf.length;
      }
      return buffer
    };
  
    function byteLength$1 (string, encoding) {
      if (internalIsBuffer(string)) {
        return string.length
      }
      if (typeof ArrayBuffer !== 'undefined' && typeof ArrayBuffer.isView === 'function' &&
          (ArrayBuffer.isView(string) || string instanceof ArrayBuffer)) {
        return string.byteLength
      }
      if (typeof string !== 'string') {
        string = '' + string;
      }
  
      var len = string.length;
      if (len === 0) return 0
  
      // Use a for loop to avoid recursion
      var loweredCase = false;
      for (;;) {
        switch (encoding) {
          case 'ascii':
          case 'latin1':
          case 'binary':
            return len
          case 'utf8':
          case 'utf-8':
          case undefined:
            return utf8ToBytes(string).length
          case 'ucs2':
          case 'ucs-2':
          case 'utf16le':
          case 'utf-16le':
            return len * 2
          case 'hex':
            return len >>> 1
          case 'base64':
            return base64ToBytes(string).length
          default:
            if (loweredCase) return utf8ToBytes(string).length // assume utf8
            encoding = ('' + encoding).toLowerCase();
            loweredCase = true;
        }
      }
    }
    Buffer$1.byteLength = byteLength$1;
  
    function slowToString (encoding, start, end) {
      var loweredCase = false;
  
      // No need to verify that "this.length <= MAX_UINT32" since it's a read-only
      // property of a typed array.
  
      // This behaves neither like String nor Uint8Array in that we set start/end
      // to their upper/lower bounds if the value passed is out of range.
      // undefined is handled specially as per ECMA-262 6th Edition,
      // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.
      if (start === undefined || start < 0) {
        start = 0;
      }
      // Return early if start > this.length. Done here to prevent potential uint32
      // coercion fail below.
      if (start > this.length) {
        return ''
      }
  
      if (end === undefined || end > this.length) {
        end = this.length;
      }
  
      if (end <= 0) {
        return ''
      }
  
      // Force coersion to uint32. This will also coerce falsey/NaN values to 0.
      end >>>= 0;
      start >>>= 0;
  
      if (end <= start) {
        return ''
      }
  
      if (!encoding) encoding = 'utf8';
  
      while (true) {
        switch (encoding) {
          case 'hex':
            return hexSlice(this, start, end)
  
          case 'utf8':
          case 'utf-8':
            return utf8Slice(this, start, end)
  
          case 'ascii':
            return asciiSlice(this, start, end)
  
          case 'latin1':
          case 'binary':
            return latin1Slice(this, start, end)
  
          case 'base64':
            return base64Slice(this, start, end)
  
          case 'ucs2':
          case 'ucs-2':
          case 'utf16le':
          case 'utf-16le':
            return utf16leSlice(this, start, end)
  
          default:
            if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
            encoding = (encoding + '').toLowerCase();
            loweredCase = true;
        }
      }
    }
  
    // The property is used by `Buffer.isBuffer` and `is-buffer` (in Safari 5-7) to detect
    // Buffer instances.
    Buffer$1.prototype._isBuffer = true;
  
    function swap (b, n, m) {
      var i = b[n];
      b[n] = b[m];
      b[m] = i;
    }
  
    Buffer$1.prototype.swap16 = function swap16 () {
      var len = this.length;
      if (len % 2 !== 0) {
        throw new RangeError('Buffer size must be a multiple of 16-bits')
      }
      for (var i = 0; i < len; i += 2) {
        swap(this, i, i + 1);
      }
      return this
    };
  
    Buffer$1.prototype.swap32 = function swap32 () {
      var len = this.length;
      if (len % 4 !== 0) {
        throw new RangeError('Buffer size must be a multiple of 32-bits')
      }
      for (var i = 0; i < len; i += 4) {
        swap(this, i, i + 3);
        swap(this, i + 1, i + 2);
      }
      return this
    };
  
    Buffer$1.prototype.swap64 = function swap64 () {
      var len = this.length;
      if (len % 8 !== 0) {
        throw new RangeError('Buffer size must be a multiple of 64-bits')
      }
      for (var i = 0; i < len; i += 8) {
        swap(this, i, i + 7);
        swap(this, i + 1, i + 6);
        swap(this, i + 2, i + 5);
        swap(this, i + 3, i + 4);
      }
      return this
    };
  
    Buffer$1.prototype.toString = function toString () {
      var length = this.length | 0;
      if (length === 0) return ''
      if (arguments.length === 0) return utf8Slice(this, 0, length)
      return slowToString.apply(this, arguments)
    };
  
    Buffer$1.prototype.equals = function equals (b) {
      if (!internalIsBuffer(b)) throw new TypeError('Argument must be a Buffer')
      if (this === b) return true
      return Buffer$1.compare(this, b) === 0
    };
  
    Buffer$1.prototype.inspect = function inspect () {
      var str = '';
      var max = INSPECT_MAX_BYTES;
      if (this.length > 0) {
        str = this.toString('hex', 0, max).match(/.{2}/g).join(' ');
        if (this.length > max) str += ' ... ';
      }
      return '<Buffer ' + str + '>'
    };
  
    Buffer$1.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {
      if (!internalIsBuffer(target)) {
        throw new TypeError('Argument must be a Buffer')
      }
  
      if (start === undefined) {
        start = 0;
      }
      if (end === undefined) {
        end = target ? target.length : 0;
      }
      if (thisStart === undefined) {
        thisStart = 0;
      }
      if (thisEnd === undefined) {
        thisEnd = this.length;
      }
  
      if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
        throw new RangeError('out of range index')
      }
  
      if (thisStart >= thisEnd && start >= end) {
        return 0
      }
      if (thisStart >= thisEnd) {
        return -1
      }
      if (start >= end) {
        return 1
      }
  
      start >>>= 0;
      end >>>= 0;
      thisStart >>>= 0;
      thisEnd >>>= 0;
  
      if (this === target) return 0
  
      var x = thisEnd - thisStart;
      var y = end - start;
      var len = Math.min(x, y);
  
      var thisCopy = this.slice(thisStart, thisEnd);
      var targetCopy = target.slice(start, end);
  
      for (var i = 0; i < len; ++i) {
        if (thisCopy[i] !== targetCopy[i]) {
          x = thisCopy[i];
          y = targetCopy[i];
          break
        }
      }
  
      if (x < y) return -1
      if (y < x) return 1
      return 0
    };
  
    // Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,
    // OR the last index of `val` in `buffer` at offset <= `byteOffset`.
    //
    // Arguments:
    // - buffer - a Buffer to search
    // - val - a string, Buffer, or number
    // - byteOffset - an index into `buffer`; will be clamped to an int32
    // - encoding - an optional encoding, relevant is val is a string
    // - dir - true for indexOf, false for lastIndexOf
    function bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {
      // Empty buffer means no match
      if (buffer.length === 0) return -1
  
      // Normalize byteOffset
      if (typeof byteOffset === 'string') {
        encoding = byteOffset;
        byteOffset = 0;
      } else if (byteOffset > 0x7fffffff) {
        byteOffset = 0x7fffffff;
      } else if (byteOffset < -0x80000000) {
        byteOffset = -0x80000000;
      }
      byteOffset = +byteOffset;  // Coerce to Number.
      if (isNaN(byteOffset)) {
        // byteOffset: it it's undefined, null, NaN, "foo", etc, search whole buffer
        byteOffset = dir ? 0 : (buffer.length - 1);
      }
  
      // Normalize byteOffset: negative offsets start from the end of the buffer
      if (byteOffset < 0) byteOffset = buffer.length + byteOffset;
      if (byteOffset >= buffer.length) {
        if (dir) return -1
        else byteOffset = buffer.length - 1;
      } else if (byteOffset < 0) {
        if (dir) byteOffset = 0;
        else return -1
      }
  
      // Normalize val
      if (typeof val === 'string') {
        val = Buffer$1.from(val, encoding);
      }
  
      // Finally, search either indexOf (if dir is true) or lastIndexOf
      if (internalIsBuffer(val)) {
        // Special case: looking for empty string/buffer always fails
        if (val.length === 0) {
          return -1
        }
        return arrayIndexOf(buffer, val, byteOffset, encoding, dir)
      } else if (typeof val === 'number') {
        val = val & 0xFF; // Search for a byte value [0-255]
        if (Buffer$1.TYPED_ARRAY_SUPPORT &&
            typeof Uint8Array.prototype.indexOf === 'function') {
          if (dir) {
            return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)
          } else {
            return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)
          }
        }
        return arrayIndexOf(buffer, [ val ], byteOffset, encoding, dir)
      }
  
      throw new TypeError('val must be string, number or Buffer')
    }
  
    function arrayIndexOf (arr, val, byteOffset, encoding, dir) {
      var indexSize = 1;
      var arrLength = arr.length;
      var valLength = val.length;
  
      if (encoding !== undefined) {
        encoding = String(encoding).toLowerCase();
        if (encoding === 'ucs2' || encoding === 'ucs-2' ||
            encoding === 'utf16le' || encoding === 'utf-16le') {
          if (arr.length < 2 || val.length < 2) {
            return -1
          }
          indexSize = 2;
          arrLength /= 2;
          valLength /= 2;
          byteOffset /= 2;
        }
      }
  
      function read (buf, i) {
        if (indexSize === 1) {
          return buf[i]
        } else {
          return buf.readUInt16BE(i * indexSize)
        }
      }
  
      var i;
      if (dir) {
        var foundIndex = -1;
        for (i = byteOffset; i < arrLength; i++) {
          if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
            if (foundIndex === -1) foundIndex = i;
            if (i - foundIndex + 1 === valLength) return foundIndex * indexSize
          } else {
            if (foundIndex !== -1) i -= i - foundIndex;
            foundIndex = -1;
          }
        }
      } else {
        if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;
        for (i = byteOffset; i >= 0; i--) {
          var found = true;
          for (var j = 0; j < valLength; j++) {
            if (read(arr, i + j) !== read(val, j)) {
              found = false;
              break
            }
          }
          if (found) return i
        }
      }
  
      return -1
    }
  
    Buffer$1.prototype.includes = function includes (val, byteOffset, encoding) {
      return this.indexOf(val, byteOffset, encoding) !== -1
    };
  
    Buffer$1.prototype.indexOf = function indexOf (val, byteOffset, encoding) {
      return bidirectionalIndexOf(this, val, byteOffset, encoding, true)
    };
  
    Buffer$1.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {
      return bidirectionalIndexOf(this, val, byteOffset, encoding, false)
    };
  
    function hexWrite (buf, string, offset, length) {
      offset = Number(offset) || 0;
      var remaining = buf.length - offset;
      if (!length) {
        length = remaining;
      } else {
        length = Number(length);
        if (length > remaining) {
          length = remaining;
        }
      }
  
      // must be an even number of digits
      var strLen = string.length;
      if (strLen % 2 !== 0) throw new TypeError('Invalid hex string')
  
      if (length > strLen / 2) {
        length = strLen / 2;
      }
      for (var i = 0; i < length; ++i) {
        var parsed = parseInt(string.substr(i * 2, 2), 16);
        if (isNaN(parsed)) return i
        buf[offset + i] = parsed;
      }
      return i
    }
  
    function utf8Write (buf, string, offset, length) {
      return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)
    }
  
    function asciiWrite (buf, string, offset, length) {
      return blitBuffer(asciiToBytes(string), buf, offset, length)
    }
  
    function latin1Write (buf, string, offset, length) {
      return asciiWrite(buf, string, offset, length)
    }
  
    function base64Write (buf, string, offset, length) {
      return blitBuffer(base64ToBytes(string), buf, offset, length)
    }
  
    function ucs2Write (buf, string, offset, length) {
      return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)
    }
  
    Buffer$1.prototype.write = function write (string, offset, length, encoding) {
      // Buffer#write(string)
      if (offset === undefined) {
        encoding = 'utf8';
        length = this.length;
        offset = 0;
      // Buffer#write(string, encoding)
      } else if (length === undefined && typeof offset === 'string') {
        encoding = offset;
        length = this.length;
        offset = 0;
      // Buffer#write(string, offset[, length][, encoding])
      } else if (isFinite(offset)) {
        offset = offset | 0;
        if (isFinite(length)) {
          length = length | 0;
          if (encoding === undefined) encoding = 'utf8';
        } else {
          encoding = length;
          length = undefined;
        }
      // legacy write(string, encoding, offset, length) - remove in v0.13
      } else {
        throw new Error(
          'Buffer.write(string, encoding, offset[, length]) is no longer supported'
        )
      }
  
      var remaining = this.length - offset;
      if (length === undefined || length > remaining) length = remaining;
  
      if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {
        throw new RangeError('Attempt to write outside buffer bounds')
      }
  
      if (!encoding) encoding = 'utf8';
  
      var loweredCase = false;
      for (;;) {
        switch (encoding) {
          case 'hex':
            return hexWrite(this, string, offset, length)
  
          case 'utf8':
          case 'utf-8':
            return utf8Write(this, string, offset, length)
  
          case 'ascii':
            return asciiWrite(this, string, offset, length)
  
          case 'latin1':
          case 'binary':
            return latin1Write(this, string, offset, length)
  
          case 'base64':
            // Warning: maxLength not taken into account in base64Write
            return base64Write(this, string, offset, length)
  
          case 'ucs2':
          case 'ucs-2':
          case 'utf16le':
          case 'utf-16le':
            return ucs2Write(this, string, offset, length)
  
          default:
            if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)
            encoding = ('' + encoding).toLowerCase();
            loweredCase = true;
        }
      }
    };
  
    Buffer$1.prototype.toJSON = function toJSON () {
      return {
        type: 'Buffer',
        data: Array.prototype.slice.call(this._arr || this, 0)
      }
    };
  
    function base64Slice (buf, start, end) {
      if (start === 0 && end === buf.length) {
        return fromByteArray$1(buf)
      } else {
        return fromByteArray$1(buf.slice(start, end))
      }
    }
  
    function utf8Slice (buf, start, end) {
      end = Math.min(buf.length, end);
      var res = [];
  
      var i = start;
      while (i < end) {
        var firstByte = buf[i];
        var codePoint = null;
        var bytesPerSequence = (firstByte > 0xEF) ? 4
          : (firstByte > 0xDF) ? 3
          : (firstByte > 0xBF) ? 2
          : 1;
  
        if (i + bytesPerSequence <= end) {
          var secondByte, thirdByte, fourthByte, tempCodePoint;
  
          switch (bytesPerSequence) {
            case 1:
              if (firstByte < 0x80) {
                codePoint = firstByte;
              }
              break
            case 2:
              secondByte = buf[i + 1];
              if ((secondByte & 0xC0) === 0x80) {
                tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);
                if (tempCodePoint > 0x7F) {
                  codePoint = tempCodePoint;
                }
              }
              break
            case 3:
              secondByte = buf[i + 1];
              thirdByte = buf[i + 2];
              if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
                tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);
                if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
                  codePoint = tempCodePoint;
                }
              }
              break
            case 4:
              secondByte = buf[i + 1];
              thirdByte = buf[i + 2];
              fourthByte = buf[i + 3];
              if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
                tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);
                if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
                  codePoint = tempCodePoint;
                }
              }
          }
        }
  
        if (codePoint === null) {
          // we did not generate a valid codePoint so insert a
          // replacement char (U+FFFD) and advance only 1 byte
          codePoint = 0xFFFD;
          bytesPerSequence = 1;
        } else if (codePoint > 0xFFFF) {
          // encode to utf16 (surrogate pair dance)
          codePoint -= 0x10000;
          res.push(codePoint >>> 10 & 0x3FF | 0xD800);
          codePoint = 0xDC00 | codePoint & 0x3FF;
        }
  
        res.push(codePoint);
        i += bytesPerSequence;
      }
  
      return decodeCodePointsArray(res)
    }
  
    // Based on http://stackoverflow.com/a/22747272/680742, the browser with
    // the lowest limit is Chrome, with 0x10000 args.
    // We go 1 magnitude less, for safety
    var MAX_ARGUMENTS_LENGTH = 0x1000;
  
    function decodeCodePointsArray (codePoints) {
      var len = codePoints.length;
      if (len <= MAX_ARGUMENTS_LENGTH) {
        return String.fromCharCode.apply(String, codePoints) // avoid extra slice()
      }
  
      // Decode in chunks to avoid "call stack size exceeded".
      var res = '';
      var i = 0;
      while (i < len) {
        res += String.fromCharCode.apply(
          String,
          codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)
        );
      }
      return res
    }
  
    function asciiSlice (buf, start, end) {
      var ret = '';
      end = Math.min(buf.length, end);
  
      for (var i = start; i < end; ++i) {
        ret += String.fromCharCode(buf[i] & 0x7F);
      }
      return ret
    }
  
    function latin1Slice (buf, start, end) {
      var ret = '';
      end = Math.min(buf.length, end);
  
      for (var i = start; i < end; ++i) {
        ret += String.fromCharCode(buf[i]);
      }
      return ret
    }
  
    function hexSlice (buf, start, end) {
      var len = buf.length;
  
      if (!start || start < 0) start = 0;
      if (!end || end < 0 || end > len) end = len;
  
      var out = '';
      for (var i = start; i < end; ++i) {
        out += toHex(buf[i]);
      }
      return out
    }
  
    function utf16leSlice (buf, start, end) {
      var bytes = buf.slice(start, end);
      var res = '';
      for (var i = 0; i < bytes.length; i += 2) {
        res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);
      }
      return res
    }
  
    Buffer$1.prototype.slice = function slice (start, end) {
      var len = this.length;
      start = ~~start;
      end = end === undefined ? len : ~~end;
  
      if (start < 0) {
        start += len;
        if (start < 0) start = 0;
      } else if (start > len) {
        start = len;
      }
  
      if (end < 0) {
        end += len;
        if (end < 0) end = 0;
      } else if (end > len) {
        end = len;
      }
  
      if (end < start) end = start;
  
      var newBuf;
      if (Buffer$1.TYPED_ARRAY_SUPPORT) {
        newBuf = this.subarray(start, end);
        newBuf.__proto__ = Buffer$1.prototype;
      } else {
        var sliceLen = end - start;
        newBuf = new Buffer$1(sliceLen, undefined);
        for (var i = 0; i < sliceLen; ++i) {
          newBuf[i] = this[i + start];
        }
      }
  
      return newBuf
    };
  
    /*
     * Need to make sure that buffer isn't trying to write out of bounds.
     */
    function checkOffset (offset, ext, length) {
      if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')
      if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')
    }
  
    Buffer$1.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {
      offset = offset | 0;
      byteLength = byteLength | 0;
      if (!noAssert) checkOffset(offset, byteLength, this.length);
  
      var val = this[offset];
      var mul = 1;
      var i = 0;
      while (++i < byteLength && (mul *= 0x100)) {
        val += this[offset + i] * mul;
      }
  
      return val
    };
  
    Buffer$1.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {
      offset = offset | 0;
      byteLength = byteLength | 0;
      if (!noAssert) {
        checkOffset(offset, byteLength, this.length);
      }
  
      var val = this[offset + --byteLength];
      var mul = 1;
      while (byteLength > 0 && (mul *= 0x100)) {
        val += this[offset + --byteLength] * mul;
      }
  
      return val
    };
  
    Buffer$1.prototype.readUInt8 = function readUInt8 (offset, noAssert) {
      if (!noAssert) checkOffset(offset, 1, this.length);
      return this[offset]
    };
  
    Buffer$1.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {
      if (!noAssert) checkOffset(offset, 2, this.length);
      return this[offset] | (this[offset + 1] << 8)
    };
  
    Buffer$1.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {
      if (!noAssert) checkOffset(offset, 2, this.length);
      return (this[offset] << 8) | this[offset + 1]
    };
  
    Buffer$1.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {
      if (!noAssert) checkOffset(offset, 4, this.length);
  
      return ((this[offset]) |
          (this[offset + 1] << 8) |
          (this[offset + 2] << 16)) +
          (this[offset + 3] * 0x1000000)
    };
  
    Buffer$1.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {
      if (!noAssert) checkOffset(offset, 4, this.length);
  
      return (this[offset] * 0x1000000) +
        ((this[offset + 1] << 16) |
        (this[offset + 2] << 8) |
        this[offset + 3])
    };
  
    Buffer$1.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {
      offset = offset | 0;
      byteLength = byteLength | 0;
      if (!noAssert) checkOffset(offset, byteLength, this.length);
  
      var val = this[offset];
      var mul = 1;
      var i = 0;
      while (++i < byteLength && (mul *= 0x100)) {
        val += this[offset + i] * mul;
      }
      mul *= 0x80;
  
      if (val >= mul) val -= Math.pow(2, 8 * byteLength);
  
      return val
    };
  
    Buffer$1.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {
      offset = offset | 0;
      byteLength = byteLength | 0;
      if (!noAssert) checkOffset(offset, byteLength, this.length);
  
      var i = byteLength;
      var mul = 1;
      var val = this[offset + --i];
      while (i > 0 && (mul *= 0x100)) {
        val += this[offset + --i] * mul;
      }
      mul *= 0x80;
  
      if (val >= mul) val -= Math.pow(2, 8 * byteLength);
  
      return val
    };
  
    Buffer$1.prototype.readInt8 = function readInt8 (offset, noAssert) {
      if (!noAssert) checkOffset(offset, 1, this.length);
      if (!(this[offset] & 0x80)) return (this[offset])
      return ((0xff - this[offset] + 1) * -1)
    };
  
    Buffer$1.prototype.readInt16LE = function readInt16LE (offset, noAssert) {
      if (!noAssert) checkOffset(offset, 2, this.length);
      var val = this[offset] | (this[offset + 1] << 8);
      return (val & 0x8000) ? val | 0xFFFF0000 : val
    };
  
    Buffer$1.prototype.readInt16BE = function readInt16BE (offset, noAssert) {
      if (!noAssert) checkOffset(offset, 2, this.length);
      var val = this[offset + 1] | (this[offset] << 8);
      return (val & 0x8000) ? val | 0xFFFF0000 : val
    };
  
    Buffer$1.prototype.readInt32LE = function readInt32LE (offset, noAssert) {
      if (!noAssert) checkOffset(offset, 4, this.length);
  
      return (this[offset]) |
        (this[offset + 1] << 8) |
        (this[offset + 2] << 16) |
        (this[offset + 3] << 24)
    };
  
    Buffer$1.prototype.readInt32BE = function readInt32BE (offset, noAssert) {
      if (!noAssert) checkOffset(offset, 4, this.length);
  
      return (this[offset] << 24) |
        (this[offset + 1] << 16) |
        (this[offset + 2] << 8) |
        (this[offset + 3])
    };
  
    Buffer$1.prototype.readFloatLE = function readFloatLE (offset, noAssert) {
      if (!noAssert) checkOffset(offset, 4, this.length);
      return read(this, offset, true, 23, 4)
    };
  
    Buffer$1.prototype.readFloatBE = function readFloatBE (offset, noAssert) {
      if (!noAssert) checkOffset(offset, 4, this.length);
      return read(this, offset, false, 23, 4)
    };
  
    Buffer$1.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {
      if (!noAssert) checkOffset(offset, 8, this.length);
      return read(this, offset, true, 52, 8)
    };
  
    Buffer$1.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {
      if (!noAssert) checkOffset(offset, 8, this.length);
      return read(this, offset, false, 52, 8)
    };
  
    function checkInt (buf, value, offset, ext, max, min) {
      if (!internalIsBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance')
      if (value > max || value < min) throw new RangeError('"value" argument is out of bounds')
      if (offset + ext > buf.length) throw new RangeError('Index out of range')
    }
  
    Buffer$1.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {
      value = +value;
      offset = offset | 0;
      byteLength = byteLength | 0;
      if (!noAssert) {
        var maxBytes = Math.pow(2, 8 * byteLength) - 1;
        checkInt(this, value, offset, byteLength, maxBytes, 0);
      }
  
      var mul = 1;
      var i = 0;
      this[offset] = value & 0xFF;
      while (++i < byteLength && (mul *= 0x100)) {
        this[offset + i] = (value / mul) & 0xFF;
      }
  
      return offset + byteLength
    };
  
    Buffer$1.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {
      value = +value;
      offset = offset | 0;
      byteLength = byteLength | 0;
      if (!noAssert) {
        var maxBytes = Math.pow(2, 8 * byteLength) - 1;
        checkInt(this, value, offset, byteLength, maxBytes, 0);
      }
  
      var i = byteLength - 1;
      var mul = 1;
      this[offset + i] = value & 0xFF;
      while (--i >= 0 && (mul *= 0x100)) {
        this[offset + i] = (value / mul) & 0xFF;
      }
  
      return offset + byteLength
    };
  
    Buffer$1.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {
      value = +value;
      offset = offset | 0;
      if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);
      if (!Buffer$1.TYPED_ARRAY_SUPPORT) value = Math.floor(value);
      this[offset] = (value & 0xff);
      return offset + 1
    };
  
    function objectWriteUInt16 (buf, value, offset, littleEndian) {
      if (value < 0) value = 0xffff + value + 1;
      for (var i = 0, j = Math.min(buf.length - offset, 2); i < j; ++i) {
        buf[offset + i] = (value & (0xff << (8 * (littleEndian ? i : 1 - i)))) >>>
          (littleEndian ? i : 1 - i) * 8;
      }
    }
  
    Buffer$1.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {
      value = +value;
      offset = offset | 0;
      if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);
      if (Buffer$1.TYPED_ARRAY_SUPPORT) {
        this[offset] = (value & 0xff);
        this[offset + 1] = (value >>> 8);
      } else {
        objectWriteUInt16(this, value, offset, true);
      }
      return offset + 2
    };
  
    Buffer$1.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {
      value = +value;
      offset = offset | 0;
      if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);
      if (Buffer$1.TYPED_ARRAY_SUPPORT) {
        this[offset] = (value >>> 8);
        this[offset + 1] = (value & 0xff);
      } else {
        objectWriteUInt16(this, value, offset, false);
      }
      return offset + 2
    };
  
    function objectWriteUInt32 (buf, value, offset, littleEndian) {
      if (value < 0) value = 0xffffffff + value + 1;
      for (var i = 0, j = Math.min(buf.length - offset, 4); i < j; ++i) {
        buf[offset + i] = (value >>> (littleEndian ? i : 3 - i) * 8) & 0xff;
      }
    }
  
    Buffer$1.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {
      value = +value;
      offset = offset | 0;
      if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);
      if (Buffer$1.TYPED_ARRAY_SUPPORT) {
        this[offset + 3] = (value >>> 24);
        this[offset + 2] = (value >>> 16);
        this[offset + 1] = (value >>> 8);
        this[offset] = (value & 0xff);
      } else {
        objectWriteUInt32(this, value, offset, true);
      }
      return offset + 4
    };
  
    Buffer$1.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {
      value = +value;
      offset = offset | 0;
      if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);
      if (Buffer$1.TYPED_ARRAY_SUPPORT) {
        this[offset] = (value >>> 24);
        this[offset + 1] = (value >>> 16);
        this[offset + 2] = (value >>> 8);
        this[offset + 3] = (value & 0xff);
      } else {
        objectWriteUInt32(this, value, offset, false);
      }
      return offset + 4
    };
  
    Buffer$1.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {
      value = +value;
      offset = offset | 0;
      if (!noAssert) {
        var limit = Math.pow(2, 8 * byteLength - 1);
  
        checkInt(this, value, offset, byteLength, limit - 1, -limit);
      }
  
      var i = 0;
      var mul = 1;
      var sub = 0;
      this[offset] = value & 0xFF;
      while (++i < byteLength && (mul *= 0x100)) {
        if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
          sub = 1;
        }
        this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;
      }
  
      return offset + byteLength
    };
  
    Buffer$1.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {
      value = +value;
      offset = offset | 0;
      if (!noAssert) {
        var limit = Math.pow(2, 8 * byteLength - 1);
  
        checkInt(this, value, offset, byteLength, limit - 1, -limit);
      }
  
      var i = byteLength - 1;
      var mul = 1;
      var sub = 0;
      this[offset + i] = value & 0xFF;
      while (--i >= 0 && (mul *= 0x100)) {
        if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
          sub = 1;
        }
        this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;
      }
  
      return offset + byteLength
    };
  
    Buffer$1.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {
      value = +value;
      offset = offset | 0;
      if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);
      if (!Buffer$1.TYPED_ARRAY_SUPPORT) value = Math.floor(value);
      if (value < 0) value = 0xff + value + 1;
      this[offset] = (value & 0xff);
      return offset + 1
    };
  
    Buffer$1.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {
      value = +value;
      offset = offset | 0;
      if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);
      if (Buffer$1.TYPED_ARRAY_SUPPORT) {
        this[offset] = (value & 0xff);
        this[offset + 1] = (value >>> 8);
      } else {
        objectWriteUInt16(this, value, offset, true);
      }
      return offset + 2
    };
  
    Buffer$1.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {
      value = +value;
      offset = offset | 0;
      if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);
      if (Buffer$1.TYPED_ARRAY_SUPPORT) {
        this[offset] = (value >>> 8);
        this[offset + 1] = (value & 0xff);
      } else {
        objectWriteUInt16(this, value, offset, false);
      }
      return offset + 2
    };
  
    Buffer$1.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {
      value = +value;
      offset = offset | 0;
      if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);
      if (Buffer$1.TYPED_ARRAY_SUPPORT) {
        this[offset] = (value & 0xff);
        this[offset + 1] = (value >>> 8);
        this[offset + 2] = (value >>> 16);
        this[offset + 3] = (value >>> 24);
      } else {
        objectWriteUInt32(this, value, offset, true);
      }
      return offset + 4
    };
  
    Buffer$1.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {
      value = +value;
      offset = offset | 0;
      if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);
      if (value < 0) value = 0xffffffff + value + 1;
      if (Buffer$1.TYPED_ARRAY_SUPPORT) {
        this[offset] = (value >>> 24);
        this[offset + 1] = (value >>> 16);
        this[offset + 2] = (value >>> 8);
        this[offset + 3] = (value & 0xff);
      } else {
        objectWriteUInt32(this, value, offset, false);
      }
      return offset + 4
    };
  
    function checkIEEE754 (buf, value, offset, ext, max, min) {
      if (offset + ext > buf.length) throw new RangeError('Index out of range')
      if (offset < 0) throw new RangeError('Index out of range')
    }
  
    function writeFloat (buf, value, offset, littleEndian, noAssert) {
      if (!noAssert) {
        checkIEEE754(buf, value, offset, 4);
      }
      write(buf, value, offset, littleEndian, 23, 4);
      return offset + 4
    }
  
    Buffer$1.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {
      return writeFloat(this, value, offset, true, noAssert)
    };
  
    Buffer$1.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {
      return writeFloat(this, value, offset, false, noAssert)
    };
  
    function writeDouble (buf, value, offset, littleEndian, noAssert) {
      if (!noAssert) {
        checkIEEE754(buf, value, offset, 8);
      }
      write(buf, value, offset, littleEndian, 52, 8);
      return offset + 8
    }
  
    Buffer$1.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {
      return writeDouble(this, value, offset, true, noAssert)
    };
  
    Buffer$1.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {
      return writeDouble(this, value, offset, false, noAssert)
    };
  
    // copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)
    Buffer$1.prototype.copy = function copy (target, targetStart, start, end) {
      if (!start) start = 0;
      if (!end && end !== 0) end = this.length;
      if (targetStart >= target.length) targetStart = target.length;
      if (!targetStart) targetStart = 0;
      if (end > 0 && end < start) end = start;
  
      // Copy 0 bytes; we're done
      if (end === start) return 0
      if (target.length === 0 || this.length === 0) return 0
  
      // Fatal error conditions
      if (targetStart < 0) {
        throw new RangeError('targetStart out of bounds')
      }
      if (start < 0 || start >= this.length) throw new RangeError('sourceStart out of bounds')
      if (end < 0) throw new RangeError('sourceEnd out of bounds')
  
      // Are we oob?
      if (end > this.length) end = this.length;
      if (target.length - targetStart < end - start) {
        end = target.length - targetStart + start;
      }
  
      var len = end - start;
      var i;
  
      if (this === target && start < targetStart && targetStart < end) {
        // descending copy from end
        for (i = len - 1; i >= 0; --i) {
          target[i + targetStart] = this[i + start];
        }
      } else if (len < 1000 || !Buffer$1.TYPED_ARRAY_SUPPORT) {
        // ascending copy from start
        for (i = 0; i < len; ++i) {
          target[i + targetStart] = this[i + start];
        }
      } else {
        Uint8Array.prototype.set.call(
          target,
          this.subarray(start, start + len),
          targetStart
        );
      }
  
      return len
    };
  
    // Usage:
    //    buffer.fill(number[, offset[, end]])
    //    buffer.fill(buffer[, offset[, end]])
    //    buffer.fill(string[, offset[, end]][, encoding])
    Buffer$1.prototype.fill = function fill (val, start, end, encoding) {
      // Handle string cases:
      if (typeof val === 'string') {
        if (typeof start === 'string') {
          encoding = start;
          start = 0;
          end = this.length;
        } else if (typeof end === 'string') {
          encoding = end;
          end = this.length;
        }
        if (val.length === 1) {
          var code = val.charCodeAt(0);
          if (code < 256) {
            val = code;
          }
        }
        if (encoding !== undefined && typeof encoding !== 'string') {
          throw new TypeError('encoding must be a string')
        }
        if (typeof encoding === 'string' && !Buffer$1.isEncoding(encoding)) {
          throw new TypeError('Unknown encoding: ' + encoding)
        }
      } else if (typeof val === 'number') {
        val = val & 255;
      }
  
      // Invalid ranges are not set to a default, so can range check early.
      if (start < 0 || this.length < start || this.length < end) {
        throw new RangeError('Out of range index')
      }
  
      if (end <= start) {
        return this
      }
  
      start = start >>> 0;
      end = end === undefined ? this.length : end >>> 0;
  
      if (!val) val = 0;
  
      var i;
      if (typeof val === 'number') {
        for (i = start; i < end; ++i) {
          this[i] = val;
        }
      } else {
        var bytes = internalIsBuffer(val)
          ? val
          : utf8ToBytes(new Buffer$1(val, encoding).toString());
        var len = bytes.length;
        for (i = 0; i < end - start; ++i) {
          this[i + start] = bytes[i % len];
        }
      }
  
      return this
    };
  
    // HELPER FUNCTIONS
    // ================
  
    var INVALID_BASE64_RE = /[^+\/0-9A-Za-z-_]/g;
  
    function base64clean (str) {
      // Node strips out invalid characters like \n and \t from the string, base64-js does not
      str = stringtrim(str).replace(INVALID_BASE64_RE, '');
      // Node converts strings with length < 2 to ''
      if (str.length < 2) return ''
      // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not
      while (str.length % 4 !== 0) {
        str = str + '=';
      }
      return str
    }
  
    function stringtrim (str) {
      if (str.trim) return str.trim()
      return str.replace(/^\s+|\s+$/g, '')
    }
  
    function toHex (n) {
      if (n < 16) return '0' + n.toString(16)
      return n.toString(16)
    }
  
    function utf8ToBytes (string, units) {
      units = units || Infinity;
      var codePoint;
      var length = string.length;
      var leadSurrogate = null;
      var bytes = [];
  
      for (var i = 0; i < length; ++i) {
        codePoint = string.charCodeAt(i);
  
        // is surrogate component
        if (codePoint > 0xD7FF && codePoint < 0xE000) {
          // last char was a lead
          if (!leadSurrogate) {
            // no lead yet
            if (codePoint > 0xDBFF) {
              // unexpected trail
              if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
              continue
            } else if (i + 1 === length) {
              // unpaired lead
              if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
              continue
            }
  
            // valid lead
            leadSurrogate = codePoint;
  
            continue
          }
  
          // 2 leads in a row
          if (codePoint < 0xDC00) {
            if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
            leadSurrogate = codePoint;
            continue
          }
  
          // valid surrogate pair
          codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;
        } else if (leadSurrogate) {
          // valid bmp char, but last char was a lead
          if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
        }
  
        leadSurrogate = null;
  
        // encode utf8
        if (codePoint < 0x80) {
          if ((units -= 1) < 0) break
          bytes.push(codePoint);
        } else if (codePoint < 0x800) {
          if ((units -= 2) < 0) break
          bytes.push(
            codePoint >> 0x6 | 0xC0,
            codePoint & 0x3F | 0x80
          );
        } else if (codePoint < 0x10000) {
          if ((units -= 3) < 0) break
          bytes.push(
            codePoint >> 0xC | 0xE0,
            codePoint >> 0x6 & 0x3F | 0x80,
            codePoint & 0x3F | 0x80
          );
        } else if (codePoint < 0x110000) {
          if ((units -= 4) < 0) break
          bytes.push(
            codePoint >> 0x12 | 0xF0,
            codePoint >> 0xC & 0x3F | 0x80,
            codePoint >> 0x6 & 0x3F | 0x80,
            codePoint & 0x3F | 0x80
          );
        } else {
          throw new Error('Invalid code point')
        }
      }
  
      return bytes
    }
  
    function asciiToBytes (str) {
      var byteArray = [];
      for (var i = 0; i < str.length; ++i) {
        // Node's code seems to be doing this and not & 0x7F..
        byteArray.push(str.charCodeAt(i) & 0xFF);
      }
      return byteArray
    }
  
    function utf16leToBytes (str, units) {
      var c, hi, lo;
      var byteArray = [];
      for (var i = 0; i < str.length; ++i) {
        if ((units -= 2) < 0) break
  
        c = str.charCodeAt(i);
        hi = c >> 8;
        lo = c % 256;
        byteArray.push(lo);
        byteArray.push(hi);
      }
  
      return byteArray
    }
  
  
    function base64ToBytes (str) {
      return toByteArray$1(base64clean(str))
    }
  
    function blitBuffer (src, dst, offset, length) {
      for (var i = 0; i < length; ++i) {
        if ((i + offset >= dst.length) || (i >= src.length)) break
        dst[i + offset] = src[i];
      }
      return i
    }
  
    function isnan (val) {
      return val !== val // eslint-disable-line no-self-compare
    }
  
  
    // the following is from is-buffer, also by Feross Aboukhadijeh and with same lisence
    // The _isBuffer check is for Safari 5-7 support, because it's missing
    // Object.prototype.constructor. Remove this eventually
    function isBuffer$1(obj) {
      return obj != null && (!!obj._isBuffer || isFastBuffer(obj) || isSlowBuffer(obj))
    }
  
    function isFastBuffer (obj) {
      return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj)
    }
  
    // For Node v0.10 support. Remove this eventually.
    function isSlowBuffer (obj) {
      return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isFastBuffer(obj.slice(0, 0))
    }
  
    var sourcemapCodec_umd = {exports: {}};
  
    var hasRequiredSourcemapCodec_umd;
    function requireSourcemapCodec_umd() {
      if (hasRequiredSourcemapCodec_umd) return sourcemapCodec_umd.exports;
      hasRequiredSourcemapCodec_umd = 1;
      (function (module, exports) {
        (function (global, factory) {
          factory(exports) ;
        })(commonjsGlobal, function (exports) {
  
          var comma = ','.charCodeAt(0);
          var semicolon = ';'.charCodeAt(0);
          var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
          var intToChar = new Uint8Array(64);
          var charToInt = new Uint8Array(128);
          for (var i = 0; i < chars.length; i++) {
            var c = chars.charCodeAt(i);
            intToChar[i] = c;
            charToInt[c] = i;
          }
          var td = typeof TextDecoder !== 'undefined' ? new TextDecoder() : typeof Buffer$1 !== 'undefined' ? {
            decode: function decode(buf) {
              var out = Buffer$1.from(buf.buffer, buf.byteOffset, buf.byteLength);
              return out.toString();
            }
          } : {
            decode: function decode(buf) {
              var out = '';
              for (var _i = 0; _i < buf.length; _i++) {
                out += String.fromCharCode(buf[_i]);
              }
              return out;
            }
          };
          function decode(mappings) {
            var state = new Int32Array(5);
            var decoded = [];
            var index = 0;
            do {
              var semi = indexOf(mappings, index);
              var line = [];
              var sorted = true;
              var lastCol = 0;
              state[0] = 0;
              for (var _i2 = index; _i2 < semi; _i2++) {
                var seg = void 0;
                _i2 = decodeInteger(mappings, _i2, state, 0);
                var col = state[0];
                if (col < lastCol) sorted = false;
                lastCol = col;
                if (hasMoreVlq(mappings, _i2, semi)) {
                  _i2 = decodeInteger(mappings, _i2, state, 1);
                  _i2 = decodeInteger(mappings, _i2, state, 2);
                  _i2 = decodeInteger(mappings, _i2, state, 3);
                  if (hasMoreVlq(mappings, _i2, semi)) {
                    _i2 = decodeInteger(mappings, _i2, state, 4);
                    seg = [col, state[1], state[2], state[3], state[4]];
                  } else {
                    seg = [col, state[1], state[2], state[3]];
                  }
                } else {
                  seg = [col];
                }
                line.push(seg);
              }
              if (!sorted) sort(line);
              decoded.push(line);
              index = semi + 1;
            } while (index <= mappings.length);
            return decoded;
          }
          function indexOf(mappings, index) {
            var idx = mappings.indexOf(';', index);
            return idx === -1 ? mappings.length : idx;
          }
          function decodeInteger(mappings, pos, state, j) {
            var value = 0;
            var shift = 0;
            var integer = 0;
            do {
              var _c = mappings.charCodeAt(pos++);
              integer = charToInt[_c];
              value |= (integer & 31) << shift;
              shift += 5;
            } while (integer & 32);
            var shouldNegate = value & 1;
            value >>>= 1;
            if (shouldNegate) {
              value = -0x80000000 | -value;
            }
            state[j] += value;
            return pos;
          }
          function hasMoreVlq(mappings, i, length) {
            if (i >= length) return false;
            return mappings.charCodeAt(i) !== comma;
          }
          function sort(line) {
            line.sort(sortComparator);
          }
          function sortComparator(a, b) {
            return a[0] - b[0];
          }
          function encode(decoded) {
            var state = new Int32Array(5);
            var bufLength = 1024 * 16;
            var subLength = bufLength - 36;
            var buf = new Uint8Array(bufLength);
            var sub = buf.subarray(0, subLength);
            var pos = 0;
            var out = '';
            for (var _i3 = 0; _i3 < decoded.length; _i3++) {
              var line = decoded[_i3];
              if (_i3 > 0) {
                if (pos === bufLength) {
                  out += td.decode(buf);
                  pos = 0;
                }
                buf[pos++] = semicolon;
              }
              if (line.length === 0) continue;
              state[0] = 0;
              for (var j = 0; j < line.length; j++) {
                var segment = line[j];
                if (pos > subLength) {
                  out += td.decode(sub);
                  buf.copyWithin(0, subLength, pos);
                  pos -= subLength;
                }
                if (j > 0) buf[pos++] = comma;
                pos = encodeInteger(buf, pos, state, segment, 0);
                if (segment.length === 1) continue;
                pos = encodeInteger(buf, pos, state, segment, 1);
                pos = encodeInteger(buf, pos, state, segment, 2);
                pos = encodeInteger(buf, pos, state, segment, 3);
                if (segment.length === 4) continue;
                pos = encodeInteger(buf, pos, state, segment, 4);
              }
            }
            return out + td.decode(buf.subarray(0, pos));
          }
          function encodeInteger(buf, pos, state, segment, j) {
            var next = segment[j];
            var num = next - state[j];
            state[j] = next;
            num = num < 0 ? -num << 1 | 1 : num << 1;
            do {
              var clamped = num & 31;
              num >>>= 5;
              if (num > 0) clamped |= 32;
              buf[pos++] = intToChar[clamped];
            } while (num > 0);
            return pos;
          }
          exports.decode = decode;
          exports.encode = encode;
          Object.defineProperty(exports, '__esModule', {
            value: true
          });
        });
      })(sourcemapCodec_umd, sourcemapCodec_umd.exports);
      return sourcemapCodec_umd.exports;
    }
  
    var traceMapping_umd = {exports: {}};
  
    var resolveUri_umd = {exports: {}};
  
    var hasRequiredResolveUri_umd;
    function requireResolveUri_umd() {
      if (hasRequiredResolveUri_umd) return resolveUri_umd.exports;
      hasRequiredResolveUri_umd = 1;
      (function (module, exports) {
        (function (global, factory) {
          module.exports = factory() ;
        })(commonjsGlobal, function () {
          var schemeRegex = /^[\w+.-]+:\/\//;
          var urlRegex = /^([\w+.-]+:)\/\/([^@/#?]*@)?([^:/#?]*)(:\d+)?(\/[^#?]*)?(\?[^#]*)?(#.*)?/;
          var fileRegex = /^file:(?:\/\/((?![a-z]:)[^/#?]*)?)?(\/?[^#?]*)(\?[^#]*)?(#.*)?/i;
          var UrlType;
          (function (UrlType) {
            UrlType[UrlType["Empty"] = 1] = "Empty";
            UrlType[UrlType["Hash"] = 2] = "Hash";
            UrlType[UrlType["Query"] = 3] = "Query";
            UrlType[UrlType["RelativePath"] = 4] = "RelativePath";
            UrlType[UrlType["AbsolutePath"] = 5] = "AbsolutePath";
            UrlType[UrlType["SchemeRelative"] = 6] = "SchemeRelative";
            UrlType[UrlType["Absolute"] = 7] = "Absolute";
          })(UrlType || (UrlType = {}));
          function isAbsoluteUrl(input) {
            return schemeRegex.test(input);
          }
          function isSchemeRelativeUrl(input) {
            return input.startsWith('//');
          }
          function isAbsolutePath(input) {
            return input.startsWith('/');
          }
          function isFileUrl(input) {
            return input.startsWith('file:');
          }
          function isRelative(input) {
            return /^[.?#]/.test(input);
          }
          function parseAbsoluteUrl(input) {
            var match = urlRegex.exec(input);
            return makeUrl(match[1], match[2] || '', match[3], match[4] || '', match[5] || '/', match[6] || '', match[7] || '');
          }
          function parseFileUrl(input) {
            var match = fileRegex.exec(input);
            var path = match[2];
            return makeUrl('file:', '', match[1] || '', '', isAbsolutePath(path) ? path : '/' + path, match[3] || '', match[4] || '');
          }
          function makeUrl(scheme, user, host, port, path, query, hash) {
            return {
              scheme: scheme,
              user: user,
              host: host,
              port: port,
              path: path,
              query: query,
              hash: hash,
              type: UrlType.Absolute
            };
          }
          function parseUrl(input) {
            if (isSchemeRelativeUrl(input)) {
              var _url = parseAbsoluteUrl('http:' + input);
              _url.scheme = '';
              _url.type = UrlType.SchemeRelative;
              return _url;
            }
            if (isAbsolutePath(input)) {
              var _url2 = parseAbsoluteUrl('http://foo.com' + input);
              _url2.scheme = '';
              _url2.host = '';
              _url2.type = UrlType.AbsolutePath;
              return _url2;
            }
            if (isFileUrl(input)) return parseFileUrl(input);
            if (isAbsoluteUrl(input)) return parseAbsoluteUrl(input);
            var url = parseAbsoluteUrl('http://foo.com/' + input);
            url.scheme = '';
            url.host = '';
            url.type = input ? input.startsWith('?') ? UrlType.Query : input.startsWith('#') ? UrlType.Hash : UrlType.RelativePath : UrlType.Empty;
            return url;
          }
          function stripPathFilename(path) {
            if (path.endsWith('/..')) return path;
            var index = path.lastIndexOf('/');
            return path.slice(0, index + 1);
          }
          function mergePaths(url, base) {
            normalizePath(base, base.type);
            if (url.path === '/') {
              url.path = base.path;
            } else {
              url.path = stripPathFilename(base.path) + url.path;
            }
          }
          function normalizePath(url, type) {
            var rel = type <= UrlType.RelativePath;
            var pieces = url.path.split('/');
            var pointer = 1;
            var positive = 0;
            var addTrailingSlash = false;
            for (var i = 1; i < pieces.length; i++) {
              var piece = pieces[i];
              if (!piece) {
                addTrailingSlash = true;
                continue;
              }
              addTrailingSlash = false;
              if (piece === '.') continue;
              if (piece === '..') {
                if (positive) {
                  addTrailingSlash = true;
                  positive--;
                  pointer--;
                } else if (rel) {
                  pieces[pointer++] = piece;
                }
                continue;
              }
              pieces[pointer++] = piece;
              positive++;
            }
            var path = '';
            for (var _i = 1; _i < pointer; _i++) {
              path += '/' + pieces[_i];
            }
            if (!path || addTrailingSlash && !path.endsWith('/..')) {
              path += '/';
            }
            url.path = path;
          }
          function resolve(input, base) {
            if (!input && !base) return '';
            var url = parseUrl(input);
            var inputType = url.type;
            if (base && inputType !== UrlType.Absolute) {
              var baseUrl = parseUrl(base);
              var baseType = baseUrl.type;
              switch (inputType) {
                case UrlType.Empty:
                  url.hash = baseUrl.hash;
                case UrlType.Hash:
                  url.query = baseUrl.query;
                case UrlType.Query:
                case UrlType.RelativePath:
                  mergePaths(url, baseUrl);
                case UrlType.AbsolutePath:
                  url.user = baseUrl.user;
                  url.host = baseUrl.host;
                  url.port = baseUrl.port;
                case UrlType.SchemeRelative:
                  url.scheme = baseUrl.scheme;
              }
              if (baseType > inputType) inputType = baseType;
            }
            normalizePath(url, inputType);
            var queryHash = url.query + url.hash;
            switch (inputType) {
              case UrlType.Hash:
              case UrlType.Query:
                return queryHash;
              case UrlType.RelativePath:
                {
                  var path = url.path.slice(1);
                  if (!path) return queryHash || '.';
                  if (isRelative(base || input) && !isRelative(path)) {
                    return './' + path + queryHash;
                  }
                  return path + queryHash;
                }
              case UrlType.AbsolutePath:
                return url.path + queryHash;
              default:
                return url.scheme + '//' + url.user + url.host + url.port + url.path + queryHash;
            }
          }
          return resolve;
        });
      })(resolveUri_umd);
      return resolveUri_umd.exports;
    }
  
    (function (module, exports) {
      (function (global, factory) {
        factory(exports, requireSourcemapCodec_umd(), requireResolveUri_umd()) ;
      })(commonjsGlobal, function (exports, sourcemapCodec, resolveUri) {
  
        function _interopDefaultLegacy(e) {
          return e && typeof e === 'object' && 'default' in e ? e : {
            'default': e
          };
        }
        var resolveUri__default = _interopDefaultLegacy(resolveUri);
        function resolve(input, base) {
          if (base && !base.endsWith('/')) base += '/';
          return resolveUri__default["default"](input, base);
        }
        function stripFilename(path) {
          if (!path) return '';
          var index = path.lastIndexOf('/');
          return path.slice(0, index + 1);
        }
        var COLUMN = 0;
        var SOURCES_INDEX = 1;
        var SOURCE_LINE = 2;
        var SOURCE_COLUMN = 3;
        var NAMES_INDEX = 4;
        var REV_GENERATED_LINE = 1;
        var REV_GENERATED_COLUMN = 2;
        function maybeSort(mappings, owned) {
          var unsortedIndex = nextUnsortedSegmentLine(mappings, 0);
          if (unsortedIndex === mappings.length) return mappings;
          if (!owned) mappings = mappings.slice();
          for (var i = unsortedIndex; i < mappings.length; i = nextUnsortedSegmentLine(mappings, i + 1)) {
            mappings[i] = sortSegments(mappings[i], owned);
          }
          return mappings;
        }
        function nextUnsortedSegmentLine(mappings, start) {
          for (var i = start; i < mappings.length; i++) {
            if (!isSorted(mappings[i])) return i;
          }
          return mappings.length;
        }
        function isSorted(line) {
          for (var j = 1; j < line.length; j++) {
            if (line[j][COLUMN] < line[j - 1][COLUMN]) {
              return false;
            }
          }
          return true;
        }
        function sortSegments(line, owned) {
          if (!owned) line = line.slice();
          return line.sort(sortComparator);
        }
        function sortComparator(a, b) {
          return a[COLUMN] - b[COLUMN];
        }
        var found = false;
        function binarySearch(haystack, needle, low, high) {
          while (low <= high) {
            var mid = low + (high - low >> 1);
            var cmp = haystack[mid][COLUMN] - needle;
            if (cmp === 0) {
              found = true;
              return mid;
            }
            if (cmp < 0) {
              low = mid + 1;
            } else {
              high = mid - 1;
            }
          }
          found = false;
          return low - 1;
        }
        function upperBound(haystack, needle, index) {
          for (var i = index + 1; i < haystack.length; index = i++) {
            if (haystack[i][COLUMN] !== needle) break;
          }
          return index;
        }
        function lowerBound(haystack, needle, index) {
          for (var i = index - 1; i >= 0; index = i--) {
            if (haystack[i][COLUMN] !== needle) break;
          }
          return index;
        }
        function memoizedState() {
          return {
            lastKey: -1,
            lastNeedle: -1,
            lastIndex: -1
          };
        }
        function memoizedBinarySearch(haystack, needle, state, key) {
          var lastKey = state.lastKey,
            lastNeedle = state.lastNeedle,
            lastIndex = state.lastIndex;
          var low = 0;
          var high = haystack.length - 1;
          if (key === lastKey) {
            if (needle === lastNeedle) {
              found = lastIndex !== -1 && haystack[lastIndex][COLUMN] === needle;
              return lastIndex;
            }
            if (needle >= lastNeedle) {
              low = lastIndex === -1 ? 0 : lastIndex;
            } else {
              high = lastIndex;
            }
          }
          state.lastKey = key;
          state.lastNeedle = needle;
          return state.lastIndex = binarySearch(haystack, needle, low, high);
        }
        function buildBySources(decoded, memos) {
          var sources = memos.map(buildNullArray);
          for (var i = 0; i < decoded.length; i++) {
            var line = decoded[i];
            for (var j = 0; j < line.length; j++) {
              var seg = line[j];
              if (seg.length === 1) continue;
              var sourceIndex = seg[SOURCES_INDEX];
              var sourceLine = seg[SOURCE_LINE];
              var sourceColumn = seg[SOURCE_COLUMN];
              var originalSource = sources[sourceIndex];
              var originalLine = originalSource[sourceLine] || (originalSource[sourceLine] = []);
              var memo = memos[sourceIndex];
              var index = upperBound(originalLine, sourceColumn, memoizedBinarySearch(originalLine, sourceColumn, memo, sourceLine));
              insert(originalLine, memo.lastIndex = index + 1, [sourceColumn, i, seg[COLUMN]]);
            }
          }
          return sources;
        }
        function insert(array, index, value) {
          for (var i = array.length; i > index; i--) {
            array[i] = array[i - 1];
          }
          array[index] = value;
        }
        function buildNullArray() {
          return {
            __proto__: null
          };
        }
        var AnyMap = function AnyMap(map, mapUrl) {
          var parsed = typeof map === 'string' ? JSON.parse(map) : map;
          if (!('sections' in parsed)) return new TraceMap(parsed, mapUrl);
          var mappings = [];
          var sources = [];
          var sourcesContent = [];
          var names = [];
          recurse(parsed, mapUrl, mappings, sources, sourcesContent, names, 0, 0, Infinity, Infinity);
          var joined = {
            version: 3,
            file: parsed.file,
            names: names,
            sources: sources,
            sourcesContent: sourcesContent,
            mappings: mappings
          };
          return exports.presortedDecodedMap(joined);
        };
        function recurse(input, mapUrl, mappings, sources, sourcesContent, names, lineOffset, columnOffset, stopLine, stopColumn) {
          var sections = input.sections;
          for (var i = 0; i < sections.length; i++) {
            var _sections$i = sections[i],
              map = _sections$i.map,
              offset = _sections$i.offset;
            var sl = stopLine;
            var sc = stopColumn;
            if (i + 1 < sections.length) {
              var nextOffset = sections[i + 1].offset;
              sl = Math.min(stopLine, lineOffset + nextOffset.line);
              if (sl === stopLine) {
                sc = Math.min(stopColumn, columnOffset + nextOffset.column);
              } else if (sl < stopLine) {
                sc = columnOffset + nextOffset.column;
              }
            }
            addSection(map, mapUrl, mappings, sources, sourcesContent, names, lineOffset + offset.line, columnOffset + offset.column, sl, sc);
          }
        }
        function addSection(input, mapUrl, mappings, sources, sourcesContent, names, lineOffset, columnOffset, stopLine, stopColumn) {
          if ('sections' in input) return recurse.apply(void 0, arguments);
          var map = new TraceMap(input, mapUrl);
          var sourcesOffset = sources.length;
          var namesOffset = names.length;
          var decoded = exports.decodedMappings(map);
          var resolvedSources = map.resolvedSources,
            contents = map.sourcesContent;
          append(sources, resolvedSources);
          append(names, map.names);
          if (contents) append(sourcesContent, contents);else for (var i = 0; i < resolvedSources.length; i++) sourcesContent.push(null);
          for (var _i = 0; _i < decoded.length; _i++) {
            var lineI = lineOffset + _i;
            if (lineI > stopLine) return;
            var out = getLine(mappings, lineI);
            var cOffset = _i === 0 ? columnOffset : 0;
            var line = decoded[_i];
            for (var j = 0; j < line.length; j++) {
              var seg = line[j];
              var column = cOffset + seg[COLUMN];
              if (lineI === stopLine && column >= stopColumn) return;
              if (seg.length === 1) {
                out.push([column]);
                continue;
              }
              var sourcesIndex = sourcesOffset + seg[SOURCES_INDEX];
              var sourceLine = seg[SOURCE_LINE];
              var sourceColumn = seg[SOURCE_COLUMN];
              out.push(seg.length === 4 ? [column, sourcesIndex, sourceLine, sourceColumn] : [column, sourcesIndex, sourceLine, sourceColumn, namesOffset + seg[NAMES_INDEX]]);
            }
          }
        }
        function append(arr, other) {
          for (var i = 0; i < other.length; i++) arr.push(other[i]);
        }
        function getLine(arr, index) {
          for (var i = arr.length; i <= index; i++) arr[i] = [];
          return arr[index];
        }
        var LINE_GTR_ZERO = '`line` must be greater than 0 (lines start at line 1)';
        var COL_GTR_EQ_ZERO = '`column` must be greater than or equal to 0 (columns start at column 0)';
        var LEAST_UPPER_BOUND = -1;
        var GREATEST_LOWER_BOUND = 1;
        exports.encodedMappings = void 0;
        exports.decodedMappings = void 0;
        exports.traceSegment = void 0;
        exports.originalPositionFor = void 0;
        exports.generatedPositionFor = void 0;
        exports.allGeneratedPositionsFor = void 0;
        exports.eachMapping = void 0;
        exports.sourceContentFor = void 0;
        exports.presortedDecodedMap = void 0;
        exports.decodedMap = void 0;
        exports.encodedMap = void 0;
        var TraceMap = _createClass(function TraceMap(map, mapUrl) {
          var isString = typeof map === 'string';
          if (!isString && map._decodedMemo) return map;
          var parsed = isString ? JSON.parse(map) : map;
          var version = parsed.version,
            file = parsed.file,
            names = parsed.names,
            sourceRoot = parsed.sourceRoot,
            sources = parsed.sources,
            sourcesContent = parsed.sourcesContent;
          this.version = version;
          this.file = file;
          this.names = names;
          this.sourceRoot = sourceRoot;
          this.sources = sources;
          this.sourcesContent = sourcesContent;
          var from = resolve(sourceRoot || '', stripFilename(mapUrl));
          this.resolvedSources = sources.map(function (s) {
            return resolve(s || '', from);
          });
          var mappings = parsed.mappings;
          if (typeof mappings === 'string') {
            this._encoded = mappings;
            this._decoded = undefined;
          } else {
            this._encoded = undefined;
            this._decoded = maybeSort(mappings, isString);
          }
          this._decodedMemo = memoizedState();
          this._bySources = undefined;
          this._bySourceMemos = undefined;
        });
        (function () {
          exports.encodedMappings = function (map) {
            var _a;
            return (_a = map._encoded) !== null && _a !== void 0 ? _a : map._encoded = sourcemapCodec.encode(map._decoded);
          };
          exports.decodedMappings = function (map) {
            return map._decoded || (map._decoded = sourcemapCodec.decode(map._encoded));
          };
          exports.traceSegment = function (map, line, column) {
            var decoded = exports.decodedMappings(map);
            if (line >= decoded.length) return null;
            var segments = decoded[line];
            var index = traceSegmentInternal(segments, map._decodedMemo, line, column, GREATEST_LOWER_BOUND);
            return index === -1 ? null : segments[index];
          };
          exports.originalPositionFor = function (map, _ref) {
            var line = _ref.line,
              column = _ref.column,
              bias = _ref.bias;
            line--;
            if (line < 0) throw new Error(LINE_GTR_ZERO);
            if (column < 0) throw new Error(COL_GTR_EQ_ZERO);
            var decoded = exports.decodedMappings(map);
            if (line >= decoded.length) return OMapping(null, null, null, null);
            var segments = decoded[line];
            var index = traceSegmentInternal(segments, map._decodedMemo, line, column, bias || GREATEST_LOWER_BOUND);
            if (index === -1) return OMapping(null, null, null, null);
            var segment = segments[index];
            if (segment.length === 1) return OMapping(null, null, null, null);
            var names = map.names,
              resolvedSources = map.resolvedSources;
            return OMapping(resolvedSources[segment[SOURCES_INDEX]], segment[SOURCE_LINE] + 1, segment[SOURCE_COLUMN], segment.length === 5 ? names[segment[NAMES_INDEX]] : null);
          };
          exports.allGeneratedPositionsFor = function (map, _ref2) {
            var source = _ref2.source,
              line = _ref2.line,
              column = _ref2.column,
              bias = _ref2.bias;
            return generatedPosition(map, source, line, column, bias || LEAST_UPPER_BOUND, true);
          };
          exports.generatedPositionFor = function (map, _ref3) {
            var source = _ref3.source,
              line = _ref3.line,
              column = _ref3.column,
              bias = _ref3.bias;
            return generatedPosition(map, source, line, column, bias || GREATEST_LOWER_BOUND, false);
          };
          exports.eachMapping = function (map, cb) {
            var decoded = exports.decodedMappings(map);
            var names = map.names,
              resolvedSources = map.resolvedSources;
            for (var i = 0; i < decoded.length; i++) {
              var line = decoded[i];
              for (var j = 0; j < line.length; j++) {
                var seg = line[j];
                var generatedLine = i + 1;
                var generatedColumn = seg[0];
                var source = null;
                var originalLine = null;
                var originalColumn = null;
                var name = null;
                if (seg.length !== 1) {
                  source = resolvedSources[seg[1]];
                  originalLine = seg[2] + 1;
                  originalColumn = seg[3];
                }
                if (seg.length === 5) name = names[seg[4]];
                cb({
                  generatedLine: generatedLine,
                  generatedColumn: generatedColumn,
                  source: source,
                  originalLine: originalLine,
                  originalColumn: originalColumn,
                  name: name
                });
              }
            }
          };
          exports.sourceContentFor = function (map, source) {
            var sources = map.sources,
              resolvedSources = map.resolvedSources,
              sourcesContent = map.sourcesContent;
            if (sourcesContent == null) return null;
            var index = sources.indexOf(source);
            if (index === -1) index = resolvedSources.indexOf(source);
            return index === -1 ? null : sourcesContent[index];
          };
          exports.presortedDecodedMap = function (map, mapUrl) {
            var tracer = new TraceMap(clone(map, []), mapUrl);
            tracer._decoded = map.mappings;
            return tracer;
          };
          exports.decodedMap = function (map) {
            return clone(map, exports.decodedMappings(map));
          };
          exports.encodedMap = function (map) {
            return clone(map, exports.encodedMappings(map));
          };
          function generatedPosition(map, source, line, column, bias, all) {
            line--;
            if (line < 0) throw new Error(LINE_GTR_ZERO);
            if (column < 0) throw new Error(COL_GTR_EQ_ZERO);
            var sources = map.sources,
              resolvedSources = map.resolvedSources;
            var sourceIndex = sources.indexOf(source);
            if (sourceIndex === -1) sourceIndex = resolvedSources.indexOf(source);
            if (sourceIndex === -1) return all ? [] : GMapping(null, null);
            var generated = map._bySources || (map._bySources = buildBySources(exports.decodedMappings(map), map._bySourceMemos = sources.map(memoizedState)));
            var segments = generated[sourceIndex][line];
            if (segments == null) return all ? [] : GMapping(null, null);
            var memo = map._bySourceMemos[sourceIndex];
            if (all) return sliceGeneratedPositions(segments, memo, line, column, bias);
            var index = traceSegmentInternal(segments, memo, line, column, bias);
            if (index === -1) return GMapping(null, null);
            var segment = segments[index];
            return GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]);
          }
        })();
        function clone(map, mappings) {
          return {
            version: map.version,
            file: map.file,
            names: map.names,
            sourceRoot: map.sourceRoot,
            sources: map.sources,
            sourcesContent: map.sourcesContent,
            mappings: mappings
          };
        }
        function OMapping(source, line, column, name) {
          return {
            source: source,
            line: line,
            column: column,
            name: name
          };
        }
        function GMapping(line, column) {
          return {
            line: line,
            column: column
          };
        }
        function traceSegmentInternal(segments, memo, line, column, bias) {
          var index = memoizedBinarySearch(segments, column, memo, line);
          if (found) {
            index = (bias === LEAST_UPPER_BOUND ? upperBound : lowerBound)(segments, column, index);
          } else if (bias === LEAST_UPPER_BOUND) index++;
          if (index === -1 || index === segments.length) return -1;
          return index;
        }
        function sliceGeneratedPositions(segments, memo, line, column, bias) {
          var min = traceSegmentInternal(segments, memo, line, column, GREATEST_LOWER_BOUND);
          if (!found && bias === LEAST_UPPER_BOUND) min++;
          if (min === -1 || min === segments.length) return [];
          var matchedColumn = found ? column : segments[min][COLUMN];
          if (!found) min = lowerBound(segments, matchedColumn, min);
          var max = upperBound(segments, matchedColumn, min);
          var result = [];
          for (; min <= max; min++) {
            var segment = segments[min];
            result.push(GMapping(segment[REV_GENERATED_LINE] + 1, segment[REV_GENERATED_COLUMN]));
          }
          return result;
        }
        exports.AnyMap = AnyMap;
        exports.GREATEST_LOWER_BOUND = GREATEST_LOWER_BOUND;
        exports.LEAST_UPPER_BOUND = LEAST_UPPER_BOUND;
        exports.TraceMap = TraceMap;
        Object.defineProperty(exports, '__esModule', {
          value: true
        });
      });
    })(traceMapping_umd, traceMapping_umd.exports);
  
    (function (module, exports) {
      (function (global, factory) {
        factory(exports, requireSetArray_umd(), requireSourcemapCodec_umd(), traceMapping_umd.exports) ;
      })(commonjsGlobal, function (exports, setArray, sourcemapCodec, traceMapping) {
  
        var COLUMN = 0;
        var SOURCES_INDEX = 1;
        var SOURCE_LINE = 2;
        var SOURCE_COLUMN = 3;
        var NAMES_INDEX = 4;
        var NO_NAME = -1;
        exports.addSegment = void 0;
        exports.addMapping = void 0;
        exports.maybeAddSegment = void 0;
        exports.maybeAddMapping = void 0;
        exports.setSourceContent = void 0;
        exports.toDecodedMap = void 0;
        exports.toEncodedMap = void 0;
        exports.fromMap = void 0;
        exports.allMappings = void 0;
        var addSegmentInternal;
        var GenMapping = _createClass(function GenMapping(_temp) {
          var _ref = _temp === void 0 ? {} : _temp,
            file = _ref.file,
            sourceRoot = _ref.sourceRoot;
          this._names = new setArray.SetArray();
          this._sources = new setArray.SetArray();
          this._sourcesContent = [];
          this._mappings = [];
          this.file = file;
          this.sourceRoot = sourceRoot;
        });
        (function () {
          exports.addSegment = function (map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) {
            return addSegmentInternal(false, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content);
          };
          exports.maybeAddSegment = function (map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) {
            return addSegmentInternal(true, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content);
          };
          exports.addMapping = function (map, mapping) {
            return addMappingInternal(false, map, mapping);
          };
          exports.maybeAddMapping = function (map, mapping) {
            return addMappingInternal(true, map, mapping);
          };
          exports.setSourceContent = function (map, source, content) {
            var sources = map._sources,
              sourcesContent = map._sourcesContent;
            sourcesContent[setArray.put(sources, source)] = content;
          };
          exports.toDecodedMap = function (map) {
            var file = map.file,
              sourceRoot = map.sourceRoot,
              mappings = map._mappings,
              sources = map._sources,
              sourcesContent = map._sourcesContent,
              names = map._names;
            removeEmptyFinalLines(mappings);
            return {
              version: 3,
              file: file || undefined,
              names: names.array,
              sourceRoot: sourceRoot || undefined,
              sources: sources.array,
              sourcesContent: sourcesContent,
              mappings: mappings
            };
          };
          exports.toEncodedMap = function (map) {
            var decoded = exports.toDecodedMap(map);
            return Object.assign(Object.assign({}, decoded), {
              mappings: sourcemapCodec.encode(decoded.mappings)
            });
          };
          exports.allMappings = function (map) {
            var out = [];
            var mappings = map._mappings,
              sources = map._sources,
              names = map._names;
            for (var i = 0; i < mappings.length; i++) {
              var line = mappings[i];
              for (var j = 0; j < line.length; j++) {
                var seg = line[j];
                var generated = {
                  line: i + 1,
                  column: seg[COLUMN]
                };
                var source = undefined;
                var original = undefined;
                var name = undefined;
                if (seg.length !== 1) {
                  source = sources.array[seg[SOURCES_INDEX]];
                  original = {
                    line: seg[SOURCE_LINE] + 1,
                    column: seg[SOURCE_COLUMN]
                  };
                  if (seg.length === 5) name = names.array[seg[NAMES_INDEX]];
                }
                out.push({
                  generated: generated,
                  source: source,
                  original: original,
                  name: name
                });
              }
            }
            return out;
          };
          exports.fromMap = function (input) {
            var map = new traceMapping.TraceMap(input);
            var gen = new GenMapping({
              file: map.file,
              sourceRoot: map.sourceRoot
            });
            putAll(gen._names, map.names);
            putAll(gen._sources, map.sources);
            gen._sourcesContent = map.sourcesContent || map.sources.map(function () {
              return null;
            });
            gen._mappings = traceMapping.decodedMappings(map);
            return gen;
          };
          addSegmentInternal = function addSegmentInternal(skipable, map, genLine, genColumn, source, sourceLine, sourceColumn, name, content) {
            var mappings = map._mappings,
              sources = map._sources,
              sourcesContent = map._sourcesContent,
              names = map._names;
            var line = getLine(mappings, genLine);
            var index = getColumnIndex(line, genColumn);
            if (!source) {
              if (skipable && skipSourceless(line, index)) return;
              return insert(line, index, [genColumn]);
            }
            var sourcesIndex = setArray.put(sources, source);
            var namesIndex = name ? setArray.put(names, name) : NO_NAME;
            if (sourcesIndex === sourcesContent.length) sourcesContent[sourcesIndex] = content !== null && content !== void 0 ? content : null;
            if (skipable && skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex)) {
              return;
            }
            return insert(line, index, name ? [genColumn, sourcesIndex, sourceLine, sourceColumn, namesIndex] : [genColumn, sourcesIndex, sourceLine, sourceColumn]);
          };
        })();
        function getLine(mappings, index) {
          for (var i = mappings.length; i <= index; i++) {
            mappings[i] = [];
          }
          return mappings[index];
        }
        function getColumnIndex(line, genColumn) {
          var index = line.length;
          for (var i = index - 1; i >= 0; index = i--) {
            var current = line[i];
            if (genColumn >= current[COLUMN]) break;
          }
          return index;
        }
        function insert(array, index, value) {
          for (var i = array.length; i > index; i--) {
            array[i] = array[i - 1];
          }
          array[index] = value;
        }
        function removeEmptyFinalLines(mappings) {
          var length = mappings.length;
          var len = length;
          for (var i = len - 1; i >= 0; len = i, i--) {
            if (mappings[i].length > 0) break;
          }
          if (len < length) mappings.length = len;
        }
        function putAll(strarr, array) {
          for (var i = 0; i < array.length; i++) setArray.put(strarr, array[i]);
        }
        function skipSourceless(line, index) {
          if (index === 0) return true;
          var prev = line[index - 1];
          return prev.length === 1;
        }
        function skipSource(line, index, sourcesIndex, sourceLine, sourceColumn, namesIndex) {
          if (index === 0) return false;
          var prev = line[index - 1];
          if (prev.length === 1) return false;
          return sourcesIndex === prev[SOURCES_INDEX] && sourceLine === prev[SOURCE_LINE] && sourceColumn === prev[SOURCE_COLUMN] && namesIndex === (prev.length === 5 ? prev[NAMES_INDEX] : NO_NAME);
        }
        function addMappingInternal(skipable, map, mapping) {
          var generated = mapping.generated,
            source = mapping.source,
            original = mapping.original,
            name = mapping.name,
            content = mapping.content;
          if (!source) {
            return addSegmentInternal(skipable, map, generated.line - 1, generated.column, null, null, null, null, null);
          }
          var s = source;
          return addSegmentInternal(skipable, map, generated.line - 1, generated.column, s, original.line - 1, original.column, name, content);
        }
        exports.GenMapping = GenMapping;
        Object.defineProperty(exports, '__esModule', {
          value: true
        });
      });
    })(genMapping_umd$1, genMapping_umd$1.exports);
  
    var SourceMap$1 = function () {
      function SourceMap(opts, code) {
        var _opts$sourceFileName;
        this._map = void 0;
        this._rawMappings = void 0;
        this._sourceFileName = void 0;
        this._lastGenLine = 0;
        this._lastSourceLine = 0;
        this._lastSourceColumn = 0;
        this._inputMap = void 0;
        var map = this._map = new genMapping_umd$1.exports.GenMapping({
          sourceRoot: opts.sourceRoot
        });
        this._sourceFileName = (_opts$sourceFileName = opts.sourceFileName) == null ? void 0 : _opts$sourceFileName.replace(/\\/g, "/");
        this._rawMappings = undefined;
        if (opts.inputSourceMap) {
          this._inputMap = new traceMapping_umd.exports.TraceMap(opts.inputSourceMap);
          var resolvedSources = this._inputMap.resolvedSources;
          if (resolvedSources.length) {
            for (var i = 0; i < resolvedSources.length; i++) {
              var _this$_inputMap$sourc;
              genMapping_umd$1.exports.setSourceContent(map, resolvedSources[i], (_this$_inputMap$sourc = this._inputMap.sourcesContent) == null ? void 0 : _this$_inputMap$sourc[i]);
            }
          }
        }
        if (typeof code === "string" && !opts.inputSourceMap) {
          genMapping_umd$1.exports.setSourceContent(map, this._sourceFileName, code);
        } else if (typeof code === "object") {
          for (var _i = 0, _Object$keys = Object.keys(code); _i < _Object$keys.length; _i++) {
            var _sourceFileName = _Object$keys[_i];
            genMapping_umd$1.exports.setSourceContent(map, _sourceFileName.replace(/\\/g, "/"), code[_sourceFileName]);
          }
        }
      }
      var _proto = SourceMap.prototype;
      _proto.get = function get() {
        return genMapping_umd$1.exports.toEncodedMap(this._map);
      };
      _proto.getDecoded = function getDecoded() {
        return genMapping_umd$1.exports.toDecodedMap(this._map);
      };
      _proto.getRawMappings = function getRawMappings() {
        return this._rawMappings || (this._rawMappings = genMapping_umd$1.exports.allMappings(this._map));
      };
      _proto.mark = function mark(generated, line, column, identifierName, identifierNamePos, filename) {
        var _originalMapping;
        this._rawMappings = undefined;
        var originalMapping;
        if (line != null) {
          if (this._inputMap) {
            originalMapping = traceMapping_umd.exports.originalPositionFor(this._inputMap, {
              line: line,
              column: column
            });
            if (!originalMapping.name && identifierNamePos) {
              var originalIdentifierMapping = traceMapping_umd.exports.originalPositionFor(this._inputMap, identifierNamePos);
              if (originalIdentifierMapping.name) {
                identifierName = originalIdentifierMapping.name;
              }
            }
          } else {
            originalMapping = {
              source: (filename == null ? void 0 : filename.replace(/\\/g, "/")) || this._sourceFileName,
              line: line,
              column: column
            };
          }
        }
        genMapping_umd$1.exports.maybeAddMapping(this._map, {
          name: identifierName,
          generated: generated,
          source: (_originalMapping = originalMapping) == null ? void 0 : _originalMapping.source,
          original: originalMapping
        });
      };
      return _createClass(SourceMap);
    }();
  
    var Buffer = function () {
      function Buffer(map) {
        this._map = null;
        this._buf = "";
        this._str = "";
        this._appendCount = 0;
        this._last = 0;
        this._queue = [];
        this._queueCursor = 0;
        this._canMarkIdName = true;
        this._position = {
          line: 1,
          column: 0
        };
        this._sourcePosition = {
          identifierName: undefined,
          identifierNamePos: undefined,
          line: undefined,
          column: undefined,
          filename: undefined
        };
        this._map = map;
        this._allocQueue();
      }
      var _proto = Buffer.prototype;
      _proto._allocQueue = function _allocQueue() {
        var queue = this._queue;
        for (var i = 0; i < 16; i++) {
          queue.push({
            "char": 0,
            repeat: 1,
            line: undefined,
            column: undefined,
            identifierName: undefined,
            identifierNamePos: undefined,
            filename: ""
          });
        }
      };
      _proto._pushQueue = function _pushQueue(_char, repeat, line, column, filename) {
        var cursor = this._queueCursor;
        if (cursor === this._queue.length) {
          this._allocQueue();
        }
        var item = this._queue[cursor];
        item["char"] = _char;
        item.repeat = repeat;
        item.line = line;
        item.column = column;
        item.filename = filename;
        this._queueCursor++;
      };
      _proto._popQueue = function _popQueue() {
        if (this._queueCursor === 0) {
          throw new Error("Cannot pop from empty queue");
        }
        return this._queue[--this._queueCursor];
      };
      _proto.get = function get() {
        this._flush();
        var map = this._map;
        var result = {
          code: (this._buf + this._str).trimRight(),
          decodedMap: map == null ? void 0 : map.getDecoded(),
          get __mergedMap() {
            return this.map;
          },
          get map() {
            var resultMap = map ? map.get() : null;
            result.map = resultMap;
            return resultMap;
          },
          set map(value) {
            Object.defineProperty(result, "map", {
              value: value,
              writable: true
            });
          },
          get rawMappings() {
            var mappings = map == null ? void 0 : map.getRawMappings();
            result.rawMappings = mappings;
            return mappings;
          },
          set rawMappings(value) {
            Object.defineProperty(result, "rawMappings", {
              value: value,
              writable: true
            });
          }
        };
        return result;
      };
      _proto.append = function append(str, maybeNewline) {
        this._flush();
        this._append(str, this._sourcePosition, maybeNewline);
      };
      _proto.appendChar = function appendChar(_char2) {
        this._flush();
        this._appendChar(_char2, 1, this._sourcePosition);
      };
      _proto.queue = function queue(_char3) {
        if (_char3 === 10) {
          while (this._queueCursor !== 0) {
            var _char4 = this._queue[this._queueCursor - 1]["char"];
            if (_char4 !== 32 && _char4 !== 9) {
              break;
            }
            this._queueCursor--;
          }
        }
        var sourcePosition = this._sourcePosition;
        this._pushQueue(_char3, 1, sourcePosition.line, sourcePosition.column, sourcePosition.filename);
      };
      _proto.queueIndentation = function queueIndentation(_char5, repeat) {
        this._pushQueue(_char5, repeat, undefined, undefined, undefined);
      };
      _proto._flush = function _flush() {
        var queueCursor = this._queueCursor;
        var queue = this._queue;
        for (var i = 0; i < queueCursor; i++) {
          var item = queue[i];
          this._appendChar(item["char"], item.repeat, item);
        }
        this._queueCursor = 0;
      };
      _proto._appendChar = function _appendChar(_char6, repeat, sourcePos) {
        this._last = _char6;
        this._str += repeat > 1 ? String.fromCharCode(_char6).repeat(repeat) : String.fromCharCode(_char6);
        if (_char6 !== 10) {
          this._mark(sourcePos.line, sourcePos.column, sourcePos.identifierName, sourcePos.identifierNamePos, sourcePos.filename);
          this._position.column += repeat;
        } else {
          this._position.line++;
          this._position.column = 0;
        }
        if (this._canMarkIdName) {
          sourcePos.identifierName = undefined;
          sourcePos.identifierNamePos = undefined;
        }
      };
      _proto._append = function _append(str, sourcePos, maybeNewline) {
        var len = str.length;
        var position = this._position;
        this._last = str.charCodeAt(len - 1);
        if (++this._appendCount > 4096) {
          +this._str;
          this._buf += this._str;
          this._str = str;
          this._appendCount = 0;
        } else {
          this._str += str;
        }
        if (!maybeNewline && !this._map) {
          position.column += len;
          return;
        }
        var column = sourcePos.column,
          identifierName = sourcePos.identifierName,
          identifierNamePos = sourcePos.identifierNamePos,
          filename = sourcePos.filename;
        var line = sourcePos.line;
        if ((identifierName != null || identifierNamePos != null) && this._canMarkIdName) {
          sourcePos.identifierName = undefined;
          sourcePos.identifierNamePos = undefined;
        }
        var i = str.indexOf("\n");
        var last = 0;
        if (i !== 0) {
          this._mark(line, column, identifierName, identifierNamePos, filename);
        }
        while (i !== -1) {
          position.line++;
          position.column = 0;
          last = i + 1;
          if (last < len && line !== undefined) {
            this._mark(++line, 0, null, null, filename);
          }
          i = str.indexOf("\n", last);
        }
        position.column += len - last;
      };
      _proto._mark = function _mark(line, column, identifierName, identifierNamePos, filename) {
        var _this$_map;
        (_this$_map = this._map) == null ? void 0 : _this$_map.mark(this._position, line, column, identifierName, identifierNamePos, filename);
      };
      _proto.removeTrailingNewline = function removeTrailingNewline() {
        var queueCursor = this._queueCursor;
        if (queueCursor !== 0 && this._queue[queueCursor - 1]["char"] === 10) {
          this._queueCursor--;
        }
      };
      _proto.removeLastSemicolon = function removeLastSemicolon() {
        var queueCursor = this._queueCursor;
        if (queueCursor !== 0 && this._queue[queueCursor - 1]["char"] === 59) {
          this._queueCursor--;
        }
      };
      _proto.getLastChar = function getLastChar() {
        var queueCursor = this._queueCursor;
        return queueCursor !== 0 ? this._queue[queueCursor - 1]["char"] : this._last;
      };
      _proto.getNewlineCount = function getNewlineCount() {
        var queueCursor = this._queueCursor;
        var count = 0;
        if (queueCursor === 0) return this._last === 10 ? 1 : 0;
        for (var i = queueCursor - 1; i >= 0; i--) {
          if (this._queue[i]["char"] !== 10) {
            break;
          }
          count++;
        }
        return count === queueCursor && this._last === 10 ? count + 1 : count;
      };
      _proto.endsWithCharAndNewline = function endsWithCharAndNewline() {
        var queue = this._queue;
        var queueCursor = this._queueCursor;
        if (queueCursor !== 0) {
          var lastCp = queue[queueCursor - 1]["char"];
          if (lastCp !== 10) return;
          if (queueCursor > 1) {
            return queue[queueCursor - 2]["char"];
          } else {
            return this._last;
          }
        }
      };
      _proto.hasContent = function hasContent() {
        return this._queueCursor !== 0 || !!this._last;
      };
      _proto.exactSource = function exactSource(loc, cb) {
        if (!this._map) {
          cb();
          return;
        }
        this.source("start", loc);
        var identifierName = loc.identifierName;
        var sourcePos = this._sourcePosition;
        if (identifierName) {
          this._canMarkIdName = false;
          sourcePos.identifierName = identifierName;
        }
        cb();
        if (identifierName) {
          this._canMarkIdName = true;
          sourcePos.identifierName = undefined;
          sourcePos.identifierNamePos = undefined;
        }
        this.source("end", loc);
      };
      _proto.source = function source(prop, loc) {
        if (!this._map) return;
        this._normalizePosition(prop, loc, 0, 0);
      };
      _proto.sourceWithOffset = function sourceWithOffset(prop, loc, lineOffset, columnOffset) {
        if (!this._map) return;
        this._normalizePosition(prop, loc, lineOffset, columnOffset);
      };
      _proto.withSource = function withSource(prop, loc, cb) {
        if (this._map) {
          this.source(prop, loc);
        }
        cb();
      };
      _proto._normalizePosition = function _normalizePosition(prop, loc, lineOffset, columnOffset) {
        var pos = loc[prop];
        var target = this._sourcePosition;
        if (pos) {
          target.line = pos.line + lineOffset;
          target.column = pos.column + columnOffset;
          target.filename = loc.filename;
        }
      };
      _proto.getCurrentColumn = function getCurrentColumn() {
        var queue = this._queue;
        var queueCursor = this._queueCursor;
        var lastIndex = -1;
        var len = 0;
        for (var i = 0; i < queueCursor; i++) {
          var item = queue[i];
          if (item["char"] === 10) {
            lastIndex = len;
          }
          len += item.repeat;
        }
        return lastIndex === -1 ? this._position.column + len : len - 1 - lastIndex;
      };
      _proto.getCurrentLine = function getCurrentLine() {
        var count = 0;
        var queue = this._queue;
        for (var i = 0; i < this._queueCursor; i++) {
          if (queue[i]["char"] === 10) {
            count++;
          }
        }
        return this._position.line + count;
      };
      return _createClass(Buffer);
    }();
  
    var FLIPPED_ALIAS_KEYS$1 = FLIPPED_ALIAS_KEYS$3,
      isArrayExpression = isArrayExpression$2,
      isAssignmentExpression$3 = isAssignmentExpression$4,
      isBinary$1 = isBinary$3,
      isBlockStatement$1 = isBlockStatement$2,
      isCallExpression$7 = isCallExpression$8,
      isFunction$3 = isFunction$4,
      isIdentifier$h = isIdentifier$j,
      isLiteral$4 = isLiteral$6,
      isMemberExpression$7 = isMemberExpression$8,
      isObjectExpression$1 = isObjectExpression$3,
      isOptionalCallExpression$2 = isOptionalCallExpression$3,
      isOptionalMemberExpression$2 = isOptionalMemberExpression$3,
      isStringLiteral$5 = isStringLiteral$6;
    function crawlInternal(node, state) {
      if (!node) return state;
      if (isMemberExpression$7(node) || isOptionalMemberExpression$2(node)) {
        crawlInternal(node.object, state);
        if (node.computed) crawlInternal(node.property, state);
      } else if (isBinary$1(node) || isAssignmentExpression$3(node)) {
        crawlInternal(node.left, state);
        crawlInternal(node.right, state);
      } else if (isCallExpression$7(node) || isOptionalCallExpression$2(node)) {
        state.hasCall = true;
        crawlInternal(node.callee, state);
      } else if (isFunction$3(node)) {
        state.hasFunction = true;
      } else if (isIdentifier$h(node)) {
        state.hasHelper = state.hasHelper || node.callee && isHelper(node.callee);
      }
      return state;
    }
    function crawl(node) {
      return crawlInternal(node, {
        hasCall: false,
        hasFunction: false,
        hasHelper: false
      });
    }
    function isHelper(node) {
      if (!node) return false;
      if (isMemberExpression$7(node)) {
        return isHelper(node.object) || isHelper(node.property);
      } else if (isIdentifier$h(node)) {
        return node.name === "require" || node.name.charCodeAt(0) === 95;
      } else if (isCallExpression$7(node)) {
        return isHelper(node.callee);
      } else if (isBinary$1(node) || isAssignmentExpression$3(node)) {
        return isIdentifier$h(node.left) && isHelper(node.left) || isHelper(node.right);
      } else {
        return false;
      }
    }
    function isType$1(node) {
      return isLiteral$4(node) || isObjectExpression$1(node) || isArrayExpression(node) || isIdentifier$h(node) || isMemberExpression$7(node);
    }
    var nodes = {
      AssignmentExpression: function (_AssignmentExpression) {
        function AssignmentExpression(_x) {
          return _AssignmentExpression.apply(this, arguments);
        }
        AssignmentExpression.toString = function () {
          return _AssignmentExpression.toString();
        };
        return AssignmentExpression;
      }(function (node) {
        var state = crawl(node.right);
        if (state.hasCall && state.hasHelper || state.hasFunction) {
          return state.hasFunction ? 1 | 2 : 2;
        }
      }),
      SwitchCase: function (_SwitchCase) {
        function SwitchCase(_x2, _x3) {
          return _SwitchCase.apply(this, arguments);
        }
        SwitchCase.toString = function () {
          return _SwitchCase.toString();
        };
        return SwitchCase;
      }(function (node, parent) {
        return (!!node.consequent.length || parent.cases[0] === node ? 1 : 0) | (!node.consequent.length && parent.cases[parent.cases.length - 1] === node ? 2 : 0);
      }),
      LogicalExpression: function (_LogicalExpression) {
        function LogicalExpression(_x4) {
          return _LogicalExpression.apply(this, arguments);
        }
        LogicalExpression.toString = function () {
          return _LogicalExpression.toString();
        };
        return LogicalExpression;
      }(function (node) {
        if (isFunction$3(node.left) || isFunction$3(node.right)) {
          return 2;
        }
      }),
      Literal: function (_Literal) {
        function Literal(_x5) {
          return _Literal.apply(this, arguments);
        }
        Literal.toString = function () {
          return _Literal.toString();
        };
        return Literal;
      }(function (node) {
        if (isStringLiteral$5(node) && node.value === "use strict") {
          return 2;
        }
      }),
      CallExpression: function (_CallExpression) {
        function CallExpression(_x6) {
          return _CallExpression.apply(this, arguments);
        }
        CallExpression.toString = function () {
          return _CallExpression.toString();
        };
        return CallExpression;
      }(function (node) {
        if (isFunction$3(node.callee) || isHelper(node)) {
          return 1 | 2;
        }
      }),
      OptionalCallExpression: function (_OptionalCallExpression) {
        function OptionalCallExpression(_x7) {
          return _OptionalCallExpression.apply(this, arguments);
        }
        OptionalCallExpression.toString = function () {
          return _OptionalCallExpression.toString();
        };
        return OptionalCallExpression;
      }(function (node) {
        if (isFunction$3(node.callee)) {
          return 1 | 2;
        }
      }),
      VariableDeclaration: function (_VariableDeclaration) {
        function VariableDeclaration(_x8) {
          return _VariableDeclaration.apply(this, arguments);
        }
        VariableDeclaration.toString = function () {
          return _VariableDeclaration.toString();
        };
        return VariableDeclaration;
      }(function (node) {
        for (var i = 0; i < node.declarations.length; i++) {
          var declar = node.declarations[i];
          var enabled = isHelper(declar.id) && !isType$1(declar.init);
          if (!enabled && declar.init) {
            var state = crawl(declar.init);
            enabled = isHelper(declar.init) && state.hasCall || state.hasFunction;
          }
          if (enabled) {
            return 1 | 2;
          }
        }
      }),
      IfStatement: function (_IfStatement) {
        function IfStatement(_x9) {
          return _IfStatement.apply(this, arguments);
        }
        IfStatement.toString = function () {
          return _IfStatement.toString();
        };
        return IfStatement;
      }(function (node) {
        if (isBlockStatement$1(node.consequent)) {
          return 1 | 2;
        }
      })
    };
    nodes.ObjectProperty = nodes.ObjectTypeProperty = nodes.ObjectMethod = function (node, parent) {
      if (parent.properties[0] === node) {
        return 1;
      }
    };
    nodes.ObjectTypeCallProperty = function (node, parent) {
      var _parent$properties;
      if (parent.callProperties[0] === node && !((_parent$properties = parent.properties) != null && _parent$properties.length)) {
        return 1;
      }
    };
    nodes.ObjectTypeIndexer = function (node, parent) {
      var _parent$properties2, _parent$callPropertie;
      if (parent.indexers[0] === node && !((_parent$properties2 = parent.properties) != null && _parent$properties2.length) && !((_parent$callPropertie = parent.callProperties) != null && _parent$callPropertie.length)) {
        return 1;
      }
    };
    nodes.ObjectTypeInternalSlot = function (node, parent) {
      var _parent$properties3, _parent$callPropertie2, _parent$indexers;
      if (parent.internalSlots[0] === node && !((_parent$properties3 = parent.properties) != null && _parent$properties3.length) && !((_parent$callPropertie2 = parent.callProperties) != null && _parent$callPropertie2.length) && !((_parent$indexers = parent.indexers) != null && _parent$indexers.length)) {
        return 1;
      }
    };
    [["Function", true], ["Class", true], ["Loop", true], ["LabeledStatement", true], ["SwitchStatement", true], ["TryStatement", true]].forEach(function (_ref) {
      var _ref2 = _slicedToArray(_ref, 2),
        type = _ref2[0],
        amounts = _ref2[1];
      [type].concat(FLIPPED_ALIAS_KEYS$1[type] || []).forEach(function (type) {
        var ret = amounts ? 1 | 2 : 0;
        nodes[type] = function () {
          return ret;
        };
      });
    });
  
    var isArrayTypeAnnotation$1 = isArrayTypeAnnotation$2,
      isArrowFunctionExpression = isArrowFunctionExpression$1,
      isAssignmentExpression$2 = isAssignmentExpression$4,
      isAwaitExpression = isAwaitExpression$1,
      isBinary = isBinary$3,
      isBinaryExpression = isBinaryExpression$1,
      isUpdateExpression$1 = isUpdateExpression$2,
      isCallExpression$6 = isCallExpression$8,
      isClass = isClass$2,
      isClassExpression = isClassExpression$1,
      isConditional = isConditional$1,
      isConditionalExpression = isConditionalExpression$1,
      isExportDeclaration$1 = isExportDeclaration$3,
      isExportDefaultDeclaration$1 = isExportDefaultDeclaration$3,
      isExpressionStatement$2 = isExpressionStatement$3,
      isFor$1 = isFor$2,
      isForInStatement = isForInStatement$1,
      isForOfStatement$1 = isForOfStatement$2,
      isForStatement$2 = isForStatement$3,
      isFunctionExpression = isFunctionExpression$1,
      isIfStatement$1 = isIfStatement$2,
      isIndexedAccessType = isIndexedAccessType$1,
      isIntersectionTypeAnnotation = isIntersectionTypeAnnotation$1,
      isLogicalExpression = isLogicalExpression$1,
      isMemberExpression$6 = isMemberExpression$8,
      isNewExpression$3 = isNewExpression$4,
      isNullableTypeAnnotation = isNullableTypeAnnotation$1,
      isObjectPattern$1 = isObjectPattern$2,
      isOptionalCallExpression$1 = isOptionalCallExpression$3,
      isOptionalMemberExpression$1 = isOptionalMemberExpression$3,
      isReturnStatement = isReturnStatement$1,
      isSequenceExpression$1 = isSequenceExpression$2,
      isSwitchStatement = isSwitchStatement$1,
      isTSArrayType$1 = isTSArrayType$2,
      isTSAsExpression$1 = isTSAsExpression$2,
      isTSInstantiationExpression = isTSInstantiationExpression$1,
      isTSIntersectionType = isTSIntersectionType$1,
      isTSNonNullExpression$1 = isTSNonNullExpression$2,
      isTSOptionalType = isTSOptionalType$1,
      isTSRestType = isTSRestType$1,
      isTSTypeAssertion$1 = isTSTypeAssertion$2,
      isTSUnionType = isTSUnionType$1,
      isTaggedTemplateExpression = isTaggedTemplateExpression$2,
      isThrowStatement = isThrowStatement$1,
      isTypeAnnotation$1 = isTypeAnnotation$2,
      isUnaryLike = isUnaryLike$1,
      isUnionTypeAnnotation$1 = isUnionTypeAnnotation$2,
      isVariableDeclarator$1 = isVariableDeclarator$2,
      isWhileStatement = isWhileStatement$1,
      isYieldExpression = isYieldExpression$1,
      isTSSatisfiesExpression$1 = isTSSatisfiesExpression$2;
    var PRECEDENCE = {
      "||": 0,
      "??": 0,
      "|>": 0,
      "&&": 1,
      "|": 2,
      "^": 3,
      "&": 4,
      "==": 5,
      "===": 5,
      "!=": 5,
      "!==": 5,
      "<": 6,
      ">": 6,
      "<=": 6,
      ">=": 6,
      "in": 6,
      "instanceof": 6,
      ">>": 7,
      "<<": 7,
      ">>>": 7,
      "+": 8,
      "-": 8,
      "*": 9,
      "/": 9,
      "%": 9,
      "**": 10
    };
    function isTSTypeExpression(node) {
      return isTSAsExpression$1(node) || isTSSatisfiesExpression$1(node) || isTSTypeAssertion$1(node);
    }
    var isClassExtendsClause = function isClassExtendsClause(node, parent) {
      return isClass(parent, {
        superClass: node
      });
    };
    var hasPostfixPart = function hasPostfixPart(node, parent) {
      return (isMemberExpression$6(parent) || isOptionalMemberExpression$1(parent)) && parent.object === node || (isCallExpression$6(parent) || isOptionalCallExpression$1(parent) || isNewExpression$3(parent)) && parent.callee === node || isTaggedTemplateExpression(parent) && parent.tag === node || isTSNonNullExpression$1(parent);
    };
    function NullableTypeAnnotation$1(node, parent) {
      return isArrayTypeAnnotation$1(parent);
    }
    function FunctionTypeAnnotation$1(node, parent, printStack) {
      if (printStack.length < 3) return;
      return isUnionTypeAnnotation$1(parent) || isIntersectionTypeAnnotation(parent) || isArrayTypeAnnotation$1(parent) || isTypeAnnotation$1(parent) && isArrowFunctionExpression(printStack[printStack.length - 3]);
    }
    function UpdateExpression$2(node, parent) {
      return hasPostfixPart(node, parent) || isClassExtendsClause(node, parent);
    }
    function ObjectExpression$2(node, parent, printStack) {
      return isFirstInContext(printStack, 1 | 2);
    }
    function DoExpression$1(node, parent, printStack) {
      return !node.async && isFirstInContext(printStack, 1);
    }
    function Binary(node, parent) {
      if (node.operator === "**" && isBinaryExpression(parent, {
        operator: "**"
      })) {
        return parent.left === node;
      }
      if (isClassExtendsClause(node, parent)) {
        return true;
      }
      if (hasPostfixPart(node, parent) || isUnaryLike(parent) || isAwaitExpression(parent)) {
        return true;
      }
      if (isBinary(parent)) {
        var parentOp = parent.operator;
        var parentPos = PRECEDENCE[parentOp];
        var nodeOp = node.operator;
        var nodePos = PRECEDENCE[nodeOp];
        if (parentPos === nodePos && parent.right === node && !isLogicalExpression(parent) || parentPos > nodePos) {
          return true;
        }
      }
    }
    function UnionTypeAnnotation$1(node, parent) {
      return isArrayTypeAnnotation$1(parent) || isNullableTypeAnnotation(parent) || isIntersectionTypeAnnotation(parent) || isUnionTypeAnnotation$1(parent);
    }
    function OptionalIndexedAccessType$1(node, parent) {
      return isIndexedAccessType(parent, {
        objectType: node
      });
    }
    function TSAsExpression$1() {
      return true;
    }
    function TSUnionType$1(node, parent) {
      return isTSArrayType$1(parent) || isTSOptionalType(parent) || isTSIntersectionType(parent) || isTSUnionType(parent) || isTSRestType(parent);
    }
    function TSInferType$1(node, parent) {
      return isTSArrayType$1(parent) || isTSOptionalType(parent);
    }
    function TSInstantiationExpression$1(node, parent) {
      return (isCallExpression$6(parent) || isOptionalCallExpression$1(parent) || isNewExpression$3(parent) || isTSInstantiationExpression(parent)) && !!parent.typeParameters;
    }
    function BinaryExpression$1(node, parent) {
      return node.operator === "in" && (isVariableDeclarator$1(parent) || isFor$1(parent));
    }
    function SequenceExpression$2(node, parent) {
      if (isForStatement$2(parent) || isThrowStatement(parent) || isReturnStatement(parent) || isIfStatement$1(parent) && parent.test === node || isWhileStatement(parent) && parent.test === node || isForInStatement(parent) && parent.right === node || isSwitchStatement(parent) && parent.discriminant === node || isExpressionStatement$2(parent) && parent.expression === node) {
        return false;
      }
      return true;
    }
    function YieldExpression$1(node, parent) {
      return isBinary(parent) || isUnaryLike(parent) || hasPostfixPart(node, parent) || isAwaitExpression(parent) && isYieldExpression(node) || isConditionalExpression(parent) && node === parent.test || isClassExtendsClause(node, parent);
    }
    function ClassExpression(node, parent, printStack) {
      return isFirstInContext(printStack, 1 | 4);
    }
    function UnaryLike(node, parent) {
      return hasPostfixPart(node, parent) || isBinaryExpression(parent, {
        operator: "**",
        left: node
      }) || isClassExtendsClause(node, parent);
    }
    function FunctionExpression$1(node, parent, printStack) {
      return isFirstInContext(printStack, 1 | 4);
    }
    function ArrowFunctionExpression$1(node, parent) {
      return isExportDeclaration$1(parent) || ConditionalExpression$2(node, parent);
    }
    function ConditionalExpression$2(node, parent) {
      if (isUnaryLike(parent) || isBinary(parent) || isConditionalExpression(parent, {
        test: node
      }) || isAwaitExpression(parent) || isTSTypeExpression(parent)) {
        return true;
      }
      return UnaryLike(node, parent);
    }
    function OptionalMemberExpression$1(node, parent) {
      return isCallExpression$6(parent, {
        callee: node
      }) || isMemberExpression$6(parent, {
        object: node
      });
    }
    function AssignmentExpression$2(node, parent) {
      if (isObjectPattern$1(node.left)) {
        return true;
      } else {
        return ConditionalExpression$2(node, parent);
      }
    }
    function LogicalExpression$1(node, parent) {
      if (isTSTypeExpression(parent)) return true;
      switch (node.operator) {
        case "||":
          if (!isLogicalExpression(parent)) return false;
          return parent.operator === "??" || parent.operator === "&&";
        case "&&":
          return isLogicalExpression(parent, {
            operator: "??"
          });
        case "??":
          return isLogicalExpression(parent) && parent.operator !== "??";
      }
    }
    function Identifier$1(node, parent, printStack) {
      var _node$extra;
      if ((_node$extra = node.extra) != null && _node$extra.parenthesized && isAssignmentExpression$2(parent, {
        left: node
      }) && (isFunctionExpression(parent.right) || isClassExpression(parent.right)) && parent.right.id == null) {
        return true;
      }
      if (node.name === "let") {
        var isFollowedByBracket = isMemberExpression$6(parent, {
          object: node,
          computed: true
        }) || isOptionalMemberExpression$1(parent, {
          object: node,
          computed: true,
          optional: false
        });
        return isFirstInContext(printStack, isFollowedByBracket ? 1 | 8 | 16 | 32 : 32);
      }
      return node.name === "async" && isForOfStatement$1(parent) && node === parent.left;
    }
    function isFirstInContext(printStack, checkParam) {
      var expressionStatement = checkParam & 1;
      var arrowBody = checkParam & 2;
      var exportDefault = checkParam & 4;
      var forHead = checkParam & 8;
      var forInHead = checkParam & 16;
      var forOfHead = checkParam & 32;
      var i = printStack.length - 1;
      if (i <= 0) return;
      var node = printStack[i];
      i--;
      var parent = printStack[i];
      while (i >= 0) {
        if (expressionStatement && isExpressionStatement$2(parent, {
          expression: node
        }) || exportDefault && isExportDefaultDeclaration$1(parent, {
          declaration: node
        }) || arrowBody && isArrowFunctionExpression(parent, {
          body: node
        }) || forHead && isForStatement$2(parent, {
          init: node
        }) || forInHead && isForInStatement(parent, {
          left: node
        }) || forOfHead && isForOfStatement$1(parent, {
          left: node
        })) {
          return true;
        }
        if (i > 0 && (hasPostfixPart(node, parent) && !isNewExpression$3(parent) || isSequenceExpression$1(parent) && parent.expressions[0] === node || isUpdateExpression$1(parent) && !parent.prefix || isConditional(parent, {
          test: node
        }) || isBinary(parent, {
          left: node
        }) || isAssignmentExpression$2(parent, {
          left: node
        }))) {
          node = parent;
          i--;
          parent = printStack[i];
        } else {
          return false;
        }
      }
      return false;
    }
  
    var parens = /*#__PURE__*/Object.freeze({
      __proto__: null,
      NullableTypeAnnotation: NullableTypeAnnotation$1,
      FunctionTypeAnnotation: FunctionTypeAnnotation$1,
      UpdateExpression: UpdateExpression$2,
      ObjectExpression: ObjectExpression$2,
      DoExpression: DoExpression$1,
      Binary: Binary,
      UnionTypeAnnotation: UnionTypeAnnotation$1,
      IntersectionTypeAnnotation: UnionTypeAnnotation$1,
      OptionalIndexedAccessType: OptionalIndexedAccessType$1,
      TSAsExpression: TSAsExpression$1,
      TSSatisfiesExpression: TSAsExpression$1,
      TSTypeAssertion: TSAsExpression$1,
      TSUnionType: TSUnionType$1,
      TSIntersectionType: TSUnionType$1,
      TSInferType: TSInferType$1,
      TSInstantiationExpression: TSInstantiationExpression$1,
      BinaryExpression: BinaryExpression$1,
      SequenceExpression: SequenceExpression$2,
      YieldExpression: YieldExpression$1,
      AwaitExpression: YieldExpression$1,
      ClassExpression: ClassExpression,
      UnaryLike: UnaryLike,
      FunctionExpression: FunctionExpression$1,
      ArrowFunctionExpression: ArrowFunctionExpression$1,
      ConditionalExpression: ConditionalExpression$2,
      OptionalMemberExpression: OptionalMemberExpression$1,
      OptionalCallExpression: OptionalMemberExpression$1,
      AssignmentExpression: AssignmentExpression$2,
      LogicalExpression: LogicalExpression$1,
      Identifier: Identifier$1
    });
  
    var FLIPPED_ALIAS_KEYS = FLIPPED_ALIAS_KEYS$3,
      isCallExpression$5 = isCallExpression$8,
      isMemberExpression$5 = isMemberExpression$8,
      isNewExpression$2 = isNewExpression$4;
    function expandAliases(obj) {
      var newObj = {};
      function add(type, func) {
        var fn = newObj[type];
        newObj[type] = fn ? function (node, parent, stack) {
          var result = fn(node, parent, stack);
          return result == null ? func(node, parent, stack) : result;
        } : func;
      }
      for (var _i = 0, _Object$keys = Object.keys(obj); _i < _Object$keys.length; _i++) {
        var type = _Object$keys[_i];
        var aliases = FLIPPED_ALIAS_KEYS[type];
        if (aliases) {
          for (var _iterator = _createForOfIteratorHelperLoose(aliases), _step; !(_step = _iterator()).done;) {
            var alias = _step.value;
            add(alias, obj[type]);
          }
        } else {
          add(type, obj[type]);
        }
      }
      return newObj;
    }
    var expandedParens = expandAliases(parens);
    expandAliases(nodes);
    function find$2(obj, node, parent, printStack) {
      var fn = obj[node.type];
      return fn ? fn(node, parent, printStack) : null;
    }
    function isOrHasCallExpression(node) {
      if (isCallExpression$5(node)) {
        return true;
      }
      return isMemberExpression$5(node) && isOrHasCallExpression(node.object);
    }
    function needsParens$1(node, parent, printStack) {
      if (!parent) return false;
      if (isNewExpression$2(parent) && parent.callee === node) {
        if (isOrHasCallExpression(node)) return true;
      }
      return find$2(expandedParens, node, parent, printStack);
    }
  
    function TaggedTemplateExpression$1(node) {
      this.print(node.tag, node);
      this.print(node.typeParameters, node);
      this.print(node.quasi, node);
    }
    function TemplateElement(node, parent) {
      var isFirst = parent.quasis[0] === node;
      var isLast = parent.quasis[parent.quasis.length - 1] === node;
      var value = (isFirst ? "`" : "}") + node.value.raw + (isLast ? "`" : "${");
      this.token(value, true);
    }
    function TemplateLiteral$1(node) {
      var quasis = node.quasis;
      for (var i = 0; i < quasis.length; i++) {
        this.print(quasis[i], node);
        if (i + 1 < quasis.length) {
          this.print(node.expressions[i], node);
        }
      }
    }
  
    var isCallExpression$4 = isCallExpression$8,
      isLiteral$3 = isLiteral$6,
      isMemberExpression$4 = isMemberExpression$8,
      isNewExpression$1 = isNewExpression$4;
    function UnaryExpression$1(node) {
      var operator = node.operator;
      if (operator === "void" || operator === "delete" || operator === "typeof" || operator === "throw") {
        this.word(operator);
        this.space();
      } else {
        this.token(operator);
      }
      this.print(node.argument, node);
    }
    function DoExpression(node) {
      if (node.async) {
        this.word("async", true);
        this.space();
      }
      this.word("do");
      this.space();
      this.print(node.body, node);
    }
    function ParenthesizedExpression$1(node) {
      this.tokenChar(40);
      this.print(node.expression, node);
      this.rightParens(node);
    }
    function UpdateExpression$1(node) {
      if (node.prefix) {
        this.token(node.operator);
        this.print(node.argument, node);
      } else {
        this.printTerminatorless(node.argument, node, true);
        this.token(node.operator);
      }
    }
    function ConditionalExpression$1(node) {
      this.print(node.test, node);
      this.space();
      this.tokenChar(63);
      this.space();
      this.print(node.consequent, node);
      this.space();
      this.tokenChar(58);
      this.space();
      this.print(node.alternate, node);
    }
    function NewExpression$1(node, parent) {
      this.word("new");
      this.space();
      this.print(node.callee, node);
      if (this.format.minified && node.arguments.length === 0 && !node.optional && !isCallExpression$4(parent, {
        callee: node
      }) && !isMemberExpression$4(parent) && !isNewExpression$1(parent)) {
        return;
      }
      this.print(node.typeArguments, node);
      this.print(node.typeParameters, node);
      if (node.optional) {
        this.token("?.");
      }
      this.tokenChar(40);
      this.printList(node.arguments, node);
      this.rightParens(node);
    }
    function SequenceExpression$1(node) {
      this.printList(node.expressions, node);
    }
    function ThisExpression() {
      this.word("this");
    }
    function Super() {
      this.word("super");
    }
    function isDecoratorMemberExpression(node) {
      switch (node.type) {
        case "Identifier":
          return true;
        case "MemberExpression":
          return !node.computed && node.property.type === "Identifier" && isDecoratorMemberExpression(node.object);
        default:
          return false;
      }
    }
    function shouldParenthesizeDecoratorExpression(node) {
      if (node.type === "ParenthesizedExpression") {
        return false;
      }
      return !isDecoratorMemberExpression(node.type === "CallExpression" ? node.callee : node);
    }
    function _shouldPrintDecoratorsBeforeExport(node) {
      if (typeof this.format.decoratorsBeforeExport === "boolean") {
        return this.format.decoratorsBeforeExport;
      }
      return typeof node.start === "number" && node.start === node.declaration.start;
    }
    function Decorator(node) {
      this.tokenChar(64);
      var expression = node.expression;
      if (shouldParenthesizeDecoratorExpression(expression)) {
        this.tokenChar(40);
        this.print(expression, node);
        this.tokenChar(41);
      } else {
        this.print(expression, node);
      }
      this.newline();
    }
    function OptionalMemberExpression(node) {
      var computed = node.computed;
      var optional = node.optional,
        property = node.property;
      this.print(node.object, node);
      if (!computed && isMemberExpression$4(property)) {
        throw new TypeError("Got a MemberExpression for MemberExpression property");
      }
      if (isLiteral$3(property) && typeof property.value === "number") {
        computed = true;
      }
      if (optional) {
        this.token("?.");
      }
      if (computed) {
        this.tokenChar(91);
        this.print(property, node);
        this.tokenChar(93);
      } else {
        if (!optional) {
          this.tokenChar(46);
        }
        this.print(property, node);
      }
    }
    function OptionalCallExpression(node) {
      this.print(node.callee, node);
      this.print(node.typeParameters, node);
      if (node.optional) {
        this.token("?.");
      }
      this.print(node.typeArguments, node);
      this.tokenChar(40);
      this.printList(node.arguments, node);
      this.rightParens(node);
    }
    function CallExpression$1(node) {
      this.print(node.callee, node);
      this.print(node.typeArguments, node);
      this.print(node.typeParameters, node);
      this.tokenChar(40);
      this.printList(node.arguments, node);
      this.rightParens(node);
    }
    function Import() {
      this.word("import");
    }
    function AwaitExpression(node) {
      this.word("await");
      if (node.argument) {
        this.space();
        this.printTerminatorless(node.argument, node, false);
      }
    }
    function YieldExpression(node) {
      this.word("yield", true);
      if (node.delegate) {
        this.tokenChar(42);
        if (node.argument) {
          this.space();
          this.print(node.argument, node);
        }
      } else {
        if (node.argument) {
          this.space();
          this.printTerminatorless(node.argument, node, false);
        }
      }
    }
    function EmptyStatement() {
      this.semicolon(true);
    }
    function ExpressionStatement(node) {
      this.print(node.expression, node);
      this.semicolon();
    }
    function AssignmentPattern(node) {
      this.print(node.left, node);
      if (node.left.optional) this.tokenChar(63);
      this.print(node.left.typeAnnotation, node);
      this.space();
      this.tokenChar(61);
      this.space();
      this.print(node.right, node);
    }
    function AssignmentExpression$1(node, parent) {
      var parens = this.inForStatementInitCounter && node.operator === "in" && !needsParens$1(node, parent);
      if (parens) {
        this.tokenChar(40);
      }
      this.print(node.left, node);
      this.space();
      if (node.operator === "in" || node.operator === "instanceof") {
        this.word(node.operator);
      } else {
        this.token(node.operator);
      }
      this.space();
      this.print(node.right, node);
      if (parens) {
        this.tokenChar(41);
      }
    }
    function BindExpression(node) {
      this.print(node.object, node);
      this.token("::");
      this.print(node.callee, node);
    }
    function MemberExpression(node) {
      this.print(node.object, node);
      if (!node.computed && isMemberExpression$4(node.property)) {
        throw new TypeError("Got a MemberExpression for MemberExpression property");
      }
      var computed = node.computed;
      if (isLiteral$3(node.property) && typeof node.property.value === "number") {
        computed = true;
      }
      if (computed) {
        this.tokenChar(91);
        this.print(node.property, node);
        this.tokenChar(93);
      } else {
        this.tokenChar(46);
        this.print(node.property, node);
      }
    }
    function MetaProperty(node) {
      this.print(node.meta, node);
      this.tokenChar(46);
      this.print(node.property, node);
    }
    function PrivateName(node) {
      this.tokenChar(35);
      this.print(node.id, node);
    }
    function V8IntrinsicIdentifier(node) {
      this.tokenChar(37);
      this.word(node.name);
    }
    function ModuleExpression(node) {
      this.word("module", true);
      this.space();
      this.tokenChar(123);
      this.indent();
      var body = node.body;
      if (body.body.length || body.directives.length) {
        this.newline();
      }
      this.print(body, node);
      this.dedent();
      this.rightBrace(node);
    }
  
    var isFor = isFor$2,
      isForStatement$1 = isForStatement$3,
      isIfStatement = isIfStatement$2,
      isStatement$7 = isStatement$8;
    function WithStatement(node) {
      this.word("with");
      this.space();
      this.tokenChar(40);
      this.print(node.object, node);
      this.tokenChar(41);
      this.printBlock(node);
    }
    function IfStatement(node) {
      this.word("if");
      this.space();
      this.tokenChar(40);
      this.print(node.test, node);
      this.tokenChar(41);
      this.space();
      var needsBlock = node.alternate && isIfStatement(getLastStatement(node.consequent));
      if (needsBlock) {
        this.tokenChar(123);
        this.newline();
        this.indent();
      }
      this.printAndIndentOnComments(node.consequent, node);
      if (needsBlock) {
        this.dedent();
        this.newline();
        this.tokenChar(125);
      }
      if (node.alternate) {
        if (this.endsWith(125)) this.space();
        this.word("else");
        this.space();
        this.printAndIndentOnComments(node.alternate, node);
      }
    }
    function getLastStatement(statement) {
      var body = statement.body;
      if (isStatement$7(body) === false) {
        return statement;
      }
      return getLastStatement(body);
    }
    function ForStatement(node) {
      this.word("for");
      this.space();
      this.tokenChar(40);
      this.inForStatementInitCounter++;
      this.print(node.init, node);
      this.inForStatementInitCounter--;
      this.tokenChar(59);
      if (node.test) {
        this.space();
        this.print(node.test, node);
      }
      this.tokenChar(59);
      if (node.update) {
        this.space();
        this.print(node.update, node);
      }
      this.tokenChar(41);
      this.printBlock(node);
    }
    function WhileStatement(node) {
      this.word("while");
      this.space();
      this.tokenChar(40);
      this.print(node.test, node);
      this.tokenChar(41);
      this.printBlock(node);
    }
    function ForXStatement(node) {
      this.word("for");
      this.space();
      var isForOf = node.type === "ForOfStatement";
      if (isForOf && node["await"]) {
        this.word("await");
        this.space();
      }
      this.noIndentInnerCommentsHere();
      this.tokenChar(40);
      this.print(node.left, node);
      this.space();
      this.word(isForOf ? "of" : "in");
      this.space();
      this.print(node.right, node);
      this.tokenChar(41);
      this.printBlock(node);
    }
    var ForInStatement = ForXStatement;
    var ForOfStatement = ForXStatement;
    function DoWhileStatement(node) {
      this.word("do");
      this.space();
      this.print(node.body, node);
      this.space();
      this.word("while");
      this.space();
      this.tokenChar(40);
      this.print(node.test, node);
      this.tokenChar(41);
      this.semicolon();
    }
    function printStatementAfterKeyword(printer, node, parent, isLabel) {
      if (node) {
        printer.space();
        printer.printTerminatorless(node, parent, isLabel);
      }
      printer.semicolon();
    }
    function BreakStatement(node) {
      this.word("break");
      printStatementAfterKeyword(this, node.label, node, true);
    }
    function ContinueStatement(node) {
      this.word("continue");
      printStatementAfterKeyword(this, node.label, node, true);
    }
    function ReturnStatement(node) {
      this.word("return");
      printStatementAfterKeyword(this, node.argument, node, false);
    }
    function ThrowStatement(node) {
      this.word("throw");
      printStatementAfterKeyword(this, node.argument, node, false);
    }
    function LabeledStatement(node) {
      this.print(node.label, node);
      this.tokenChar(58);
      this.space();
      this.print(node.body, node);
    }
    function TryStatement(node) {
      this.word("try");
      this.space();
      this.print(node.block, node);
      this.space();
      if (node.handlers) {
        this.print(node.handlers[0], node);
      } else {
        this.print(node.handler, node);
      }
      if (node.finalizer) {
        this.space();
        this.word("finally");
        this.space();
        this.print(node.finalizer, node);
      }
    }
    function CatchClause(node) {
      this.word("catch");
      this.space();
      if (node.param) {
        this.tokenChar(40);
        this.print(node.param, node);
        this.print(node.param.typeAnnotation, node);
        this.tokenChar(41);
        this.space();
      }
      this.print(node.body, node);
    }
    function SwitchStatement(node) {
      this.word("switch");
      this.space();
      this.tokenChar(40);
      this.print(node.discriminant, node);
      this.tokenChar(41);
      this.space();
      this.tokenChar(123);
      this.printSequence(node.cases, node, {
        indent: true,
        addNewlines: function addNewlines(leading, cas) {
          if (!leading && node.cases[node.cases.length - 1] === cas) return -1;
        }
      });
      this.rightBrace(node);
    }
    function SwitchCase(node) {
      if (node.test) {
        this.word("case");
        this.space();
        this.print(node.test, node);
        this.tokenChar(58);
      } else {
        this.word("default");
        this.tokenChar(58);
      }
      if (node.consequent.length) {
        this.newline();
        this.printSequence(node.consequent, node, {
          indent: true
        });
      }
    }
    function DebuggerStatement() {
      this.word("debugger");
      this.semicolon();
    }
    function VariableDeclaration(node, parent) {
      if (node.declare) {
        this.word("declare");
        this.space();
      }
      var kind = node.kind;
      this.word(kind, kind === "using");
      this.space();
      var hasInits = false;
      if (!isFor(parent)) {
        for (var _iterator = _createForOfIteratorHelperLoose(node.declarations), _step; !(_step = _iterator()).done;) {
          var declar = _step.value;
          if (declar.init) {
            hasInits = true;
          }
        }
      }
      this.printList(node.declarations, node, {
        separator: hasInits ? function () {
          this.tokenChar(44);
          this.newline();
        } : undefined,
        indent: node.declarations.length > 1 ? true : false
      });
      if (isFor(parent)) {
        if (isForStatement$1(parent)) {
          if (parent.init === node) return;
        } else {
          if (parent.left === node) return;
        }
      }
      this.semicolon();
    }
    function VariableDeclarator$1(node) {
      this.print(node.id, node);
      if (node.definite) this.tokenChar(33);
      this.print(node.id.typeAnnotation, node);
      if (node.init) {
        this.space();
        this.tokenChar(61);
        this.space();
        this.print(node.init, node);
      }
    }
  
    var isExportDefaultDeclaration = isExportDefaultDeclaration$3,
      isExportNamedDeclaration$1 = isExportNamedDeclaration$3;
    function ClassDeclaration(node, parent) {
      var inExport = isExportDefaultDeclaration(parent) || isExportNamedDeclaration$1(parent);
      if (!inExport || !this._shouldPrintDecoratorsBeforeExport(parent)) {
        this.printJoin(node.decorators, node);
      }
      if (node.declare) {
        this.word("declare");
        this.space();
      }
      if (node["abstract"]) {
        this.word("abstract");
        this.space();
      }
      this.word("class");
      if (node.id) {
        this.space();
        this.print(node.id, node);
      }
      this.print(node.typeParameters, node);
      if (node.superClass) {
        this.space();
        this.word("extends");
        this.space();
        this.print(node.superClass, node);
        this.print(node.superTypeParameters, node);
      }
      if (node["implements"]) {
        this.space();
        this.word("implements");
        this.space();
        this.printList(node["implements"], node);
      }
      this.space();
      this.print(node.body, node);
    }
    function ClassBody(node) {
      this.tokenChar(123);
      if (node.body.length === 0) {
        this.tokenChar(125);
      } else {
        this.newline();
        this.indent();
        this.printSequence(node.body, node);
        this.dedent();
        if (!this.endsWith(10)) this.newline();
        this.rightBrace(node);
      }
    }
    function ClassProperty(node) {
      var _node$key$loc, _node$key$loc$end;
      this.printJoin(node.decorators, node);
      var endLine = (_node$key$loc = node.key.loc) == null ? void 0 : (_node$key$loc$end = _node$key$loc.end) == null ? void 0 : _node$key$loc$end.line;
      if (endLine) this.catchUp(endLine);
      this.tsPrintClassMemberModifiers(node);
      if (node.computed) {
        this.tokenChar(91);
        this.print(node.key, node);
        this.tokenChar(93);
      } else {
        this._variance(node);
        this.print(node.key, node);
      }
      if (node.optional) {
        this.tokenChar(63);
      }
      if (node.definite) {
        this.tokenChar(33);
      }
      this.print(node.typeAnnotation, node);
      if (node.value) {
        this.space();
        this.tokenChar(61);
        this.space();
        this.print(node.value, node);
      }
      this.semicolon();
    }
    function ClassAccessorProperty(node) {
      var _node$key$loc2, _node$key$loc2$end;
      this.printJoin(node.decorators, node);
      var endLine = (_node$key$loc2 = node.key.loc) == null ? void 0 : (_node$key$loc2$end = _node$key$loc2.end) == null ? void 0 : _node$key$loc2$end.line;
      if (endLine) this.catchUp(endLine);
      this.tsPrintClassMemberModifiers(node);
      this.word("accessor", true);
      this.space();
      if (node.computed) {
        this.tokenChar(91);
        this.print(node.key, node);
        this.tokenChar(93);
      } else {
        this._variance(node);
        this.print(node.key, node);
      }
      if (node.optional) {
        this.tokenChar(63);
      }
      if (node.definite) {
        this.tokenChar(33);
      }
      this.print(node.typeAnnotation, node);
      if (node.value) {
        this.space();
        this.tokenChar(61);
        this.space();
        this.print(node.value, node);
      }
      this.semicolon();
    }
    function ClassPrivateProperty(node) {
      this.printJoin(node.decorators, node);
      if (node["static"]) {
        this.word("static");
        this.space();
      }
      this.print(node.key, node);
      this.print(node.typeAnnotation, node);
      if (node.value) {
        this.space();
        this.tokenChar(61);
        this.space();
        this.print(node.value, node);
      }
      this.semicolon();
    }
    function ClassMethod(node) {
      this._classMethodHead(node);
      this.space();
      this.print(node.body, node);
    }
    function ClassPrivateMethod(node) {
      this._classMethodHead(node);
      this.space();
      this.print(node.body, node);
    }
    function _classMethodHead(node) {
      var _node$key$loc3, _node$key$loc3$end;
      this.printJoin(node.decorators, node);
      var endLine = (_node$key$loc3 = node.key.loc) == null ? void 0 : (_node$key$loc3$end = _node$key$loc3.end) == null ? void 0 : _node$key$loc3$end.line;
      if (endLine) this.catchUp(endLine);
      this.tsPrintClassMemberModifiers(node);
      this._methodHead(node);
    }
    function StaticBlock(node) {
      this.word("static");
      this.space();
      this.tokenChar(123);
      if (node.body.length === 0) {
        this.tokenChar(125);
      } else {
        this.newline();
        this.printSequence(node.body, node, {
          indent: true
        });
        this.rightBrace(node);
      }
    }
  
    var isIdentifier$g = isIdentifier$j;
    function _params(node, idNode, parentNode) {
      this.print(node.typeParameters, node);
      var nameInfo = _getFuncIdName.call(this, idNode, parentNode);
      if (nameInfo) {
        this.sourceIdentifierName(nameInfo.name, nameInfo.pos);
      }
      this.tokenChar(40);
      this._parameters(node.params, node);
      this.tokenChar(41);
      var noLineTerminator = node.type === "ArrowFunctionExpression";
      this.print(node.returnType, node, noLineTerminator);
      this._noLineTerminator = noLineTerminator;
    }
    function _parameters(parameters, parent) {
      var paramLength = parameters.length;
      for (var i = 0; i < paramLength; i++) {
        this._param(parameters[i], parent);
        if (i < parameters.length - 1) {
          this.tokenChar(44);
          this.space();
        }
      }
    }
    function _param(parameter, parent) {
      this.printJoin(parameter.decorators, parameter);
      this.print(parameter, parent);
      if (parameter.optional) {
        this.tokenChar(63);
      }
      this.print(parameter.typeAnnotation, parameter);
    }
    function _methodHead(node) {
      var kind = node.kind;
      var key = node.key;
      if (kind === "get" || kind === "set") {
        this.word(kind);
        this.space();
      }
      if (node.async) {
        this.word("async", true);
        this.space();
      }
      if (kind === "method" || kind === "init") {
        if (node.generator) {
          this.tokenChar(42);
        }
      }
      if (node.computed) {
        this.tokenChar(91);
        this.print(key, node);
        this.tokenChar(93);
      } else {
        this.print(key, node);
      }
      if (node.optional) {
        this.tokenChar(63);
      }
      this._params(node, node.computed && node.key.type !== "StringLiteral" ? undefined : node.key, undefined);
    }
    function _predicate(node, noLineTerminatorAfter) {
      if (node.predicate) {
        if (!node.returnType) {
          this.tokenChar(58);
        }
        this.space();
        this.print(node.predicate, node, noLineTerminatorAfter);
      }
    }
    function _functionHead(node, parent) {
      if (node.async) {
        this.word("async");
        this._endsWithInnerRaw = false;
        this.space();
      }
      this.word("function");
      if (node.generator) {
        this._endsWithInnerRaw = false;
        this.tokenChar(42);
      }
      this.space();
      if (node.id) {
        this.print(node.id, node);
      }
      this._params(node, node.id, parent);
      if (node.type !== "TSDeclareFunction") {
        this._predicate(node);
      }
    }
    function FunctionExpression(node, parent) {
      this._functionHead(node, parent);
      this.space();
      this.print(node.body, node);
    }
    function ArrowFunctionExpression(node, parent) {
      if (node.async) {
        this.word("async", true);
        this.space();
      }
      var firstParam;
      if (!this.format.retainLines && node.params.length === 1 && isIdentifier$g(firstParam = node.params[0]) && !hasTypesOrComments(node, firstParam)) {
        this.print(firstParam, node, true);
      } else {
        this._params(node, undefined, parent);
      }
      this._predicate(node, true);
      this.space();
      this.printInnerComments();
      this.token("=>");
      this.space();
      this.print(node.body, node);
    }
    function hasTypesOrComments(node, param) {
      var _param$leadingComment, _param$trailingCommen;
      return !!(node.typeParameters || node.returnType || node.predicate || param.typeAnnotation || param.optional || (_param$leadingComment = param.leadingComments) != null && _param$leadingComment.length || (_param$trailingCommen = param.trailingComments) != null && _param$trailingCommen.length);
    }
    function _getFuncIdName(idNode, parent) {
      var id = idNode;
      if (!id && parent) {
        var parentType = parent.type;
        if (parentType === "VariableDeclarator") {
          id = parent.id;
        } else if (parentType === "AssignmentExpression" || parentType === "AssignmentPattern") {
          id = parent.left;
        } else if (parentType === "ObjectProperty" || parentType === "ClassProperty") {
          if (!parent.computed || parent.key.type === "StringLiteral") {
            id = parent.key;
          }
        } else if (parentType === "ClassPrivateProperty" || parentType === "ClassAccessorProperty") {
          id = parent.key;
        }
      }
      if (!id) return;
      var nameInfo;
      if (id.type === "Identifier") {
        var _id$loc, _id$loc2;
        nameInfo = {
          pos: (_id$loc = id.loc) == null ? void 0 : _id$loc.start,
          name: ((_id$loc2 = id.loc) == null ? void 0 : _id$loc2.identifierName) || id.name
        };
      } else if (id.type === "PrivateName") {
        var _id$loc3;
        nameInfo = {
          pos: (_id$loc3 = id.loc) == null ? void 0 : _id$loc3.start,
          name: "#" + id.id.name
        };
      } else if (id.type === "StringLiteral") {
        var _id$loc4;
        nameInfo = {
          pos: (_id$loc4 = id.loc) == null ? void 0 : _id$loc4.start,
          name: id.value
        };
      }
      return nameInfo;
    }
  
    var isClassDeclaration = isClassDeclaration$2,
      isExportDefaultSpecifier = isExportDefaultSpecifier$1,
      isExportNamespaceSpecifier = isExportNamespaceSpecifier$1,
      isImportDefaultSpecifier = isImportDefaultSpecifier$1,
      isImportNamespaceSpecifier = isImportNamespaceSpecifier$1,
      isStatement$6 = isStatement$8;
    function ImportSpecifier(node) {
      if (node.importKind === "type" || node.importKind === "typeof") {
        this.word(node.importKind);
        this.space();
      }
      this.print(node.imported, node);
      if (node.local && node.local.name !== node.imported.name) {
        this.space();
        this.word("as");
        this.space();
        this.print(node.local, node);
      }
    }
    function ImportDefaultSpecifier(node) {
      this.print(node.local, node);
    }
    function ExportDefaultSpecifier(node) {
      this.print(node.exported, node);
    }
    function ExportSpecifier(node) {
      if (node.exportKind === "type") {
        this.word("type");
        this.space();
      }
      this.print(node.local, node);
      if (node.exported && node.local.name !== node.exported.name) {
        this.space();
        this.word("as");
        this.space();
        this.print(node.exported, node);
      }
    }
    function ExportNamespaceSpecifier(node) {
      this.tokenChar(42);
      this.space();
      this.word("as");
      this.space();
      this.print(node.exported, node);
    }
    function _printAssertions(node) {
      this.word("assert");
      this.space();
      this.tokenChar(123);
      this.space();
      this.printList(node.assertions, node);
      this.space();
      this.tokenChar(125);
    }
    function ExportAllDeclaration(node) {
      var _node$assertions;
      this.word("export");
      this.space();
      if (node.exportKind === "type") {
        this.word("type");
        this.space();
      }
      this.tokenChar(42);
      this.space();
      this.word("from");
      this.space();
      if ((_node$assertions = node.assertions) != null && _node$assertions.length) {
        this.print(node.source, node, true);
        this.space();
        this._printAssertions(node);
      } else {
        this.print(node.source, node);
      }
      this.semicolon();
    }
    function maybePrintDecoratorsBeforeExport(printer, node) {
      if (isClassDeclaration(node.declaration) && printer._shouldPrintDecoratorsBeforeExport(node)) {
        printer.printJoin(node.declaration.decorators, node);
      }
    }
    function ExportNamedDeclaration(node) {
      maybePrintDecoratorsBeforeExport(this, node);
      this.word("export");
      this.space();
      if (node.declaration) {
        var declar = node.declaration;
        this.print(declar, node);
        if (!isStatement$6(declar)) this.semicolon();
      } else {
        if (node.exportKind === "type") {
          this.word("type");
          this.space();
        }
        var specifiers = node.specifiers.slice(0);
        var hasSpecial = false;
        for (;;) {
          var first = specifiers[0];
          if (isExportDefaultSpecifier(first) || isExportNamespaceSpecifier(first)) {
            hasSpecial = true;
            this.print(specifiers.shift(), node);
            if (specifiers.length) {
              this.tokenChar(44);
              this.space();
            }
          } else {
            break;
          }
        }
        if (specifiers.length || !specifiers.length && !hasSpecial) {
          this.tokenChar(123);
          if (specifiers.length) {
            this.space();
            this.printList(specifiers, node);
            this.space();
          }
          this.tokenChar(125);
        }
        if (node.source) {
          var _node$assertions2;
          this.space();
          this.word("from");
          this.space();
          if ((_node$assertions2 = node.assertions) != null && _node$assertions2.length) {
            this.print(node.source, node, true);
            this.space();
            this._printAssertions(node);
          } else {
            this.print(node.source, node);
          }
        }
        this.semicolon();
      }
    }
    function ExportDefaultDeclaration(node) {
      maybePrintDecoratorsBeforeExport(this, node);
      this.word("export");
      this.noIndentInnerCommentsHere();
      this.space();
      this.word("default");
      this.space();
      var declar = node.declaration;
      this.print(declar, node);
      if (!isStatement$6(declar)) this.semicolon();
    }
    function ImportDeclaration(node) {
      var _node$assertions3;
      this.word("import");
      this.space();
      var isTypeKind = node.importKind === "type" || node.importKind === "typeof";
      if (isTypeKind) {
        this.noIndentInnerCommentsHere();
        this.word(node.importKind);
        this.space();
      } else if (node.module) {
        this.noIndentInnerCommentsHere();
        this.word("module");
        this.space();
      }
      var specifiers = node.specifiers.slice(0);
      var hasSpecifiers = !!specifiers.length;
      while (hasSpecifiers) {
        var first = specifiers[0];
        if (isImportDefaultSpecifier(first) || isImportNamespaceSpecifier(first)) {
          this.print(specifiers.shift(), node);
          if (specifiers.length) {
            this.tokenChar(44);
            this.space();
          }
        } else {
          break;
        }
      }
      if (specifiers.length) {
        this.tokenChar(123);
        this.space();
        this.printList(specifiers, node);
        this.space();
        this.tokenChar(125);
      } else if (isTypeKind && !hasSpecifiers) {
        this.tokenChar(123);
        this.tokenChar(125);
      }
      if (hasSpecifiers || isTypeKind) {
        this.space();
        this.word("from");
        this.space();
      }
      if ((_node$assertions3 = node.assertions) != null && _node$assertions3.length) {
        this.print(node.source, node, true);
        this.space();
        this._printAssertions(node);
      } else {
        this.print(node.source, node);
      }
      {
        var _node$attributes;
        if ((_node$attributes = node.attributes) != null && _node$attributes.length) {
          this.space();
          this.word("with");
          this.space();
          this.printList(node.attributes, node);
        }
      }
      this.semicolon();
    }
    function ImportAttribute(node) {
      this.print(node.key);
      this.tokenChar(58);
      this.space();
      this.print(node.value);
    }
    function ImportNamespaceSpecifier(node) {
      this.tokenChar(42);
      this.space();
      this.word("as");
      this.space();
      this.print(node.local, node);
    }
  
    var jsesc_1$1;
    var hasRequiredJsesc$1;
    function requireJsesc$1() {
      if (hasRequiredJsesc$1) return jsesc_1$1;
      hasRequiredJsesc$1 = 1;
      var object = {};
      var hasOwnProperty = object.hasOwnProperty;
      var forOwn = function forOwn(object, callback) {
        for (var key in object) {
          if (hasOwnProperty.call(object, key)) {
            callback(key, object[key]);
          }
        }
      };
      var extend = function extend(destination, source) {
        if (!source) {
          return destination;
        }
        forOwn(source, function (key, value) {
          destination[key] = value;
        });
        return destination;
      };
      var forEach = function forEach(array, callback) {
        var length = array.length;
        var index = -1;
        while (++index < length) {
          callback(array[index]);
        }
      };
      var fourHexEscape = function fourHexEscape(hex) {
        return "\\u" + ('0000' + hex).slice(-4);
      };
      var hexadecimal = function hexadecimal(code, lowercase) {
        var hexadecimal = code.toString(16);
        if (lowercase) return hexadecimal;
        return hexadecimal.toUpperCase();
      };
      var toString = object.toString;
      var isArray = Array.isArray;
      var isBuffer = function isBuffer(value) {
        return typeof Buffer$1 === 'function' && Buffer$1.isBuffer(value);
      };
      var isObject = function isObject(value) {
        return toString.call(value) == '[object Object]';
      };
      var isString = function isString(value) {
        return typeof value == 'string' || toString.call(value) == '[object String]';
      };
      var isNumber = function isNumber(value) {
        return typeof value == 'number' || toString.call(value) == '[object Number]';
      };
      var isFunction = function isFunction(value) {
        return typeof value == 'function';
      };
      var isMap = function isMap(value) {
        return toString.call(value) == '[object Map]';
      };
      var isSet = function isSet(value) {
        return toString.call(value) == '[object Set]';
      };
      var singleEscapes = {
        '\\': '\\\\',
        '\b': '\\b',
        '\f': '\\f',
        '\n': '\\n',
        '\r': '\\r',
        '\t': '\\t'
      };
      var regexSingleEscape = /[\\\b\f\n\r\t]/;
      var regexDigit = /[0-9]/;
      var regexWhitespace = /[\xA0\u1680\u2000-\u200A\u2028\u2029\u202F\u205F\u3000]/;
      var escapeEverythingRegex = /([\uD800-\uDBFF][\uDC00-\uDFFF])|([\uD800-\uDFFF])|(['"`])|[^]/g;
      var escapeNonAsciiRegex = /([\uD800-\uDBFF][\uDC00-\uDFFF])|([\uD800-\uDFFF])|(['"`])|[^ !#-&\(-\[\]-_a-~]/g;
      var jsesc = function jsesc(argument, options) {
        var increaseIndentation = function increaseIndentation() {
          oldIndent = indent;
          ++options.indentLevel;
          indent = options.indent.repeat(options.indentLevel);
        };
        var defaults = {
          'escapeEverything': false,
          'minimal': false,
          'isScriptContext': false,
          'quotes': 'single',
          'wrap': false,
          'es6': false,
          'json': false,
          'compact': true,
          'lowercaseHex': false,
          'numbers': 'decimal',
          'indent': '\t',
          'indentLevel': 0,
          '__inline1__': false,
          '__inline2__': false
        };
        var json = options && options.json;
        if (json) {
          defaults.quotes = 'double';
          defaults.wrap = true;
        }
        options = extend(defaults, options);
        if (options.quotes != 'single' && options.quotes != 'double' && options.quotes != 'backtick') {
          options.quotes = 'single';
        }
        var quote = options.quotes == 'double' ? '"' : options.quotes == 'backtick' ? '`' : '\'';
        var compact = options.compact;
        var lowercaseHex = options.lowercaseHex;
        var indent = options.indent.repeat(options.indentLevel);
        var oldIndent = '';
        var inline1 = options.__inline1__;
        var inline2 = options.__inline2__;
        var newLine = compact ? '' : '\n';
        var result;
        var isEmpty = true;
        var useBinNumbers = options.numbers == 'binary';
        var useOctNumbers = options.numbers == 'octal';
        var useDecNumbers = options.numbers == 'decimal';
        var useHexNumbers = options.numbers == 'hexadecimal';
        if (json && argument && isFunction(argument.toJSON)) {
          argument = argument.toJSON();
        }
        if (!isString(argument)) {
          if (isMap(argument)) {
            if (argument.size == 0) {
              return 'new Map()';
            }
            if (!compact) {
              options.__inline1__ = true;
              options.__inline2__ = false;
            }
            return 'new Map(' + jsesc(Array.from(argument), options) + ')';
          }
          if (isSet(argument)) {
            if (argument.size == 0) {
              return 'new Set()';
            }
            return 'new Set(' + jsesc(Array.from(argument), options) + ')';
          }
          if (isBuffer(argument)) {
            if (argument.length == 0) {
              return 'Buffer.from([])';
            }
            return 'Buffer.from(' + jsesc(Array.from(argument), options) + ')';
          }
          if (isArray(argument)) {
            result = [];
            options.wrap = true;
            if (inline1) {
              options.__inline1__ = false;
              options.__inline2__ = true;
            }
            if (!inline2) {
              increaseIndentation();
            }
            forEach(argument, function (value) {
              isEmpty = false;
              if (inline2) {
                options.__inline2__ = false;
              }
              result.push((compact || inline2 ? '' : indent) + jsesc(value, options));
            });
            if (isEmpty) {
              return '[]';
            }
            if (inline2) {
              return '[' + result.join(', ') + ']';
            }
            return '[' + newLine + result.join(',' + newLine) + newLine + (compact ? '' : oldIndent) + ']';
          } else if (isNumber(argument)) {
            if (json) {
              return JSON.stringify(argument);
            }
            if (useDecNumbers) {
              return String(argument);
            }
            if (useHexNumbers) {
              var _hexadecimal = argument.toString(16);
              if (!lowercaseHex) {
                _hexadecimal = _hexadecimal.toUpperCase();
              }
              return '0x' + _hexadecimal;
            }
            if (useBinNumbers) {
              return '0b' + argument.toString(2);
            }
            if (useOctNumbers) {
              return '0o' + argument.toString(8);
            }
          } else if (!isObject(argument)) {
            if (json) {
              return JSON.stringify(argument) || 'null';
            }
            return String(argument);
          } else {
            result = [];
            options.wrap = true;
            increaseIndentation();
            forOwn(argument, function (key, value) {
              isEmpty = false;
              result.push((compact ? '' : indent) + jsesc(key, options) + ':' + (compact ? '' : ' ') + jsesc(value, options));
            });
            if (isEmpty) {
              return '{}';
            }
            return '{' + newLine + result.join(',' + newLine) + newLine + (compact ? '' : oldIndent) + '}';
          }
        }
        var regex = options.escapeEverything ? escapeEverythingRegex : escapeNonAsciiRegex;
        result = argument.replace(regex, function (_char, pair, lone, quoteChar, index, string) {
          if (pair) {
            if (options.minimal) return pair;
            var first = pair.charCodeAt(0);
            var second = pair.charCodeAt(1);
            if (options.es6) {
              var codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;
              var _hex = hexadecimal(codePoint, lowercaseHex);
              return "\\u{" + _hex + '}';
            }
            return fourHexEscape(hexadecimal(first, lowercaseHex)) + fourHexEscape(hexadecimal(second, lowercaseHex));
          }
          if (lone) {
            return fourHexEscape(hexadecimal(lone.charCodeAt(0), lowercaseHex));
          }
          if (_char == '\0' && !json && !regexDigit.test(string.charAt(index + 1))) {
            return '\\0';
          }
          if (quoteChar) {
            if (quoteChar == quote || options.escapeEverything) {
              return '\\' + quoteChar;
            }
            return quoteChar;
          }
          if (regexSingleEscape.test(_char)) {
            return singleEscapes[_char];
          }
          if (options.minimal && !regexWhitespace.test(_char)) {
            return _char;
          }
          var hex = hexadecimal(_char.charCodeAt(0), lowercaseHex);
          if (json || hex.length > 2) {
            return fourHexEscape(hex);
          }
          return '\\x' + ('00' + hex).slice(-2);
        });
        if (quote == '`') {
          result = result.replace(/\$\{/g, '\\${');
        }
        if (options.isScriptContext) {
          result = result.replace(/<\/(script|style)/gi, '<\\/$1').replace(/<!--/g, json ? "\\u003C!--" : '\\x3C!--');
        }
        if (options.wrap) {
          result = quote + result + quote;
        }
        return result;
      };
      jsesc.version = '3.0.2';
      jsesc_1$1 = jsesc;
      return jsesc_1$1;
    }
  
    var jsesc_1;
    var hasRequiredJsesc;
    function requireJsesc() {
      if (hasRequiredJsesc) return jsesc_1;
      hasRequiredJsesc = 1;
      var object = {};
      var hasOwnProperty = object.hasOwnProperty;
      var forOwn = function forOwn(object, callback) {
        for (var key in object) {
          if (hasOwnProperty.call(object, key)) {
            callback(key, object[key]);
          }
        }
      };
      var extend = function extend(destination, source) {
        if (!source) {
          return destination;
        }
        forOwn(source, function (key, value) {
          destination[key] = value;
        });
        return destination;
      };
      var forEach = function forEach(array, callback) {
        var length = array.length;
        var index = -1;
        while (++index < length) {
          callback(array[index]);
        }
      };
      var toString = object.toString;
      var isArray = Array.isArray;
      var isBuffer = Buffer$1.isBuffer;
      var isObject = function isObject(value) {
        return toString.call(value) == '[object Object]';
      };
      var isString = function isString(value) {
        return typeof value == 'string' || toString.call(value) == '[object String]';
      };
      var isNumber = function isNumber(value) {
        return typeof value == 'number' || toString.call(value) == '[object Number]';
      };
      var isFunction = function isFunction(value) {
        return typeof value == 'function';
      };
      var isMap = function isMap(value) {
        return toString.call(value) == '[object Map]';
      };
      var isSet = function isSet(value) {
        return toString.call(value) == '[object Set]';
      };
      var singleEscapes = {
        '"': '\\"',
        '\'': '\\\'',
        '\\': '\\\\',
        '\b': '\\b',
        '\f': '\\f',
        '\n': '\\n',
        '\r': '\\r',
        '\t': '\\t'
      };
      var regexSingleEscape = /["'\\\b\f\n\r\t]/;
      var regexDigit = /[0-9]/;
      var regexWhitelist = /[ !#-&\(-\[\]-_a-~]/;
      var jsesc = function jsesc(argument, options) {
        var increaseIndentation = function increaseIndentation() {
          oldIndent = indent;
          ++options.indentLevel;
          indent = options.indent.repeat(options.indentLevel);
        };
        var defaults = {
          'escapeEverything': false,
          'minimal': false,
          'isScriptContext': false,
          'quotes': 'single',
          'wrap': false,
          'es6': false,
          'json': false,
          'compact': true,
          'lowercaseHex': false,
          'numbers': 'decimal',
          'indent': '\t',
          'indentLevel': 0,
          '__inline1__': false,
          '__inline2__': false
        };
        var json = options && options.json;
        if (json) {
          defaults.quotes = 'double';
          defaults.wrap = true;
        }
        options = extend(defaults, options);
        if (options.quotes != 'single' && options.quotes != 'double' && options.quotes != 'backtick') {
          options.quotes = 'single';
        }
        var quote = options.quotes == 'double' ? '"' : options.quotes == 'backtick' ? '`' : '\'';
        var compact = options.compact;
        var lowercaseHex = options.lowercaseHex;
        var indent = options.indent.repeat(options.indentLevel);
        var oldIndent = '';
        var inline1 = options.__inline1__;
        var inline2 = options.__inline2__;
        var newLine = compact ? '' : '\n';
        var result;
        var isEmpty = true;
        var useBinNumbers = options.numbers == 'binary';
        var useOctNumbers = options.numbers == 'octal';
        var useDecNumbers = options.numbers == 'decimal';
        var useHexNumbers = options.numbers == 'hexadecimal';
        if (json && argument && isFunction(argument.toJSON)) {
          argument = argument.toJSON();
        }
        if (!isString(argument)) {
          if (isMap(argument)) {
            if (argument.size == 0) {
              return 'new Map()';
            }
            if (!compact) {
              options.__inline1__ = true;
              options.__inline2__ = false;
            }
            return 'new Map(' + jsesc(Array.from(argument), options) + ')';
          }
          if (isSet(argument)) {
            if (argument.size == 0) {
              return 'new Set()';
            }
            return 'new Set(' + jsesc(Array.from(argument), options) + ')';
          }
          if (isBuffer(argument)) {
            if (argument.length == 0) {
              return 'Buffer.from([])';
            }
            return 'Buffer.from(' + jsesc(Array.from(argument), options) + ')';
          }
          if (isArray(argument)) {
            result = [];
            options.wrap = true;
            if (inline1) {
              options.__inline1__ = false;
              options.__inline2__ = true;
            }
            if (!inline2) {
              increaseIndentation();
            }
            forEach(argument, function (value) {
              isEmpty = false;
              if (inline2) {
                options.__inline2__ = false;
              }
              result.push((compact || inline2 ? '' : indent) + jsesc(value, options));
            });
            if (isEmpty) {
              return '[]';
            }
            if (inline2) {
              return '[' + result.join(', ') + ']';
            }
            return '[' + newLine + result.join(',' + newLine) + newLine + (compact ? '' : oldIndent) + ']';
          } else if (isNumber(argument)) {
            if (json) {
              return JSON.stringify(argument);
            }
            if (useDecNumbers) {
              return String(argument);
            }
            if (useHexNumbers) {
              var hexadecimal = argument.toString(16);
              if (!lowercaseHex) {
                hexadecimal = hexadecimal.toUpperCase();
              }
              return '0x' + hexadecimal;
            }
            if (useBinNumbers) {
              return '0b' + argument.toString(2);
            }
            if (useOctNumbers) {
              return '0o' + argument.toString(8);
            }
          } else if (!isObject(argument)) {
            if (json) {
              return JSON.stringify(argument) || 'null';
            }
            return String(argument);
          } else {
            result = [];
            options.wrap = true;
            increaseIndentation();
            forOwn(argument, function (key, value) {
              isEmpty = false;
              result.push((compact ? '' : indent) + jsesc(key, options) + ':' + (compact ? '' : ' ') + jsesc(value, options));
            });
            if (isEmpty) {
              return '{}';
            }
            return '{' + newLine + result.join(',' + newLine) + newLine + (compact ? '' : oldIndent) + '}';
          }
        }
        var string = argument;
        var index = -1;
        var length = string.length;
        result = '';
        while (++index < length) {
          var character = string.charAt(index);
          if (options.es6) {
            var first = string.charCodeAt(index);
            if (first >= 0xD800 && first <= 0xDBFF && length > index + 1) {
              var second = string.charCodeAt(index + 1);
              if (second >= 0xDC00 && second <= 0xDFFF) {
                var codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;
                var _hexadecimal = codePoint.toString(16);
                if (!lowercaseHex) {
                  _hexadecimal = _hexadecimal.toUpperCase();
                }
                result += "\\u{" + _hexadecimal + '}';
                ++index;
                continue;
              }
            }
          }
          if (!options.escapeEverything) {
            if (regexWhitelist.test(character)) {
              result += character;
              continue;
            }
            if (character == '"') {
              result += quote == character ? '\\"' : character;
              continue;
            }
            if (character == '`') {
              result += quote == character ? '\\`' : character;
              continue;
            }
            if (character == '\'') {
              result += quote == character ? '\\\'' : character;
              continue;
            }
          }
          if (character == '\0' && !json && !regexDigit.test(string.charAt(index + 1))) {
            result += '\\0';
            continue;
          }
          if (regexSingleEscape.test(character)) {
            result += singleEscapes[character];
            continue;
          }
          var charCode = character.charCodeAt(0);
          if (options.minimal && charCode != 0x2028 && charCode != 0x2029) {
            result += character;
            continue;
          }
          var _hexadecimal2 = charCode.toString(16);
          if (!lowercaseHex) {
            _hexadecimal2 = _hexadecimal2.toUpperCase();
          }
          var longhand = _hexadecimal2.length > 2 || json;
          var escaped = '\\' + (longhand ? 'u' : 'x') + ('0000' + _hexadecimal2).slice(longhand ? -4 : -2);
          result += escaped;
          continue;
        }
        if (options.wrap) {
          result = quote + result + quote;
        }
        if (quote == '`') {
          result = result.replace(/\$\{/g, '\\\$\{');
        }
        if (options.isScriptContext) {
          return result.replace(/<\/(script|style)/gi, '<\\/$1').replace(/<!--/g, json ? "\\u003C!--" : '\\x3C!--');
        }
        return result;
      };
      jsesc.version = '2.5.2';
      jsesc_1 = jsesc;
      return jsesc_1;
    }
  
    function bool$8(value) {
      if (value == null) return false;
      return value && value !== "false" && value !== "0";
    }
    var jsesc = bool$8(browser$1$1.env["BABEL_8_BREAKING"]) ? requireJsesc$1() : requireJsesc();
  
    var isAssignmentPattern$4 = isAssignmentPattern$5,
      isIdentifier$f = isIdentifier$j;
    function Identifier(node) {
      var _node$loc;
      this.sourceIdentifierName(((_node$loc = node.loc) == null ? void 0 : _node$loc.identifierName) || node.name);
      this.word(node.name);
    }
    function ArgumentPlaceholder() {
      this.tokenChar(63);
    }
    function RestElement$1(node) {
      this.token("...");
      this.print(node.argument, node);
    }
    function ObjectExpression$1(node) {
      var props = node.properties;
      this.tokenChar(123);
      if (props.length) {
        this.space();
        this.printList(props, node, {
          indent: true,
          statement: true
        });
        this.space();
      }
      this.sourceWithOffset("end", node.loc, 0, -1);
      this.tokenChar(125);
    }
    function ObjectMethod(node) {
      this.printJoin(node.decorators, node);
      this._methodHead(node);
      this.space();
      this.print(node.body, node);
    }
    function ObjectProperty(node) {
      this.printJoin(node.decorators, node);
      if (node.computed) {
        this.tokenChar(91);
        this.print(node.key, node);
        this.tokenChar(93);
      } else {
        if (isAssignmentPattern$4(node.value) && isIdentifier$f(node.key) && node.key.name === node.value.left.name) {
          this.print(node.value, node);
          return;
        }
        this.print(node.key, node);
        if (node.shorthand && isIdentifier$f(node.key) && isIdentifier$f(node.value) && node.key.name === node.value.name) {
          return;
        }
      }
      this.tokenChar(58);
      this.space();
      this.print(node.value, node);
    }
    function ArrayExpression$1(node) {
      var elems = node.elements;
      var len = elems.length;
      this.tokenChar(91);
      for (var i = 0; i < elems.length; i++) {
        var elem = elems[i];
        if (elem) {
          if (i > 0) this.space();
          this.print(elem, node);
          if (i < len - 1) this.tokenChar(44);
        } else {
          this.tokenChar(44);
        }
      }
      this.tokenChar(93);
    }
    function RecordExpression(node) {
      var props = node.properties;
      var startToken;
      var endToken;
      if (this.format.recordAndTupleSyntaxType === "bar") {
        startToken = "{|";
        endToken = "|}";
      } else if (this.format.recordAndTupleSyntaxType !== "hash" && this.format.recordAndTupleSyntaxType != null) {
        throw new Error("The \"recordAndTupleSyntaxType\" generator option must be \"bar\" or \"hash\" (" + JSON.stringify(this.format.recordAndTupleSyntaxType) + " received).");
      } else {
        startToken = "#{";
        endToken = "}";
      }
      this.token(startToken);
      if (props.length) {
        this.space();
        this.printList(props, node, {
          indent: true,
          statement: true
        });
        this.space();
      }
      this.token(endToken);
    }
    function TupleExpression(node) {
      var elems = node.elements;
      var len = elems.length;
      var startToken;
      var endToken;
      if (this.format.recordAndTupleSyntaxType === "bar") {
        startToken = "[|";
        endToken = "|]";
      } else if (this.format.recordAndTupleSyntaxType === "hash") {
        startToken = "#[";
        endToken = "]";
      } else {
        throw new Error(this.format.recordAndTupleSyntaxType + " is not a valid recordAndTuple syntax type");
      }
      this.token(startToken);
      for (var i = 0; i < elems.length; i++) {
        var elem = elems[i];
        if (elem) {
          if (i > 0) this.space();
          this.print(elem, node);
          if (i < len - 1) this.tokenChar(44);
        }
      }
      this.token(endToken);
    }
    function RegExpLiteral$1(node) {
      this.word("/" + node.pattern + "/" + node.flags);
    }
    function BooleanLiteral$1(node) {
      this.word(node.value ? "true" : "false");
    }
    function NullLiteral$1() {
      this.word("null");
    }
    function NumericLiteral$1(node) {
      var raw = this.getPossibleRaw(node);
      var opts = this.format.jsescOption;
      var value = node.value + "";
      if (opts.numbers) {
        this.number(jsesc(node.value, opts));
      } else if (raw == null) {
        this.number(value);
      } else if (this.format.minified) {
        this.number(raw.length < value.length ? raw : value);
      } else {
        this.number(raw);
      }
    }
    function StringLiteral$1(node) {
      var raw = this.getPossibleRaw(node);
      if (!this.format.minified && raw !== undefined) {
        this.token(raw);
        return;
      }
      var val = jsesc(node.value, this.format.jsescOption);
      this.token(val);
    }
    function BigIntLiteral(node) {
      var raw = this.getPossibleRaw(node);
      if (!this.format.minified && raw !== undefined) {
        this.word(raw);
        return;
      }
      this.word(node.value + "n");
    }
    function DecimalLiteral(node) {
      var raw = this.getPossibleRaw(node);
      if (!this.format.minified && raw !== undefined) {
        this.word(raw);
        return;
      }
      this.word(node.value + "m");
    }
    var validTopicTokenSet = new Set(["^^", "@@", "^", "%", "#"]);
    function TopicReference() {
      var topicToken = this.format.topicToken;
      if (validTopicTokenSet.has(topicToken)) {
        this.token(topicToken);
      } else {
        var givenTopicTokenJSON = JSON.stringify(topicToken);
        var validTopics = Array.from(validTopicTokenSet, function (v) {
          return JSON.stringify(v);
        });
        throw new Error("The \"topicToken\" generator option must be one of " + (validTopics.join(", ") + " (" + givenTopicTokenJSON + " received instead)."));
      }
    }
    function PipelineTopicExpression(node) {
      this.print(node.expression, node);
    }
    function PipelineBareFunction(node) {
      this.print(node.callee, node);
    }
    function PipelinePrimaryTopicReference() {
      this.tokenChar(35);
    }
  
    var isDeclareExportDeclaration = isDeclareExportDeclaration$1,
      isStatement$5 = isStatement$8;
    function AnyTypeAnnotation() {
      this.word("any");
    }
    function ArrayTypeAnnotation(node) {
      this.print(node.elementType, node, true);
      this.tokenChar(91);
      this.tokenChar(93);
    }
    function BooleanTypeAnnotation() {
      this.word("boolean");
    }
    function BooleanLiteralTypeAnnotation(node) {
      this.word(node.value ? "true" : "false");
    }
    function NullLiteralTypeAnnotation() {
      this.word("null");
    }
    function DeclareClass(node, parent) {
      if (!isDeclareExportDeclaration(parent)) {
        this.word("declare");
        this.space();
      }
      this.word("class");
      this.space();
      this._interfaceish(node);
    }
    function DeclareFunction(node, parent) {
      if (!isDeclareExportDeclaration(parent)) {
        this.word("declare");
        this.space();
      }
      this.word("function");
      this.space();
      this.print(node.id, node);
      this.print(node.id.typeAnnotation.typeAnnotation, node);
      if (node.predicate) {
        this.space();
        this.print(node.predicate, node);
      }
      this.semicolon();
    }
    function InferredPredicate() {
      this.tokenChar(37);
      this.word("checks");
    }
    function DeclaredPredicate(node) {
      this.tokenChar(37);
      this.word("checks");
      this.tokenChar(40);
      this.print(node.value, node);
      this.tokenChar(41);
    }
    function DeclareInterface(node) {
      this.word("declare");
      this.space();
      this.InterfaceDeclaration(node);
    }
    function DeclareModule(node) {
      this.word("declare");
      this.space();
      this.word("module");
      this.space();
      this.print(node.id, node);
      this.space();
      this.print(node.body, node);
    }
    function DeclareModuleExports(node) {
      this.word("declare");
      this.space();
      this.word("module");
      this.tokenChar(46);
      this.word("exports");
      this.print(node.typeAnnotation, node);
    }
    function DeclareTypeAlias(node) {
      this.word("declare");
      this.space();
      this.TypeAlias(node);
    }
    function DeclareOpaqueType(node, parent) {
      if (!isDeclareExportDeclaration(parent)) {
        this.word("declare");
        this.space();
      }
      this.OpaqueType(node);
    }
    function DeclareVariable(node, parent) {
      if (!isDeclareExportDeclaration(parent)) {
        this.word("declare");
        this.space();
      }
      this.word("var");
      this.space();
      this.print(node.id, node);
      this.print(node.id.typeAnnotation, node);
      this.semicolon();
    }
    function DeclareExportDeclaration(node) {
      this.word("declare");
      this.space();
      this.word("export");
      this.space();
      if (node["default"]) {
        this.word("default");
        this.space();
      }
      FlowExportDeclaration.call(this, node);
    }
    function DeclareExportAllDeclaration(node) {
      this.word("declare");
      this.space();
      ExportAllDeclaration.call(this, node);
    }
    function EnumDeclaration(node) {
      var id = node.id,
        body = node.body;
      this.word("enum");
      this.space();
      this.print(id, node);
      this.print(body, node);
    }
    function enumExplicitType(context, name, hasExplicitType) {
      if (hasExplicitType) {
        context.space();
        context.word("of");
        context.space();
        context.word(name);
      }
      context.space();
    }
    function enumBody(context, node) {
      var members = node.members;
      context.token("{");
      context.indent();
      context.newline();
      for (var _iterator = _createForOfIteratorHelperLoose(members), _step; !(_step = _iterator()).done;) {
        var member = _step.value;
        context.print(member, node);
        context.newline();
      }
      if (node.hasUnknownMembers) {
        context.token("...");
        context.newline();
      }
      context.dedent();
      context.token("}");
    }
    function EnumBooleanBody(node) {
      var explicitType = node.explicitType;
      enumExplicitType(this, "boolean", explicitType);
      enumBody(this, node);
    }
    function EnumNumberBody(node) {
      var explicitType = node.explicitType;
      enumExplicitType(this, "number", explicitType);
      enumBody(this, node);
    }
    function EnumStringBody(node) {
      var explicitType = node.explicitType;
      enumExplicitType(this, "string", explicitType);
      enumBody(this, node);
    }
    function EnumSymbolBody(node) {
      enumExplicitType(this, "symbol", true);
      enumBody(this, node);
    }
    function EnumDefaultedMember(node) {
      var id = node.id;
      this.print(id, node);
      this.tokenChar(44);
    }
    function enumInitializedMember(context, node) {
      var id = node.id,
        init = node.init;
      context.print(id, node);
      context.space();
      context.token("=");
      context.space();
      context.print(init, node);
      context.token(",");
    }
    function EnumBooleanMember(node) {
      enumInitializedMember(this, node);
    }
    function EnumNumberMember(node) {
      enumInitializedMember(this, node);
    }
    function EnumStringMember(node) {
      enumInitializedMember(this, node);
    }
    function FlowExportDeclaration(node) {
      if (node.declaration) {
        var declar = node.declaration;
        this.print(declar, node);
        if (!isStatement$5(declar)) this.semicolon();
      } else {
        this.tokenChar(123);
        if (node.specifiers.length) {
          this.space();
          this.printList(node.specifiers, node);
          this.space();
        }
        this.tokenChar(125);
        if (node.source) {
          this.space();
          this.word("from");
          this.space();
          this.print(node.source, node);
        }
        this.semicolon();
      }
    }
    function ExistsTypeAnnotation() {
      this.tokenChar(42);
    }
    function FunctionTypeAnnotation(node, parent) {
      this.print(node.typeParameters, node);
      this.tokenChar(40);
      if (node["this"]) {
        this.word("this");
        this.tokenChar(58);
        this.space();
        this.print(node["this"].typeAnnotation, node);
        if (node.params.length || node.rest) {
          this.tokenChar(44);
          this.space();
        }
      }
      this.printList(node.params, node);
      if (node.rest) {
        if (node.params.length) {
          this.tokenChar(44);
          this.space();
        }
        this.token("...");
        this.print(node.rest, node);
      }
      this.tokenChar(41);
      var type = parent == null ? void 0 : parent.type;
      if (type != null && (type === "ObjectTypeCallProperty" || type === "ObjectTypeInternalSlot" || type === "DeclareFunction" || type === "ObjectTypeProperty" && parent.method)) {
        this.tokenChar(58);
      } else {
        this.space();
        this.token("=>");
      }
      this.space();
      this.print(node.returnType, node);
    }
    function FunctionTypeParam(node) {
      this.print(node.name, node);
      if (node.optional) this.tokenChar(63);
      if (node.name) {
        this.tokenChar(58);
        this.space();
      }
      this.print(node.typeAnnotation, node);
    }
    function InterfaceExtends(node) {
      this.print(node.id, node);
      this.print(node.typeParameters, node, true);
    }
    function _interfaceish(node) {
      var _node$extends;
      this.print(node.id, node);
      this.print(node.typeParameters, node);
      if ((_node$extends = node["extends"]) != null && _node$extends.length) {
        this.space();
        this.word("extends");
        this.space();
        this.printList(node["extends"], node);
      }
      if (node.type === "DeclareClass") {
        var _node$mixins, _node$implements;
        if ((_node$mixins = node.mixins) != null && _node$mixins.length) {
          this.space();
          this.word("mixins");
          this.space();
          this.printList(node.mixins, node);
        }
        if ((_node$implements = node["implements"]) != null && _node$implements.length) {
          this.space();
          this.word("implements");
          this.space();
          this.printList(node["implements"], node);
        }
      }
      this.space();
      this.print(node.body, node);
    }
    function _variance(node) {
      var _node$variance;
      var kind = (_node$variance = node.variance) == null ? void 0 : _node$variance.kind;
      if (kind != null) {
        if (kind === "plus") {
          this.tokenChar(43);
        } else if (kind === "minus") {
          this.tokenChar(45);
        }
      }
    }
    function InterfaceDeclaration(node) {
      this.word("interface");
      this.space();
      this._interfaceish(node);
    }
    function andSeparator() {
      this.space();
      this.tokenChar(38);
      this.space();
    }
    function InterfaceTypeAnnotation(node) {
      var _node$extends2;
      this.word("interface");
      if ((_node$extends2 = node["extends"]) != null && _node$extends2.length) {
        this.space();
        this.word("extends");
        this.space();
        this.printList(node["extends"], node);
      }
      this.space();
      this.print(node.body, node);
    }
    function IntersectionTypeAnnotation(node) {
      this.printJoin(node.types, node, {
        separator: andSeparator
      });
    }
    function MixedTypeAnnotation() {
      this.word("mixed");
    }
    function EmptyTypeAnnotation() {
      this.word("empty");
    }
    function NullableTypeAnnotation(node) {
      this.tokenChar(63);
      this.print(node.typeAnnotation, node);
    }
    function NumberTypeAnnotation() {
      this.word("number");
    }
    function StringTypeAnnotation() {
      this.word("string");
    }
    function ThisTypeAnnotation() {
      this.word("this");
    }
    function TupleTypeAnnotation(node) {
      this.tokenChar(91);
      this.printList(node.types, node);
      this.tokenChar(93);
    }
    function TypeofTypeAnnotation(node) {
      this.word("typeof");
      this.space();
      this.print(node.argument, node);
    }
    function TypeAlias(node) {
      this.word("type");
      this.space();
      this.print(node.id, node);
      this.print(node.typeParameters, node);
      this.space();
      this.tokenChar(61);
      this.space();
      this.print(node.right, node);
      this.semicolon();
    }
    function TypeAnnotation(node) {
      this.tokenChar(58);
      this.space();
      if (node.optional) this.tokenChar(63);
      this.print(node.typeAnnotation, node);
    }
    function TypeParameterInstantiation(node) {
      this.tokenChar(60);
      this.printList(node.params, node, {});
      this.tokenChar(62);
    }
    function TypeParameter(node) {
      this._variance(node);
      this.word(node.name);
      if (node.bound) {
        this.print(node.bound, node);
      }
      if (node["default"]) {
        this.space();
        this.tokenChar(61);
        this.space();
        this.print(node["default"], node);
      }
    }
    function OpaqueType(node) {
      this.word("opaque");
      this.space();
      this.word("type");
      this.space();
      this.print(node.id, node);
      this.print(node.typeParameters, node);
      if (node.supertype) {
        this.tokenChar(58);
        this.space();
        this.print(node.supertype, node);
      }
      if (node.impltype) {
        this.space();
        this.tokenChar(61);
        this.space();
        this.print(node.impltype, node);
      }
      this.semicolon();
    }
    function ObjectTypeAnnotation(node) {
      var _this = this;
      if (node.exact) {
        this.token("{|");
      } else {
        this.tokenChar(123);
      }
      var props = [].concat(_toConsumableArray(node.properties), _toConsumableArray(node.callProperties || []), _toConsumableArray(node.indexers || []), _toConsumableArray(node.internalSlots || []));
      if (props.length) {
        this.newline();
        this.space();
        this.printJoin(props, node, {
          addNewlines: function addNewlines(leading) {
            if (leading && !props[0]) return 1;
          },
          indent: true,
          statement: true,
          iterator: function iterator() {
            if (props.length !== 1 || node.inexact) {
              _this.token(",");
              _this.space();
            }
          }
        });
        this.space();
      }
      if (node.inexact) {
        this.indent();
        this.token("...");
        if (props.length) {
          this.newline();
        }
        this.dedent();
      }
      if (node.exact) {
        this.token("|}");
      } else {
        this.tokenChar(125);
      }
    }
    function ObjectTypeInternalSlot(node) {
      if (node["static"]) {
        this.word("static");
        this.space();
      }
      this.tokenChar(91);
      this.tokenChar(91);
      this.print(node.id, node);
      this.tokenChar(93);
      this.tokenChar(93);
      if (node.optional) this.tokenChar(63);
      if (!node.method) {
        this.tokenChar(58);
        this.space();
      }
      this.print(node.value, node);
    }
    function ObjectTypeCallProperty(node) {
      if (node["static"]) {
        this.word("static");
        this.space();
      }
      this.print(node.value, node);
    }
    function ObjectTypeIndexer(node) {
      if (node["static"]) {
        this.word("static");
        this.space();
      }
      this._variance(node);
      this.tokenChar(91);
      if (node.id) {
        this.print(node.id, node);
        this.tokenChar(58);
        this.space();
      }
      this.print(node.key, node);
      this.tokenChar(93);
      this.tokenChar(58);
      this.space();
      this.print(node.value, node);
    }
    function ObjectTypeProperty(node) {
      if (node.proto) {
        this.word("proto");
        this.space();
      }
      if (node["static"]) {
        this.word("static");
        this.space();
      }
      if (node.kind === "get" || node.kind === "set") {
        this.word(node.kind);
        this.space();
      }
      this._variance(node);
      this.print(node.key, node);
      if (node.optional) this.tokenChar(63);
      if (!node.method) {
        this.tokenChar(58);
        this.space();
      }
      this.print(node.value, node);
    }
    function ObjectTypeSpreadProperty(node) {
      this.token("...");
      this.print(node.argument, node);
    }
    function QualifiedTypeIdentifier(node) {
      this.print(node.qualification, node);
      this.tokenChar(46);
      this.print(node.id, node);
    }
    function SymbolTypeAnnotation() {
      this.word("symbol");
    }
    function orSeparator() {
      this.space();
      this.tokenChar(124);
      this.space();
    }
    function UnionTypeAnnotation(node) {
      this.printJoin(node.types, node, {
        separator: orSeparator
      });
    }
    function TypeCastExpression$1(node) {
      this.tokenChar(40);
      this.print(node.expression, node);
      this.print(node.typeAnnotation, node);
      this.tokenChar(41);
    }
    function Variance(node) {
      if (node.kind === "plus") {
        this.tokenChar(43);
      } else {
        this.tokenChar(45);
      }
    }
    function VoidTypeAnnotation() {
      this.word("void");
    }
    function IndexedAccessType(node) {
      this.print(node.objectType, node, true);
      this.tokenChar(91);
      this.print(node.indexType, node);
      this.tokenChar(93);
    }
    function OptionalIndexedAccessType(node) {
      this.print(node.objectType, node);
      if (node.optional) {
        this.token("?.");
      }
      this.tokenChar(91);
      this.print(node.indexType, node);
      this.tokenChar(93);
    }
  
    function File$1(node) {
      if (node.program) {
        this.print(node.program.interpreter, node);
      }
      this.print(node.program, node);
    }
    function Program(node) {
      var _node$directives;
      this.noIndentInnerCommentsHere();
      this.printInnerComments();
      var directivesLen = (_node$directives = node.directives) == null ? void 0 : _node$directives.length;
      if (directivesLen) {
        var _node$directives$trai;
        var newline = node.body.length ? 2 : 1;
        this.printSequence(node.directives, node, {
          trailingCommentsLineOffset: newline
        });
        if (!((_node$directives$trai = node.directives[directivesLen - 1].trailingComments) != null && _node$directives$trai.length)) {
          this.newline(newline);
        }
      }
      this.printSequence(node.body, node);
    }
    function BlockStatement(node) {
      var _node$directives2;
      this.tokenChar(123);
      var directivesLen = (_node$directives2 = node.directives) == null ? void 0 : _node$directives2.length;
      if (directivesLen) {
        var _node$directives$trai2;
        var newline = node.body.length ? 2 : 1;
        this.printSequence(node.directives, node, {
          indent: true,
          trailingCommentsLineOffset: newline
        });
        if (!((_node$directives$trai2 = node.directives[directivesLen - 1].trailingComments) != null && _node$directives$trai2.length)) {
          this.newline(newline);
        }
      }
      this.printSequence(node.body, node, {
        indent: true
      });
      this.rightBrace(node);
    }
    function Directive(node) {
      this.print(node.value, node);
      this.semicolon();
    }
    var unescapedSingleQuoteRE = /(?:^|[^\\])(?:\\\\)*'/;
    var unescapedDoubleQuoteRE = /(?:^|[^\\])(?:\\\\)*"/;
    function DirectiveLiteral(node) {
      var raw = this.getPossibleRaw(node);
      if (!this.format.minified && raw !== undefined) {
        this.token(raw);
        return;
      }
      var value = node.value;
      if (!unescapedDoubleQuoteRE.test(value)) {
        this.token("\"" + value + "\"");
      } else if (!unescapedSingleQuoteRE.test(value)) {
        this.token("'" + value + "'");
      } else {
        throw new Error("Malformed AST: it is not possible to print a directive containing" + " both unescaped single and double quotes.");
      }
    }
    function InterpreterDirective(node) {
      this.token("#!" + node.value);
      this.newline(1, true);
    }
    function Placeholder(node) {
      this.token("%%");
      this.print(node.name);
      this.token("%%");
      if (node.expectedNode === "Statement") {
        this.semicolon();
      }
    }
  
    function JSXAttribute(node) {
      this.print(node.name, node);
      if (node.value) {
        this.tokenChar(61);
        this.print(node.value, node);
      }
    }
    function JSXIdentifier(node) {
      this.word(node.name);
    }
    function JSXNamespacedName(node) {
      this.print(node.namespace, node);
      this.tokenChar(58);
      this.print(node.name, node);
    }
    function JSXMemberExpression(node) {
      this.print(node.object, node);
      this.tokenChar(46);
      this.print(node.property, node);
    }
    function JSXSpreadAttribute(node) {
      this.tokenChar(123);
      this.token("...");
      this.print(node.argument, node);
      this.tokenChar(125);
    }
    function JSXExpressionContainer(node) {
      this.tokenChar(123);
      this.print(node.expression, node);
      this.tokenChar(125);
    }
    function JSXSpreadChild(node) {
      this.tokenChar(123);
      this.token("...");
      this.print(node.expression, node);
      this.tokenChar(125);
    }
    function JSXText(node) {
      var raw = this.getPossibleRaw(node);
      if (raw !== undefined) {
        this.token(raw, true);
      } else {
        this.token(node.value, true);
      }
    }
    function JSXElement(node) {
      var open = node.openingElement;
      this.print(open, node);
      if (open.selfClosing) return;
      this.indent();
      for (var _iterator = _createForOfIteratorHelperLoose(node.children), _step; !(_step = _iterator()).done;) {
        var child = _step.value;
        this.print(child, node);
      }
      this.dedent();
      this.print(node.closingElement, node);
    }
    function spaceSeparator() {
      this.space();
    }
    function JSXOpeningElement(node) {
      this.tokenChar(60);
      this.print(node.name, node);
      this.print(node.typeParameters, node);
      if (node.attributes.length > 0) {
        this.space();
        this.printJoin(node.attributes, node, {
          separator: spaceSeparator
        });
      }
      if (node.selfClosing) {
        this.space();
        this.token("/>");
      } else {
        this.tokenChar(62);
      }
    }
    function JSXClosingElement(node) {
      this.token("</");
      this.print(node.name, node);
      this.tokenChar(62);
    }
    function JSXEmptyExpression() {
      this.printInnerComments();
    }
    function JSXFragment(node) {
      this.print(node.openingFragment, node);
      this.indent();
      for (var _iterator2 = _createForOfIteratorHelperLoose(node.children), _step2; !(_step2 = _iterator2()).done;) {
        var child = _step2.value;
        this.print(child, node);
      }
      this.dedent();
      this.print(node.closingFragment, node);
    }
    function JSXOpeningFragment() {
      this.tokenChar(60);
      this.tokenChar(62);
    }
    function JSXClosingFragment() {
      this.token("</");
      this.tokenChar(62);
    }
  
    function TSTypeAnnotation(node) {
      this.tokenChar(58);
      this.space();
      if (node.optional) this.tokenChar(63);
      this.print(node.typeAnnotation, node);
    }
    function TSTypeParameterInstantiation(node, parent) {
      this.tokenChar(60);
      this.printList(node.params, node, {});
      if (parent.type === "ArrowFunctionExpression" && node.params.length === 1) {
        this.tokenChar(44);
      }
      this.tokenChar(62);
    }
    function TSTypeParameter(node) {
      if (node["in"]) {
        this.word("in");
        this.space();
      }
      if (node.out) {
        this.word("out");
        this.space();
      }
      this.word(node.name);
      if (node.constraint) {
        this.space();
        this.word("extends");
        this.space();
        this.print(node.constraint, node);
      }
      if (node["default"]) {
        this.space();
        this.tokenChar(61);
        this.space();
        this.print(node["default"], node);
      }
    }
    function TSParameterProperty(node) {
      if (node.accessibility) {
        this.word(node.accessibility);
        this.space();
      }
      if (node.readonly) {
        this.word("readonly");
        this.space();
      }
      this._param(node.parameter);
    }
    function TSDeclareFunction(node, parent) {
      if (node.declare) {
        this.word("declare");
        this.space();
      }
      this._functionHead(node, parent);
      this.tokenChar(59);
    }
    function TSDeclareMethod(node) {
      this._classMethodHead(node);
      this.tokenChar(59);
    }
    function TSQualifiedName(node) {
      this.print(node.left, node);
      this.tokenChar(46);
      this.print(node.right, node);
    }
    function TSCallSignatureDeclaration(node) {
      this.tsPrintSignatureDeclarationBase(node);
      this.tokenChar(59);
    }
    function TSConstructSignatureDeclaration(node) {
      this.word("new");
      this.space();
      this.tsPrintSignatureDeclarationBase(node);
      this.tokenChar(59);
    }
    function TSPropertySignature(node) {
      var readonly = node.readonly,
        initializer = node.initializer;
      if (readonly) {
        this.word("readonly");
        this.space();
      }
      this.tsPrintPropertyOrMethodName(node);
      this.print(node.typeAnnotation, node);
      if (initializer) {
        this.space();
        this.tokenChar(61);
        this.space();
        this.print(initializer, node);
      }
      this.tokenChar(59);
    }
    function tsPrintPropertyOrMethodName(node) {
      if (node.computed) {
        this.tokenChar(91);
      }
      this.print(node.key, node);
      if (node.computed) {
        this.tokenChar(93);
      }
      if (node.optional) {
        this.tokenChar(63);
      }
    }
    function TSMethodSignature(node) {
      var kind = node.kind;
      if (kind === "set" || kind === "get") {
        this.word(kind);
        this.space();
      }
      this.tsPrintPropertyOrMethodName(node);
      this.tsPrintSignatureDeclarationBase(node);
      this.tokenChar(59);
    }
    function TSIndexSignature(node) {
      var readonly = node.readonly,
        isStatic = node["static"];
      if (isStatic) {
        this.word("static");
        this.space();
      }
      if (readonly) {
        this.word("readonly");
        this.space();
      }
      this.tokenChar(91);
      this._parameters(node.parameters, node);
      this.tokenChar(93);
      this.print(node.typeAnnotation, node);
      this.tokenChar(59);
    }
    function TSAnyKeyword() {
      this.word("any");
    }
    function TSBigIntKeyword() {
      this.word("bigint");
    }
    function TSUnknownKeyword() {
      this.word("unknown");
    }
    function TSNumberKeyword() {
      this.word("number");
    }
    function TSObjectKeyword() {
      this.word("object");
    }
    function TSBooleanKeyword() {
      this.word("boolean");
    }
    function TSStringKeyword() {
      this.word("string");
    }
    function TSSymbolKeyword() {
      this.word("symbol");
    }
    function TSVoidKeyword() {
      this.word("void");
    }
    function TSUndefinedKeyword() {
      this.word("undefined");
    }
    function TSNullKeyword() {
      this.word("null");
    }
    function TSNeverKeyword() {
      this.word("never");
    }
    function TSIntrinsicKeyword() {
      this.word("intrinsic");
    }
    function TSThisType() {
      this.word("this");
    }
    function TSFunctionType(node) {
      this.tsPrintFunctionOrConstructorType(node);
    }
    function TSConstructorType(node) {
      if (node["abstract"]) {
        this.word("abstract");
        this.space();
      }
      this.word("new");
      this.space();
      this.tsPrintFunctionOrConstructorType(node);
    }
    function tsPrintFunctionOrConstructorType(node) {
      var typeParameters = node.typeParameters;
      var parameters = node.parameters;
      this.print(typeParameters, node);
      this.tokenChar(40);
      this._parameters(parameters, node);
      this.tokenChar(41);
      this.space();
      this.token("=>");
      this.space();
      var returnType = node.typeAnnotation;
      this.print(returnType.typeAnnotation, node);
    }
    function TSTypeReference(node) {
      this.print(node.typeName, node, true);
      this.print(node.typeParameters, node, true);
    }
    function TSTypePredicate(node) {
      if (node.asserts) {
        this.word("asserts");
        this.space();
      }
      this.print(node.parameterName);
      if (node.typeAnnotation) {
        this.space();
        this.word("is");
        this.space();
        this.print(node.typeAnnotation.typeAnnotation);
      }
    }
    function TSTypeQuery(node) {
      this.word("typeof");
      this.space();
      this.print(node.exprName);
      if (node.typeParameters) {
        this.print(node.typeParameters, node);
      }
    }
    function TSTypeLiteral(node) {
      this.tsPrintTypeLiteralOrInterfaceBody(node.members, node);
    }
    function tsPrintTypeLiteralOrInterfaceBody(members, node) {
      tsPrintBraced(this, members, node);
    }
    function tsPrintBraced(printer, members, node) {
      printer.token("{");
      if (members.length) {
        printer.indent();
        printer.newline();
        for (var _iterator = _createForOfIteratorHelperLoose(members), _step; !(_step = _iterator()).done;) {
          var member = _step.value;
          printer.print(member, node);
          printer.newline();
        }
        printer.dedent();
      }
      printer.rightBrace(node);
    }
    function TSArrayType(node) {
      this.print(node.elementType, node, true);
      this.token("[]");
    }
    function TSTupleType(node) {
      this.tokenChar(91);
      this.printList(node.elementTypes, node);
      this.tokenChar(93);
    }
    function TSOptionalType(node) {
      this.print(node.typeAnnotation, node);
      this.tokenChar(63);
    }
    function TSRestType(node) {
      this.token("...");
      this.print(node.typeAnnotation, node);
    }
    function TSNamedTupleMember(node) {
      this.print(node.label, node);
      if (node.optional) this.tokenChar(63);
      this.tokenChar(58);
      this.space();
      this.print(node.elementType, node);
    }
    function TSUnionType(node) {
      tsPrintUnionOrIntersectionType(this, node, "|");
    }
    function TSIntersectionType(node) {
      tsPrintUnionOrIntersectionType(this, node, "&");
    }
    function tsPrintUnionOrIntersectionType(printer, node, sep) {
      printer.printJoin(node.types, node, {
        separator: function separator() {
          this.space();
          this.token(sep);
          this.space();
        }
      });
    }
    function TSConditionalType(node) {
      this.print(node.checkType);
      this.space();
      this.word("extends");
      this.space();
      this.print(node.extendsType);
      this.space();
      this.tokenChar(63);
      this.space();
      this.print(node.trueType);
      this.space();
      this.tokenChar(58);
      this.space();
      this.print(node.falseType);
    }
    function TSInferType(node) {
      this.token("infer");
      this.space();
      this.print(node.typeParameter);
    }
    function TSParenthesizedType(node) {
      this.tokenChar(40);
      this.print(node.typeAnnotation, node);
      this.tokenChar(41);
    }
    function TSTypeOperator(node) {
      this.word(node.operator);
      this.space();
      this.print(node.typeAnnotation, node);
    }
    function TSIndexedAccessType(node) {
      this.print(node.objectType, node, true);
      this.tokenChar(91);
      this.print(node.indexType, node);
      this.tokenChar(93);
    }
    function TSMappedType(node) {
      var nameType = node.nameType,
        optional = node.optional,
        readonly = node.readonly,
        typeParameter = node.typeParameter;
      this.tokenChar(123);
      this.space();
      if (readonly) {
        tokenIfPlusMinus(this, readonly);
        this.word("readonly");
        this.space();
      }
      this.tokenChar(91);
      this.word(typeParameter.name);
      this.space();
      this.word("in");
      this.space();
      this.print(typeParameter.constraint, typeParameter);
      if (nameType) {
        this.space();
        this.word("as");
        this.space();
        this.print(nameType, node);
      }
      this.tokenChar(93);
      if (optional) {
        tokenIfPlusMinus(this, optional);
        this.tokenChar(63);
      }
      this.tokenChar(58);
      this.space();
      this.print(node.typeAnnotation, node);
      this.space();
      this.tokenChar(125);
    }
    function tokenIfPlusMinus(self, tok) {
      if (tok !== true) {
        self.token(tok);
      }
    }
    function TSLiteralType(node) {
      this.print(node.literal, node);
    }
    function TSExpressionWithTypeArguments(node) {
      this.print(node.expression, node);
      this.print(node.typeParameters, node);
    }
    function TSInterfaceDeclaration(node) {
      var declare = node.declare,
        id = node.id,
        typeParameters = node.typeParameters,
        extendz = node["extends"],
        body = node.body;
      if (declare) {
        this.word("declare");
        this.space();
      }
      this.word("interface");
      this.space();
      this.print(id, node);
      this.print(typeParameters, node);
      if (extendz != null && extendz.length) {
        this.space();
        this.word("extends");
        this.space();
        this.printList(extendz, node);
      }
      this.space();
      this.print(body, node);
    }
    function TSInterfaceBody(node) {
      this.tsPrintTypeLiteralOrInterfaceBody(node.body, node);
    }
    function TSTypeAliasDeclaration(node) {
      var declare = node.declare,
        id = node.id,
        typeParameters = node.typeParameters,
        typeAnnotation = node.typeAnnotation;
      if (declare) {
        this.word("declare");
        this.space();
      }
      this.word("type");
      this.space();
      this.print(id, node);
      this.print(typeParameters, node);
      this.space();
      this.tokenChar(61);
      this.space();
      this.print(typeAnnotation, node);
      this.tokenChar(59);
    }
    function TSTypeExpression(node) {
      var _expression$trailingC;
      var type = node.type,
        expression = node.expression,
        typeAnnotation = node.typeAnnotation;
      var forceParens = !!((_expression$trailingC = expression.trailingComments) != null && _expression$trailingC.length);
      this.print(expression, node, true, undefined, forceParens);
      this.space();
      this.word(type === "TSAsExpression" ? "as" : "satisfies");
      this.space();
      this.print(typeAnnotation, node);
    }
    function TSTypeAssertion(node) {
      var typeAnnotation = node.typeAnnotation,
        expression = node.expression;
      this.tokenChar(60);
      this.print(typeAnnotation, node);
      this.tokenChar(62);
      this.space();
      this.print(expression, node);
    }
    function TSInstantiationExpression(node) {
      this.print(node.expression, node);
      this.print(node.typeParameters, node);
    }
    function TSEnumDeclaration(node) {
      var declare = node.declare,
        isConst = node["const"],
        id = node.id,
        members = node.members;
      if (declare) {
        this.word("declare");
        this.space();
      }
      if (isConst) {
        this.word("const");
        this.space();
      }
      this.word("enum");
      this.space();
      this.print(id, node);
      this.space();
      tsPrintBraced(this, members, node);
    }
    function TSEnumMember(node) {
      var id = node.id,
        initializer = node.initializer;
      this.print(id, node);
      if (initializer) {
        this.space();
        this.tokenChar(61);
        this.space();
        this.print(initializer, node);
      }
      this.tokenChar(44);
    }
    function TSModuleDeclaration(node) {
      var declare = node.declare,
        id = node.id;
      if (declare) {
        this.word("declare");
        this.space();
      }
      if (!node.global) {
        this.word(id.type === "Identifier" ? "namespace" : "module");
        this.space();
      }
      this.print(id, node);
      if (!node.body) {
        this.tokenChar(59);
        return;
      }
      var body = node.body;
      while (body.type === "TSModuleDeclaration") {
        this.tokenChar(46);
        this.print(body.id, body);
        body = body.body;
      }
      this.space();
      this.print(body, node);
    }
    function TSModuleBlock(node) {
      tsPrintBraced(this, node.body, node);
    }
    function TSImportType(node) {
      var argument = node.argument,
        qualifier = node.qualifier,
        typeParameters = node.typeParameters;
      this.word("import");
      this.tokenChar(40);
      this.print(argument, node);
      this.tokenChar(41);
      if (qualifier) {
        this.tokenChar(46);
        this.print(qualifier, node);
      }
      if (typeParameters) {
        this.print(typeParameters, node);
      }
    }
    function TSImportEqualsDeclaration(node) {
      var isExport = node.isExport,
        id = node.id,
        moduleReference = node.moduleReference;
      if (isExport) {
        this.word("export");
        this.space();
      }
      this.word("import");
      this.space();
      this.print(id, node);
      this.space();
      this.tokenChar(61);
      this.space();
      this.print(moduleReference, node);
      this.tokenChar(59);
    }
    function TSExternalModuleReference(node) {
      this.token("require(");
      this.print(node.expression, node);
      this.tokenChar(41);
    }
    function TSNonNullExpression$1(node) {
      this.print(node.expression, node);
      this.tokenChar(33);
    }
    function TSExportAssignment(node) {
      this.word("export");
      this.space();
      this.tokenChar(61);
      this.space();
      this.print(node.expression, node);
      this.tokenChar(59);
    }
    function TSNamespaceExportDeclaration(node) {
      this.word("export");
      this.space();
      this.word("as");
      this.space();
      this.word("namespace");
      this.space();
      this.print(node.id, node);
    }
    function tsPrintSignatureDeclarationBase(node) {
      var typeParameters = node.typeParameters;
      var parameters = node.parameters;
      this.print(typeParameters, node);
      this.tokenChar(40);
      this._parameters(parameters, node);
      this.tokenChar(41);
      var returnType = node.typeAnnotation;
      this.print(returnType, node);
    }
    function tsPrintClassMemberModifiers(node) {
      var isField = node.type === "ClassAccessorProperty" || node.type === "ClassProperty";
      if (isField && node.declare) {
        this.word("declare");
        this.space();
      }
      if (node.accessibility) {
        this.word(node.accessibility);
        this.space();
      }
      if (node["static"]) {
        this.word("static");
        this.space();
      }
      if (node.override) {
        this.word("override");
        this.space();
      }
      if (node["abstract"]) {
        this.word("abstract");
        this.space();
      }
      if (isField && node.readonly) {
        this.word("readonly");
        this.space();
      }
    }
  
    var generatorFunctions = /*#__PURE__*/Object.freeze({
      __proto__: null,
      TaggedTemplateExpression: TaggedTemplateExpression$1,
      TemplateElement: TemplateElement,
      TemplateLiteral: TemplateLiteral$1,
      UnaryExpression: UnaryExpression$1,
      DoExpression: DoExpression,
      ParenthesizedExpression: ParenthesizedExpression$1,
      UpdateExpression: UpdateExpression$1,
      ConditionalExpression: ConditionalExpression$1,
      NewExpression: NewExpression$1,
      SequenceExpression: SequenceExpression$1,
      ThisExpression: ThisExpression,
      Super: Super,
      _shouldPrintDecoratorsBeforeExport: _shouldPrintDecoratorsBeforeExport,
      Decorator: Decorator,
      OptionalMemberExpression: OptionalMemberExpression,
      OptionalCallExpression: OptionalCallExpression,
      CallExpression: CallExpression$1,
      Import: Import,
      AwaitExpression: AwaitExpression,
      YieldExpression: YieldExpression,
      EmptyStatement: EmptyStatement,
      ExpressionStatement: ExpressionStatement,
      AssignmentPattern: AssignmentPattern,
      AssignmentExpression: AssignmentExpression$1,
      BindExpression: BindExpression,
      BinaryExpression: AssignmentExpression$1,
      LogicalExpression: AssignmentExpression$1,
      MemberExpression: MemberExpression,
      MetaProperty: MetaProperty,
      PrivateName: PrivateName,
      V8IntrinsicIdentifier: V8IntrinsicIdentifier,
      ModuleExpression: ModuleExpression,
      WithStatement: WithStatement,
      IfStatement: IfStatement,
      ForStatement: ForStatement,
      WhileStatement: WhileStatement,
      ForInStatement: ForInStatement,
      ForOfStatement: ForOfStatement,
      DoWhileStatement: DoWhileStatement,
      BreakStatement: BreakStatement,
      ContinueStatement: ContinueStatement,
      ReturnStatement: ReturnStatement,
      ThrowStatement: ThrowStatement,
      LabeledStatement: LabeledStatement,
      TryStatement: TryStatement,
      CatchClause: CatchClause,
      SwitchStatement: SwitchStatement,
      SwitchCase: SwitchCase,
      DebuggerStatement: DebuggerStatement,
      VariableDeclaration: VariableDeclaration,
      VariableDeclarator: VariableDeclarator$1,
      ClassDeclaration: ClassDeclaration,
      ClassExpression: ClassDeclaration,
      ClassBody: ClassBody,
      ClassProperty: ClassProperty,
      ClassAccessorProperty: ClassAccessorProperty,
      ClassPrivateProperty: ClassPrivateProperty,
      ClassMethod: ClassMethod,
      ClassPrivateMethod: ClassPrivateMethod,
      _classMethodHead: _classMethodHead,
      StaticBlock: StaticBlock,
      _params: _params,
      _parameters: _parameters,
      _param: _param,
      _methodHead: _methodHead,
      _predicate: _predicate,
      _functionHead: _functionHead,
      FunctionExpression: FunctionExpression,
      FunctionDeclaration: FunctionExpression,
      ArrowFunctionExpression: ArrowFunctionExpression,
      ImportSpecifier: ImportSpecifier,
      ImportDefaultSpecifier: ImportDefaultSpecifier,
      ExportDefaultSpecifier: ExportDefaultSpecifier,
      ExportSpecifier: ExportSpecifier,
      ExportNamespaceSpecifier: ExportNamespaceSpecifier,
      _printAssertions: _printAssertions,
      ExportAllDeclaration: ExportAllDeclaration,
      ExportNamedDeclaration: ExportNamedDeclaration,
      ExportDefaultDeclaration: ExportDefaultDeclaration,
      ImportDeclaration: ImportDeclaration,
      ImportAttribute: ImportAttribute,
      ImportNamespaceSpecifier: ImportNamespaceSpecifier,
      Identifier: Identifier,
      ArgumentPlaceholder: ArgumentPlaceholder,
      RestElement: RestElement$1,
      SpreadElement: RestElement$1,
      ObjectExpression: ObjectExpression$1,
      ObjectPattern: ObjectExpression$1,
      ObjectMethod: ObjectMethod,
      ObjectProperty: ObjectProperty,
      ArrayExpression: ArrayExpression$1,
      ArrayPattern: ArrayExpression$1,
      RecordExpression: RecordExpression,
      TupleExpression: TupleExpression,
      RegExpLiteral: RegExpLiteral$1,
      BooleanLiteral: BooleanLiteral$1,
      NullLiteral: NullLiteral$1,
      NumericLiteral: NumericLiteral$1,
      StringLiteral: StringLiteral$1,
      BigIntLiteral: BigIntLiteral,
      DecimalLiteral: DecimalLiteral,
      TopicReference: TopicReference,
      PipelineTopicExpression: PipelineTopicExpression,
      PipelineBareFunction: PipelineBareFunction,
      PipelinePrimaryTopicReference: PipelinePrimaryTopicReference,
      NumberLiteralTypeAnnotation: NumericLiteral$1,
      StringLiteralTypeAnnotation: StringLiteral$1,
      AnyTypeAnnotation: AnyTypeAnnotation,
      ArrayTypeAnnotation: ArrayTypeAnnotation,
      BooleanTypeAnnotation: BooleanTypeAnnotation,
      BooleanLiteralTypeAnnotation: BooleanLiteralTypeAnnotation,
      NullLiteralTypeAnnotation: NullLiteralTypeAnnotation,
      DeclareClass: DeclareClass,
      DeclareFunction: DeclareFunction,
      InferredPredicate: InferredPredicate,
      DeclaredPredicate: DeclaredPredicate,
      DeclareInterface: DeclareInterface,
      DeclareModule: DeclareModule,
      DeclareModuleExports: DeclareModuleExports,
      DeclareTypeAlias: DeclareTypeAlias,
      DeclareOpaqueType: DeclareOpaqueType,
      DeclareVariable: DeclareVariable,
      DeclareExportDeclaration: DeclareExportDeclaration,
      DeclareExportAllDeclaration: DeclareExportAllDeclaration,
      EnumDeclaration: EnumDeclaration,
      EnumBooleanBody: EnumBooleanBody,
      EnumNumberBody: EnumNumberBody,
      EnumStringBody: EnumStringBody,
      EnumSymbolBody: EnumSymbolBody,
      EnumDefaultedMember: EnumDefaultedMember,
      EnumBooleanMember: EnumBooleanMember,
      EnumNumberMember: EnumNumberMember,
      EnumStringMember: EnumStringMember,
      ExistsTypeAnnotation: ExistsTypeAnnotation,
      FunctionTypeAnnotation: FunctionTypeAnnotation,
      FunctionTypeParam: FunctionTypeParam,
      InterfaceExtends: InterfaceExtends,
      ClassImplements: InterfaceExtends,
      GenericTypeAnnotation: InterfaceExtends,
      _interfaceish: _interfaceish,
      _variance: _variance,
      InterfaceDeclaration: InterfaceDeclaration,
      InterfaceTypeAnnotation: InterfaceTypeAnnotation,
      IntersectionTypeAnnotation: IntersectionTypeAnnotation,
      MixedTypeAnnotation: MixedTypeAnnotation,
      EmptyTypeAnnotation: EmptyTypeAnnotation,
      NullableTypeAnnotation: NullableTypeAnnotation,
      NumberTypeAnnotation: NumberTypeAnnotation,
      StringTypeAnnotation: StringTypeAnnotation,
      ThisTypeAnnotation: ThisTypeAnnotation,
      TupleTypeAnnotation: TupleTypeAnnotation,
      TypeofTypeAnnotation: TypeofTypeAnnotation,
      TypeAlias: TypeAlias,
      TypeAnnotation: TypeAnnotation,
      TypeParameterInstantiation: TypeParameterInstantiation,
      TypeParameterDeclaration: TypeParameterInstantiation,
      TypeParameter: TypeParameter,
      OpaqueType: OpaqueType,
      ObjectTypeAnnotation: ObjectTypeAnnotation,
      ObjectTypeInternalSlot: ObjectTypeInternalSlot,
      ObjectTypeCallProperty: ObjectTypeCallProperty,
      ObjectTypeIndexer: ObjectTypeIndexer,
      ObjectTypeProperty: ObjectTypeProperty,
      ObjectTypeSpreadProperty: ObjectTypeSpreadProperty,
      QualifiedTypeIdentifier: QualifiedTypeIdentifier,
      SymbolTypeAnnotation: SymbolTypeAnnotation,
      UnionTypeAnnotation: UnionTypeAnnotation,
      TypeCastExpression: TypeCastExpression$1,
      Variance: Variance,
      VoidTypeAnnotation: VoidTypeAnnotation,
      IndexedAccessType: IndexedAccessType,
      OptionalIndexedAccessType: OptionalIndexedAccessType,
      File: File$1,
      Program: Program,
      BlockStatement: BlockStatement,
      Directive: Directive,
      DirectiveLiteral: DirectiveLiteral,
      InterpreterDirective: InterpreterDirective,
      Placeholder: Placeholder,
      JSXAttribute: JSXAttribute,
      JSXIdentifier: JSXIdentifier,
      JSXNamespacedName: JSXNamespacedName,
      JSXMemberExpression: JSXMemberExpression,
      JSXSpreadAttribute: JSXSpreadAttribute,
      JSXExpressionContainer: JSXExpressionContainer,
      JSXSpreadChild: JSXSpreadChild,
      JSXText: JSXText,
      JSXElement: JSXElement,
      JSXOpeningElement: JSXOpeningElement,
      JSXClosingElement: JSXClosingElement,
      JSXEmptyExpression: JSXEmptyExpression,
      JSXFragment: JSXFragment,
      JSXOpeningFragment: JSXOpeningFragment,
      JSXClosingFragment: JSXClosingFragment,
      TSTypeAnnotation: TSTypeAnnotation,
      TSTypeParameterInstantiation: TSTypeParameterInstantiation,
      TSTypeParameterDeclaration: TSTypeParameterInstantiation,
      TSTypeParameter: TSTypeParameter,
      TSParameterProperty: TSParameterProperty,
      TSDeclareFunction: TSDeclareFunction,
      TSDeclareMethod: TSDeclareMethod,
      TSQualifiedName: TSQualifiedName,
      TSCallSignatureDeclaration: TSCallSignatureDeclaration,
      TSConstructSignatureDeclaration: TSConstructSignatureDeclaration,
      TSPropertySignature: TSPropertySignature,
      tsPrintPropertyOrMethodName: tsPrintPropertyOrMethodName,
      TSMethodSignature: TSMethodSignature,
      TSIndexSignature: TSIndexSignature,
      TSAnyKeyword: TSAnyKeyword,
      TSBigIntKeyword: TSBigIntKeyword,
      TSUnknownKeyword: TSUnknownKeyword,
      TSNumberKeyword: TSNumberKeyword,
      TSObjectKeyword: TSObjectKeyword,
      TSBooleanKeyword: TSBooleanKeyword,
      TSStringKeyword: TSStringKeyword,
      TSSymbolKeyword: TSSymbolKeyword,
      TSVoidKeyword: TSVoidKeyword,
      TSUndefinedKeyword: TSUndefinedKeyword,
      TSNullKeyword: TSNullKeyword,
      TSNeverKeyword: TSNeverKeyword,
      TSIntrinsicKeyword: TSIntrinsicKeyword,
      TSThisType: TSThisType,
      TSFunctionType: TSFunctionType,
      TSConstructorType: TSConstructorType,
      tsPrintFunctionOrConstructorType: tsPrintFunctionOrConstructorType,
      TSTypeReference: TSTypeReference,
      TSTypePredicate: TSTypePredicate,
      TSTypeQuery: TSTypeQuery,
      TSTypeLiteral: TSTypeLiteral,
      tsPrintTypeLiteralOrInterfaceBody: tsPrintTypeLiteralOrInterfaceBody,
      TSArrayType: TSArrayType,
      TSTupleType: TSTupleType,
      TSOptionalType: TSOptionalType,
      TSRestType: TSRestType,
      TSNamedTupleMember: TSNamedTupleMember,
      TSUnionType: TSUnionType,
      TSIntersectionType: TSIntersectionType,
      TSConditionalType: TSConditionalType,
      TSInferType: TSInferType,
      TSParenthesizedType: TSParenthesizedType,
      TSTypeOperator: TSTypeOperator,
      TSIndexedAccessType: TSIndexedAccessType,
      TSMappedType: TSMappedType,
      TSLiteralType: TSLiteralType,
      TSExpressionWithTypeArguments: TSExpressionWithTypeArguments,
      TSInterfaceDeclaration: TSInterfaceDeclaration,
      TSInterfaceBody: TSInterfaceBody,
      TSTypeAliasDeclaration: TSTypeAliasDeclaration,
      TSAsExpression: TSTypeExpression,
      TSSatisfiesExpression: TSTypeExpression,
      TSTypeAssertion: TSTypeAssertion,
      TSInstantiationExpression: TSInstantiationExpression,
      TSEnumDeclaration: TSEnumDeclaration,
      TSEnumMember: TSEnumMember,
      TSModuleDeclaration: TSModuleDeclaration,
      TSModuleBlock: TSModuleBlock,
      TSImportType: TSImportType,
      TSImportEqualsDeclaration: TSImportEqualsDeclaration,
      TSExternalModuleReference: TSExternalModuleReference,
      TSNonNullExpression: TSNonNullExpression$1,
      TSExportAssignment: TSExportAssignment,
      TSNamespaceExportDeclaration: TSNamespaceExportDeclaration,
      tsPrintSignatureDeclarationBase: tsPrintSignatureDeclarationBase,
      tsPrintClassMemberModifiers: tsPrintClassMemberModifiers
    });
  
    var isFunction$2 = isFunction$4,
      isStatement$4 = isStatement$8,
      isClassBody = isClassBody$2,
      isTSInterfaceBody = isTSInterfaceBody$1,
      isTSEnumDeclaration = isTSEnumDeclaration$1;
    var SCIENTIFIC_NOTATION = /e/i;
    var ZERO_DECIMAL_INTEGER = /\.0+$/;
    var NON_DECIMAL_LITERAL = /^0[box]/;
    var PURE_ANNOTATION_RE = /^\s*[@#]__PURE__\s*$/;
    var HAS_NEWLINE = /[\n\r\u2028\u2029]/;
    var HAS_BlOCK_COMMENT_END = /\*\//;
    var needsParens = needsParens$1;
    var Printer = function () {
      function Printer(format, map) {
        this.inForStatementInitCounter = 0;
        this._printStack = [];
        this._indent = 0;
        this._indentChar = 0;
        this._indentRepeat = 0;
        this._insideAux = false;
        this._parenPushNewlineState = null;
        this._noLineTerminator = false;
        this._printAuxAfterOnNextUserNode = false;
        this._printedComments = new Set();
        this._endsWithInteger = false;
        this._endsWithWord = false;
        this._lastCommentLine = 0;
        this._endsWithInnerRaw = false;
        this._indentInnerComments = true;
        this.format = format;
        this._buf = new Buffer(map);
        this._indentChar = format.indent.style.charCodeAt(0);
        this._indentRepeat = format.indent.style.length;
        this._inputMap = map == null ? void 0 : map._inputMap;
      }
      var _proto = Printer.prototype;
      _proto.generate = function generate(ast) {
        this.print(ast);
        this._maybeAddAuxComment();
        return this._buf.get();
      };
      _proto.indent = function indent() {
        if (this.format.compact || this.format.concise) return;
        this._indent++;
      };
      _proto.dedent = function dedent() {
        if (this.format.compact || this.format.concise) return;
        this._indent--;
      };
      _proto.semicolon = function semicolon(force) {
        if (force === void 0) {
          force = false;
        }
        this._maybeAddAuxComment();
        if (force) {
          this._appendChar(59);
        } else {
          this._queue(59);
        }
        this._noLineTerminator = false;
      };
      _proto.rightBrace = function rightBrace(node) {
        if (this.format.minified) {
          this._buf.removeLastSemicolon();
        }
        this.sourceWithOffset("end", node.loc, 0, -1);
        this.tokenChar(125);
      };
      _proto.rightParens = function rightParens(node) {
        this.sourceWithOffset("end", node.loc, 0, -1);
        this.tokenChar(41);
      };
      _proto.space = function space(force) {
        if (force === void 0) {
          force = false;
        }
        if (this.format.compact) return;
        if (force) {
          this._space();
        } else if (this._buf.hasContent()) {
          var lastCp = this.getLastChar();
          if (lastCp !== 32 && lastCp !== 10) {
            this._space();
          }
        }
      };
      _proto.word = function word(str, noLineTerminatorAfter) {
        if (noLineTerminatorAfter === void 0) {
          noLineTerminatorAfter = false;
        }
        this._maybePrintInnerComments();
        if (this._endsWithWord || str.charCodeAt(0) === 47 && this.endsWith(47)) {
          this._space();
        }
        this._maybeAddAuxComment();
        this._append(str, false);
        this._endsWithWord = true;
        this._noLineTerminator = noLineTerminatorAfter;
      };
      _proto.number = function number(str) {
        this.word(str);
        this._endsWithInteger = Number.isInteger(+str) && !NON_DECIMAL_LITERAL.test(str) && !SCIENTIFIC_NOTATION.test(str) && !ZERO_DECIMAL_INTEGER.test(str) && str.charCodeAt(str.length - 1) !== 46;
      };
      _proto.token = function token(str, maybeNewline) {
        if (maybeNewline === void 0) {
          maybeNewline = false;
        }
        this._maybePrintInnerComments();
        var lastChar = this.getLastChar();
        var strFirst = str.charCodeAt(0);
        if (lastChar === 33 && (str === "--" || strFirst === 61) || strFirst === 43 && lastChar === 43 || strFirst === 45 && lastChar === 45 || strFirst === 46 && this._endsWithInteger) {
          this._space();
        }
        this._maybeAddAuxComment();
        this._append(str, maybeNewline);
        this._noLineTerminator = false;
      };
      _proto.tokenChar = function tokenChar(_char) {
        this._maybePrintInnerComments();
        var lastChar = this.getLastChar();
        if (_char === 43 && lastChar === 43 || _char === 45 && lastChar === 45 || _char === 46 && this._endsWithInteger) {
          this._space();
        }
        this._maybeAddAuxComment();
        this._appendChar(_char);
        this._noLineTerminator = false;
      };
      _proto.newline = function newline(i, force) {
        if (i === void 0) {
          i = 1;
        }
        if (i <= 0) return;
        if (!force) {
          if (this.format.retainLines || this.format.compact) return;
          if (this.format.concise) {
            this.space();
            return;
          }
        }
        if (i > 2) i = 2;
        i -= this._buf.getNewlineCount();
        for (var j = 0; j < i; j++) {
          this._newline();
        }
        return;
      };
      _proto.endsWith = function endsWith(_char2) {
        return this.getLastChar() === _char2;
      };
      _proto.getLastChar = function getLastChar() {
        return this._buf.getLastChar();
      };
      _proto.endsWithCharAndNewline = function endsWithCharAndNewline() {
        return this._buf.endsWithCharAndNewline();
      };
      _proto.removeTrailingNewline = function removeTrailingNewline() {
        this._buf.removeTrailingNewline();
      };
      _proto.exactSource = function exactSource(loc, cb) {
        if (!loc) {
          cb();
          return;
        }
        this._catchUp("start", loc);
        this._buf.exactSource(loc, cb);
      };
      _proto.source = function source(prop, loc) {
        if (!loc) return;
        this._catchUp(prop, loc);
        this._buf.source(prop, loc);
      };
      _proto.sourceWithOffset = function sourceWithOffset(prop, loc, lineOffset, columnOffset) {
        if (!loc) return;
        this._catchUp(prop, loc);
        this._buf.sourceWithOffset(prop, loc, lineOffset, columnOffset);
      };
      _proto.withSource = function withSource(prop, loc, cb) {
        if (!loc) {
          cb();
          return;
        }
        this._catchUp(prop, loc);
        this._buf.withSource(prop, loc, cb);
      };
      _proto.sourceIdentifierName = function sourceIdentifierName(identifierName, pos) {
        if (!this._buf._canMarkIdName) return;
        var sourcePosition = this._buf._sourcePosition;
        sourcePosition.identifierNamePos = pos;
        sourcePosition.identifierName = identifierName;
      };
      _proto._space = function _space() {
        this._queue(32);
      };
      _proto._newline = function _newline() {
        this._queue(10);
      };
      _proto._append = function _append(str, maybeNewline) {
        this._maybeAddParen(str);
        this._maybeIndent(str.charCodeAt(0));
        this._buf.append(str, maybeNewline);
        this._endsWithWord = false;
        this._endsWithInteger = false;
      };
      _proto._appendChar = function _appendChar(_char3) {
        this._maybeAddParenChar(_char3);
        this._maybeIndent(_char3);
        this._buf.appendChar(_char3);
        this._endsWithWord = false;
        this._endsWithInteger = false;
      };
      _proto._queue = function _queue(_char4) {
        this._maybeAddParenChar(_char4);
        this._maybeIndent(_char4);
        this._buf.queue(_char4);
        this._endsWithWord = false;
        this._endsWithInteger = false;
      };
      _proto._maybeIndent = function _maybeIndent(firstChar) {
        if (this._indent && firstChar !== 10 && this.endsWith(10)) {
          this._buf.queueIndentation(this._indentChar, this._getIndent());
        }
      };
      _proto._shouldIndent = function _shouldIndent(firstChar) {
        if (this._indent && firstChar !== 10 && this.endsWith(10)) {
          return true;
        }
      };
      _proto._maybeAddParenChar = function _maybeAddParenChar(_char5) {
        var parenPushNewlineState = this._parenPushNewlineState;
        if (!parenPushNewlineState) return;
        if (_char5 === 32) {
          return;
        }
        if (_char5 !== 10) {
          this._parenPushNewlineState = null;
          return;
        }
        this.tokenChar(40);
        this.indent();
        parenPushNewlineState.printed = true;
      };
      _proto._maybeAddParen = function _maybeAddParen(str) {
        var parenPushNewlineState = this._parenPushNewlineState;
        if (!parenPushNewlineState) return;
        var len = str.length;
        var i;
        for (i = 0; i < len && str.charCodeAt(i) === 32; i++) continue;
        if (i === len) {
          return;
        }
        var cha = str.charCodeAt(i);
        if (cha !== 10) {
          if (cha !== 47 || i + 1 === len) {
            this._parenPushNewlineState = null;
            return;
          }
          var chaPost = str.charCodeAt(i + 1);
          if (chaPost === 42) {
            if (PURE_ANNOTATION_RE.test(str.slice(i + 2, len - 2))) {
              return;
            }
          } else if (chaPost !== 47) {
            this._parenPushNewlineState = null;
            return;
          }
        }
        this.tokenChar(40);
        this.indent();
        parenPushNewlineState.printed = true;
      };
      _proto.catchUp = function catchUp(line) {
        if (!this.format.retainLines) return;
        var count = line - this._buf.getCurrentLine();
        for (var i = 0; i < count; i++) {
          this._newline();
        }
      };
      _proto._catchUp = function _catchUp(prop, loc) {
        var _loc$prop;
        if (!this.format.retainLines) return;
        var line = loc == null ? void 0 : (_loc$prop = loc[prop]) == null ? void 0 : _loc$prop.line;
        if (line != null) {
          var count = line - this._buf.getCurrentLine();
          for (var i = 0; i < count; i++) {
            this._newline();
          }
        }
      };
      _proto._getIndent = function _getIndent() {
        return this._indentRepeat * this._indent;
      };
      _proto.printTerminatorless = function printTerminatorless(node, parent, isLabel) {
        if (isLabel) {
          this._noLineTerminator = true;
          this.print(node, parent);
        } else {
          var terminatorState = {
            printed: false
          };
          this._parenPushNewlineState = terminatorState;
          this.print(node, parent);
          if (terminatorState.printed) {
            this.dedent();
            this.newline();
            this.tokenChar(41);
          }
        }
      };
      _proto.print = function print(node, parent, noLineTerminatorAfter, trailingCommentsLineOffset, forceParens) {
        var _node$extra;
        if (!node) return;
        this._endsWithInnerRaw = false;
        var nodeType = node.type;
        var format = this.format;
        var oldConcise = format.concise;
        if (node._compact) {
          format.concise = true;
        }
        var printMethod = this[nodeType];
        if (printMethod === undefined) {
          throw new ReferenceError("unknown node of type " + JSON.stringify(nodeType) + " with constructor " + JSON.stringify(node.constructor.name));
        }
        this._printStack.push(node);
        var oldInAux = this._insideAux;
        this._insideAux = node.loc == undefined;
        this._maybeAddAuxComment(this._insideAux && !oldInAux);
        var shouldPrintParens = forceParens || format.retainFunctionParens && nodeType === "FunctionExpression" && ((_node$extra = node.extra) == null ? void 0 : _node$extra.parenthesized) || needsParens(node, parent, this._printStack);
        if (shouldPrintParens) {
          this.tokenChar(40);
          this._endsWithInnerRaw = false;
        }
        this._lastCommentLine = 0;
        this._printLeadingComments(node, parent);
        var loc = nodeType === "Program" || nodeType === "File" ? null : node.loc;
        this.exactSource(loc, printMethod.bind(this, node, parent));
        if (shouldPrintParens) {
          this._printTrailingComments(node, parent);
          this.tokenChar(41);
          this._noLineTerminator = noLineTerminatorAfter;
        } else if (noLineTerminatorAfter && !this._noLineTerminator) {
          this._noLineTerminator = true;
          this._printTrailingComments(node, parent);
        } else {
          this._printTrailingComments(node, parent, trailingCommentsLineOffset);
        }
        this._printStack.pop();
        format.concise = oldConcise;
        this._insideAux = oldInAux;
        this._endsWithInnerRaw = false;
      };
      _proto._maybeAddAuxComment = function _maybeAddAuxComment(enteredPositionlessNode) {
        if (enteredPositionlessNode) this._printAuxBeforeComment();
        if (!this._insideAux) this._printAuxAfterComment();
      };
      _proto._printAuxBeforeComment = function _printAuxBeforeComment() {
        if (this._printAuxAfterOnNextUserNode) return;
        this._printAuxAfterOnNextUserNode = true;
        var comment = this.format.auxiliaryCommentBefore;
        if (comment) {
          this._printComment({
            type: "CommentBlock",
            value: comment
          }, 0);
        }
      };
      _proto._printAuxAfterComment = function _printAuxAfterComment() {
        if (!this._printAuxAfterOnNextUserNode) return;
        this._printAuxAfterOnNextUserNode = false;
        var comment = this.format.auxiliaryCommentAfter;
        if (comment) {
          this._printComment({
            type: "CommentBlock",
            value: comment
          }, 0);
        }
      };
      _proto.getPossibleRaw = function getPossibleRaw(node) {
        var extra = node.extra;
        if (extra && extra.raw != null && extra.rawValue != null && node.value === extra.rawValue) {
          return extra.raw;
        }
      };
      _proto.printJoin = function printJoin(nodes, parent, opts) {
        if (opts === void 0) {
          opts = {};
        }
        if (!(nodes != null && nodes.length)) return;
        if (opts.indent) this.indent();
        var newlineOpts = {
          addNewlines: opts.addNewlines,
          nextNodeStartLine: 0
        };
        var separator = opts.separator ? opts.separator.bind(this) : null;
        var len = nodes.length;
        for (var i = 0; i < len; i++) {
          var _node = nodes[i];
          if (!_node) continue;
          if (opts.statement) this._printNewline(i === 0, newlineOpts);
          this.print(_node, parent, undefined, opts.trailingCommentsLineOffset || 0);
          opts.iterator == null ? void 0 : opts.iterator(_node, i);
          if (i < len - 1) separator == null ? void 0 : separator();
          if (opts.statement) {
            if (i + 1 === len) {
              this.newline(1);
            } else {
              var _nextNode$loc;
              var nextNode = nodes[i + 1];
              newlineOpts.nextNodeStartLine = ((_nextNode$loc = nextNode.loc) == null ? void 0 : _nextNode$loc.start.line) || 0;
              this._printNewline(true, newlineOpts);
            }
          }
        }
        if (opts.indent) this.dedent();
      };
      _proto.printAndIndentOnComments = function printAndIndentOnComments(node, parent) {
        var indent = node.leadingComments && node.leadingComments.length > 0;
        if (indent) this.indent();
        this.print(node, parent);
        if (indent) this.dedent();
      };
      _proto.printBlock = function printBlock(parent) {
        var node = parent.body;
        if (node.type !== "EmptyStatement") {
          this.space();
        }
        this.print(node, parent);
      };
      _proto._printTrailingComments = function _printTrailingComments(node, parent, lineOffset) {
        var innerComments = node.innerComments,
          trailingComments = node.trailingComments;
        if (innerComments != null && innerComments.length) {
          this._printComments(2, innerComments, node, parent, lineOffset);
        }
        if (trailingComments != null && trailingComments.length) {
          this._printComments(2, trailingComments, node, parent, lineOffset);
        }
      };
      _proto._printLeadingComments = function _printLeadingComments(node, parent) {
        var comments = node.leadingComments;
        if (!(comments != null && comments.length)) return;
        this._printComments(0, comments, node, parent);
      };
      _proto._maybePrintInnerComments = function _maybePrintInnerComments() {
        if (this._endsWithInnerRaw) this.printInnerComments();
        this._endsWithInnerRaw = true;
        this._indentInnerComments = true;
      };
      _proto.printInnerComments = function printInnerComments() {
        var node = this._printStack[this._printStack.length - 1];
        var comments = node.innerComments;
        if (!(comments != null && comments.length)) return;
        var hasSpace = this.endsWith(32);
        var indent = this._indentInnerComments;
        var printedCommentsCount = this._printedComments.size;
        if (indent) this.indent();
        this._printComments(1, comments, node);
        if (hasSpace && printedCommentsCount !== this._printedComments.size) {
          this.space();
        }
        if (indent) this.dedent();
      };
      _proto.noIndentInnerCommentsHere = function noIndentInnerCommentsHere() {
        this._indentInnerComments = false;
      };
      _proto.printSequence = function printSequence(nodes, parent, opts) {
        if (opts === void 0) {
          opts = {};
        }
        opts.statement = true;
        this.printJoin(nodes, parent, opts);
      };
      _proto.printList = function printList(items, parent, opts) {
        if (opts === void 0) {
          opts = {};
        }
        if (opts.separator == null) {
          opts.separator = commaSeparator;
        }
        this.printJoin(items, parent, opts);
      };
      _proto._printNewline = function _printNewline(newLine, opts) {
        var format = this.format;
        if (format.retainLines || format.compact) return;
        if (format.concise) {
          this.space();
          return;
        }
        if (!newLine) {
          return;
        }
        var startLine = opts.nextNodeStartLine;
        var lastCommentLine = this._lastCommentLine;
        if (startLine > 0 && lastCommentLine > 0) {
          var offset = startLine - lastCommentLine;
          if (offset >= 0) {
            this.newline(offset || 1);
            return;
          }
        }
        if (this._buf.hasContent()) {
          this.newline(1);
        }
      };
      _proto._shouldPrintComment = function _shouldPrintComment(comment) {
        if (comment.ignore) return 0;
        if (this._printedComments.has(comment)) return 0;
        if (this._noLineTerminator && (HAS_NEWLINE.test(comment.value) || HAS_BlOCK_COMMENT_END.test(comment.value))) {
          return 2;
        }
        this._printedComments.add(comment);
        if (!this.format.shouldPrintComment(comment.value)) {
          return 0;
        }
        return 1;
      };
      _proto._printComment = function _printComment(comment, skipNewLines) {
        var noLineTerminator = this._noLineTerminator;
        var isBlockComment = comment.type === "CommentBlock";
        var printNewLines = isBlockComment && skipNewLines !== 1 && !this._noLineTerminator;
        if (printNewLines && this._buf.hasContent() && skipNewLines !== 2) {
          this.newline(1);
        }
        var lastCharCode = this.getLastChar();
        if (lastCharCode !== 91 && lastCharCode !== 123) {
          this.space();
        }
        var val;
        if (isBlockComment) {
          val = "/*" + comment.value + "*/";
          if (this.format.indent.adjustMultilineComment) {
            var _comment$loc;
            var offset = (_comment$loc = comment.loc) == null ? void 0 : _comment$loc.start.column;
            if (offset) {
              var newlineRegex = new RegExp("\\n\\s{1," + offset + "}", "g");
              val = val.replace(newlineRegex, "\n");
            }
            var indentSize = this.format.retainLines ? 0 : this._buf.getCurrentColumn();
            if (this._shouldIndent(47) || this.format.retainLines) {
              indentSize += this._getIndent();
            }
            val = val.replace(/\n(?!$)/g, "\n" + " ".repeat(indentSize));
          }
        } else if (!noLineTerminator) {
          val = "//" + comment.value;
        } else {
          val = "/*" + comment.value + "*/";
        }
        if (this.endsWith(47)) this._space();
        this.source("start", comment.loc);
        this._append(val, isBlockComment);
        if (!isBlockComment && !noLineTerminator) {
          this.newline(1, true);
        }
        if (printNewLines && skipNewLines !== 3) {
          this.newline(1);
        }
      };
      _proto._printComments = function _printComments(type, comments, node, parent, lineOffset) {
        if (lineOffset === void 0) {
          lineOffset = 0;
        }
        var nodeLoc = node.loc;
        var len = comments.length;
        var hasLoc = !!nodeLoc;
        var nodeStartLine = hasLoc ? nodeLoc.start.line : 0;
        var nodeEndLine = hasLoc ? nodeLoc.end.line : 0;
        var lastLine = 0;
        var leadingCommentNewline = 0;
        var maybeNewline = this._noLineTerminator ? function () {} : this.newline.bind(this);
        for (var i = 0; i < len; i++) {
          var _comment = comments[i];
          var shouldPrint = this._shouldPrintComment(_comment);
          if (shouldPrint === 2) {
            hasLoc = false;
            break;
          }
          if (hasLoc && _comment.loc && shouldPrint === 1) {
            var commentStartLine = _comment.loc.start.line;
            var commentEndLine = _comment.loc.end.line;
            if (type === 0) {
              var offset = 0;
              if (i === 0) {
                if (this._buf.hasContent() && (_comment.type === "CommentLine" || commentStartLine != commentEndLine)) {
                  offset = leadingCommentNewline = 1;
                }
              } else {
                offset = commentStartLine - lastLine;
              }
              lastLine = commentEndLine;
              maybeNewline(offset);
              this._printComment(_comment, 1);
              if (i + 1 === len) {
                maybeNewline(Math.max(nodeStartLine - lastLine, leadingCommentNewline));
                lastLine = nodeStartLine;
              }
            } else if (type === 1) {
              var _offset = commentStartLine - (i === 0 ? nodeStartLine : lastLine);
              lastLine = commentEndLine;
              maybeNewline(_offset);
              this._printComment(_comment, 1);
              if (i + 1 === len) {
                maybeNewline(Math.min(1, nodeEndLine - lastLine));
                lastLine = nodeEndLine;
              }
            } else {
              var _offset2 = commentStartLine - (i === 0 ? nodeEndLine - lineOffset : lastLine);
              lastLine = commentEndLine;
              maybeNewline(_offset2);
              this._printComment(_comment, 1);
            }
          } else {
            hasLoc = false;
            if (shouldPrint !== 1) {
              continue;
            }
            if (len === 1) {
              var singleLine = _comment.loc ? _comment.loc.start.line === _comment.loc.end.line : !HAS_NEWLINE.test(_comment.value);
              var shouldSkipNewline = singleLine && !isStatement$4(node) && !isClassBody(parent) && !isTSInterfaceBody(parent) && !isTSEnumDeclaration(parent);
              if (type === 0) {
                this._printComment(_comment, shouldSkipNewline && node.type !== "ObjectExpression" || singleLine && isFunction$2(parent, {
                  body: node
                }) ? 1 : 0);
              } else if (shouldSkipNewline && type === 2) {
                this._printComment(_comment, 1);
              } else {
                this._printComment(_comment, 0);
              }
            } else if (type === 1 && !(node.type === "ObjectExpression" && node.properties.length > 1) && node.type !== "ClassBody" && node.type !== "TSInterfaceBody") {
              this._printComment(_comment, i === 0 ? 2 : i === len - 1 ? 3 : 0);
            } else {
              this._printComment(_comment, 0);
            }
          }
        }
        if (type === 2 && hasLoc && lastLine) {
          this._lastCommentLine = lastLine;
        }
      };
      return _createClass(Printer);
    }();
    Object.assign(Printer.prototype, generatorFunctions);
    {
      Printer.prototype.Noop = function Noop() {};
    }
    function commaSeparator() {
      this.tokenChar(44);
      this.space();
    }
  
    var Generator = function (_Printer) {
      _inherits(Generator, _Printer);
      function Generator(ast, opts, code) {
        var _this;
        if (opts === void 0) {
          opts = {};
        }
        var format = normalizeOptions$6(code, opts);
        var map = opts.sourceMaps ? new SourceMap$1(opts, code) : null;
        _this = _Printer.call(this, format, map) || this;
        _this.ast = void 0;
        _this.ast = ast;
        return _this;
      }
      var _proto = Generator.prototype;
      _proto.generate = function generate() {
        return _Printer.prototype.generate.call(this, this.ast);
      };
      return _createClass(Generator);
    }(Printer);
    function normalizeOptions$6(code, opts) {
      var format = {
        auxiliaryCommentBefore: opts.auxiliaryCommentBefore,
        auxiliaryCommentAfter: opts.auxiliaryCommentAfter,
        shouldPrintComment: opts.shouldPrintComment,
        retainLines: opts.retainLines,
        retainFunctionParens: opts.retainFunctionParens,
        comments: opts.comments == null || opts.comments,
        compact: opts.compact,
        minified: opts.minified,
        concise: opts.concise,
        indent: {
          adjustMultilineComment: true,
          style: "  "
        },
        jsescOption: Object.assign({
          quotes: "double",
          wrap: true,
          minimal: false
        }, opts.jsescOption),
        recordAndTupleSyntaxType: opts.recordAndTupleSyntaxType,
        topicToken: opts.topicToken
      };
      {
        format.decoratorsBeforeExport = opts.decoratorsBeforeExport;
        format.jsescOption.json = opts.jsonCompatibleStrings;
      }
      if (format.minified) {
        format.compact = true;
        format.shouldPrintComment = format.shouldPrintComment || function () {
          return format.comments;
        };
      } else {
        format.shouldPrintComment = format.shouldPrintComment || function (value) {
          return format.comments || value.includes("@license") || value.includes("@preserve");
        };
      }
      if (format.compact === "auto") {
        format.compact = typeof code === "string" && code.length > 500000;
        if (format.compact) {
          console.error("[BABEL] Note: The code generator has deoptimised the styling of " + (opts.filename + " as it exceeds the max of " + "500KB" + "."));
        }
      }
      if (format.compact) {
        format.indent.adjustMultilineComment = false;
      }
      var auxiliaryCommentBefore = format.auxiliaryCommentBefore,
        auxiliaryCommentAfter = format.auxiliaryCommentAfter,
        shouldPrintComment = format.shouldPrintComment;
      if (auxiliaryCommentBefore && !shouldPrintComment(auxiliaryCommentBefore)) {
        format.auxiliaryCommentBefore = undefined;
      }
      if (auxiliaryCommentAfter && !shouldPrintComment(auxiliaryCommentAfter)) {
        format.auxiliaryCommentAfter = undefined;
      }
      return format;
    }
    (function () {
      function CodeGenerator(ast, opts, code) {
        this._generator = void 0;
        this._generator = new Generator(ast, opts, code);
      }
      var _proto2 = CodeGenerator.prototype;
      _proto2.generate = function generate() {
        return this._generator.generate();
      };
      return _createClass(CodeGenerator);
    })();
    function generate$1(ast, opts, code) {
      var gen = new Generator(ast, opts, code);
      return gen.generate();
    }
  
    var VISITOR_KEYS$4 = VISITOR_KEYS$5;
    function findParent(callback) {
      var path = this;
      while (path = path.parentPath) {
        if (callback(path)) return path;
      }
      return null;
    }
    function find$1(callback) {
      var path = this;
      do {
        if (callback(path)) return path;
      } while (path = path.parentPath);
      return null;
    }
    function getFunctionParent() {
      return this.findParent(function (p) {
        return p.isFunction();
      });
    }
    function getStatementParent() {
      var path = this;
      do {
        if (!path.parentPath || Array.isArray(path.container) && path.isStatement()) {
          break;
        } else {
          path = path.parentPath;
        }
      } while (path);
      if (path && (path.isProgram() || path.isFile())) {
        throw new Error("File/Program node, we can't possibly find a statement parent to this");
      }
      return path;
    }
    function getEarliestCommonAncestorFrom(paths) {
      return this.getDeepestCommonAncestorFrom(paths, function (deepest, i, ancestries) {
        var earliest;
        var keys = VISITOR_KEYS$4[deepest.type];
        for (var _iterator = _createForOfIteratorHelperLoose(ancestries), _step; !(_step = _iterator()).done;) {
          var ancestry = _step.value;
          var path = ancestry[i + 1];
          if (!earliest) {
            earliest = path;
            continue;
          }
          if (path.listKey && earliest.listKey === path.listKey) {
            if (path.key < earliest.key) {
              earliest = path;
              continue;
            }
          }
          var earliestKeyIndex = keys.indexOf(earliest.parentKey);
          var currentKeyIndex = keys.indexOf(path.parentKey);
          if (earliestKeyIndex > currentKeyIndex) {
            earliest = path;
          }
        }
        return earliest;
      });
    }
    function getDeepestCommonAncestorFrom(paths, filter) {
      var _this = this;
      if (!paths.length) {
        return this;
      }
      if (paths.length === 1) {
        return paths[0];
      }
      var minDepth = Infinity;
      var lastCommonIndex, lastCommon;
      var ancestries = paths.map(function (path) {
        var ancestry = [];
        do {
          ancestry.unshift(path);
        } while ((path = path.parentPath) && path !== _this);
        if (ancestry.length < minDepth) {
          minDepth = ancestry.length;
        }
        return ancestry;
      });
      var first = ancestries[0];
      depthLoop: for (var _i = 0; _i < minDepth; _i++) {
        var shouldMatch = first[_i];
        for (var _iterator2 = _createForOfIteratorHelperLoose(ancestries), _step2; !(_step2 = _iterator2()).done;) {
          var ancestry = _step2.value;
          if (ancestry[_i] !== shouldMatch) {
            break depthLoop;
          }
        }
        lastCommonIndex = _i;
        lastCommon = shouldMatch;
      }
      if (lastCommon) {
        if (filter) {
          return filter(lastCommon, lastCommonIndex, ancestries);
        } else {
          return lastCommon;
        }
      } else {
        throw new Error("Couldn't find intersection");
      }
    }
    function getAncestry() {
      var path = this;
      var paths = [];
      do {
        paths.push(path);
      } while (path = path.parentPath);
      return paths;
    }
    function isAncestor(maybeDescendant) {
      return maybeDescendant.isDescendant(this);
    }
    function isDescendant(maybeAncestor) {
      return !!this.findParent(function (parent) {
        return parent === maybeAncestor;
      });
    }
    function inType() {
      var path = this;
      for (var _len = arguments.length, candidateTypes = new Array(_len), _key = 0; _key < _len; _key++) {
        candidateTypes[_key] = arguments[_key];
      }
      while (path) {
        for (var _iterator3 = _createForOfIteratorHelperLoose(candidateTypes), _step3; !(_step3 = _iterator3()).done;) {
          var type = _step3.value;
          if (path.node.type === type) return true;
        }
        path = path.parentPath;
      }
      return false;
    }
  
    var NodePath_ancestry = /*#__PURE__*/Object.freeze({
      __proto__: null,
      findParent: findParent,
      find: find$1,
      getFunctionParent: getFunctionParent,
      getStatementParent: getStatementParent,
      getEarliestCommonAncestorFrom: getEarliestCommonAncestorFrom,
      getDeepestCommonAncestorFrom: getDeepestCommonAncestorFrom,
      getAncestry: getAncestry,
      isAncestor: isAncestor,
      isDescendant: isDescendant,
      inType: inType
    });
  
    var createFlowUnionType = createFlowUnionType$1,
      createTSUnionType = createTSUnionType$1,
      createUnionTypeAnnotation = createFlowUnionType$1,
      isFlowType = isFlowType$1;
    function createUnionType(types) {
      {
        if (isFlowType(types[0])) {
          if (createFlowUnionType) {
            return createFlowUnionType(types);
          }
          return createUnionTypeAnnotation(types);
        } else {
          if (createTSUnionType) {
            return createTSUnionType(types);
          }
        }
      }
    }
  
    var BOOLEAN_NUMBER_BINARY_OPERATORS = BOOLEAN_NUMBER_BINARY_OPERATORS$1,
      createTypeAnnotationBasedOnTypeof = createTypeAnnotationBasedOnTypeof$1,
      numberTypeAnnotation$1 = numberTypeAnnotation$2,
      voidTypeAnnotation$2 = voidTypeAnnotation$3;
    function infererReference (node) {
      if (!this.isReferenced()) return;
      var binding = this.scope.getBinding(node.name);
      if (binding) {
        if (binding.identifier.typeAnnotation) {
          return binding.identifier.typeAnnotation;
        } else {
          return getTypeAnnotationBindingConstantViolations(binding, this, node.name);
        }
      }
      if (node.name === "undefined") {
        return voidTypeAnnotation$2();
      } else if (node.name === "NaN" || node.name === "Infinity") {
        return numberTypeAnnotation$1();
      } else if (node.name === "arguments") ;
    }
    function getTypeAnnotationBindingConstantViolations(binding, path, name) {
      var types = [];
      var functionConstantViolations = [];
      var constantViolations = getConstantViolationsBefore(binding, path, functionConstantViolations);
      var testType = getConditionalAnnotation(binding, path, name);
      if (testType) {
        var testConstantViolations = getConstantViolationsBefore(binding, testType.ifStatement);
        constantViolations = constantViolations.filter(function (path) {
          return testConstantViolations.indexOf(path) < 0;
        });
        types.push(testType.typeAnnotation);
      }
      if (constantViolations.length) {
        var _constantViolations;
        (_constantViolations = constantViolations).push.apply(_constantViolations, functionConstantViolations);
        for (var _iterator = _createForOfIteratorHelperLoose(constantViolations), _step; !(_step = _iterator()).done;) {
          var violation = _step.value;
          types.push(violation.getTypeAnnotation());
        }
      }
      if (!types.length) {
        return;
      }
      return createUnionType(types);
    }
    function getConstantViolationsBefore(binding, path, functions) {
      var violations = binding.constantViolations.slice();
      violations.unshift(binding.path);
      return violations.filter(function (violation) {
        violation = violation.resolve();
        var status = violation._guessExecutionStatusRelativeTo(path);
        if (functions && status === "unknown") functions.push(violation);
        return status === "before";
      });
    }
    function inferAnnotationFromBinaryExpression(name, path) {
      var operator = path.node.operator;
      var right = path.get("right").resolve();
      var left = path.get("left").resolve();
      var target;
      if (left.isIdentifier({
        name: name
      })) {
        target = right;
      } else if (right.isIdentifier({
        name: name
      })) {
        target = left;
      }
      if (target) {
        if (operator === "===") {
          return target.getTypeAnnotation();
        }
        if (BOOLEAN_NUMBER_BINARY_OPERATORS.indexOf(operator) >= 0) {
          return numberTypeAnnotation$1();
        }
        return;
      }
      if (operator !== "===" && operator !== "==") return;
      var typeofPath;
      var typePath;
      if (left.isUnaryExpression({
        operator: "typeof"
      })) {
        typeofPath = left;
        typePath = right;
      } else if (right.isUnaryExpression({
        operator: "typeof"
      })) {
        typeofPath = right;
        typePath = left;
      }
      if (!typeofPath) return;
      if (!typeofPath.get("argument").isIdentifier({
        name: name
      })) return;
      typePath = typePath.resolve();
      if (!typePath.isLiteral()) return;
      var typeValue = typePath.node.value;
      if (typeof typeValue !== "string") return;
      return createTypeAnnotationBasedOnTypeof(typeValue);
    }
    function getParentConditionalPath(binding, path, name) {
      var parentPath;
      while (parentPath = path.parentPath) {
        if (parentPath.isIfStatement() || parentPath.isConditionalExpression()) {
          if (path.key === "test") {
            return;
          }
          return parentPath;
        }
        if (parentPath.isFunction()) {
          if (parentPath.parentPath.scope.getBinding(name) !== binding) return;
        }
        path = parentPath;
      }
    }
    function getConditionalAnnotation(binding, path, name) {
      var ifStatement = getParentConditionalPath(binding, path, name);
      if (!ifStatement) return;
      var test = ifStatement.get("test");
      var paths = [test];
      var types = [];
      for (var i = 0; i < paths.length; i++) {
        var _path = paths[i];
        if (_path.isLogicalExpression()) {
          if (_path.node.operator === "&&") {
            paths.push(_path.get("left"));
            paths.push(_path.get("right"));
          }
        } else if (_path.isBinaryExpression()) {
          var type = inferAnnotationFromBinaryExpression(name, _path);
          if (type) types.push(type);
        }
      }
      if (types.length) {
        return {
          typeAnnotation: createUnionType(types),
          ifStatement: ifStatement
        };
      }
      return getConditionalAnnotation(binding, ifStatement, name);
    }
  
    var BOOLEAN_BINARY_OPERATORS = BOOLEAN_BINARY_OPERATORS$1,
      BOOLEAN_UNARY_OPERATORS = BOOLEAN_UNARY_OPERATORS$1,
      NUMBER_BINARY_OPERATORS = NUMBER_BINARY_OPERATORS$1,
      NUMBER_UNARY_OPERATORS = NUMBER_UNARY_OPERATORS$1,
      STRING_UNARY_OPERATORS = STRING_UNARY_OPERATORS$1,
      anyTypeAnnotation$1 = anyTypeAnnotation$2,
      arrayTypeAnnotation = arrayTypeAnnotation$1,
      booleanTypeAnnotation = booleanTypeAnnotation$1,
      buildMatchMemberExpression = buildMatchMemberExpression$1,
      genericTypeAnnotation = genericTypeAnnotation$1,
      identifier$f = identifier$i,
      nullLiteralTypeAnnotation = nullLiteralTypeAnnotation$1,
      numberTypeAnnotation = numberTypeAnnotation$2,
      stringTypeAnnotation$1 = stringTypeAnnotation$2,
      tupleTypeAnnotation = tupleTypeAnnotation$1,
      unionTypeAnnotation = unionTypeAnnotation$1,
      voidTypeAnnotation$1 = voidTypeAnnotation$3,
      isIdentifier$e = isIdentifier$j;
    function VariableDeclarator() {
      if (!this.get("id").isIdentifier()) return;
      return this.get("init").getTypeAnnotation();
    }
    function TypeCastExpression(node) {
      return node.typeAnnotation;
    }
    TypeCastExpression.validParent = true;
    function TSAsExpression(node) {
      return node.typeAnnotation;
    }
    TSAsExpression.validParent = true;
    function TSNonNullExpression() {
      return this.get("expression").getTypeAnnotation();
    }
    function NewExpression(node) {
      if (node.callee.type === "Identifier") {
        return genericTypeAnnotation(node.callee);
      }
    }
    function TemplateLiteral() {
      return stringTypeAnnotation$1();
    }
    function UnaryExpression(node) {
      var operator = node.operator;
      if (operator === "void") {
        return voidTypeAnnotation$1();
      } else if (NUMBER_UNARY_OPERATORS.indexOf(operator) >= 0) {
        return numberTypeAnnotation();
      } else if (STRING_UNARY_OPERATORS.indexOf(operator) >= 0) {
        return stringTypeAnnotation$1();
      } else if (BOOLEAN_UNARY_OPERATORS.indexOf(operator) >= 0) {
        return booleanTypeAnnotation();
      }
    }
    function BinaryExpression(node) {
      var operator = node.operator;
      if (NUMBER_BINARY_OPERATORS.indexOf(operator) >= 0) {
        return numberTypeAnnotation();
      } else if (BOOLEAN_BINARY_OPERATORS.indexOf(operator) >= 0) {
        return booleanTypeAnnotation();
      } else if (operator === "+") {
        var right = this.get("right");
        var left = this.get("left");
        if (left.isBaseType("number") && right.isBaseType("number")) {
          return numberTypeAnnotation();
        } else if (left.isBaseType("string") || right.isBaseType("string")) {
          return stringTypeAnnotation$1();
        }
        return unionTypeAnnotation([stringTypeAnnotation$1(), numberTypeAnnotation()]);
      }
    }
    function LogicalExpression() {
      var argumentTypes = [this.get("left").getTypeAnnotation(), this.get("right").getTypeAnnotation()];
      return createUnionType(argumentTypes);
    }
    function ConditionalExpression() {
      var argumentTypes = [this.get("consequent").getTypeAnnotation(), this.get("alternate").getTypeAnnotation()];
      return createUnionType(argumentTypes);
    }
    function SequenceExpression() {
      return this.get("expressions").pop().getTypeAnnotation();
    }
    function ParenthesizedExpression() {
      return this.get("expression").getTypeAnnotation();
    }
    function AssignmentExpression() {
      return this.get("right").getTypeAnnotation();
    }
    function UpdateExpression(node) {
      var operator = node.operator;
      if (operator === "++" || operator === "--") {
        return numberTypeAnnotation();
      }
    }
    function StringLiteral() {
      return stringTypeAnnotation$1();
    }
    function NumericLiteral() {
      return numberTypeAnnotation();
    }
    function BooleanLiteral() {
      return booleanTypeAnnotation();
    }
    function NullLiteral() {
      return nullLiteralTypeAnnotation();
    }
    function RegExpLiteral() {
      return genericTypeAnnotation(identifier$f("RegExp"));
    }
    function ObjectExpression() {
      return genericTypeAnnotation(identifier$f("Object"));
    }
    function ArrayExpression() {
      return genericTypeAnnotation(identifier$f("Array"));
    }
    function RestElement() {
      return ArrayExpression();
    }
    RestElement.validParent = true;
    function Func() {
      return genericTypeAnnotation(identifier$f("Function"));
    }
    var isArrayFrom = buildMatchMemberExpression("Array.from");
    var isObjectKeys = buildMatchMemberExpression("Object.keys");
    var isObjectValues = buildMatchMemberExpression("Object.values");
    var isObjectEntries = buildMatchMemberExpression("Object.entries");
    function CallExpression() {
      var callee = this.node.callee;
      if (isObjectKeys(callee)) {
        return arrayTypeAnnotation(stringTypeAnnotation$1());
      } else if (isArrayFrom(callee) || isObjectValues(callee) || isIdentifier$e(callee, {
        name: "Array"
      })) {
        return arrayTypeAnnotation(anyTypeAnnotation$1());
      } else if (isObjectEntries(callee)) {
        return arrayTypeAnnotation(tupleTypeAnnotation([stringTypeAnnotation$1(), anyTypeAnnotation$1()]));
      }
      return resolveCall(this.get("callee"));
    }
    function TaggedTemplateExpression() {
      return resolveCall(this.get("tag"));
    }
    function resolveCall(callee) {
      callee = callee.resolve();
      if (callee.isFunction()) {
        var _callee = callee,
          node = _callee.node;
        if (node.async) {
          if (node.generator) {
            return genericTypeAnnotation(identifier$f("AsyncIterator"));
          } else {
            return genericTypeAnnotation(identifier$f("Promise"));
          }
        } else {
          if (node.generator) {
            return genericTypeAnnotation(identifier$f("Iterator"));
          } else if (callee.node.returnType) {
            return callee.node.returnType;
          } else ;
        }
      }
    }
  
    var inferers = /*#__PURE__*/Object.freeze({
      __proto__: null,
      VariableDeclarator: VariableDeclarator,
      TypeCastExpression: TypeCastExpression,
      TSAsExpression: TSAsExpression,
      TSNonNullExpression: TSNonNullExpression,
      NewExpression: NewExpression,
      TemplateLiteral: TemplateLiteral,
      UnaryExpression: UnaryExpression,
      BinaryExpression: BinaryExpression,
      LogicalExpression: LogicalExpression,
      ConditionalExpression: ConditionalExpression,
      SequenceExpression: SequenceExpression,
      ParenthesizedExpression: ParenthesizedExpression,
      AssignmentExpression: AssignmentExpression,
      UpdateExpression: UpdateExpression,
      StringLiteral: StringLiteral,
      NumericLiteral: NumericLiteral,
      BooleanLiteral: BooleanLiteral,
      NullLiteral: NullLiteral,
      RegExpLiteral: RegExpLiteral,
      ObjectExpression: ObjectExpression,
      ArrayExpression: ArrayExpression,
      RestElement: RestElement,
      FunctionExpression: Func,
      ArrowFunctionExpression: Func,
      FunctionDeclaration: Func,
      ClassExpression: Func,
      ClassDeclaration: Func,
      CallExpression: CallExpression,
      TaggedTemplateExpression: TaggedTemplateExpression,
      Identifier: infererReference
    });
  
    var anyTypeAnnotation = anyTypeAnnotation$2,
      isAnyTypeAnnotation = isAnyTypeAnnotation$1,
      isArrayTypeAnnotation = isArrayTypeAnnotation$2,
      isBooleanTypeAnnotation = isBooleanTypeAnnotation$1,
      isEmptyTypeAnnotation = isEmptyTypeAnnotation$1,
      isFlowBaseAnnotation = isFlowBaseAnnotation$1,
      isGenericTypeAnnotation = isGenericTypeAnnotation$1,
      isIdentifier$d = isIdentifier$j,
      isMixedTypeAnnotation = isMixedTypeAnnotation$1,
      isNumberTypeAnnotation = isNumberTypeAnnotation$1,
      isStringTypeAnnotation = isStringTypeAnnotation$1,
      isTSArrayType = isTSArrayType$2,
      isTSTypeAnnotation = isTSTypeAnnotation$1,
      isTSTypeReference = isTSTypeReference$1,
      isTupleTypeAnnotation = isTupleTypeAnnotation$1,
      isTypeAnnotation = isTypeAnnotation$2,
      isUnionTypeAnnotation = isUnionTypeAnnotation$2,
      isVoidTypeAnnotation = isVoidTypeAnnotation$1,
      stringTypeAnnotation = stringTypeAnnotation$2,
      voidTypeAnnotation = voidTypeAnnotation$3;
    function getTypeAnnotation() {
      var type = this.getData("typeAnnotation");
      if (type != null) {
        return type;
      }
      type = this._getTypeAnnotation() || anyTypeAnnotation();
      if (isTypeAnnotation(type) || isTSTypeAnnotation(type)) {
        type = type.typeAnnotation;
      }
      this.setData("typeAnnotation", type);
      return type;
    }
    var typeAnnotationInferringNodes = new WeakSet();
    function _getTypeAnnotation() {
      var node = this.node;
      if (!node) {
        if (this.key === "init" && this.parentPath.isVariableDeclarator()) {
          var declar = this.parentPath.parentPath;
          var declarParent = declar.parentPath;
          if (declar.key === "left" && declarParent.isForInStatement()) {
            return stringTypeAnnotation();
          }
          if (declar.key === "left" && declarParent.isForOfStatement()) {
            return anyTypeAnnotation();
          }
          return voidTypeAnnotation();
        } else {
          return;
        }
      }
      if (node.typeAnnotation) {
        return node.typeAnnotation;
      }
      if (typeAnnotationInferringNodes.has(node)) {
        return;
      }
      typeAnnotationInferringNodes.add(node);
      try {
        var _inferer;
        var inferer = inferers[node.type];
        if (inferer) {
          return inferer.call(this, node);
        }
        inferer = inferers[this.parentPath.type];
        if ((_inferer = inferer) != null && _inferer.validParent) {
          return this.parentPath.getTypeAnnotation();
        }
      } finally {
        typeAnnotationInferringNodes["delete"](node);
      }
    }
    function isBaseType(baseName, soft) {
      return _isBaseType(baseName, this.getTypeAnnotation(), soft);
    }
    function _isBaseType(baseName, type, soft) {
      if (baseName === "string") {
        return isStringTypeAnnotation(type);
      } else if (baseName === "number") {
        return isNumberTypeAnnotation(type);
      } else if (baseName === "boolean") {
        return isBooleanTypeAnnotation(type);
      } else if (baseName === "any") {
        return isAnyTypeAnnotation(type);
      } else if (baseName === "mixed") {
        return isMixedTypeAnnotation(type);
      } else if (baseName === "empty") {
        return isEmptyTypeAnnotation(type);
      } else if (baseName === "void") {
        return isVoidTypeAnnotation(type);
      } else {
        if (soft) {
          return false;
        } else {
          throw new Error("Unknown base type " + baseName);
        }
      }
    }
    function couldBeBaseType(name) {
      var type = this.getTypeAnnotation();
      if (isAnyTypeAnnotation(type)) return true;
      if (isUnionTypeAnnotation(type)) {
        for (var _iterator = _createForOfIteratorHelperLoose(type.types), _step; !(_step = _iterator()).done;) {
          var type2 = _step.value;
          if (isAnyTypeAnnotation(type2) || _isBaseType(name, type2, true)) {
            return true;
          }
        }
        return false;
      } else {
        return _isBaseType(name, type, true);
      }
    }
    function baseTypeStrictlyMatches(rightArg) {
      var left = this.getTypeAnnotation();
      var right = rightArg.getTypeAnnotation();
      if (!isAnyTypeAnnotation(left) && isFlowBaseAnnotation(left)) {
        return right.type === left.type;
      }
      return false;
    }
    function isGenericType(genericName) {
      var type = this.getTypeAnnotation();
      if (genericName === "Array") {
        if (isTSArrayType(type) || isArrayTypeAnnotation(type) || isTupleTypeAnnotation(type)) {
          return true;
        }
      }
      return isGenericTypeAnnotation(type) && isIdentifier$d(type.id, {
        name: genericName
      }) || isTSTypeReference(type) && isIdentifier$d(type.typeName, {
        name: genericName
      });
    }
  
    var NodePath_inference = /*#__PURE__*/Object.freeze({
      __proto__: null,
      getTypeAnnotation: getTypeAnnotation,
      _getTypeAnnotation: _getTypeAnnotation,
      isBaseType: isBaseType,
      couldBeBaseType: couldBeBaseType,
      baseTypeStrictlyMatches: baseTypeStrictlyMatches,
      isGenericType: isGenericType
    });
  
    var jsTokensBABEL_8_BREAKINGTrue;
    var hasRequiredJsTokensBABEL_8_BREAKINGTrue;
    function requireJsTokensBABEL_8_BREAKINGTrue() {
      if (hasRequiredJsTokensBABEL_8_BREAKINGTrue) return jsTokensBABEL_8_BREAKINGTrue;
      hasRequiredJsTokensBABEL_8_BREAKINGTrue = 1;
      var Identifier, JSXIdentifier, JSXPunctuator, JSXString, JSXText, KeywordsWithExpressionAfter, KeywordsWithNoLineTerminatorAfter, LineTerminatorSequence, MultiLineComment, Newline, NumericLiteral, Punctuator, RegularExpressionLiteral, SingleLineComment, StringLiteral, Template, TokensNotPrecedingObjectLiteral, TokensPrecedingExpression, WhiteSpace;
      RegularExpressionLiteral = new RegExp("\\/(?![\\*\\/])(?:\\[(?:(?![\\\\\\]])(?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])|\\\\(?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]))*\\]|(?![\\/\\\\\\]])(?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])|\\\\(?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]))*(\\/(?:[\\$0-9A-Z_a-z\\xAA\\xB5\\xB7\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u07FD\\u0800-\\u082D\\u0840-\\u085B\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u0898-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09FC\\u09FE\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3C-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C5D\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDD\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1-\\u0CF3\\u0D00-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D81-\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECE\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1369-\\u1371\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u1715\\u171F-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u180F-\\u1819\\u1820-\\u1878\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1ABF-\\u1ACE\\u1B00-\\u1B4C\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CD0-\\u1CD2\\u1CD4-\\u1CFA\\u1D00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA827\\uA82C\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD27\\uDD30-\\uDD39\\uDE80-\\uDEA9\\uDEAB\\uDEAC\\uDEB0\\uDEB1\\uDEFD-\\uDF1C\\uDF27\\uDF30-\\uDF50\\uDF70-\\uDF85\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC75\\uDC7F-\\uDCBA\\uDCC2\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD44-\\uDD47\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDC9-\\uDDCC\\uDDCE-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E-\\uDE41\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3B-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC5E-\\uDC61\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF1D-\\uDF2B\\uDF30-\\uDF39\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC3A\\uDCA0-\\uDCE9\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD35\\uDD37\\uDD38\\uDD3B-\\uDD43\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD7\\uDDDA-\\uDDE1\\uDDE3\\uDDE4\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE99\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD8E\\uDD90\\uDD91\\uDD93-\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF6\\uDF00-\\uDF10\\uDF12-\\uDF3A\\uDF3E-\\uDF42\\uDF50-\\uDF59\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883\\uD885-\\uD887][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2F\\uDC40-\\uDC55]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDE70-\\uDEBE\\uDEC0-\\uDEC9\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF4F-\\uDF87\\uDF8F-\\uDF9F\\uDFE0\\uDFE1\\uDFE3\\uDFE4\\uDFF0\\uDFF1]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD32\\uDD50-\\uDD52\\uDD55\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD833[\\uDF00-\\uDF2D\\uDF30-\\uDF46]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD837[\\uDF00-\\uDF1E\\uDF25-\\uDF2A]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDC30-\\uDC6D\\uDC8F\\uDD00-\\uDD2C\\uDD30-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDE90-\\uDEAE\\uDEC0-\\uDEF9]|\\uD839[\\uDCD0-\\uDCF9\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF39\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A\\uDF50-\\uDFFF]|\\uD888[\\uDC00-\\uDFAF]|\\uDB40[\\uDD00-\\uDDEF])*|\\\\)?", "y");
      Punctuator = new RegExp("--|\\+\\+|=>|\\.{3}|\\??\\.(?!\\d)|(?:&&|\\|\\||\\?\\?|[+\\-%&|^]|\\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2}|\\/(?![\\/*]))=?|[?~,:;[\\](){}]", "y");
      Identifier = new RegExp("(#?)(?=(?:[\\$A-Z\\\\_a-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309B-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE3F\\uDE40\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDF02\\uDF04-\\uDF10\\uDF12-\\uDF33\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883\\uD885-\\uD887][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2F\\uDC41-\\uDC46]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD32\\uDD50-\\uDD52\\uDD55\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E\\uDF25-\\uDF2A]|\\uD838[\\uDC30-\\uDC6D\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDCD0-\\uDCEB\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF39\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A\\uDF50-\\uDFFF]|\\uD888[\\uDC00-\\uDFAF]))(?:(?:[\\$0-9A-Z_a-z\\xAA\\xB5\\xB7\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u07FD\\u0800-\\u082D\\u0840-\\u085B\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u0898-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09FC\\u09FE\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3C-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C5D\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDD\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1-\\u0CF3\\u0D00-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D81-\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECE\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1369-\\u1371\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u1715\\u171F-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u180F-\\u1819\\u1820-\\u1878\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1ABF-\\u1ACE\\u1B00-\\u1B4C\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CD0-\\u1CD2\\u1CD4-\\u1CFA\\u1D00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA827\\uA82C\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD27\\uDD30-\\uDD39\\uDE80-\\uDEA9\\uDEAB\\uDEAC\\uDEB0\\uDEB1\\uDEFD-\\uDF1C\\uDF27\\uDF30-\\uDF50\\uDF70-\\uDF85\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC75\\uDC7F-\\uDCBA\\uDCC2\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD44-\\uDD47\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDC9-\\uDDCC\\uDDCE-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E-\\uDE41\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3B-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC5E-\\uDC61\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF1D-\\uDF2B\\uDF30-\\uDF39\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC3A\\uDCA0-\\uDCE9\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD35\\uDD37\\uDD38\\uDD3B-\\uDD43\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD7\\uDDDA-\\uDDE1\\uDDE3\\uDDE4\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE99\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD8E\\uDD90\\uDD91\\uDD93-\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF6\\uDF00-\\uDF10\\uDF12-\\uDF3A\\uDF3E-\\uDF42\\uDF50-\\uDF59\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883\\uD885-\\uD887][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2F\\uDC40-\\uDC55]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDE70-\\uDEBE\\uDEC0-\\uDEC9\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF4F-\\uDF87\\uDF8F-\\uDF9F\\uDFE0\\uDFE1\\uDFE3\\uDFE4\\uDFF0\\uDFF1]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD32\\uDD50-\\uDD52\\uDD55\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD833[\\uDF00-\\uDF2D\\uDF30-\\uDF46]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD837[\\uDF00-\\uDF1E\\uDF25-\\uDF2A]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDC30-\\uDC6D\\uDC8F\\uDD00-\\uDD2C\\uDD30-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDE90-\\uDEAE\\uDEC0-\\uDEF9]|\\uD839[\\uDCD0-\\uDCF9\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF39\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A\\uDF50-\\uDFFF]|\\uD888[\\uDC00-\\uDFAF]|\\uDB40[\\uDD00-\\uDDEF])|\\\\u[0-9A-Fa-f]{4}|\\\\u\\{[0-9A-Fa-f]+\\})+", "y");
      StringLiteral = new RegExp("(['\"])(?:(?!\\1)[^\\\\\\n\\r]|\\\\(?:\\r\\n|[^]))*(\\1)?", "y");
      NumericLiteral = new RegExp("(?:0[xX][\\da-fA-F](?:_?[\\da-fA-F])*|0[oO][0-7](?:_?[0-7])*|0[bB][01](?:_?[01])*)n?|0n|[1-9](?:_?\\d)*n|(?:(?:0(?!\\d)|0\\d*[89]\\d*|[1-9](?:_?\\d)*)(?:\\.(?:\\d(?:_?\\d)*)?)?|\\.\\d(?:_?\\d)*)(?:[eE][+-]?\\d(?:_?\\d)*)?|0[0-7]+", "y");
      Template = new RegExp("[`}](?:[^`\\\\$]|\\\\[^]|\\$(?!\\{))*(`|\\$\\{)?", "y");
      WhiteSpace = new RegExp("[\\t\\x0B\\f \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000\\uFEFF]+", "y");
      LineTerminatorSequence = new RegExp("\\r?\\n|[\\r\\u2028\\u2029]", "y");
      MultiLineComment = new RegExp("\\/\\*(?:[^*]|\\*(?!\\/))*(\\*\\/)?", "y");
      SingleLineComment = new RegExp("\\/\\/.*", "y");
      JSXPunctuator = new RegExp("[<>.:={}]|\\/(?![\\/*])", "y");
      JSXIdentifier = new RegExp("(?:[\\$A-Z_a-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u08A0-\\u08C9\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C5D\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D04-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u1711\\u171F-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4C\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1CFA\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309B-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDE80-\\uDEA9\\uDEB0\\uDEB1\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45\\uDF70-\\uDF81\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC03-\\uDC37\\uDC71\\uDC72\\uDC75\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD47\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE3F\\uDE40\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC5F-\\uDC61\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDEB8\\uDF00-\\uDF1A\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD2F\\uDD3F\\uDD41\\uDDA0-\\uDDA7\\uDDAA-\\uDDD0\\uDDE1\\uDDE3\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE89\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2\\uDF02\\uDF04-\\uDF10\\uDF12-\\uDF33\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883\\uD885-\\uD887][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2F\\uDC41-\\uDC46]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE70-\\uDEBE\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1\\uDFE3]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD32\\uDD50-\\uDD52\\uDD55\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD837[\\uDF00-\\uDF1E\\uDF25-\\uDF2A]|\\uD838[\\uDC30-\\uDC6D\\uDD00-\\uDD2C\\uDD37-\\uDD3D\\uDD4E\\uDE90-\\uDEAD\\uDEC0-\\uDEEB]|\\uD839[\\uDCD0-\\uDCEB\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD4B]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF39\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A\\uDF50-\\uDFFF]|\\uD888[\\uDC00-\\uDFAF])(?:[\\$\\x2D0-9A-Z_a-z\\xAA\\xB5\\xB7\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0300-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u0483-\\u0487\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0610-\\u061A\\u0620-\\u0669\\u066E-\\u06D3\\u06D5-\\u06DC\\u06DF-\\u06E8\\u06EA-\\u06FC\\u06FF\\u0710-\\u074A\\u074D-\\u07B1\\u07C0-\\u07F5\\u07FA\\u07FD\\u0800-\\u082D\\u0840-\\u085B\\u0860-\\u086A\\u0870-\\u0887\\u0889-\\u088E\\u0898-\\u08E1\\u08E3-\\u0963\\u0966-\\u096F\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09F1\\u09FC\\u09FE\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AEF\\u0AF9-\\u0AFF\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B55-\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B6F\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BEF\\u0C00-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3C-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C5D\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDD\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1-\\u0CF3\\u0D00-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D66-\\u0D6F\\u0D7A-\\u0D7F\\u0D81-\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E4E\\u0E50-\\u0E59\\u0E81\\u0E82\\u0E84\\u0E86-\\u0E8A\\u0E8C-\\u0EA3\\u0EA5\\u0EA7-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECE\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF\\u0F00\\u0F18\\u0F19\\u0F20-\\u0F29\\u0F35\\u0F37\\u0F39\\u0F3E-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F84\\u0F86-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u1000-\\u1049\\u1050-\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u135F\\u1369-\\u1371\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u1715\\u171F-\\u1734\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17D3\\u17D7\\u17DC\\u17DD\\u17E0-\\u17E9\\u180B-\\u180D\\u180F-\\u1819\\u1820-\\u1878\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1946-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA7\\u1AB0-\\u1ABD\\u1ABF-\\u1ACE\\u1B00-\\u1B4C\\u1B50-\\u1B59\\u1B6B-\\u1B73\\u1B80-\\u1BF3\\u1C00-\\u1C37\\u1C40-\\u1C49\\u1C4D-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CD0-\\u1CD2\\u1CD4-\\u1CFA\\u1D00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u200C\\u200D\\u203F\\u2040\\u2054\\u2071\\u207F\\u2090-\\u209C\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2118-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u2C00-\\u2CE4\\u2CEB-\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D7F-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u3005-\\u3007\\u3021-\\u302F\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u3099-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BF\\u31F0-\\u31FF\\u3400-\\u4DBF\\u4E00-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA62B\\uA640-\\uA66F\\uA674-\\uA67D\\uA67F-\\uA6F1\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7CA\\uA7D0\\uA7D1\\uA7D3\\uA7D5-\\uA7D9\\uA7F2-\\uA827\\uA82C\\uA840-\\uA873\\uA880-\\uA8C5\\uA8D0-\\uA8D9\\uA8E0-\\uA8F7\\uA8FB\\uA8FD-\\uA92D\\uA930-\\uA953\\uA960-\\uA97C\\uA980-\\uA9C0\\uA9CF-\\uA9D9\\uA9E0-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA60-\\uAA76\\uAA7A-\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF6\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB69\\uAB70-\\uABEA\\uABEC\\uABED\\uABF0-\\uABF9\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE00-\\uFE0F\\uFE20-\\uFE2F\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF10-\\uFF19\\uFF21-\\uFF3A\\uFF3F\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC]|\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDDFD\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDEE0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCA0-\\uDCA9\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDD70-\\uDD7A\\uDD7C-\\uDD8A\\uDD8C-\\uDD92\\uDD94\\uDD95\\uDD97-\\uDDA1\\uDDA3-\\uDDB1\\uDDB3-\\uDDB9\\uDDBB\\uDDBC\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67\\uDF80-\\uDF85\\uDF87-\\uDFB0\\uDFB2-\\uDFBA]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE38-\\uDE3A\\uDE3F\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE6\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD27\\uDD30-\\uDD39\\uDE80-\\uDEA9\\uDEAB\\uDEAC\\uDEB0\\uDEB1\\uDEFD-\\uDF1C\\uDF27\\uDF30-\\uDF50\\uDF70-\\uDF85\\uDFB0-\\uDFC4\\uDFE0-\\uDFF6]|\\uD804[\\uDC00-\\uDC46\\uDC66-\\uDC75\\uDC7F-\\uDCBA\\uDCC2\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9\\uDD00-\\uDD34\\uDD36-\\uDD3F\\uDD44-\\uDD47\\uDD50-\\uDD73\\uDD76\\uDD80-\\uDDC4\\uDDC9-\\uDDCC\\uDDCE-\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE37\\uDE3E-\\uDE41\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3B-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC00-\\uDC4A\\uDC50-\\uDC59\\uDC5E-\\uDC61\\uDC80-\\uDCC5\\uDCC7\\uDCD0-\\uDCD9\\uDD80-\\uDDB5\\uDDB8-\\uDDC0\\uDDD8-\\uDDDD\\uDE00-\\uDE40\\uDE44\\uDE50-\\uDE59\\uDE80-\\uDEB8\\uDEC0-\\uDEC9\\uDF00-\\uDF1A\\uDF1D-\\uDF2B\\uDF30-\\uDF39\\uDF40-\\uDF46]|\\uD806[\\uDC00-\\uDC3A\\uDCA0-\\uDCE9\\uDCFF-\\uDD06\\uDD09\\uDD0C-\\uDD13\\uDD15\\uDD16\\uDD18-\\uDD35\\uDD37\\uDD38\\uDD3B-\\uDD43\\uDD50-\\uDD59\\uDDA0-\\uDDA7\\uDDAA-\\uDDD7\\uDDDA-\\uDDE1\\uDDE3\\uDDE4\\uDE00-\\uDE3E\\uDE47\\uDE50-\\uDE99\\uDE9D\\uDEB0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC40\\uDC50-\\uDC59\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD8E\\uDD90\\uDD91\\uDD93-\\uDD98\\uDDA0-\\uDDA9\\uDEE0-\\uDEF6\\uDF00-\\uDF10\\uDF12-\\uDF3A\\uDF3E-\\uDF42\\uDF50-\\uDF59\\uDFB0]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|\\uD80B[\\uDF90-\\uDFF0]|[\\uD80C\\uD81C-\\uD820\\uD822\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879\\uD880-\\uD883\\uD885-\\uD887][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2F\\uDC40-\\uDC55]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDE70-\\uDEBE\\uDEC0-\\uDEC9\\uDED0-\\uDEED\\uDEF0-\\uDEF4\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF50-\\uDF59\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF4A\\uDF4F-\\uDF87\\uDF8F-\\uDF9F\\uDFE0\\uDFE1\\uDFE3\\uDFE4\\uDFF0\\uDFF1]|\\uD821[\\uDC00-\\uDFF7]|\\uD823[\\uDC00-\\uDCD5\\uDD00-\\uDD08]|\\uD82B[\\uDFF0-\\uDFF3\\uDFF5-\\uDFFB\\uDFFD\\uDFFE]|\\uD82C[\\uDC00-\\uDD22\\uDD32\\uDD50-\\uDD52\\uDD55\\uDD64-\\uDD67\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9D\\uDC9E]|\\uD833[\\uDF00-\\uDF2D\\uDF30-\\uDF46]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB\\uDFCE-\\uDFFF]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD837[\\uDF00-\\uDF1E\\uDF25-\\uDF2A]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A\\uDC30-\\uDC6D\\uDC8F\\uDD00-\\uDD2C\\uDD30-\\uDD3D\\uDD40-\\uDD49\\uDD4E\\uDE90-\\uDEAE\\uDEC0-\\uDEF9]|\\uD839[\\uDCD0-\\uDCF9\\uDFE0-\\uDFE6\\uDFE8-\\uDFEB\\uDFED\\uDFEE\\uDFF0-\\uDFFE]|\\uD83A[\\uDC00-\\uDCC4\\uDCD0-\\uDCD6\\uDD00-\\uDD4B\\uDD50-\\uDD59]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83E[\\uDFF0-\\uDFF9]|\\uD869[\\uDC00-\\uDEDF\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF39\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]|\\uD884[\\uDC00-\\uDF4A\\uDF50-\\uDFFF]|\\uD888[\\uDC00-\\uDFAF]|\\uDB40[\\uDD00-\\uDDEF])*", "y");
      JSXString = new RegExp("(['\"])(?:(?!\\1)[^])*(\\1)?", "y");
      JSXText = new RegExp("[^<>{}]+", "y");
      TokensPrecedingExpression = /^(?:[\/+-]|\.{3}|\?(?:InterpolationIn(?:JSX|Template)|NoLineTerminatorHere|NonExpressionParenEnd|UnaryIncDec))?$|[{}([,;<>=*%&|^!~?:]$/;
      TokensNotPrecedingObjectLiteral = /^(?:=>|[;\]){}]|else|\?(?:NoLineTerminatorHere|NonExpressionParenEnd))?$/;
      KeywordsWithExpressionAfter = /^(?:await|case|default|delete|do|else|instanceof|new|return|throw|typeof|void|yield)$/;
      KeywordsWithNoLineTerminatorAfter = /^(?:return|throw|yield)$/;
      Newline = RegExp(LineTerminatorSequence.source);
      jsTokensBABEL_8_BREAKINGTrue = function jsTokens(input, _temp) {
        var _ref = _temp === void 0 ? {} : _temp,
          _ref$jsx = _ref.jsx,
          jsx = _ref$jsx === void 0 ? false : _ref$jsx;
        return _regeneratorRuntime().mark(function _callee() {
          var braces, firstCodePoint, isExpression, lastIndex, lastSignificantToken, length, match, mode, nextLastIndex, nextLastSignificantToken, parenNesting, postfixIncDec, punctuator, stack;
          return _regeneratorRuntime().wrap(function _callee$(_context) {
            while (1) switch (_context.prev = _context.next) {
              case 0:
                length = input.length;
                lastIndex = 0;
                lastSignificantToken = "";
                stack = [{
                  tag: "JS"
                }];
                braces = [];
                parenNesting = 0;
                postfixIncDec = false;
              case 7:
                if (!(lastIndex < length)) {
                  _context.next = 230;
                  break;
                }
                mode = stack[stack.length - 1];
                _context.t0 = mode.tag;
                _context.next = _context.t0 === "JS" ? 12 : _context.t0 === "JSNonExpressionParen" ? 12 : _context.t0 === "InterpolationInTemplate" ? 12 : _context.t0 === "InterpolationInJSX" ? 12 : _context.t0 === "JSXTag" ? 135 : _context.t0 === "JSXTagEnd" ? 135 : _context.t0 === "JSXChildren" ? 171 : 194;
                break;
              case 12:
                if (!(input[lastIndex] === "/" && (TokensPrecedingExpression.test(lastSignificantToken) || KeywordsWithExpressionAfter.test(lastSignificantToken)))) {
                  _context.next = 21;
                  break;
                }
                RegularExpressionLiteral.lastIndex = lastIndex;
                if (!(match = RegularExpressionLiteral.exec(input))) {
                  _context.next = 21;
                  break;
                }
                lastIndex = RegularExpressionLiteral.lastIndex;
                lastSignificantToken = match[0];
                postfixIncDec = true;
                _context.next = 20;
                return {
                  type: "RegularExpressionLiteral",
                  value: match[0],
                  closed: match[1] !== void 0 && match[1] !== "\\"
                };
              case 20:
                return _context.abrupt("continue", 7);
              case 21:
                Punctuator.lastIndex = lastIndex;
                if (!(match = Punctuator.exec(input))) {
                  _context.next = 92;
                  break;
                }
                punctuator = match[0];
                nextLastIndex = Punctuator.lastIndex;
                nextLastSignificantToken = punctuator;
                _context.t1 = punctuator;
                _context.next = _context.t1 === "(" ? 29 : _context.t1 === ")" ? 33 : _context.t1 === "{" ? 37 : _context.t1 === "}" ? 42 : _context.t1 === "]" ? 73 : _context.t1 === "++" ? 75 : _context.t1 === "--" ? 75 : _context.t1 === "<" ? 77 : 86;
                break;
              case 29:
                if (lastSignificantToken === "?NonExpressionParenKeyword") {
                  stack.push({
                    tag: "JSNonExpressionParen",
                    nesting: parenNesting
                  });
                }
                parenNesting++;
                postfixIncDec = false;
                return _context.abrupt("break", 87);
              case 33:
                parenNesting--;
                postfixIncDec = true;
                if (mode.tag === "JSNonExpressionParen" && parenNesting === mode.nesting) {
                  stack.pop();
                  nextLastSignificantToken = "?NonExpressionParenEnd";
                  postfixIncDec = false;
                }
                return _context.abrupt("break", 87);
              case 37:
                Punctuator.lastIndex = 0;
                isExpression = !TokensNotPrecedingObjectLiteral.test(lastSignificantToken) && (TokensPrecedingExpression.test(lastSignificantToken) || KeywordsWithExpressionAfter.test(lastSignificantToken));
                braces.push(isExpression);
                postfixIncDec = false;
                return _context.abrupt("break", 87);
              case 42:
                _context.t2 = mode.tag;
                _context.next = _context.t2 === "InterpolationInTemplate" ? 45 : _context.t2 === "InterpolationInJSX" ? 63 : 70;
                break;
              case 45:
                if (!(braces.length === mode.nesting)) {
                  _context.next = 62;
                  break;
                }
                Template.lastIndex = lastIndex;
                match = Template.exec(input);
                lastIndex = Template.lastIndex;
                lastSignificantToken = match[0];
                if (!(match[1] === "${")) {
                  _context.next = 57;
                  break;
                }
                lastSignificantToken = "?InterpolationInTemplate";
                postfixIncDec = false;
                _context.next = 55;
                return {
                  type: "TemplateMiddle",
                  value: match[0]
                };
              case 55:
                _context.next = 61;
                break;
              case 57:
                stack.pop();
                postfixIncDec = true;
                _context.next = 61;
                return {
                  type: "TemplateTail",
                  value: match[0],
                  closed: match[1] === "`"
                };
              case 61:
                return _context.abrupt("continue", 7);
              case 62:
                return _context.abrupt("break", 70);
              case 63:
                if (!(braces.length === mode.nesting)) {
                  _context.next = 70;
                  break;
                }
                stack.pop();
                lastIndex += 1;
                lastSignificantToken = "}";
                _context.next = 69;
                return {
                  type: "JSXPunctuator",
                  value: "}"
                };
              case 69:
                return _context.abrupt("continue", 7);
              case 70:
                postfixIncDec = braces.pop();
                nextLastSignificantToken = postfixIncDec ? "?ExpressionBraceEnd" : "}";
                return _context.abrupt("break", 87);
              case 73:
                postfixIncDec = true;
                return _context.abrupt("break", 87);
              case 75:
                nextLastSignificantToken = postfixIncDec ? "?PostfixIncDec" : "?UnaryIncDec";
                return _context.abrupt("break", 87);
              case 77:
                if (!(jsx && (TokensPrecedingExpression.test(lastSignificantToken) || KeywordsWithExpressionAfter.test(lastSignificantToken)))) {
                  _context.next = 84;
                  break;
                }
                stack.push({
                  tag: "JSXTag"
                });
                lastIndex += 1;
                lastSignificantToken = "<";
                _context.next = 83;
                return {
                  type: "JSXPunctuator",
                  value: punctuator
                };
              case 83:
                return _context.abrupt("continue", 7);
              case 84:
                postfixIncDec = false;
                return _context.abrupt("break", 87);
              case 86:
                postfixIncDec = false;
              case 87:
                lastIndex = nextLastIndex;
                lastSignificantToken = nextLastSignificantToken;
                _context.next = 91;
                return {
                  type: "Punctuator",
                  value: punctuator
                };
              case 91:
                return _context.abrupt("continue", 7);
              case 92:
                Identifier.lastIndex = lastIndex;
                if (!(match = Identifier.exec(input))) {
                  _context.next = 102;
                  break;
                }
                lastIndex = Identifier.lastIndex;
                nextLastSignificantToken = match[0];
                switch (match[0]) {
                  case "for":
                  case "if":
                  case "while":
                  case "with":
                    if (lastSignificantToken !== "." && lastSignificantToken !== "?.") {
                      nextLastSignificantToken = "?NonExpressionParenKeyword";
                    }
                }
                lastSignificantToken = nextLastSignificantToken;
                postfixIncDec = !KeywordsWithExpressionAfter.test(match[0]);
                _context.next = 101;
                return {
                  type: match[1] === "#" ? "PrivateIdentifier" : "IdentifierName",
                  value: match[0]
                };
              case 101:
                return _context.abrupt("continue", 7);
              case 102:
                StringLiteral.lastIndex = lastIndex;
                if (!(match = StringLiteral.exec(input))) {
                  _context.next = 110;
                  break;
                }
                lastIndex = StringLiteral.lastIndex;
                lastSignificantToken = match[0];
                postfixIncDec = true;
                _context.next = 109;
                return {
                  type: "StringLiteral",
                  value: match[0],
                  closed: match[2] !== void 0
                };
              case 109:
                return _context.abrupt("continue", 7);
              case 110:
                NumericLiteral.lastIndex = lastIndex;
                if (!(match = NumericLiteral.exec(input))) {
                  _context.next = 118;
                  break;
                }
                lastIndex = NumericLiteral.lastIndex;
                lastSignificantToken = match[0];
                postfixIncDec = true;
                _context.next = 117;
                return {
                  type: "NumericLiteral",
                  value: match[0]
                };
              case 117:
                return _context.abrupt("continue", 7);
              case 118:
                Template.lastIndex = lastIndex;
                if (!(match = Template.exec(input))) {
                  _context.next = 134;
                  break;
                }
                lastIndex = Template.lastIndex;
                lastSignificantToken = match[0];
                if (!(match[1] === "${")) {
                  _context.next = 130;
                  break;
                }
                lastSignificantToken = "?InterpolationInTemplate";
                stack.push({
                  tag: "InterpolationInTemplate",
                  nesting: braces.length
                });
                postfixIncDec = false;
                _context.next = 128;
                return {
                  type: "TemplateHead",
                  value: match[0]
                };
              case 128:
                _context.next = 133;
                break;
              case 130:
                postfixIncDec = true;
                _context.next = 133;
                return {
                  type: "NoSubstitutionTemplate",
                  value: match[0],
                  closed: match[1] === "`"
                };
              case 133:
                return _context.abrupt("continue", 7);
              case 134:
                return _context.abrupt("break", 194);
              case 135:
                JSXPunctuator.lastIndex = lastIndex;
                if (!(match = JSXPunctuator.exec(input))) {
                  _context.next = 156;
                  break;
                }
                lastIndex = JSXPunctuator.lastIndex;
                nextLastSignificantToken = match[0];
                _context.t3 = match[0];
                _context.next = _context.t3 === "<" ? 142 : _context.t3 === ">" ? 144 : _context.t3 === "{" ? 147 : _context.t3 === "/" ? 151 : 152;
                break;
              case 142:
                stack.push({
                  tag: "JSXTag"
                });
                return _context.abrupt("break", 152);
              case 144:
                stack.pop();
                if (lastSignificantToken === "/" || mode.tag === "JSXTagEnd") {
                  nextLastSignificantToken = "?JSX";
                  postfixIncDec = true;
                } else {
                  stack.push({
                    tag: "JSXChildren"
                  });
                }
                return _context.abrupt("break", 152);
              case 147:
                stack.push({
                  tag: "InterpolationInJSX",
                  nesting: braces.length
                });
                nextLastSignificantToken = "?InterpolationInJSX";
                postfixIncDec = false;
                return _context.abrupt("break", 152);
              case 151:
                if (lastSignificantToken === "<") {
                  stack.pop();
                  if (stack[stack.length - 1].tag === "JSXChildren") {
                    stack.pop();
                  }
                  stack.push({
                    tag: "JSXTagEnd"
                  });
                }
              case 152:
                lastSignificantToken = nextLastSignificantToken;
                _context.next = 155;
                return {
                  type: "JSXPunctuator",
                  value: match[0]
                };
              case 155:
                return _context.abrupt("continue", 7);
              case 156:
                JSXIdentifier.lastIndex = lastIndex;
                if (!(match = JSXIdentifier.exec(input))) {
                  _context.next = 163;
                  break;
                }
                lastIndex = JSXIdentifier.lastIndex;
                lastSignificantToken = match[0];
                _context.next = 162;
                return {
                  type: "JSXIdentifier",
                  value: match[0]
                };
              case 162:
                return _context.abrupt("continue", 7);
              case 163:
                JSXString.lastIndex = lastIndex;
                if (!(match = JSXString.exec(input))) {
                  _context.next = 170;
                  break;
                }
                lastIndex = JSXString.lastIndex;
                lastSignificantToken = match[0];
                _context.next = 169;
                return {
                  type: "JSXString",
                  value: match[0],
                  closed: match[2] !== void 0
                };
              case 169:
                return _context.abrupt("continue", 7);
              case 170:
                return _context.abrupt("break", 194);
              case 171:
                JSXText.lastIndex = lastIndex;
                if (!(match = JSXText.exec(input))) {
                  _context.next = 178;
                  break;
                }
                lastIndex = JSXText.lastIndex;
                lastSignificantToken = match[0];
                _context.next = 177;
                return {
                  type: "JSXText",
                  value: match[0]
                };
              case 177:
                return _context.abrupt("continue", 7);
              case 178:
                _context.t4 = input[lastIndex];
                _context.next = _context.t4 === "<" ? 181 : _context.t4 === "{" ? 187 : 194;
                break;
              case 181:
                stack.push({
                  tag: "JSXTag"
                });
                lastIndex++;
                lastSignificantToken = "<";
                _context.next = 186;
                return {
                  type: "JSXPunctuator",
                  value: "<"
                };
              case 186:
                return _context.abrupt("continue", 7);
              case 187:
                stack.push({
                  tag: "InterpolationInJSX",
                  nesting: braces.length
                });
                lastIndex++;
                lastSignificantToken = "?InterpolationInJSX";
                postfixIncDec = false;
                _context.next = 193;
                return {
                  type: "JSXPunctuator",
                  value: "{"
                };
              case 193:
                return _context.abrupt("continue", 7);
              case 194:
                WhiteSpace.lastIndex = lastIndex;
                if (!(match = WhiteSpace.exec(input))) {
                  _context.next = 200;
                  break;
                }
                lastIndex = WhiteSpace.lastIndex;
                _context.next = 199;
                return {
                  type: "WhiteSpace",
                  value: match[0]
                };
              case 199:
                return _context.abrupt("continue", 7);
              case 200:
                LineTerminatorSequence.lastIndex = lastIndex;
                if (!(match = LineTerminatorSequence.exec(input))) {
                  _context.next = 208;
                  break;
                }
                lastIndex = LineTerminatorSequence.lastIndex;
                postfixIncDec = false;
                if (KeywordsWithNoLineTerminatorAfter.test(lastSignificantToken)) {
                  lastSignificantToken = "?NoLineTerminatorHere";
                }
                _context.next = 207;
                return {
                  type: "LineTerminatorSequence",
                  value: match[0]
                };
              case 207:
                return _context.abrupt("continue", 7);
              case 208:
                MultiLineComment.lastIndex = lastIndex;
                if (!(match = MultiLineComment.exec(input))) {
                  _context.next = 215;
                  break;
                }
                lastIndex = MultiLineComment.lastIndex;
                if (Newline.test(match[0])) {
                  postfixIncDec = false;
                  if (KeywordsWithNoLineTerminatorAfter.test(lastSignificantToken)) {
                    lastSignificantToken = "?NoLineTerminatorHere";
                  }
                }
                _context.next = 214;
                return {
                  type: "MultiLineComment",
                  value: match[0],
                  closed: match[1] !== void 0
                };
              case 214:
                return _context.abrupt("continue", 7);
              case 215:
                SingleLineComment.lastIndex = lastIndex;
                if (!(match = SingleLineComment.exec(input))) {
                  _context.next = 222;
                  break;
                }
                lastIndex = SingleLineComment.lastIndex;
                postfixIncDec = false;
                _context.next = 221;
                return {
                  type: "SingleLineComment",
                  value: match[0]
                };
              case 221:
                return _context.abrupt("continue", 7);
              case 222:
                firstCodePoint = String.fromCodePoint(input.codePointAt(lastIndex));
                lastIndex += firstCodePoint.length;
                lastSignificantToken = firstCodePoint;
                postfixIncDec = false;
                _context.next = 228;
                return {
                  type: mode.tag.startsWith("JSX") ? "JSXInvalid" : "Invalid",
                  value: firstCodePoint
                };
              case 228:
                _context.next = 7;
                break;
              case 230:
                return _context.abrupt("return", void 0);
              case 231:
              case "end":
                return _context.stop();
            }
          }, _callee);
        })();
      };
      return jsTokensBABEL_8_BREAKINGTrue;
    }
  
    var jsTokensBABEL_8_BREAKINGFalse = {};
  
    var hasRequiredJsTokensBABEL_8_BREAKINGFalse;
    function requireJsTokensBABEL_8_BREAKINGFalse() {
      if (hasRequiredJsTokensBABEL_8_BREAKINGFalse) return jsTokensBABEL_8_BREAKINGFalse;
      hasRequiredJsTokensBABEL_8_BREAKINGFalse = 1;
      Object.defineProperty(jsTokensBABEL_8_BREAKINGFalse, "__esModule", {
        value: true
      });
      jsTokensBABEL_8_BREAKINGFalse["default"] = /((['"])(?:(?!\2|\\).|\\(?:\r\n|[\s\S]))*(\2)?|`(?:[^`\\$]|\\[\s\S]|\$(?!\{)|\$\{(?:[^{}]|\{[^}]*\}?)*\}?)*(`)?)|(\/\/.*)|(\/\*(?:[^*]|\*(?!\/))*(\*\/)?)|(\/(?!\*)(?:\[(?:(?![\]\\]).|\\.)*\]|(?![\/\]\\]).|\\.)+\/(?:(?!\s*(?:\b|[\u0080-\uFFFF$\\'"~({]|[+\-!](?!=)|\.?\d))|[gmiyus]{1,6}\b(?![\u0080-\uFFFF$\\]|\s*(?:[+\-*%&|^<>!=?({]|\/(?![\/*])))))|(0[xX][\da-fA-F]+|0[oO][0-7]+|0[bB][01]+|(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?)|((?!\d)(?:(?!\s)[$\w\u0080-\uFFFF]|\\u[\da-fA-F]{4}|\\u\{[\da-fA-F]+\})+)|(--|\+\+|&&|\|\||=>|\.{3}|(?:[+\-\/%&|^]|\*{1,2}|<{1,2}|>{1,3}|!=?|={1,2})=?|[?~.,:;[\](){}])|(\s+)|(^$|[\s\S])/g;
      jsTokensBABEL_8_BREAKINGFalse.matchToToken = function (match) {
        var token = {
          type: "invalid",
          value: match[0],
          closed: undefined
        };
        if (match[1]) token.type = "string", token.closed = !!(match[3] || match[4]);else if (match[5]) token.type = "comment";else if (match[6]) token.type = "comment", token.closed = !!match[7];else if (match[8]) token.type = "regex";else if (match[9]) token.type = "number";else if (match[10]) token.type = "name";else if (match[11]) token.type = "punctuator";else if (match[12]) token.type = "whitespace";
        return token;
      };
      return jsTokensBABEL_8_BREAKINGFalse;
    }
  
    function bool$7(value) {
      if (value == null) return false;
      return value && value !== "false" && value !== "0";
    }
    var jsTokens = bool$7(browser$1$1.env["BABEL_8_BREAKING"]) ? requireJsTokensBABEL_8_BREAKINGTrue() : requireJsTokensBABEL_8_BREAKINGFalse();
  
    var chalk = {exports: {}};
  
    var matchOperatorsRe = /[|\\{}()[\]^$+*?.]/g;
    var escapeStringRegexp = function escapeStringRegexp(str) {
      if (typeof str !== 'string') {
        throw new TypeError('Expected a string');
      }
      return str.replace(matchOperatorsRe, '\\$&');
    };
  
    var ansiStyles = {exports: {}};
  
    var conversions$2 = {exports: {}};
  
    var colorName = {
      "aliceblue": [240, 248, 255],
      "antiquewhite": [250, 235, 215],
      "aqua": [0, 255, 255],
      "aquamarine": [127, 255, 212],
      "azure": [240, 255, 255],
      "beige": [245, 245, 220],
      "bisque": [255, 228, 196],
      "black": [0, 0, 0],
      "blanchedalmond": [255, 235, 205],
      "blue": [0, 0, 255],
      "blueviolet": [138, 43, 226],
      "brown": [165, 42, 42],
      "burlywood": [222, 184, 135],
      "cadetblue": [95, 158, 160],
      "chartreuse": [127, 255, 0],
      "chocolate": [210, 105, 30],
      "coral": [255, 127, 80],
      "cornflowerblue": [100, 149, 237],
      "cornsilk": [255, 248, 220],
      "crimson": [220, 20, 60],
      "cyan": [0, 255, 255],
      "darkblue": [0, 0, 139],
      "darkcyan": [0, 139, 139],
      "darkgoldenrod": [184, 134, 11],
      "darkgray": [169, 169, 169],
      "darkgreen": [0, 100, 0],
      "darkgrey": [169, 169, 169],
      "darkkhaki": [189, 183, 107],
      "darkmagenta": [139, 0, 139],
      "darkolivegreen": [85, 107, 47],
      "darkorange": [255, 140, 0],
      "darkorchid": [153, 50, 204],
      "darkred": [139, 0, 0],
      "darksalmon": [233, 150, 122],
      "darkseagreen": [143, 188, 143],
      "darkslateblue": [72, 61, 139],
      "darkslategray": [47, 79, 79],
      "darkslategrey": [47, 79, 79],
      "darkturquoise": [0, 206, 209],
      "darkviolet": [148, 0, 211],
      "deeppink": [255, 20, 147],
      "deepskyblue": [0, 191, 255],
      "dimgray": [105, 105, 105],
      "dimgrey": [105, 105, 105],
      "dodgerblue": [30, 144, 255],
      "firebrick": [178, 34, 34],
      "floralwhite": [255, 250, 240],
      "forestgreen": [34, 139, 34],
      "fuchsia": [255, 0, 255],
      "gainsboro": [220, 220, 220],
      "ghostwhite": [248, 248, 255],
      "gold": [255, 215, 0],
      "goldenrod": [218, 165, 32],
      "gray": [128, 128, 128],
      "green": [0, 128, 0],
      "greenyellow": [173, 255, 47],
      "grey": [128, 128, 128],
      "honeydew": [240, 255, 240],
      "hotpink": [255, 105, 180],
      "indianred": [205, 92, 92],
      "indigo": [75, 0, 130],
      "ivory": [255, 255, 240],
      "khaki": [240, 230, 140],
      "lavender": [230, 230, 250],
      "lavenderblush": [255, 240, 245],
      "lawngreen": [124, 252, 0],
      "lemonchiffon": [255, 250, 205],
      "lightblue": [173, 216, 230],
      "lightcoral": [240, 128, 128],
      "lightcyan": [224, 255, 255],
      "lightgoldenrodyellow": [250, 250, 210],
      "lightgray": [211, 211, 211],
      "lightgreen": [144, 238, 144],
      "lightgrey": [211, 211, 211],
      "lightpink": [255, 182, 193],
      "lightsalmon": [255, 160, 122],
      "lightseagreen": [32, 178, 170],
      "lightskyblue": [135, 206, 250],
      "lightslategray": [119, 136, 153],
      "lightslategrey": [119, 136, 153],
      "lightsteelblue": [176, 196, 222],
      "lightyellow": [255, 255, 224],
      "lime": [0, 255, 0],
      "limegreen": [50, 205, 50],
      "linen": [250, 240, 230],
      "magenta": [255, 0, 255],
      "maroon": [128, 0, 0],
      "mediumaquamarine": [102, 205, 170],
      "mediumblue": [0, 0, 205],
      "mediumorchid": [186, 85, 211],
      "mediumpurple": [147, 112, 219],
      "mediumseagreen": [60, 179, 113],
      "mediumslateblue": [123, 104, 238],
      "mediumspringgreen": [0, 250, 154],
      "mediumturquoise": [72, 209, 204],
      "mediumvioletred": [199, 21, 133],
      "midnightblue": [25, 25, 112],
      "mintcream": [245, 255, 250],
      "mistyrose": [255, 228, 225],
      "moccasin": [255, 228, 181],
      "navajowhite": [255, 222, 173],
      "navy": [0, 0, 128],
      "oldlace": [253, 245, 230],
      "olive": [128, 128, 0],
      "olivedrab": [107, 142, 35],
      "orange": [255, 165, 0],
      "orangered": [255, 69, 0],
      "orchid": [218, 112, 214],
      "palegoldenrod": [238, 232, 170],
      "palegreen": [152, 251, 152],
      "paleturquoise": [175, 238, 238],
      "palevioletred": [219, 112, 147],
      "papayawhip": [255, 239, 213],
      "peachpuff": [255, 218, 185],
      "peru": [205, 133, 63],
      "pink": [255, 192, 203],
      "plum": [221, 160, 221],
      "powderblue": [176, 224, 230],
      "purple": [128, 0, 128],
      "rebeccapurple": [102, 51, 153],
      "red": [255, 0, 0],
      "rosybrown": [188, 143, 143],
      "royalblue": [65, 105, 225],
      "saddlebrown": [139, 69, 19],
      "salmon": [250, 128, 114],
      "sandybrown": [244, 164, 96],
      "seagreen": [46, 139, 87],
      "seashell": [255, 245, 238],
      "sienna": [160, 82, 45],
      "silver": [192, 192, 192],
      "skyblue": [135, 206, 235],
      "slateblue": [106, 90, 205],
      "slategray": [112, 128, 144],
      "slategrey": [112, 128, 144],
      "snow": [255, 250, 250],
      "springgreen": [0, 255, 127],
      "steelblue": [70, 130, 180],
      "tan": [210, 180, 140],
      "teal": [0, 128, 128],
      "thistle": [216, 191, 216],
      "tomato": [255, 99, 71],
      "turquoise": [64, 224, 208],
      "violet": [238, 130, 238],
      "wheat": [245, 222, 179],
      "white": [255, 255, 255],
      "whitesmoke": [245, 245, 245],
      "yellow": [255, 255, 0],
      "yellowgreen": [154, 205, 50]
    };
  
    var cssKeywords = colorName;
    var reverseKeywords = {};
    for (var key in cssKeywords) {
      if (cssKeywords.hasOwnProperty(key)) {
        reverseKeywords[cssKeywords[key]] = key;
      }
    }
    var convert$1 = conversions$2.exports = {
      rgb: {
        channels: 3,
        labels: 'rgb'
      },
      hsl: {
        channels: 3,
        labels: 'hsl'
      },
      hsv: {
        channels: 3,
        labels: 'hsv'
      },
      hwb: {
        channels: 3,
        labels: 'hwb'
      },
      cmyk: {
        channels: 4,
        labels: 'cmyk'
      },
      xyz: {
        channels: 3,
        labels: 'xyz'
      },
      lab: {
        channels: 3,
        labels: 'lab'
      },
      lch: {
        channels: 3,
        labels: 'lch'
      },
      hex: {
        channels: 1,
        labels: ['hex']
      },
      keyword: {
        channels: 1,
        labels: ['keyword']
      },
      ansi16: {
        channels: 1,
        labels: ['ansi16']
      },
      ansi256: {
        channels: 1,
        labels: ['ansi256']
      },
      hcg: {
        channels: 3,
        labels: ['h', 'c', 'g']
      },
      apple: {
        channels: 3,
        labels: ['r16', 'g16', 'b16']
      },
      gray: {
        channels: 1,
        labels: ['gray']
      }
    };
    for (var model in convert$1) {
      if (convert$1.hasOwnProperty(model)) {
        if (!('channels' in convert$1[model])) {
          throw new Error('missing channels property: ' + model);
        }
        if (!('labels' in convert$1[model])) {
          throw new Error('missing channel labels property: ' + model);
        }
        if (convert$1[model].labels.length !== convert$1[model].channels) {
          throw new Error('channel and label counts mismatch: ' + model);
        }
        var channels = convert$1[model].channels;
        var labels = convert$1[model].labels;
        delete convert$1[model].channels;
        delete convert$1[model].labels;
        Object.defineProperty(convert$1[model], 'channels', {
          value: channels
        });
        Object.defineProperty(convert$1[model], 'labels', {
          value: labels
        });
      }
    }
    convert$1.rgb.hsl = function (rgb) {
      var r = rgb[0] / 255;
      var g = rgb[1] / 255;
      var b = rgb[2] / 255;
      var min = Math.min(r, g, b);
      var max = Math.max(r, g, b);
      var delta = max - min;
      var h;
      var s;
      var l;
      if (max === min) {
        h = 0;
      } else if (r === max) {
        h = (g - b) / delta;
      } else if (g === max) {
        h = 2 + (b - r) / delta;
      } else if (b === max) {
        h = 4 + (r - g) / delta;
      }
      h = Math.min(h * 60, 360);
      if (h < 0) {
        h += 360;
      }
      l = (min + max) / 2;
      if (max === min) {
        s = 0;
      } else if (l <= 0.5) {
        s = delta / (max + min);
      } else {
        s = delta / (2 - max - min);
      }
      return [h, s * 100, l * 100];
    };
    convert$1.rgb.hsv = function (rgb) {
      var rdif;
      var gdif;
      var bdif;
      var h;
      var s;
      var r = rgb[0] / 255;
      var g = rgb[1] / 255;
      var b = rgb[2] / 255;
      var v = Math.max(r, g, b);
      var diff = v - Math.min(r, g, b);
      var diffc = function diffc(c) {
        return (v - c) / 6 / diff + 1 / 2;
      };
      if (diff === 0) {
        h = s = 0;
      } else {
        s = diff / v;
        rdif = diffc(r);
        gdif = diffc(g);
        bdif = diffc(b);
        if (r === v) {
          h = bdif - gdif;
        } else if (g === v) {
          h = 1 / 3 + rdif - bdif;
        } else if (b === v) {
          h = 2 / 3 + gdif - rdif;
        }
        if (h < 0) {
          h += 1;
        } else if (h > 1) {
          h -= 1;
        }
      }
      return [h * 360, s * 100, v * 100];
    };
    convert$1.rgb.hwb = function (rgb) {
      var r = rgb[0];
      var g = rgb[1];
      var b = rgb[2];
      var h = convert$1.rgb.hsl(rgb)[0];
      var w = 1 / 255 * Math.min(r, Math.min(g, b));
      b = 1 - 1 / 255 * Math.max(r, Math.max(g, b));
      return [h, w * 100, b * 100];
    };
    convert$1.rgb.cmyk = function (rgb) {
      var r = rgb[0] / 255;
      var g = rgb[1] / 255;
      var b = rgb[2] / 255;
      var c;
      var m;
      var y;
      var k;
      k = Math.min(1 - r, 1 - g, 1 - b);
      c = (1 - r - k) / (1 - k) || 0;
      m = (1 - g - k) / (1 - k) || 0;
      y = (1 - b - k) / (1 - k) || 0;
      return [c * 100, m * 100, y * 100, k * 100];
    };
    function comparativeDistance(x, y) {
      return Math.pow(x[0] - y[0], 2) + Math.pow(x[1] - y[1], 2) + Math.pow(x[2] - y[2], 2);
    }
    convert$1.rgb.keyword = function (rgb) {
      var reversed = reverseKeywords[rgb];
      if (reversed) {
        return reversed;
      }
      var currentClosestDistance = Infinity;
      var currentClosestKeyword;
      for (var keyword in cssKeywords) {
        if (cssKeywords.hasOwnProperty(keyword)) {
          var value = cssKeywords[keyword];
          var distance = comparativeDistance(rgb, value);
          if (distance < currentClosestDistance) {
            currentClosestDistance = distance;
            currentClosestKeyword = keyword;
          }
        }
      }
      return currentClosestKeyword;
    };
    convert$1.keyword.rgb = function (keyword) {
      return cssKeywords[keyword];
    };
    convert$1.rgb.xyz = function (rgb) {
      var r = rgb[0] / 255;
      var g = rgb[1] / 255;
      var b = rgb[2] / 255;
      r = r > 0.04045 ? Math.pow((r + 0.055) / 1.055, 2.4) : r / 12.92;
      g = g > 0.04045 ? Math.pow((g + 0.055) / 1.055, 2.4) : g / 12.92;
      b = b > 0.04045 ? Math.pow((b + 0.055) / 1.055, 2.4) : b / 12.92;
      var x = r * 0.4124 + g * 0.3576 + b * 0.1805;
      var y = r * 0.2126 + g * 0.7152 + b * 0.0722;
      var z = r * 0.0193 + g * 0.1192 + b * 0.9505;
      return [x * 100, y * 100, z * 100];
    };
    convert$1.rgb.lab = function (rgb) {
      var xyz = convert$1.rgb.xyz(rgb);
      var x = xyz[0];
      var y = xyz[1];
      var z = xyz[2];
      var l;
      var a;
      var b;
      x /= 95.047;
      y /= 100;
      z /= 108.883;
      x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;
      y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;
      z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;
      l = 116 * y - 16;
      a = 500 * (x - y);
      b = 200 * (y - z);
      return [l, a, b];
    };
    convert$1.hsl.rgb = function (hsl) {
      var h = hsl[0] / 360;
      var s = hsl[1] / 100;
      var l = hsl[2] / 100;
      var t1;
      var t2;
      var t3;
      var rgb;
      var val;
      if (s === 0) {
        val = l * 255;
        return [val, val, val];
      }
      if (l < 0.5) {
        t2 = l * (1 + s);
      } else {
        t2 = l + s - l * s;
      }
      t1 = 2 * l - t2;
      rgb = [0, 0, 0];
      for (var i = 0; i < 3; i++) {
        t3 = h + 1 / 3 * -(i - 1);
        if (t3 < 0) {
          t3++;
        }
        if (t3 > 1) {
          t3--;
        }
        if (6 * t3 < 1) {
          val = t1 + (t2 - t1) * 6 * t3;
        } else if (2 * t3 < 1) {
          val = t2;
        } else if (3 * t3 < 2) {
          val = t1 + (t2 - t1) * (2 / 3 - t3) * 6;
        } else {
          val = t1;
        }
        rgb[i] = val * 255;
      }
      return rgb;
    };
    convert$1.hsl.hsv = function (hsl) {
      var h = hsl[0];
      var s = hsl[1] / 100;
      var l = hsl[2] / 100;
      var smin = s;
      var lmin = Math.max(l, 0.01);
      var sv;
      var v;
      l *= 2;
      s *= l <= 1 ? l : 2 - l;
      smin *= lmin <= 1 ? lmin : 2 - lmin;
      v = (l + s) / 2;
      sv = l === 0 ? 2 * smin / (lmin + smin) : 2 * s / (l + s);
      return [h, sv * 100, v * 100];
    };
    convert$1.hsv.rgb = function (hsv) {
      var h = hsv[0] / 60;
      var s = hsv[1] / 100;
      var v = hsv[2] / 100;
      var hi = Math.floor(h) % 6;
      var f = h - Math.floor(h);
      var p = 255 * v * (1 - s);
      var q = 255 * v * (1 - s * f);
      var t = 255 * v * (1 - s * (1 - f));
      v *= 255;
      switch (hi) {
        case 0:
          return [v, t, p];
        case 1:
          return [q, v, p];
        case 2:
          return [p, v, t];
        case 3:
          return [p, q, v];
        case 4:
          return [t, p, v];
        case 5:
          return [v, p, q];
      }
    };
    convert$1.hsv.hsl = function (hsv) {
      var h = hsv[0];
      var s = hsv[1] / 100;
      var v = hsv[2] / 100;
      var vmin = Math.max(v, 0.01);
      var lmin;
      var sl;
      var l;
      l = (2 - s) * v;
      lmin = (2 - s) * vmin;
      sl = s * vmin;
      sl /= lmin <= 1 ? lmin : 2 - lmin;
      sl = sl || 0;
      l /= 2;
      return [h, sl * 100, l * 100];
    };
    convert$1.hwb.rgb = function (hwb) {
      var h = hwb[0] / 360;
      var wh = hwb[1] / 100;
      var bl = hwb[2] / 100;
      var ratio = wh + bl;
      var i;
      var v;
      var f;
      var n;
      if (ratio > 1) {
        wh /= ratio;
        bl /= ratio;
      }
      i = Math.floor(6 * h);
      v = 1 - bl;
      f = 6 * h - i;
      if ((i & 0x01) !== 0) {
        f = 1 - f;
      }
      n = wh + f * (v - wh);
      var r;
      var g;
      var b;
      switch (i) {
        default:
        case 6:
        case 0:
          r = v;
          g = n;
          b = wh;
          break;
        case 1:
          r = n;
          g = v;
          b = wh;
          break;
        case 2:
          r = wh;
          g = v;
          b = n;
          break;
        case 3:
          r = wh;
          g = n;
          b = v;
          break;
        case 4:
          r = n;
          g = wh;
          b = v;
          break;
        case 5:
          r = v;
          g = wh;
          b = n;
          break;
      }
      return [r * 255, g * 255, b * 255];
    };
    convert$1.cmyk.rgb = function (cmyk) {
      var c = cmyk[0] / 100;
      var m = cmyk[1] / 100;
      var y = cmyk[2] / 100;
      var k = cmyk[3] / 100;
      var r;
      var g;
      var b;
      r = 1 - Math.min(1, c * (1 - k) + k);
      g = 1 - Math.min(1, m * (1 - k) + k);
      b = 1 - Math.min(1, y * (1 - k) + k);
      return [r * 255, g * 255, b * 255];
    };
    convert$1.xyz.rgb = function (xyz) {
      var x = xyz[0] / 100;
      var y = xyz[1] / 100;
      var z = xyz[2] / 100;
      var r;
      var g;
      var b;
      r = x * 3.2406 + y * -1.5372 + z * -0.4986;
      g = x * -0.9689 + y * 1.8758 + z * 0.0415;
      b = x * 0.0557 + y * -0.2040 + z * 1.0570;
      r = r > 0.0031308 ? 1.055 * Math.pow(r, 1.0 / 2.4) - 0.055 : r * 12.92;
      g = g > 0.0031308 ? 1.055 * Math.pow(g, 1.0 / 2.4) - 0.055 : g * 12.92;
      b = b > 0.0031308 ? 1.055 * Math.pow(b, 1.0 / 2.4) - 0.055 : b * 12.92;
      r = Math.min(Math.max(0, r), 1);
      g = Math.min(Math.max(0, g), 1);
      b = Math.min(Math.max(0, b), 1);
      return [r * 255, g * 255, b * 255];
    };
    convert$1.xyz.lab = function (xyz) {
      var x = xyz[0];
      var y = xyz[1];
      var z = xyz[2];
      var l;
      var a;
      var b;
      x /= 95.047;
      y /= 100;
      z /= 108.883;
      x = x > 0.008856 ? Math.pow(x, 1 / 3) : 7.787 * x + 16 / 116;
      y = y > 0.008856 ? Math.pow(y, 1 / 3) : 7.787 * y + 16 / 116;
      z = z > 0.008856 ? Math.pow(z, 1 / 3) : 7.787 * z + 16 / 116;
      l = 116 * y - 16;
      a = 500 * (x - y);
      b = 200 * (y - z);
      return [l, a, b];
    };
    convert$1.lab.xyz = function (lab) {
      var l = lab[0];
      var a = lab[1];
      var b = lab[2];
      var x;
      var y;
      var z;
      y = (l + 16) / 116;
      x = a / 500 + y;
      z = y - b / 200;
      var y2 = Math.pow(y, 3);
      var x2 = Math.pow(x, 3);
      var z2 = Math.pow(z, 3);
      y = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;
      x = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;
      z = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;
      x *= 95.047;
      y *= 100;
      z *= 108.883;
      return [x, y, z];
    };
    convert$1.lab.lch = function (lab) {
      var l = lab[0];
      var a = lab[1];
      var b = lab[2];
      var hr;
      var h;
      var c;
      hr = Math.atan2(b, a);
      h = hr * 360 / 2 / Math.PI;
      if (h < 0) {
        h += 360;
      }
      c = Math.sqrt(a * a + b * b);
      return [l, c, h];
    };
    convert$1.lch.lab = function (lch) {
      var l = lch[0];
      var c = lch[1];
      var h = lch[2];
      var a;
      var b;
      var hr;
      hr = h / 360 * 2 * Math.PI;
      a = c * Math.cos(hr);
      b = c * Math.sin(hr);
      return [l, a, b];
    };
    convert$1.rgb.ansi16 = function (args) {
      var r = args[0];
      var g = args[1];
      var b = args[2];
      var value = 1 in arguments ? arguments[1] : convert$1.rgb.hsv(args)[2];
      value = Math.round(value / 50);
      if (value === 0) {
        return 30;
      }
      var ansi = 30 + (Math.round(b / 255) << 2 | Math.round(g / 255) << 1 | Math.round(r / 255));
      if (value === 2) {
        ansi += 60;
      }
      return ansi;
    };
    convert$1.hsv.ansi16 = function (args) {
      return convert$1.rgb.ansi16(convert$1.hsv.rgb(args), args[2]);
    };
    convert$1.rgb.ansi256 = function (args) {
      var r = args[0];
      var g = args[1];
      var b = args[2];
      if (r === g && g === b) {
        if (r < 8) {
          return 16;
        }
        if (r > 248) {
          return 231;
        }
        return Math.round((r - 8) / 247 * 24) + 232;
      }
      var ansi = 16 + 36 * Math.round(r / 255 * 5) + 6 * Math.round(g / 255 * 5) + Math.round(b / 255 * 5);
      return ansi;
    };
    convert$1.ansi16.rgb = function (args) {
      var color = args % 10;
      if (color === 0 || color === 7) {
        if (args > 50) {
          color += 3.5;
        }
        color = color / 10.5 * 255;
        return [color, color, color];
      }
      var mult = (~~(args > 50) + 1) * 0.5;
      var r = (color & 1) * mult * 255;
      var g = (color >> 1 & 1) * mult * 255;
      var b = (color >> 2 & 1) * mult * 255;
      return [r, g, b];
    };
    convert$1.ansi256.rgb = function (args) {
      if (args >= 232) {
        var c = (args - 232) * 10 + 8;
        return [c, c, c];
      }
      args -= 16;
      var rem;
      var r = Math.floor(args / 36) / 5 * 255;
      var g = Math.floor((rem = args % 36) / 6) / 5 * 255;
      var b = rem % 6 / 5 * 255;
      return [r, g, b];
    };
    convert$1.rgb.hex = function (args) {
      var integer = ((Math.round(args[0]) & 0xFF) << 16) + ((Math.round(args[1]) & 0xFF) << 8) + (Math.round(args[2]) & 0xFF);
      var string = integer.toString(16).toUpperCase();
      return '000000'.substring(string.length) + string;
    };
    convert$1.hex.rgb = function (args) {
      var match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);
      if (!match) {
        return [0, 0, 0];
      }
      var colorString = match[0];
      if (match[0].length === 3) {
        colorString = colorString.split('').map(function (_char) {
          return _char + _char;
        }).join('');
      }
      var integer = parseInt(colorString, 16);
      var r = integer >> 16 & 0xFF;
      var g = integer >> 8 & 0xFF;
      var b = integer & 0xFF;
      return [r, g, b];
    };
    convert$1.rgb.hcg = function (rgb) {
      var r = rgb[0] / 255;
      var g = rgb[1] / 255;
      var b = rgb[2] / 255;
      var max = Math.max(Math.max(r, g), b);
      var min = Math.min(Math.min(r, g), b);
      var chroma = max - min;
      var grayscale;
      var hue;
      if (chroma < 1) {
        grayscale = min / (1 - chroma);
      } else {
        grayscale = 0;
      }
      if (chroma <= 0) {
        hue = 0;
      } else if (max === r) {
        hue = (g - b) / chroma % 6;
      } else if (max === g) {
        hue = 2 + (b - r) / chroma;
      } else {
        hue = 4 + (r - g) / chroma + 4;
      }
      hue /= 6;
      hue %= 1;
      return [hue * 360, chroma * 100, grayscale * 100];
    };
    convert$1.hsl.hcg = function (hsl) {
      var s = hsl[1] / 100;
      var l = hsl[2] / 100;
      var c = 1;
      var f = 0;
      if (l < 0.5) {
        c = 2.0 * s * l;
      } else {
        c = 2.0 * s * (1.0 - l);
      }
      if (c < 1.0) {
        f = (l - 0.5 * c) / (1.0 - c);
      }
      return [hsl[0], c * 100, f * 100];
    };
    convert$1.hsv.hcg = function (hsv) {
      var s = hsv[1] / 100;
      var v = hsv[2] / 100;
      var c = s * v;
      var f = 0;
      if (c < 1.0) {
        f = (v - c) / (1 - c);
      }
      return [hsv[0], c * 100, f * 100];
    };
    convert$1.hcg.rgb = function (hcg) {
      var h = hcg[0] / 360;
      var c = hcg[1] / 100;
      var g = hcg[2] / 100;
      if (c === 0.0) {
        return [g * 255, g * 255, g * 255];
      }
      var pure = [0, 0, 0];
      var hi = h % 1 * 6;
      var v = hi % 1;
      var w = 1 - v;
      var mg = 0;
      switch (Math.floor(hi)) {
        case 0:
          pure[0] = 1;
          pure[1] = v;
          pure[2] = 0;
          break;
        case 1:
          pure[0] = w;
          pure[1] = 1;
          pure[2] = 0;
          break;
        case 2:
          pure[0] = 0;
          pure[1] = 1;
          pure[2] = v;
          break;
        case 3:
          pure[0] = 0;
          pure[1] = w;
          pure[2] = 1;
          break;
        case 4:
          pure[0] = v;
          pure[1] = 0;
          pure[2] = 1;
          break;
        default:
          pure[0] = 1;
          pure[1] = 0;
          pure[2] = w;
      }
      mg = (1.0 - c) * g;
      return [(c * pure[0] + mg) * 255, (c * pure[1] + mg) * 255, (c * pure[2] + mg) * 255];
    };
    convert$1.hcg.hsv = function (hcg) {
      var c = hcg[1] / 100;
      var g = hcg[2] / 100;
      var v = c + g * (1.0 - c);
      var f = 0;
      if (v > 0.0) {
        f = c / v;
      }
      return [hcg[0], f * 100, v * 100];
    };
    convert$1.hcg.hsl = function (hcg) {
      var c = hcg[1] / 100;
      var g = hcg[2] / 100;
      var l = g * (1.0 - c) + 0.5 * c;
      var s = 0;
      if (l > 0.0 && l < 0.5) {
        s = c / (2 * l);
      } else if (l >= 0.5 && l < 1.0) {
        s = c / (2 * (1 - l));
      }
      return [hcg[0], s * 100, l * 100];
    };
    convert$1.hcg.hwb = function (hcg) {
      var c = hcg[1] / 100;
      var g = hcg[2] / 100;
      var v = c + g * (1.0 - c);
      return [hcg[0], (v - c) * 100, (1 - v) * 100];
    };
    convert$1.hwb.hcg = function (hwb) {
      var w = hwb[1] / 100;
      var b = hwb[2] / 100;
      var v = 1 - b;
      var c = v - w;
      var g = 0;
      if (c < 1) {
        g = (v - c) / (1 - c);
      }
      return [hwb[0], c * 100, g * 100];
    };
    convert$1.apple.rgb = function (apple) {
      return [apple[0] / 65535 * 255, apple[1] / 65535 * 255, apple[2] / 65535 * 255];
    };
    convert$1.rgb.apple = function (rgb) {
      return [rgb[0] / 255 * 65535, rgb[1] / 255 * 65535, rgb[2] / 255 * 65535];
    };
    convert$1.gray.rgb = function (args) {
      return [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];
    };
    convert$1.gray.hsl = convert$1.gray.hsv = function (args) {
      return [0, 0, args[0]];
    };
    convert$1.gray.hwb = function (gray) {
      return [0, 100, gray[0]];
    };
    convert$1.gray.cmyk = function (gray) {
      return [0, 0, 0, gray[0]];
    };
    convert$1.gray.lab = function (gray) {
      return [gray[0], 0, 0];
    };
    convert$1.gray.hex = function (gray) {
      var val = Math.round(gray[0] / 100 * 255) & 0xFF;
      var integer = (val << 16) + (val << 8) + val;
      var string = integer.toString(16).toUpperCase();
      return '000000'.substring(string.length) + string;
    };
    convert$1.rgb.gray = function (rgb) {
      var val = (rgb[0] + rgb[1] + rgb[2]) / 3;
      return [val / 255 * 100];
    };
  
    var conversions$1 = conversions$2.exports;
    function buildGraph() {
      var graph = {};
      var models = Object.keys(conversions$1);
      for (var len = models.length, i = 0; i < len; i++) {
        graph[models[i]] = {
          distance: -1,
          parent: null
        };
      }
      return graph;
    }
    function deriveBFS(fromModel) {
      var graph = buildGraph();
      var queue = [fromModel];
      graph[fromModel].distance = 0;
      while (queue.length) {
        var current = queue.pop();
        var adjacents = Object.keys(conversions$1[current]);
        for (var len = adjacents.length, i = 0; i < len; i++) {
          var adjacent = adjacents[i];
          var node = graph[adjacent];
          if (node.distance === -1) {
            node.distance = graph[current].distance + 1;
            node.parent = current;
            queue.unshift(adjacent);
          }
        }
      }
      return graph;
    }
    function link(from, to) {
      return function (args) {
        return to(from(args));
      };
    }
    function wrapConversion(toModel, graph) {
      var path = [graph[toModel].parent, toModel];
      var fn = conversions$1[graph[toModel].parent][toModel];
      var cur = graph[toModel].parent;
      while (graph[cur].parent) {
        path.unshift(graph[cur].parent);
        fn = link(conversions$1[graph[cur].parent][cur], fn);
        cur = graph[cur].parent;
      }
      fn.conversion = path;
      return fn;
    }
    var route$1 = function route(fromModel) {
      var graph = deriveBFS(fromModel);
      var conversion = {};
      var models = Object.keys(graph);
      for (var len = models.length, i = 0; i < len; i++) {
        var toModel = models[i];
        var node = graph[toModel];
        if (node.parent === null) {
          continue;
        }
        conversion[toModel] = wrapConversion(toModel, graph);
      }
      return conversion;
    };
  
    var conversions = conversions$2.exports;
    var route = route$1;
    var convert = {};
    var models = Object.keys(conversions);
    function wrapRaw(fn) {
      var wrappedFn = function wrappedFn(args) {
        if (args === undefined || args === null) {
          return args;
        }
        if (arguments.length > 1) {
          args = Array.prototype.slice.call(arguments);
        }
        return fn(args);
      };
      if ('conversion' in fn) {
        wrappedFn.conversion = fn.conversion;
      }
      return wrappedFn;
    }
    function wrapRounded(fn) {
      var wrappedFn = function wrappedFn(args) {
        if (args === undefined || args === null) {
          return args;
        }
        if (arguments.length > 1) {
          args = Array.prototype.slice.call(arguments);
        }
        var result = fn(args);
        if (typeof result === 'object') {
          for (var len = result.length, i = 0; i < len; i++) {
            result[i] = Math.round(result[i]);
          }
        }
        return result;
      };
      if ('conversion' in fn) {
        wrappedFn.conversion = fn.conversion;
      }
      return wrappedFn;
    }
    models.forEach(function (fromModel) {
      convert[fromModel] = {};
      Object.defineProperty(convert[fromModel], 'channels', {
        value: conversions[fromModel].channels
      });
      Object.defineProperty(convert[fromModel], 'labels', {
        value: conversions[fromModel].labels
      });
      var routes = route(fromModel);
      var routeModels = Object.keys(routes);
      routeModels.forEach(function (toModel) {
        var fn = routes[toModel];
        convert[fromModel][toModel] = wrapRounded(fn);
        convert[fromModel][toModel].raw = wrapRaw(fn);
      });
    });
    var colorConvert = convert;
  
    (function (module) {
  
      var colorConvert$1 = colorConvert;
      var wrapAnsi16 = function wrapAnsi16(fn, offset) {
        return function () {
          var code = fn.apply(colorConvert$1, arguments);
          return "\x1B[" + (code + offset) + "m";
        };
      };
      var wrapAnsi256 = function wrapAnsi256(fn, offset) {
        return function () {
          var code = fn.apply(colorConvert$1, arguments);
          return "\x1B[" + (38 + offset) + ";5;" + code + "m";
        };
      };
      var wrapAnsi16m = function wrapAnsi16m(fn, offset) {
        return function () {
          var rgb = fn.apply(colorConvert$1, arguments);
          return "\x1B[" + (38 + offset) + ";2;" + rgb[0] + ";" + rgb[1] + ";" + rgb[2] + "m";
        };
      };
      function assembleStyles() {
        var codes = new Map();
        var styles = {
          modifier: {
            reset: [0, 0],
            bold: [1, 22],
            dim: [2, 22],
            italic: [3, 23],
            underline: [4, 24],
            inverse: [7, 27],
            hidden: [8, 28],
            strikethrough: [9, 29]
          },
          color: {
            black: [30, 39],
            red: [31, 39],
            green: [32, 39],
            yellow: [33, 39],
            blue: [34, 39],
            magenta: [35, 39],
            cyan: [36, 39],
            white: [37, 39],
            gray: [90, 39],
            redBright: [91, 39],
            greenBright: [92, 39],
            yellowBright: [93, 39],
            blueBright: [94, 39],
            magentaBright: [95, 39],
            cyanBright: [96, 39],
            whiteBright: [97, 39]
          },
          bgColor: {
            bgBlack: [40, 49],
            bgRed: [41, 49],
            bgGreen: [42, 49],
            bgYellow: [43, 49],
            bgBlue: [44, 49],
            bgMagenta: [45, 49],
            bgCyan: [46, 49],
            bgWhite: [47, 49],
            bgBlackBright: [100, 49],
            bgRedBright: [101, 49],
            bgGreenBright: [102, 49],
            bgYellowBright: [103, 49],
            bgBlueBright: [104, 49],
            bgMagentaBright: [105, 49],
            bgCyanBright: [106, 49],
            bgWhiteBright: [107, 49]
          }
        };
        styles.color.grey = styles.color.gray;
        for (var _i = 0, _Object$keys = Object.keys(styles); _i < _Object$keys.length; _i++) {
          var groupName = _Object$keys[_i];
          var group = styles[groupName];
          for (var _i2 = 0, _Object$keys2 = Object.keys(group); _i2 < _Object$keys2.length; _i2++) {
            var styleName = _Object$keys2[_i2];
            var style = group[styleName];
            styles[styleName] = {
              open: "\x1B[" + style[0] + "m",
              close: "\x1B[" + style[1] + "m"
            };
            group[styleName] = styles[styleName];
            codes.set(style[0], style[1]);
          }
          Object.defineProperty(styles, groupName, {
            value: group,
            enumerable: false
          });
          Object.defineProperty(styles, 'codes', {
            value: codes,
            enumerable: false
          });
        }
        var ansi2ansi = function ansi2ansi(n) {
          return n;
        };
        var rgb2rgb = function rgb2rgb(r, g, b) {
          return [r, g, b];
        };
        styles.color.close = "\x1B[39m";
        styles.bgColor.close = "\x1B[49m";
        styles.color.ansi = {
          ansi: wrapAnsi16(ansi2ansi, 0)
        };
        styles.color.ansi256 = {
          ansi256: wrapAnsi256(ansi2ansi, 0)
        };
        styles.color.ansi16m = {
          rgb: wrapAnsi16m(rgb2rgb, 0)
        };
        styles.bgColor.ansi = {
          ansi: wrapAnsi16(ansi2ansi, 10)
        };
        styles.bgColor.ansi256 = {
          ansi256: wrapAnsi256(ansi2ansi, 10)
        };
        styles.bgColor.ansi16m = {
          rgb: wrapAnsi16m(rgb2rgb, 10)
        };
        for (var _i3 = 0, _Object$keys3 = Object.keys(colorConvert$1); _i3 < _Object$keys3.length; _i3++) {
          var key = _Object$keys3[_i3];
          if (typeof colorConvert$1[key] !== 'object') {
            continue;
          }
          var suite = colorConvert$1[key];
          if (key === 'ansi16') {
            key = 'ansi';
          }
          if ('ansi16' in suite) {
            styles.color.ansi[key] = wrapAnsi16(suite.ansi16, 0);
            styles.bgColor.ansi[key] = wrapAnsi16(suite.ansi16, 10);
          }
          if ('ansi256' in suite) {
            styles.color.ansi256[key] = wrapAnsi256(suite.ansi256, 0);
            styles.bgColor.ansi256[key] = wrapAnsi256(suite.ansi256, 10);
          }
          if ('rgb' in suite) {
            styles.color.ansi16m[key] = wrapAnsi16m(suite.rgb, 0);
            styles.bgColor.ansi16m[key] = wrapAnsi16m(suite.rgb, 10);
          }
        }
        return styles;
      }
      Object.defineProperty(module, 'exports', {
        enumerable: true,
        get: assembleStyles
      });
    })(ansiStyles);
  
    var browser$1 = {
      stdout: false,
      stderr: false
    };
  
    var TEMPLATE_REGEX = /(?:\\(u[a-f\d]{4}|x[a-f\d]{2}|.))|(?:\{(~)?(\w+(?:\([^)]*\))?(?:\.\w+(?:\([^)]*\))?)*)(?:[ \t]|(?=\r?\n)))|(\})|((?:.|[\r\n\f])+?)/gi;
    var STYLE_REGEX = /(?:^|\.)(\w+)(?:\(([^)]*)\))?/g;
    var STRING_REGEX = /^(['"])((?:\\.|(?!\1)[^\\])*)\1$/;
    var ESCAPE_REGEX = /\\(u[a-f\d]{4}|x[a-f\d]{2}|.)|([^\\])/gi;
    var ESCAPES = new Map([['n', '\n'], ['r', '\r'], ['t', '\t'], ['b', '\b'], ['f', '\f'], ['v', '\v'], ['0', '\0'], ['\\', '\\'], ['e', "\x1B"], ['a', "\x07"]]);
    function unescape(c) {
      if (c[0] === 'u' && c.length === 5 || c[0] === 'x' && c.length === 3) {
        return String.fromCharCode(parseInt(c.slice(1), 16));
      }
      return ESCAPES.get(c) || c;
    }
    function parseArguments(name, args) {
      var results = [];
      var chunks = args.trim().split(/\s*,\s*/g);
      var matches;
      for (var _iterator = _createForOfIteratorHelperLoose(chunks), _step; !(_step = _iterator()).done;) {
        var chunk = _step.value;
        if (!isNaN(chunk)) {
          results.push(Number(chunk));
        } else if (matches = chunk.match(STRING_REGEX)) {
          results.push(matches[2].replace(ESCAPE_REGEX, function (m, escape, chr) {
            return escape ? unescape(escape) : chr;
          }));
        } else {
          throw new Error("Invalid Chalk template style argument: " + chunk + " (in style '" + name + "')");
        }
      }
      return results;
    }
    function parseStyle(style) {
      STYLE_REGEX.lastIndex = 0;
      var results = [];
      var matches;
      while ((matches = STYLE_REGEX.exec(style)) !== null) {
        var name = matches[1];
        if (matches[2]) {
          var args = parseArguments(name, matches[2]);
          results.push([name].concat(args));
        } else {
          results.push([name]);
        }
      }
      return results;
    }
    function buildStyle(chalk, styles) {
      var enabled = {};
      for (var _iterator2 = _createForOfIteratorHelperLoose(styles), _step2; !(_step2 = _iterator2()).done;) {
        var layer = _step2.value;
        for (var _iterator3 = _createForOfIteratorHelperLoose(layer.styles), _step3; !(_step3 = _iterator3()).done;) {
          var style = _step3.value;
          enabled[style[0]] = layer.inverse ? null : style.slice(1);
        }
      }
      var current = chalk;
      for (var _i = 0, _Object$keys = Object.keys(enabled); _i < _Object$keys.length; _i++) {
        var styleName = _Object$keys[_i];
        if (Array.isArray(enabled[styleName])) {
          if (!(styleName in current)) {
            throw new Error("Unknown Chalk style: " + styleName);
          }
          if (enabled[styleName].length > 0) {
            current = current[styleName].apply(current, enabled[styleName]);
          } else {
            current = current[styleName];
          }
        }
      }
      return current;
    }
    var templates = function templates(chalk, tmp) {
      var styles = [];
      var chunks = [];
      var chunk = [];
      tmp.replace(TEMPLATE_REGEX, function (m, escapeChar, inverse, style, close, chr) {
        if (escapeChar) {
          chunk.push(unescape(escapeChar));
        } else if (style) {
          var str = chunk.join('');
          chunk = [];
          chunks.push(styles.length === 0 ? str : buildStyle(chalk, styles)(str));
          styles.push({
            inverse: inverse,
            styles: parseStyle(style)
          });
        } else if (close) {
          if (styles.length === 0) {
            throw new Error('Found extraneous } in Chalk template literal');
          }
          chunks.push(buildStyle(chalk, styles)(chunk.join('')));
          chunk = [];
          styles.pop();
        } else {
          chunk.push(chr);
        }
      });
      chunks.push(chunk.join(''));
      if (styles.length > 0) {
        var errMsg = "Chalk template literal is missing " + styles.length + " closing bracket" + (styles.length === 1 ? '' : 's') + " (`}`)";
        throw new Error(errMsg);
      }
      return chunks.join('');
    };
  
    (function (module) {
  
      var escapeStringRegexp$1 = escapeStringRegexp;
      var ansiStyles$1 = ansiStyles.exports;
      var stdoutColor = browser$1.stdout;
      var template = templates;
      var isSimpleWindowsTerm = browser$1$1.platform === 'win32' && !(browser$1$1.env.TERM || '').toLowerCase().startsWith('xterm');
      var levelMapping = ['ansi', 'ansi', 'ansi256', 'ansi16m'];
      var skipModels = new Set(['gray']);
      var styles = Object.create(null);
      function applyOptions(obj, options) {
        options = options || {};
        var scLevel = 0;
        obj.level = options.level === undefined ? scLevel : options.level;
        obj.enabled = 'enabled' in options ? options.enabled : obj.level > 0;
      }
      function Chalk(options) {
        if (!this || !(this instanceof Chalk) || this.template) {
          var _chalk = {};
          applyOptions(_chalk, options);
          _chalk.template = function () {
            var args = [].slice.call(arguments);
            return chalkTag.apply(null, [_chalk.template].concat(args));
          };
          Object.setPrototypeOf(_chalk, Chalk.prototype);
          Object.setPrototypeOf(_chalk.template, _chalk);
          _chalk.template.constructor = Chalk;
          return _chalk.template;
        }
        applyOptions(this, options);
      }
      if (isSimpleWindowsTerm) {
        ansiStyles$1.blue.open = "\x1B[94m";
      }
      var _loop = function _loop() {
        var key = _Object$keys[_i];
        ansiStyles$1[key].closeRe = new RegExp(escapeStringRegexp$1(ansiStyles$1[key].close), 'g');
        styles[key] = {
          get: function get() {
            var codes = ansiStyles$1[key];
            return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, key);
          }
        };
      };
      for (var _i = 0, _Object$keys = Object.keys(ansiStyles$1); _i < _Object$keys.length; _i++) {
        _loop();
      }
      styles.visible = {
        get: function get() {
          return build.call(this, this._styles || [], true, 'visible');
        }
      };
      ansiStyles$1.color.closeRe = new RegExp(escapeStringRegexp$1(ansiStyles$1.color.close), 'g');
      var _loop2 = function _loop2() {
        var model = _Object$keys2[_i2];
        if (skipModels.has(model)) {
          return "continue";
        }
        styles[model] = {
          get: function get() {
            var level = this.level;
            return function () {
              var open = ansiStyles$1.color[levelMapping[level]][model].apply(null, arguments);
              var codes = {
                open: open,
                close: ansiStyles$1.color.close,
                closeRe: ansiStyles$1.color.closeRe
              };
              return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);
            };
          }
        };
      };
      for (var _i2 = 0, _Object$keys2 = Object.keys(ansiStyles$1.color.ansi); _i2 < _Object$keys2.length; _i2++) {
        var _ret = _loop2();
        if (_ret === "continue") continue;
      }
      ansiStyles$1.bgColor.closeRe = new RegExp(escapeStringRegexp$1(ansiStyles$1.bgColor.close), 'g');
      var _loop3 = function _loop3() {
        var model = _Object$keys3[_i3];
        if (skipModels.has(model)) {
          return "continue";
        }
        var bgModel = 'bg' + model[0].toUpperCase() + model.slice(1);
        styles[bgModel] = {
          get: function get() {
            var level = this.level;
            return function () {
              var open = ansiStyles$1.bgColor[levelMapping[level]][model].apply(null, arguments);
              var codes = {
                open: open,
                close: ansiStyles$1.bgColor.close,
                closeRe: ansiStyles$1.bgColor.closeRe
              };
              return build.call(this, this._styles ? this._styles.concat(codes) : [codes], this._empty, model);
            };
          }
        };
      };
      for (var _i3 = 0, _Object$keys3 = Object.keys(ansiStyles$1.bgColor.ansi); _i3 < _Object$keys3.length; _i3++) {
        var _ret2 = _loop3();
        if (_ret2 === "continue") continue;
      }
      var proto = Object.defineProperties(function () {}, styles);
      function build(_styles, _empty, key) {
        var builder = function builder() {
          return applyStyle.apply(builder, arguments);
        };
        builder._styles = _styles;
        builder._empty = _empty;
        var self = this;
        Object.defineProperty(builder, 'level', {
          enumerable: true,
          get: function get() {
            return self.level;
          },
          set: function set(level) {
            self.level = level;
          }
        });
        Object.defineProperty(builder, 'enabled', {
          enumerable: true,
          get: function get() {
            return self.enabled;
          },
          set: function set(enabled) {
            self.enabled = enabled;
          }
        });
        builder.hasGrey = this.hasGrey || key === 'gray' || key === 'grey';
        builder.__proto__ = proto;
        return builder;
      }
      function applyStyle() {
        var args = arguments;
        var argsLen = args.length;
        var str = String(arguments[0]);
        if (argsLen === 0) {
          return '';
        }
        if (argsLen > 1) {
          for (var a = 1; a < argsLen; a++) {
            str += ' ' + args[a];
          }
        }
        if (!this.enabled || this.level <= 0 || !str) {
          return this._empty ? '' : str;
        }
        var originalDim = ansiStyles$1.dim.open;
        if (isSimpleWindowsTerm && this.hasGrey) {
          ansiStyles$1.dim.open = '';
        }
        for (var _iterator = _createForOfIteratorHelperLoose(this._styles.slice().reverse()), _step; !(_step = _iterator()).done;) {
          var code = _step.value;
          str = code.open + str.replace(code.closeRe, code.open) + code.close;
          str = str.replace(/\r?\n/g, code.close + "$&" + code.open);
        }
        ansiStyles$1.dim.open = originalDim;
        return str;
      }
      function chalkTag(chalk, strings) {
        if (!Array.isArray(strings)) {
          return [].slice.call(arguments, 1).join(' ');
        }
        var args = [].slice.call(arguments, 2);
        var parts = [strings.raw[0]];
        for (var i = 1; i < strings.length; i++) {
          parts.push(String(args[i - 1]).replace(/[{}\\]/g, '\\$&'));
          parts.push(String(strings.raw[i]));
        }
        return template(chalk, parts.join(''));
      }
      Object.defineProperties(Chalk.prototype, styles);
      module.exports = Chalk();
      module.exports.supportsColor = stdoutColor;
      module.exports["default"] = module.exports;
    })(chalk);
    var Chalk = chalk.exports;
  
    var sometimesKeywords = new Set(["as", "async", "from", "get", "of", "set"]);
    function getDefs$1(chalk) {
      return {
        keyword: chalk.cyan,
        capitalized: chalk.yellow,
        jsxIdentifier: chalk.yellow,
        punctuator: chalk.yellow,
        number: chalk.magenta,
        string: chalk.green,
        regex: chalk.magenta,
        comment: chalk.grey,
        invalid: chalk.white.bgRed.bold
      };
    }
    var NEWLINE$1 = /\r\n|[\n\r\u2028\u2029]/;
    var BRACKET = /^[()[\]{}]$/;
    var tokenize;
    {
      var JSX_TAG = /^[a-z][\w-]*$/i;
      var getTokenType = function getTokenType(token, offset, text) {
        if (token.type === "name") {
          if (isKeyword(token.value) || isStrictReservedWord(token.value, true) || sometimesKeywords.has(token.value)) {
            return "keyword";
          }
          if (JSX_TAG.test(token.value) && (text[offset - 1] === "<" || text.slice(offset - 2, offset) == "</")) {
            return "jsxIdentifier";
          }
          if (token.value[0] !== token.value[0].toLowerCase()) {
            return "capitalized";
          }
        }
        if (token.type === "punctuator" && BRACKET.test(token.value)) {
          return "bracket";
        }
        if (token.type === "invalid" && (token.value === "@" || token.value === "#")) {
          return "punctuator";
        }
        return token.type;
      };
      tokenize = _regeneratorRuntime().mark(function tokenize(text) {
        var match, token;
        return _regeneratorRuntime().wrap(function tokenize$(_context) {
          while (1) switch (_context.prev = _context.next) {
            case 0:
              if (!(match = jsTokens["default"].exec(text))) {
                _context.next = 6;
                break;
              }
              token = jsTokens.matchToToken(match);
              _context.next = 4;
              return {
                type: getTokenType(token, match.index, text),
                value: token.value
              };
            case 4:
              _context.next = 0;
              break;
            case 6:
            case "end":
              return _context.stop();
          }
        }, tokenize);
      });
    }
    function highlightTokens(defs, text) {
      var highlighted = "";
      var _loop = function _loop() {
        var _step$value = _step.value,
          type = _step$value.type,
          value = _step$value.value;
        var colorize = defs[type];
        if (colorize) {
          highlighted += value.split(NEWLINE$1).map(function (str) {
            return colorize(str);
          }).join("\n");
        } else {
          highlighted += value;
        }
      };
      for (var _iterator = _createForOfIteratorHelperLoose(tokenize(text)), _step; !(_step = _iterator()).done;) {
        _loop();
      }
      return highlighted;
    }
    function shouldHighlight(options) {
      return !!Chalk.supportsColor || options.forceColor;
    }
    function getChalk(options) {
      return options.forceColor ? new Chalk.constructor({
        enabled: true,
        level: 1
      }) : Chalk;
    }
    function highlight(code, options) {
      if (options === void 0) {
        options = {};
      }
      if (code !== "" && shouldHighlight(options)) {
        var chalk = getChalk(options);
        var defs = getDefs$1(chalk);
        return highlightTokens(defs, code);
      } else {
        return code;
      }
    }
  
    function getDefs(chalk) {
      return {
        gutter: chalk.grey,
        marker: chalk.red.bold,
        message: chalk.red.bold
      };
    }
    var NEWLINE = /\r\n|[\n\r\u2028\u2029]/;
    function getMarkerLines(loc, source, opts) {
      var startLoc = Object.assign({
        column: 0,
        line: -1
      }, loc.start);
      var endLoc = Object.assign({}, startLoc, loc.end);
      var _ref = opts || {},
        _ref$linesAbove = _ref.linesAbove,
        linesAbove = _ref$linesAbove === void 0 ? 2 : _ref$linesAbove,
        _ref$linesBelow = _ref.linesBelow,
        linesBelow = _ref$linesBelow === void 0 ? 3 : _ref$linesBelow;
      var startLine = startLoc.line;
      var startColumn = startLoc.column;
      var endLine = endLoc.line;
      var endColumn = endLoc.column;
      var start = Math.max(startLine - (linesAbove + 1), 0);
      var end = Math.min(source.length, endLine + linesBelow);
      if (startLine === -1) {
        start = 0;
      }
      if (endLine === -1) {
        end = source.length;
      }
      var lineDiff = endLine - startLine;
      var markerLines = {};
      if (lineDiff) {
        for (var i = 0; i <= lineDiff; i++) {
          var lineNumber = i + startLine;
          if (!startColumn) {
            markerLines[lineNumber] = true;
          } else if (i === 0) {
            var sourceLength = source[lineNumber - 1].length;
            markerLines[lineNumber] = [startColumn, sourceLength - startColumn + 1];
          } else if (i === lineDiff) {
            markerLines[lineNumber] = [0, endColumn];
          } else {
            var _sourceLength = source[lineNumber - i].length;
            markerLines[lineNumber] = [0, _sourceLength];
          }
        }
      } else {
        if (startColumn === endColumn) {
          if (startColumn) {
            markerLines[startLine] = [startColumn, 0];
          } else {
            markerLines[startLine] = true;
          }
        } else {
          markerLines[startLine] = [startColumn, endColumn - startColumn];
        }
      }
      return {
        start: start,
        end: end,
        markerLines: markerLines
      };
    }
    function codeFrameColumns(rawLines, loc, opts) {
      if (opts === void 0) {
        opts = {};
      }
      var highlighted = (opts.highlightCode || opts.forceColor) && shouldHighlight(opts);
      var chalk = getChalk(opts);
      var defs = getDefs(chalk);
      var maybeHighlight = function maybeHighlight(chalkFn, string) {
        return highlighted ? chalkFn(string) : string;
      };
      var lines = rawLines.split(NEWLINE);
      var _getMarkerLines = getMarkerLines(loc, lines, opts),
        start = _getMarkerLines.start,
        end = _getMarkerLines.end,
        markerLines = _getMarkerLines.markerLines;
      var hasColumns = loc.start && typeof loc.start.column === "number";
      var numberMaxWidth = String(end).length;
      var highlightedLines = highlighted ? highlight(rawLines, opts) : rawLines;
      var frame = highlightedLines.split(NEWLINE, end).slice(start, end).map(function (line, index) {
        var number = start + 1 + index;
        var paddedNumber = (" " + number).slice(-numberMaxWidth);
        var gutter = " " + paddedNumber + " |";
        var hasMarker = markerLines[number];
        var lastMarkerLine = !markerLines[number + 1];
        if (hasMarker) {
          var markerLine = "";
          if (Array.isArray(hasMarker)) {
            var markerSpacing = line.slice(0, Math.max(hasMarker[0] - 1, 0)).replace(/[^\t]/g, " ");
            var numberOfMarkers = hasMarker[1] || 1;
            markerLine = ["\n ", maybeHighlight(defs.gutter, gutter.replace(/\d/g, " ")), " ", markerSpacing, maybeHighlight(defs.marker, "^").repeat(numberOfMarkers)].join("");
            if (lastMarkerLine && opts.message) {
              markerLine += " " + maybeHighlight(defs.message, opts.message);
            }
          }
          return [maybeHighlight(defs.marker, ">"), maybeHighlight(defs.gutter, gutter), line.length > 0 ? " " + line : "", markerLine].join("");
        } else {
          return " " + maybeHighlight(defs.gutter, gutter) + (line.length > 0 ? " " + line : "");
        }
      }).join("\n");
      if (opts.message && !hasColumns) {
        frame = "" + " ".repeat(numberMaxWidth + 1) + opts.message + "\n" + frame;
      }
      if (highlighted) {
        return chalk.reset(frame);
      } else {
        return frame;
      }
    }
  
    var defaultOptions = {
      sourceType: "script",
      sourceFilename: undefined,
      startColumn: 0,
      startLine: 1,
      allowAwaitOutsideFunction: false,
      allowReturnOutsideFunction: false,
      allowNewTargetOutsideFunction: false,
      allowImportExportEverywhere: false,
      allowSuperOutsideMethod: false,
      allowUndeclaredExports: false,
      plugins: [],
      strictMode: null,
      ranges: false,
      tokens: false,
      createParenthesizedExpressions: false,
      errorRecovery: false,
      attachComment: true,
      annexB: true
    };
    function getOptions(opts) {
      if (opts && opts.annexB != null && opts.annexB !== false) {
        throw new Error("The `annexB` option can only be set to `false`.");
      }
      var options = {};
      for (var _i2 = 0, _Object$keys2 = Object.keys(defaultOptions); _i2 < _Object$keys2.length; _i2++) {
        var key = _Object$keys2[_i2];
        options[key] = opts && opts[key] != null ? opts[key] : defaultOptions[key];
      }
      return options;
    }
  
    var TokContext = _createClass(function TokContext(token, preserveSpace) {
      this.token = void 0;
      this.preserveSpace = void 0;
      this.token = token;
      this.preserveSpace = !!preserveSpace;
    });
    var types = {
      brace: new TokContext("{"),
      j_oTag: new TokContext("<tag"),
      j_cTag: new TokContext("</tag"),
      j_expr: new TokContext("<tag>...</tag>", true)
    };
    {
      types.template = new TokContext("`", true);
    }
  
    var beforeExpr = true;
    var startsExpr = true;
    var isLoop = true;
    var isAssign = true;
    var prefix = true;
    var postfix = true;
    var ExportedTokenType = _createClass(function ExportedTokenType(label, conf) {
      if (conf === void 0) {
        conf = {};
      }
      this.label = void 0;
      this.keyword = void 0;
      this.beforeExpr = void 0;
      this.startsExpr = void 0;
      this.rightAssociative = void 0;
      this.isLoop = void 0;
      this.isAssign = void 0;
      this.prefix = void 0;
      this.postfix = void 0;
      this.binop = void 0;
      this.label = label;
      this.keyword = conf.keyword;
      this.beforeExpr = !!conf.beforeExpr;
      this.startsExpr = !!conf.startsExpr;
      this.rightAssociative = !!conf.rightAssociative;
      this.isLoop = !!conf.isLoop;
      this.isAssign = !!conf.isAssign;
      this.prefix = !!conf.prefix;
      this.postfix = !!conf.postfix;
      this.binop = conf.binop != null ? conf.binop : null;
      {
        this.updateContext = null;
      }
    });
    var keywords = new Map();
    function createKeyword(name, options) {
      if (options === void 0) {
        options = {};
      }
      options.keyword = name;
      var token = createToken(name, options);
      keywords.set(name, token);
      return token;
    }
    function createBinop(name, binop) {
      return createToken(name, {
        beforeExpr: beforeExpr,
        binop: binop
      });
    }
    var tokenTypeCounter = -1;
    var tokenTypes = [];
    var tokenLabels = [];
    var tokenBinops = [];
    var tokenBeforeExprs = [];
    var tokenStartsExprs = [];
    var tokenPrefixes = [];
    function createToken(name, options) {
      var _options$binop, _options$beforeExpr, _options$startsExpr, _options$prefix;
      if (options === void 0) {
        options = {};
      }
      ++tokenTypeCounter;
      tokenLabels.push(name);
      tokenBinops.push((_options$binop = options.binop) != null ? _options$binop : -1);
      tokenBeforeExprs.push((_options$beforeExpr = options.beforeExpr) != null ? _options$beforeExpr : false);
      tokenStartsExprs.push((_options$startsExpr = options.startsExpr) != null ? _options$startsExpr : false);
      tokenPrefixes.push((_options$prefix = options.prefix) != null ? _options$prefix : false);
      tokenTypes.push(new ExportedTokenType(name, options));
      return tokenTypeCounter;
    }
    function createKeywordLike(name, options) {
      var _options$binop2, _options$beforeExpr2, _options$startsExpr2, _options$prefix2;
      if (options === void 0) {
        options = {};
      }
      ++tokenTypeCounter;
      keywords.set(name, tokenTypeCounter);
      tokenLabels.push(name);
      tokenBinops.push((_options$binop2 = options.binop) != null ? _options$binop2 : -1);
      tokenBeforeExprs.push((_options$beforeExpr2 = options.beforeExpr) != null ? _options$beforeExpr2 : false);
      tokenStartsExprs.push((_options$startsExpr2 = options.startsExpr) != null ? _options$startsExpr2 : false);
      tokenPrefixes.push((_options$prefix2 = options.prefix) != null ? _options$prefix2 : false);
      tokenTypes.push(new ExportedTokenType("name", options));
      return tokenTypeCounter;
    }
    var tt = {
      bracketL: createToken("[", {
        beforeExpr: beforeExpr,
        startsExpr: startsExpr
      }),
      bracketHashL: createToken("#[", {
        beforeExpr: beforeExpr,
        startsExpr: startsExpr
      }),
      bracketBarL: createToken("[|", {
        beforeExpr: beforeExpr,
        startsExpr: startsExpr
      }),
      bracketR: createToken("]"),
      bracketBarR: createToken("|]"),
      braceL: createToken("{", {
        beforeExpr: beforeExpr,
        startsExpr: startsExpr
      }),
      braceBarL: createToken("{|", {
        beforeExpr: beforeExpr,
        startsExpr: startsExpr
      }),
      braceHashL: createToken("#{", {
        beforeExpr: beforeExpr,
        startsExpr: startsExpr
      }),
      braceR: createToken("}"),
      braceBarR: createToken("|}"),
      parenL: createToken("(", {
        beforeExpr: beforeExpr,
        startsExpr: startsExpr
      }),
      parenR: createToken(")"),
      comma: createToken(",", {
        beforeExpr: beforeExpr
      }),
      semi: createToken(";", {
        beforeExpr: beforeExpr
      }),
      colon: createToken(":", {
        beforeExpr: beforeExpr
      }),
      doubleColon: createToken("::", {
        beforeExpr: beforeExpr
      }),
      dot: createToken("."),
      question: createToken("?", {
        beforeExpr: beforeExpr
      }),
      questionDot: createToken("?."),
      arrow: createToken("=>", {
        beforeExpr: beforeExpr
      }),
      template: createToken("template"),
      ellipsis: createToken("...", {
        beforeExpr: beforeExpr
      }),
      backQuote: createToken("`", {
        startsExpr: startsExpr
      }),
      dollarBraceL: createToken("${", {
        beforeExpr: beforeExpr,
        startsExpr: startsExpr
      }),
      templateTail: createToken("...`", {
        startsExpr: startsExpr
      }),
      templateNonTail: createToken("...${", {
        beforeExpr: beforeExpr,
        startsExpr: startsExpr
      }),
      at: createToken("@"),
      hash: createToken("#", {
        startsExpr: startsExpr
      }),
      interpreterDirective: createToken("#!..."),
      eq: createToken("=", {
        beforeExpr: beforeExpr,
        isAssign: isAssign
      }),
      assign: createToken("_=", {
        beforeExpr: beforeExpr,
        isAssign: isAssign
      }),
      slashAssign: createToken("_=", {
        beforeExpr: beforeExpr,
        isAssign: isAssign
      }),
      xorAssign: createToken("_=", {
        beforeExpr: beforeExpr,
        isAssign: isAssign
      }),
      moduloAssign: createToken("_=", {
        beforeExpr: beforeExpr,
        isAssign: isAssign
      }),
      incDec: createToken("++/--", {
        prefix: prefix,
        postfix: postfix,
        startsExpr: startsExpr
      }),
      bang: createToken("!", {
        beforeExpr: beforeExpr,
        prefix: prefix,
        startsExpr: startsExpr
      }),
      tilde: createToken("~", {
        beforeExpr: beforeExpr,
        prefix: prefix,
        startsExpr: startsExpr
      }),
      doubleCaret: createToken("^^", {
        startsExpr: startsExpr
      }),
      doubleAt: createToken("@@", {
        startsExpr: startsExpr
      }),
      pipeline: createBinop("|>", 0),
      nullishCoalescing: createBinop("??", 1),
      logicalOR: createBinop("||", 1),
      logicalAND: createBinop("&&", 2),
      bitwiseOR: createBinop("|", 3),
      bitwiseXOR: createBinop("^", 4),
      bitwiseAND: createBinop("&", 5),
      equality: createBinop("==/!=/===/!==", 6),
      lt: createBinop("</>/<=/>=", 7),
      gt: createBinop("</>/<=/>=", 7),
      relational: createBinop("</>/<=/>=", 7),
      bitShift: createBinop("<</>>/>>>", 8),
      bitShiftL: createBinop("<</>>/>>>", 8),
      bitShiftR: createBinop("<</>>/>>>", 8),
      plusMin: createToken("+/-", {
        beforeExpr: beforeExpr,
        binop: 9,
        prefix: prefix,
        startsExpr: startsExpr
      }),
      modulo: createToken("%", {
        binop: 10,
        startsExpr: startsExpr
      }),
      star: createToken("*", {
        binop: 10
      }),
      slash: createBinop("/", 10),
      exponent: createToken("**", {
        beforeExpr: beforeExpr,
        binop: 11,
        rightAssociative: true
      }),
      _in: createKeyword("in", {
        beforeExpr: beforeExpr,
        binop: 7
      }),
      _instanceof: createKeyword("instanceof", {
        beforeExpr: beforeExpr,
        binop: 7
      }),
      _break: createKeyword("break"),
      _case: createKeyword("case", {
        beforeExpr: beforeExpr
      }),
      _catch: createKeyword("catch"),
      _continue: createKeyword("continue"),
      _debugger: createKeyword("debugger"),
      _default: createKeyword("default", {
        beforeExpr: beforeExpr
      }),
      _else: createKeyword("else", {
        beforeExpr: beforeExpr
      }),
      _finally: createKeyword("finally"),
      _function: createKeyword("function", {
        startsExpr: startsExpr
      }),
      _if: createKeyword("if"),
      _return: createKeyword("return", {
        beforeExpr: beforeExpr
      }),
      _switch: createKeyword("switch"),
      _throw: createKeyword("throw", {
        beforeExpr: beforeExpr,
        prefix: prefix,
        startsExpr: startsExpr
      }),
      _try: createKeyword("try"),
      _var: createKeyword("var"),
      _const: createKeyword("const"),
      _with: createKeyword("with"),
      _new: createKeyword("new", {
        beforeExpr: beforeExpr,
        startsExpr: startsExpr
      }),
      _this: createKeyword("this", {
        startsExpr: startsExpr
      }),
      _super: createKeyword("super", {
        startsExpr: startsExpr
      }),
      _class: createKeyword("class", {
        startsExpr: startsExpr
      }),
      _extends: createKeyword("extends", {
        beforeExpr: beforeExpr
      }),
      _export: createKeyword("export"),
      _import: createKeyword("import", {
        startsExpr: startsExpr
      }),
      _null: createKeyword("null", {
        startsExpr: startsExpr
      }),
      _true: createKeyword("true", {
        startsExpr: startsExpr
      }),
      _false: createKeyword("false", {
        startsExpr: startsExpr
      }),
      _typeof: createKeyword("typeof", {
        beforeExpr: beforeExpr,
        prefix: prefix,
        startsExpr: startsExpr
      }),
      _void: createKeyword("void", {
        beforeExpr: beforeExpr,
        prefix: prefix,
        startsExpr: startsExpr
      }),
      _delete: createKeyword("delete", {
        beforeExpr: beforeExpr,
        prefix: prefix,
        startsExpr: startsExpr
      }),
      _do: createKeyword("do", {
        isLoop: isLoop,
        beforeExpr: beforeExpr
      }),
      _for: createKeyword("for", {
        isLoop: isLoop
      }),
      _while: createKeyword("while", {
        isLoop: isLoop
      }),
      _as: createKeywordLike("as", {
        startsExpr: startsExpr
      }),
      _assert: createKeywordLike("assert", {
        startsExpr: startsExpr
      }),
      _async: createKeywordLike("async", {
        startsExpr: startsExpr
      }),
      _await: createKeywordLike("await", {
        startsExpr: startsExpr
      }),
      _from: createKeywordLike("from", {
        startsExpr: startsExpr
      }),
      _get: createKeywordLike("get", {
        startsExpr: startsExpr
      }),
      _let: createKeywordLike("let", {
        startsExpr: startsExpr
      }),
      _meta: createKeywordLike("meta", {
        startsExpr: startsExpr
      }),
      _of: createKeywordLike("of", {
        startsExpr: startsExpr
      }),
      _sent: createKeywordLike("sent", {
        startsExpr: startsExpr
      }),
      _set: createKeywordLike("set", {
        startsExpr: startsExpr
      }),
      _static: createKeywordLike("static", {
        startsExpr: startsExpr
      }),
      _using: createKeywordLike("using", {
        startsExpr: startsExpr
      }),
      _yield: createKeywordLike("yield", {
        startsExpr: startsExpr
      }),
      _asserts: createKeywordLike("asserts", {
        startsExpr: startsExpr
      }),
      _checks: createKeywordLike("checks", {
        startsExpr: startsExpr
      }),
      _exports: createKeywordLike("exports", {
        startsExpr: startsExpr
      }),
      _global: createKeywordLike("global", {
        startsExpr: startsExpr
      }),
      _implements: createKeywordLike("implements", {
        startsExpr: startsExpr
      }),
      _intrinsic: createKeywordLike("intrinsic", {
        startsExpr: startsExpr
      }),
      _infer: createKeywordLike("infer", {
        startsExpr: startsExpr
      }),
      _is: createKeywordLike("is", {
        startsExpr: startsExpr
      }),
      _mixins: createKeywordLike("mixins", {
        startsExpr: startsExpr
      }),
      _proto: createKeywordLike("proto", {
        startsExpr: startsExpr
      }),
      _require: createKeywordLike("require", {
        startsExpr: startsExpr
      }),
      _satisfies: createKeywordLike("satisfies", {
        startsExpr: startsExpr
      }),
      _keyof: createKeywordLike("keyof", {
        startsExpr: startsExpr
      }),
      _readonly: createKeywordLike("readonly", {
        startsExpr: startsExpr
      }),
      _unique: createKeywordLike("unique", {
        startsExpr: startsExpr
      }),
      _abstract: createKeywordLike("abstract", {
        startsExpr: startsExpr
      }),
      _declare: createKeywordLike("declare", {
        startsExpr: startsExpr
      }),
      _enum: createKeywordLike("enum", {
        startsExpr: startsExpr
      }),
      _module: createKeywordLike("module", {
        startsExpr: startsExpr
      }),
      _namespace: createKeywordLike("namespace", {
        startsExpr: startsExpr
      }),
      _interface: createKeywordLike("interface", {
        startsExpr: startsExpr
      }),
      _type: createKeywordLike("type", {
        startsExpr: startsExpr
      }),
      _opaque: createKeywordLike("opaque", {
        startsExpr: startsExpr
      }),
      name: createToken("name", {
        startsExpr: startsExpr
      }),
      string: createToken("string", {
        startsExpr: startsExpr
      }),
      num: createToken("num", {
        startsExpr: startsExpr
      }),
      bigint: createToken("bigint", {
        startsExpr: startsExpr
      }),
      decimal: createToken("decimal", {
        startsExpr: startsExpr
      }),
      regexp: createToken("regexp", {
        startsExpr: startsExpr
      }),
      privateName: createToken("#name", {
        startsExpr: startsExpr
      }),
      eof: createToken("eof"),
      jsxName: createToken("jsxName"),
      jsxText: createToken("jsxText", {
        beforeExpr: true
      }),
      jsxTagStart: createToken("jsxTagStart", {
        startsExpr: true
      }),
      jsxTagEnd: createToken("jsxTagEnd"),
      placeholder: createToken("%%", {
        startsExpr: true
      })
    };
    function tokenIsIdentifier(token) {
      return token >= 93 && token <= 130;
    }
    function tokenKeywordOrIdentifierIsKeyword(token) {
      return token <= 92;
    }
    function tokenIsKeywordOrIdentifier(token) {
      return token >= 58 && token <= 130;
    }
    function tokenIsLiteralPropertyName(token) {
      return token >= 58 && token <= 134;
    }
    function tokenComesBeforeExpression(token) {
      return tokenBeforeExprs[token];
    }
    function tokenCanStartExpression(token) {
      return tokenStartsExprs[token];
    }
    function tokenIsAssignment(token) {
      return token >= 29 && token <= 33;
    }
    function tokenIsFlowInterfaceOrTypeOrOpaque(token) {
      return token >= 127 && token <= 129;
    }
    function tokenIsLoop(token) {
      return token >= 90 && token <= 92;
    }
    function tokenIsKeyword(token) {
      return token >= 58 && token <= 92;
    }
    function tokenIsOperator(token) {
      return token >= 39 && token <= 59;
    }
    function tokenIsPostfix(token) {
      return token === 34;
    }
    function tokenIsPrefix(token) {
      return tokenPrefixes[token];
    }
    function tokenIsTSTypeOperator(token) {
      return token >= 119 && token <= 121;
    }
    function tokenIsTSDeclarationStart(token) {
      return token >= 122 && token <= 128;
    }
    function tokenLabelName(token) {
      return tokenLabels[token];
    }
    function tokenOperatorPrecedence(token) {
      return tokenBinops[token];
    }
    function tokenIsRightAssociative(token) {
      return token === 57;
    }
    function tokenIsTemplate(token) {
      return token >= 24 && token <= 25;
    }
    function getExportedToken(token) {
      return tokenTypes[token];
    }
    {
      tokenTypes[8].updateContext = function (context) {
        context.pop();
      };
      tokenTypes[5].updateContext = tokenTypes[7].updateContext = tokenTypes[23].updateContext = function (context) {
        context.push(types.brace);
      };
      tokenTypes[22].updateContext = function (context) {
        if (context[context.length - 1] === types.template) {
          context.pop();
        } else {
          context.push(types.template);
        }
      };
      tokenTypes[140].updateContext = function (context) {
        context.push(types.j_expr, types.j_oTag);
      };
    }
  
    var Position = _createClass(function Position(line, col, index) {
      this.line = void 0;
      this.column = void 0;
      this.index = void 0;
      this.line = line;
      this.column = col;
      this.index = index;
    });
    var SourceLocation = _createClass(function SourceLocation(start, end) {
      this.start = void 0;
      this.end = void 0;
      this.filename = void 0;
      this.identifierName = void 0;
      this.start = start;
      this.end = end;
    });
    function createPositionWithColumnOffset(position, columnOffset) {
      var line = position.line,
        column = position.column,
        index = position.index;
      return new Position(line, column + columnOffset, index + columnOffset);
    }
  
    var ParseErrorCode = {
      SyntaxError: "BABEL_PARSER_SYNTAX_ERROR",
      SourceTypeModuleError: "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED"
    };
    var reflect = function reflect(keys, last) {
      if (last === void 0) {
        last = keys.length - 1;
      }
      return {
        get: function get() {
          return keys.reduce(function (object, key) {
            return object[key];
          }, this);
        },
        set: function set(value) {
          keys.reduce(function (item, key, i) {
            return i === last ? item[key] = value : item[key];
          }, this);
        }
      };
    };
    var instantiate = function instantiate(constructor, properties, descriptors) {
      return Object.keys(descriptors).map(function (key) {
        return [key, descriptors[key]];
      }).filter(function (_ref) {
        var descriptor = _ref[1];
        return !!descriptor;
      }).map(function (_ref2) {
        var key = _ref2[0],
          descriptor = _ref2[1];
        return [key, typeof descriptor === "function" ? {
          value: descriptor,
          enumerable: false
        } : typeof descriptor.reflect === "string" ? Object.assign({}, descriptor, reflect(descriptor.reflect.split("."))) : descriptor];
      }).reduce(function (instance, _ref3) {
        var key = _ref3[0],
          descriptor = _ref3[1];
        return Object.defineProperty(instance, key, Object.assign({
          configurable: true
        }, descriptor));
      }, Object.assign(new constructor(), properties));
    };
  
    var ModuleErrors = {
      ImportMetaOutsideModule: {
        message: "import.meta may appear only with 'sourceType: \"module\"'",
        code: ParseErrorCode.SourceTypeModuleError
      },
      ImportOutsideModule: {
        message: "'import' and 'export' may appear only with 'sourceType: \"module\"'",
        code: ParseErrorCode.SourceTypeModuleError
      }
    };
  
    var NodeDescriptions = {
      ArrayPattern: "array destructuring pattern",
      AssignmentExpression: "assignment expression",
      AssignmentPattern: "assignment expression",
      ArrowFunctionExpression: "arrow function expression",
      ConditionalExpression: "conditional expression",
      CatchClause: "catch clause",
      ForOfStatement: "for-of statement",
      ForInStatement: "for-in statement",
      ForStatement: "for-loop",
      FormalParameters: "function parameter list",
      Identifier: "identifier",
      ImportSpecifier: "import specifier",
      ImportDefaultSpecifier: "import default specifier",
      ImportNamespaceSpecifier: "import namespace specifier",
      ObjectPattern: "object destructuring pattern",
      ParenthesizedExpression: "parenthesized expression",
      RestElement: "rest element",
      UpdateExpression: {
        "true": "prefix operation",
        "false": "postfix operation"
      },
      VariableDeclarator: "variable declaration",
      YieldExpression: "yield expression"
    };
    var toNodeDescription = function toNodeDescription(_ref) {
      var type = _ref.type,
        prefix = _ref.prefix;
      return type === "UpdateExpression" ? NodeDescriptions.UpdateExpression[String(prefix)] : NodeDescriptions[type];
    };
  
    var StandardErrors = {
      AccessorIsGenerator: function AccessorIsGenerator(_ref) {
        var kind = _ref.kind;
        return "A " + kind + "ter cannot be a generator.";
      },
      ArgumentsInClass: "'arguments' is only allowed in functions and class methods.",
      AsyncFunctionInSingleStatementContext: "Async functions can only be declared at the top level or inside a block.",
      AwaitBindingIdentifier: "Can not use 'await' as identifier inside an async function.",
      AwaitBindingIdentifierInStaticBlock: "Can not use 'await' as identifier inside a static block.",
      AwaitExpressionFormalParameter: "'await' is not allowed in async function parameters.",
      AwaitNotInAsyncContext: "'await' is only allowed within async functions and at the top levels of modules.",
      AwaitNotInAsyncFunction: "'await' is only allowed within async functions.",
      BadGetterArity: "A 'get' accessor must not have any formal parameters.",
      BadSetterArity: "A 'set' accessor must have exactly one formal parameter.",
      BadSetterRestParameter: "A 'set' accessor function argument must not be a rest parameter.",
      ConstructorClassField: "Classes may not have a field named 'constructor'.",
      ConstructorClassPrivateField: "Classes may not have a private field named '#constructor'.",
      ConstructorIsAccessor: "Class constructor may not be an accessor.",
      ConstructorIsAsync: "Constructor can't be an async function.",
      ConstructorIsGenerator: "Constructor can't be a generator.",
      DeclarationMissingInitializer: function DeclarationMissingInitializer(_ref2) {
        var kind = _ref2.kind;
        return "Missing initializer in " + kind + " declaration.";
      },
      DecoratorArgumentsOutsideParentheses: "Decorator arguments must be moved inside parentheses: use '@(decorator(args))' instead of '@(decorator)(args)'.",
      DecoratorBeforeExport: "Decorators must be placed *before* the 'export' keyword. Remove the 'decoratorsBeforeExport: true' option to use the 'export @decorator class {}' syntax.",
      DecoratorsBeforeAfterExport: "Decorators can be placed *either* before or after the 'export' keyword, but not in both locations at the same time.",
      DecoratorConstructor: "Decorators can't be used with a constructor. Did you mean '@dec class { ... }'?",
      DecoratorExportClass: "Decorators must be placed *after* the 'export' keyword. Remove the 'decoratorsBeforeExport: false' option to use the '@decorator export class {}' syntax.",
      DecoratorSemicolon: "Decorators must not be followed by a semicolon.",
      DecoratorStaticBlock: "Decorators can't be used with a static block.",
      DeletePrivateField: "Deleting a private field is not allowed.",
      DestructureNamedImport: "ES2015 named imports do not destructure. Use another statement for destructuring after the import.",
      DuplicateConstructor: "Duplicate constructor in the same class.",
      DuplicateDefaultExport: "Only one default export allowed per module.",
      DuplicateExport: function DuplicateExport(_ref3) {
        var exportName = _ref3.exportName;
        return "`" + exportName + "` has already been exported. Exported identifiers must be unique.";
      },
      DuplicateProto: "Redefinition of __proto__ property.",
      DuplicateRegExpFlags: "Duplicate regular expression flag.",
      ElementAfterRest: "Rest element must be last element.",
      EscapedCharNotAnIdentifier: "Invalid Unicode escape.",
      ExportBindingIsString: function ExportBindingIsString(_ref4) {
        var localName = _ref4.localName,
          exportName = _ref4.exportName;
        return "A string literal cannot be used as an exported binding without `from`.\n- Did you mean `export { '" + localName + "' as '" + exportName + "' } from 'some-module'`?";
      },
      ExportDefaultFromAsIdentifier: "'from' is not allowed as an identifier after 'export default'.",
      ForInOfLoopInitializer: function ForInOfLoopInitializer(_ref5) {
        var type = _ref5.type;
        return "'" + (type === "ForInStatement" ? "for-in" : "for-of") + "' loop variable declaration may not have an initializer.";
      },
      ForInUsing: "For-in loop may not start with 'using' declaration.",
      ForOfAsync: "The left-hand side of a for-of loop may not be 'async'.",
      ForOfLet: "The left-hand side of a for-of loop may not start with 'let'.",
      GeneratorInSingleStatementContext: "Generators can only be declared at the top level or inside a block.",
      IllegalBreakContinue: function IllegalBreakContinue(_ref6) {
        var type = _ref6.type;
        return "Unsyntactic " + (type === "BreakStatement" ? "break" : "continue") + ".";
      },
      IllegalLanguageModeDirective: "Illegal 'use strict' directive in function with non-simple parameter list.",
      IllegalReturn: "'return' outside of function.",
      ImportBindingIsString: function ImportBindingIsString(_ref7) {
        var importName = _ref7.importName;
        return "A string literal cannot be used as an imported binding.\n- Did you mean `import { \"" + importName + "\" as foo }`?";
      },
      ImportCallArgumentTrailingComma: "Trailing comma is disallowed inside import(...) arguments.",
      ImportCallArity: function ImportCallArity(_ref8) {
        var maxArgumentCount = _ref8.maxArgumentCount;
        return "`import()` requires exactly " + (maxArgumentCount === 1 ? "one argument" : "one or two arguments") + ".";
      },
      ImportCallNotNewExpression: "Cannot use new with import(...).",
      ImportCallSpreadArgument: "`...` is not allowed in `import()`.",
      ImportJSONBindingNotDefault: "A JSON module can only be imported with `default`.",
      ImportReflectionHasAssertion: "`import module x` cannot have assertions.",
      ImportReflectionNotBinding: 'Only `import module x from "./module"` is valid.',
      IncompatibleRegExpUVFlags: "The 'u' and 'v' regular expression flags cannot be enabled at the same time.",
      InvalidBigIntLiteral: "Invalid BigIntLiteral.",
      InvalidCodePoint: "Code point out of bounds.",
      InvalidCoverInitializedName: "Invalid shorthand property initializer.",
      InvalidDecimal: "Invalid decimal.",
      InvalidDigit: function InvalidDigit(_ref9) {
        var radix = _ref9.radix;
        return "Expected number in radix " + radix + ".";
      },
      InvalidEscapeSequence: "Bad character escape sequence.",
      InvalidEscapeSequenceTemplate: "Invalid escape sequence in template.",
      InvalidEscapedReservedWord: function InvalidEscapedReservedWord(_ref10) {
        var reservedWord = _ref10.reservedWord;
        return "Escape sequence in keyword " + reservedWord + ".";
      },
      InvalidIdentifier: function InvalidIdentifier(_ref11) {
        var identifierName = _ref11.identifierName;
        return "Invalid identifier " + identifierName + ".";
      },
      InvalidLhs: function InvalidLhs(_ref12) {
        var ancestor = _ref12.ancestor;
        return "Invalid left-hand side in " + toNodeDescription(ancestor) + ".";
      },
      InvalidLhsBinding: function InvalidLhsBinding(_ref13) {
        var ancestor = _ref13.ancestor;
        return "Binding invalid left-hand side in " + toNodeDescription(ancestor) + ".";
      },
      InvalidNumber: "Invalid number.",
      InvalidOrMissingExponent: "Floating-point numbers require a valid exponent after the 'e'.",
      InvalidOrUnexpectedToken: function InvalidOrUnexpectedToken(_ref14) {
        var unexpected = _ref14.unexpected;
        return "Unexpected character '" + unexpected + "'.";
      },
      InvalidParenthesizedAssignment: "Invalid parenthesized assignment pattern.",
      InvalidPrivateFieldResolution: function InvalidPrivateFieldResolution(_ref15) {
        var identifierName = _ref15.identifierName;
        return "Private name #" + identifierName + " is not defined.";
      },
      InvalidPropertyBindingPattern: "Binding member expression.",
      InvalidRecordProperty: "Only properties and spread elements are allowed in record definitions.",
      InvalidRestAssignmentPattern: "Invalid rest operator's argument.",
      LabelRedeclaration: function LabelRedeclaration(_ref16) {
        var labelName = _ref16.labelName;
        return "Label '" + labelName + "' is already declared.";
      },
      LetInLexicalBinding: "'let' is not allowed to be used as a name in 'let' or 'const' declarations.",
      LineTerminatorBeforeArrow: "No line break is allowed before '=>'.",
      MalformedRegExpFlags: "Invalid regular expression flag.",
      MissingClassName: "A class name is required.",
      MissingEqInAssignment: "Only '=' operator can be used for specifying default value.",
      MissingSemicolon: "Missing semicolon.",
      MissingPlugin: function MissingPlugin(_ref17) {
        var missingPlugin = _ref17.missingPlugin;
        return "This experimental syntax requires enabling the parser plugin: " + missingPlugin.map(function (name) {
          return JSON.stringify(name);
        }).join(", ") + ".";
      },
      MissingOneOfPlugins: function MissingOneOfPlugins(_ref18) {
        var missingPlugin = _ref18.missingPlugin;
        return "This experimental syntax requires enabling one of the following parser plugin(s): " + missingPlugin.map(function (name) {
          return JSON.stringify(name);
        }).join(", ") + ".";
      },
      MissingUnicodeEscape: "Expecting Unicode escape sequence \\uXXXX.",
      MixingCoalesceWithLogical: "Nullish coalescing operator(??) requires parens when mixing with logical operators.",
      ModuleAttributeDifferentFromType: "The only accepted module attribute is `type`.",
      ModuleAttributeInvalidValue: "Only string literals are allowed as module attribute values.",
      ModuleAttributesWithDuplicateKeys: function ModuleAttributesWithDuplicateKeys(_ref19) {
        var key = _ref19.key;
        return "Duplicate key \"" + key + "\" is not allowed in module attributes.";
      },
      ModuleExportNameHasLoneSurrogate: function ModuleExportNameHasLoneSurrogate(_ref20) {
        var surrogateCharCode = _ref20.surrogateCharCode;
        return "An export name cannot include a lone surrogate, found '\\u" + surrogateCharCode.toString(16) + "'.";
      },
      ModuleExportUndefined: function ModuleExportUndefined(_ref21) {
        var localName = _ref21.localName;
        return "Export '" + localName + "' is not defined.";
      },
      MultipleDefaultsInSwitch: "Multiple default clauses.",
      NewlineAfterThrow: "Illegal newline after throw.",
      NoCatchOrFinally: "Missing catch or finally clause.",
      NumberIdentifier: "Identifier directly after number.",
      NumericSeparatorInEscapeSequence: "Numeric separators are not allowed inside unicode escape sequences or hex escape sequences.",
      ObsoleteAwaitStar: "'await*' has been removed from the async functions proposal. Use Promise.all() instead.",
      OptionalChainingNoNew: "Constructors in/after an Optional Chain are not allowed.",
      OptionalChainingNoTemplate: "Tagged Template Literals are not allowed in optionalChain.",
      OverrideOnConstructor: "'override' modifier cannot appear on a constructor declaration.",
      ParamDupe: "Argument name clash.",
      PatternHasAccessor: "Object pattern can't contain getter or setter.",
      PatternHasMethod: "Object pattern can't contain methods.",
      PrivateInExpectedIn: function PrivateInExpectedIn(_ref22) {
        var identifierName = _ref22.identifierName;
        return "Private names are only allowed in property accesses (`obj.#" + identifierName + "`) or in `in` expressions (`#" + identifierName + " in obj`).";
      },
      PrivateNameRedeclaration: function PrivateNameRedeclaration(_ref23) {
        var identifierName = _ref23.identifierName;
        return "Duplicate private name #" + identifierName + ".";
      },
      RecordExpressionBarIncorrectEndSyntaxType: "Record expressions ending with '|}' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
      RecordExpressionBarIncorrectStartSyntaxType: "Record expressions starting with '{|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
      RecordExpressionHashIncorrectStartSyntaxType: "Record expressions starting with '#{' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.",
      RecordNoProto: "'__proto__' is not allowed in Record expressions.",
      RestTrailingComma: "Unexpected trailing comma after rest element.",
      SloppyFunction: "In non-strict mode code, functions can only be declared at top level or inside a block.",
      SloppyFunctionAnnexB: "In non-strict mode code, functions can only be declared at top level, inside a block, or as the body of an if statement.",
      StaticPrototype: "Classes may not have static property named prototype.",
      SuperNotAllowed: "`super()` is only valid inside a class constructor of a subclass. Maybe a typo in the method name ('constructor') or not extending another class?",
      SuperPrivateField: "Private fields can't be accessed on super.",
      TrailingDecorator: "Decorators must be attached to a class element.",
      TupleExpressionBarIncorrectEndSyntaxType: "Tuple expressions ending with '|]' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
      TupleExpressionBarIncorrectStartSyntaxType: "Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'.",
      TupleExpressionHashIncorrectStartSyntaxType: "Tuple expressions starting with '#[' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'hash'.",
      UnexpectedArgumentPlaceholder: "Unexpected argument placeholder.",
      UnexpectedAwaitAfterPipelineBody: 'Unexpected "await" after pipeline body; await must have parentheses in minimal proposal.',
      UnexpectedDigitAfterHash: "Unexpected digit after hash token.",
      UnexpectedImportExport: "'import' and 'export' may only appear at the top level.",
      UnexpectedKeyword: function UnexpectedKeyword(_ref24) {
        var keyword = _ref24.keyword;
        return "Unexpected keyword '" + keyword + "'.";
      },
      UnexpectedLeadingDecorator: "Leading decorators must be attached to a class declaration.",
      UnexpectedLexicalDeclaration: "Lexical declaration cannot appear in a single-statement context.",
      UnexpectedNewTarget: "`new.target` can only be used in functions or class properties.",
      UnexpectedNumericSeparator: "A numeric separator is only allowed between two digits.",
      UnexpectedPrivateField: "Unexpected private name.",
      UnexpectedReservedWord: function UnexpectedReservedWord(_ref25) {
        var reservedWord = _ref25.reservedWord;
        return "Unexpected reserved word '" + reservedWord + "'.";
      },
      UnexpectedSuper: "'super' is only allowed in object methods and classes.",
      UnexpectedToken: function UnexpectedToken(_ref26) {
        var expected = _ref26.expected,
          unexpected = _ref26.unexpected;
        return "Unexpected token" + (unexpected ? " '" + unexpected + "'." : "") + (expected ? ", expected \"" + expected + "\"" : "");
      },
      UnexpectedTokenUnaryExponentiation: "Illegal expression. Wrap left hand side or entire exponentiation in parentheses.",
      UnexpectedUsingDeclaration: "Using declaration cannot appear in the top level when source type is `script`.",
      UnsupportedBind: "Binding should be performed on object property.",
      UnsupportedDecoratorExport: "A decorated export must export a class declaration.",
      UnsupportedDefaultExport: "Only expressions, functions or classes are allowed as the `default` export.",
      UnsupportedImport: "`import` can only be used in `import()` or `import.meta`.",
      UnsupportedMetaProperty: function UnsupportedMetaProperty(_ref27) {
        var target = _ref27.target,
          onlyValidPropertyName = _ref27.onlyValidPropertyName;
        return "The only valid meta property for " + target + " is " + target + "." + onlyValidPropertyName + ".";
      },
      UnsupportedParameterDecorator: "Decorators cannot be used to decorate parameters.",
      UnsupportedPropertyDecorator: "Decorators cannot be used to decorate object literal properties.",
      UnsupportedSuper: "'super' can only be used with function calls (i.e. super()) or in property accesses (i.e. super.prop or super[prop]).",
      UnterminatedComment: "Unterminated comment.",
      UnterminatedRegExp: "Unterminated regular expression.",
      UnterminatedString: "Unterminated string constant.",
      UnterminatedTemplate: "Unterminated template.",
      UsingDeclarationHasBindingPattern: "Using declaration cannot have destructuring patterns.",
      VarRedeclaration: function VarRedeclaration(_ref28) {
        var identifierName = _ref28.identifierName;
        return "Identifier '" + identifierName + "' has already been declared.";
      },
      YieldBindingIdentifier: "Can not use 'yield' as identifier inside a generator.",
      YieldInParameter: "Yield expression is not allowed in formal parameters.",
      ZeroDigitNumericSeparator: "Numeric separator can not be used after leading 0."
    };
  
    var StrictModeErrors = {
      StrictDelete: "Deleting local variable in strict mode.",
      StrictEvalArguments: function StrictEvalArguments(_ref) {
        var referenceName = _ref.referenceName;
        return "Assigning to '" + referenceName + "' in strict mode.";
      },
      StrictEvalArgumentsBinding: function StrictEvalArgumentsBinding(_ref2) {
        var bindingName = _ref2.bindingName;
        return "Binding '" + bindingName + "' in strict mode.";
      },
      StrictFunction: "In strict mode code, functions can only be declared at top level or inside a block.",
      StrictNumericEscape: "The only valid numeric escape in strict mode is '\\0'.",
      StrictOctalLiteral: "Legacy octal literals are not allowed in strict mode.",
      StrictWith: "'with' in strict mode."
    };
  
    var UnparenthesizedPipeBodyDescriptions = new Set(["ArrowFunctionExpression", "AssignmentExpression", "ConditionalExpression", "YieldExpression"]);
    var PipelineOperatorErrors = {
      PipeBodyIsTighter: "Unexpected yield after pipeline body; any yield expression acting as Hack-style pipe body must be parenthesized due to its loose operator precedence.",
      PipeTopicRequiresHackPipes: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.',
      PipeTopicUnbound: "Topic reference is unbound; it must be inside a pipe body.",
      PipeTopicUnconfiguredToken: function PipeTopicUnconfiguredToken(_ref) {
        var token = _ref.token;
        return "Invalid topic token " + token + ". In order to use " + token + " as a topic reference, the pipelineOperator plugin must be configured with { \"proposal\": \"hack\", \"topicToken\": \"" + token + "\" }.";
      },
      PipeTopicUnused: "Hack-style pipe body does not contain a topic reference; Hack-style pipes must use topic at least once.",
      PipeUnparenthesizedBody: function PipeUnparenthesizedBody(_ref2) {
        var type = _ref2.type;
        return "Hack-style pipe body cannot be an unparenthesized " + toNodeDescription({
          type: type
        }) + "; please wrap it in parentheses.";
      },
      PipelineBodyNoArrow: 'Unexpected arrow "=>" after pipeline body; arrow function in pipeline body must be parenthesized.',
      PipelineBodySequenceExpression: "Pipeline body may not be a comma-separated sequence expression.",
      PipelineHeadSequenceExpression: "Pipeline head should not be a comma-separated sequence expression.",
      PipelineTopicUnused: "Pipeline is in topic style but does not use topic reference.",
      PrimaryTopicNotAllowed: "Topic reference was used in a lexical context without topic binding.",
      PrimaryTopicRequiresSmartPipeline: 'Topic reference is used, but the pipelineOperator plugin was not passed a "proposal": "hack" or "smart" option.'
    };
  
    var _templateObject$A;
    var _excluded$5 = ["toMessage"],
      _excluded2$1 = ["message"];
    function toParseErrorConstructor(_ref) {
      var toMessage = _ref.toMessage,
        properties = _objectWithoutPropertiesLoose(_ref, _excluded$5);
      return function constructor(_ref2) {
        var loc = _ref2.loc,
          details = _ref2.details;
        return instantiate(SyntaxError, Object.assign({}, properties, {
          loc: loc
        }), {
          clone: function clone(overrides) {
            if (overrides === void 0) {
              overrides = {};
            }
            var loc = overrides.loc || {};
            return constructor({
              loc: new Position("line" in loc ? loc.line : this.loc.line, "column" in loc ? loc.column : this.loc.column, "index" in loc ? loc.index : this.loc.index),
              details: Object.assign({}, this.details, overrides.details)
            });
          },
          details: {
            value: details,
            enumerable: false
          },
          message: {
            get: function get() {
              return toMessage(this.details) + " (" + this.loc.line + ":" + this.loc.column + ")";
            },
            set: function set(value) {
              Object.defineProperty(this, "message", {
                value: value
              });
            }
          },
          pos: {
            reflect: "loc.index",
            enumerable: true
          },
          missingPlugin: "missingPlugin" in details && {
            reflect: "details.missingPlugin",
            enumerable: true
          }
        });
      };
    }
    function ParseErrorEnum(argument, syntaxPlugin) {
      if (Array.isArray(argument)) {
        return function (parseErrorTemplates) {
          return ParseErrorEnum(parseErrorTemplates, argument[0]);
        };
      }
      var ParseErrorConstructors = {};
      var _loop = function _loop() {
        var reasonCode = _Object$keys2[_i2];
        var template = argument[reasonCode];
        var _ref3 = typeof template === "string" ? {
            message: function message() {
              return template;
            }
          } : typeof template === "function" ? {
            message: template
          } : template,
          message = _ref3.message,
          rest = _objectWithoutPropertiesLoose(_ref3, _excluded2$1);
        var toMessage = typeof message === "string" ? function () {
          return message;
        } : message;
        ParseErrorConstructors[reasonCode] = toParseErrorConstructor(Object.assign({
          code: ParseErrorCode.SyntaxError,
          reasonCode: reasonCode,
          toMessage: toMessage
        }, syntaxPlugin ? {
          syntaxPlugin: syntaxPlugin
        } : {}, rest));
      };
      for (var _i2 = 0, _Object$keys2 = Object.keys(argument); _i2 < _Object$keys2.length; _i2++) {
        _loop();
      }
      return ParseErrorConstructors;
    }
    var Errors = Object.assign({}, ParseErrorEnum(ModuleErrors), ParseErrorEnum(StandardErrors), ParseErrorEnum(StrictModeErrors), ParseErrorEnum(_templateObject$A || (_templateObject$A = _taggedTemplateLiteralLoose(["pipelineOperator"])))(PipelineOperatorErrors));
  
    var defineProperty = Object.defineProperty;
    var toUnenumerable = function toUnenumerable(object, key) {
      return defineProperty(object, key, {
        enumerable: false,
        value: object[key]
      });
    };
    function toESTreeLocation(node) {
      node.loc.start && toUnenumerable(node.loc.start, "index");
      node.loc.end && toUnenumerable(node.loc.end, "index");
      return node;
    }
    var estree = (function (superClass) {
      return function (_superClass) {
        _inherits(ESTreeParserMixin, _superClass);
        function ESTreeParserMixin() {
          return _superClass.apply(this, arguments) || this;
        }
        var _proto = ESTreeParserMixin.prototype;
        _proto.parse = function parse() {
          var file = toESTreeLocation(_superClass.prototype.parse.call(this));
          if (this.options.tokens) {
            file.tokens = file.tokens.map(toESTreeLocation);
          }
          return file;
        };
        _proto.parseRegExpLiteral = function parseRegExpLiteral(_ref) {
          var pattern = _ref.pattern,
            flags = _ref.flags;
          var regex = null;
          try {
            regex = new RegExp(pattern, flags);
          } catch (e) {}
          var node = this.estreeParseLiteral(regex);
          node.regex = {
            pattern: pattern,
            flags: flags
          };
          return node;
        };
        _proto.parseBigIntLiteral = function parseBigIntLiteral(value) {
          var bigInt;
          try {
            bigInt = BigInt(value);
          } catch (_unused) {
            bigInt = null;
          }
          var node = this.estreeParseLiteral(bigInt);
          node.bigint = String(node.value || value);
          return node;
        };
        _proto.parseDecimalLiteral = function parseDecimalLiteral(value) {
          var decimal = null;
          var node = this.estreeParseLiteral(decimal);
          node.decimal = String(node.value || value);
          return node;
        };
        _proto.estreeParseLiteral = function estreeParseLiteral(value) {
          return this.parseLiteral(value, "Literal");
        };
        _proto.parseStringLiteral = function parseStringLiteral(value) {
          return this.estreeParseLiteral(value);
        };
        _proto.parseNumericLiteral = function parseNumericLiteral(value) {
          return this.estreeParseLiteral(value);
        };
        _proto.parseNullLiteral = function parseNullLiteral() {
          return this.estreeParseLiteral(null);
        };
        _proto.parseBooleanLiteral = function parseBooleanLiteral(value) {
          return this.estreeParseLiteral(value);
        };
        _proto.directiveToStmt = function directiveToStmt(directive) {
          var expression = directive.value;
          delete directive.value;
          expression.type = "Literal";
          expression.raw = expression.extra.raw;
          expression.value = expression.extra.expressionValue;
          var stmt = directive;
          stmt.type = "ExpressionStatement";
          stmt.expression = expression;
          stmt.directive = expression.extra.rawValue;
          delete expression.extra;
          return stmt;
        };
        _proto.initFunction = function initFunction(node, isAsync) {
          _superClass.prototype.initFunction.call(this, node, isAsync);
          node.expression = false;
        };
        _proto.checkDeclaration = function checkDeclaration(node) {
          if (node != null && this.isObjectProperty(node)) {
            this.checkDeclaration(node.value);
          } else {
            _superClass.prototype.checkDeclaration.call(this, node);
          }
        };
        _proto.getObjectOrClassMethodParams = function getObjectOrClassMethodParams(method) {
          return method.value.params;
        };
        _proto.isValidDirective = function isValidDirective(stmt) {
          var _stmt$expression$extr;
          return stmt.type === "ExpressionStatement" && stmt.expression.type === "Literal" && typeof stmt.expression.value === "string" && !((_stmt$expression$extr = stmt.expression.extra) != null && _stmt$expression$extr.parenthesized);
        };
        _proto.parseBlockBody = function parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) {
          var _this = this;
          _superClass.prototype.parseBlockBody.call(this, node, allowDirectives, topLevel, end, afterBlockParse);
          var directiveStatements = node.directives.map(function (d) {
            return _this.directiveToStmt(d);
          });
          node.body = directiveStatements.concat(node.body);
          delete node.directives;
        };
        _proto.pushClassMethod = function pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {
          this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true);
          if (method.typeParameters) {
            method.value.typeParameters = method.typeParameters;
            delete method.typeParameters;
          }
          classBody.body.push(method);
        };
        _proto.parsePrivateName = function parsePrivateName() {
          var node = _superClass.prototype.parsePrivateName.call(this);
          {
            if (!this.getPluginOption("estree", "classFeatures")) {
              return node;
            }
          }
          return this.convertPrivateNameToPrivateIdentifier(node);
        };
        _proto.convertPrivateNameToPrivateIdentifier = function convertPrivateNameToPrivateIdentifier(node) {
          var name = _superClass.prototype.getPrivateNameSV.call(this, node);
          node = node;
          delete node.id;
          node.name = name;
          node.type = "PrivateIdentifier";
          return node;
        };
        _proto.isPrivateName = function isPrivateName(node) {
          {
            if (!this.getPluginOption("estree", "classFeatures")) {
              return _superClass.prototype.isPrivateName.call(this, node);
            }
          }
          return node.type === "PrivateIdentifier";
        };
        _proto.getPrivateNameSV = function getPrivateNameSV(node) {
          {
            if (!this.getPluginOption("estree", "classFeatures")) {
              return _superClass.prototype.getPrivateNameSV.call(this, node);
            }
          }
          return node.name;
        };
        _proto.parseLiteral = function parseLiteral(value, type) {
          var node = _superClass.prototype.parseLiteral.call(this, value, type);
          node.raw = node.extra.raw;
          delete node.extra;
          return node;
        };
        _proto.parseFunctionBody = function parseFunctionBody(node, allowExpression, isMethod) {
          if (isMethod === void 0) {
            isMethod = false;
          }
          _superClass.prototype.parseFunctionBody.call(this, node, allowExpression, isMethod);
          node.expression = node.body.type !== "BlockStatement";
        };
        _proto.parseMethod = function parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope) {
          if (inClassScope === void 0) {
            inClassScope = false;
          }
          var funcNode = this.startNode();
          funcNode.kind = node.kind;
          funcNode = _superClass.prototype.parseMethod.call(this, funcNode, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope);
          funcNode.type = "FunctionExpression";
          delete funcNode.kind;
          node.value = funcNode;
          if (type === "ClassPrivateMethod") {
            node.computed = false;
          }
          return this.finishNode(node, "MethodDefinition");
        };
        _proto.parseClassProperty = function parseClassProperty() {
          var _superClass$prototype;
          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
            args[_key] = arguments[_key];
          }
          var propertyNode = (_superClass$prototype = _superClass.prototype.parseClassProperty).call.apply(_superClass$prototype, [this].concat(args));
          {
            if (!this.getPluginOption("estree", "classFeatures")) {
              return propertyNode;
            }
          }
          propertyNode.type = "PropertyDefinition";
          return propertyNode;
        };
        _proto.parseClassPrivateProperty = function parseClassPrivateProperty() {
          var _superClass$prototype2;
          for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
            args[_key2] = arguments[_key2];
          }
          var propertyNode = (_superClass$prototype2 = _superClass.prototype.parseClassPrivateProperty).call.apply(_superClass$prototype2, [this].concat(args));
          {
            if (!this.getPluginOption("estree", "classFeatures")) {
              return propertyNode;
            }
          }
          propertyNode.type = "PropertyDefinition";
          propertyNode.computed = false;
          return propertyNode;
        };
        _proto.parseObjectMethod = function parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) {
          var node = _superClass.prototype.parseObjectMethod.call(this, prop, isGenerator, isAsync, isPattern, isAccessor);
          if (node) {
            node.type = "Property";
            if (node.kind === "method") {
              node.kind = "init";
            }
            node.shorthand = false;
          }
          return node;
        };
        _proto.parseObjectProperty = function parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) {
          var node = _superClass.prototype.parseObjectProperty.call(this, prop, startLoc, isPattern, refExpressionErrors);
          if (node) {
            node.kind = "init";
            node.type = "Property";
          }
          return node;
        };
        _proto.isValidLVal = function isValidLVal(type, isUnparenthesizedInAssign, binding) {
          return type === "Property" ? "value" : _superClass.prototype.isValidLVal.call(this, type, isUnparenthesizedInAssign, binding);
        };
        _proto.isAssignable = function isAssignable(node, isBinding) {
          if (node != null && this.isObjectProperty(node)) {
            return this.isAssignable(node.value, isBinding);
          }
          return _superClass.prototype.isAssignable.call(this, node, isBinding);
        };
        _proto.toAssignable = function toAssignable(node, isLHS) {
          if (isLHS === void 0) {
            isLHS = false;
          }
          if (node != null && this.isObjectProperty(node)) {
            var key = node.key,
              value = node.value;
            if (this.isPrivateName(key)) {
              this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start);
            }
            this.toAssignable(value, isLHS);
          } else {
            _superClass.prototype.toAssignable.call(this, node, isLHS);
          }
        };
        _proto.toAssignableObjectExpressionProp = function toAssignableObjectExpressionProp(prop, isLast, isLHS) {
          if (prop.kind === "get" || prop.kind === "set") {
            this.raise(Errors.PatternHasAccessor, {
              at: prop.key
            });
          } else if (prop.method) {
            this.raise(Errors.PatternHasMethod, {
              at: prop.key
            });
          } else {
            _superClass.prototype.toAssignableObjectExpressionProp.call(this, prop, isLast, isLHS);
          }
        };
        _proto.finishCallExpression = function finishCallExpression(unfinished, optional) {
          var node = _superClass.prototype.finishCallExpression.call(this, unfinished, optional);
          if (node.callee.type === "Import") {
            node.type = "ImportExpression";
            node.source = node.arguments[0];
            if (this.hasPlugin("importAssertions")) {
              var _node$arguments$;
              node.attributes = (_node$arguments$ = node.arguments[1]) != null ? _node$arguments$ : null;
            }
            delete node.arguments;
            delete node.callee;
          }
          return node;
        };
        _proto.toReferencedArguments = function toReferencedArguments(node) {
          if (node.type === "ImportExpression") {
            return;
          }
          _superClass.prototype.toReferencedArguments.call(this, node);
        };
        _proto.parseExport = function parseExport(unfinished, decorators) {
          var exportStartLoc = this.state.lastTokStartLoc;
          var node = _superClass.prototype.parseExport.call(this, unfinished, decorators);
          switch (node.type) {
            case "ExportAllDeclaration":
              node.exported = null;
              break;
            case "ExportNamedDeclaration":
              if (node.specifiers.length === 1 && node.specifiers[0].type === "ExportNamespaceSpecifier") {
                node.type = "ExportAllDeclaration";
                node.exported = node.specifiers[0].exported;
                delete node.specifiers;
              }
            case "ExportDefaultDeclaration":
              {
                var _declaration$decorato;
                var declaration = node.declaration;
                if ((declaration == null ? void 0 : declaration.type) === "ClassDeclaration" && ((_declaration$decorato = declaration.decorators) == null ? void 0 : _declaration$decorato.length) > 0 && declaration.start === node.start) {
                  this.resetStartLocation(node, exportStartLoc);
                }
              }
              break;
          }
          return node;
        };
        _proto.parseSubscript = function parseSubscript(base, startLoc, noCalls, state) {
          var node = _superClass.prototype.parseSubscript.call(this, base, startLoc, noCalls, state);
          if (state.optionalChainMember) {
            if (node.type === "OptionalMemberExpression" || node.type === "OptionalCallExpression") {
              node.type = node.type.substring(8);
            }
            if (state.stop) {
              var chain = this.startNodeAtNode(node);
              chain.expression = node;
              return this.finishNode(chain, "ChainExpression");
            }
          } else if (node.type === "MemberExpression" || node.type === "CallExpression") {
            node.optional = false;
          }
          return node;
        };
        _proto.hasPropertyAsPrivateName = function hasPropertyAsPrivateName(node) {
          if (node.type === "ChainExpression") {
            node = node.expression;
          }
          return _superClass.prototype.hasPropertyAsPrivateName.call(this, node);
        };
        _proto.isObjectProperty = function isObjectProperty(node) {
          return node.type === "Property" && node.kind === "init" && !node.method;
        };
        _proto.isObjectMethod = function isObjectMethod(node) {
          return node.method || node.kind === "get" || node.kind === "set";
        };
        _proto.finishNodeAt = function finishNodeAt(node, type, endLoc) {
          return toESTreeLocation(_superClass.prototype.finishNodeAt.call(this, node, type, endLoc));
        };
        _proto.resetStartLocation = function resetStartLocation(node, startLoc) {
          _superClass.prototype.resetStartLocation.call(this, node, startLoc);
          toESTreeLocation(node);
        };
        _proto.resetEndLocation = function resetEndLocation(node, endLoc) {
          if (endLoc === void 0) {
            endLoc = this.state.lastTokEndLoc;
          }
          _superClass.prototype.resetEndLocation.call(this, node, endLoc);
          toESTreeLocation(node);
        };
        return _createClass(ESTreeParserMixin);
      }(superClass);
    });
  
    function isIteratorStart(current, next, next2) {
      return current === 64 && next === 64 && isIdentifierStart(next2);
    }
    var reservedWordLikeSet = new Set(["break", "case", "catch", "continue", "debugger", "default", "do", "else", "finally", "for", "function", "if", "return", "switch", "throw", "try", "var", "const", "while", "with", "new", "this", "super", "class", "extends", "export", "import", "null", "true", "false", "in", "instanceof", "typeof", "void", "delete", "implements", "interface", "let", "package", "private", "protected", "public", "static", "yield", "eval", "arguments", "enum", "await"]);
    function canBeReservedWord(word) {
      return reservedWordLikeSet.has(word);
    }
  
    var SCOPE_OTHER = 0,
      SCOPE_PROGRAM = 1,
      SCOPE_FUNCTION = 2,
      SCOPE_ARROW = 4,
      SCOPE_SIMPLE_CATCH = 8,
      SCOPE_SUPER = 16,
      SCOPE_DIRECT_SUPER = 32,
      SCOPE_CLASS = 64,
      SCOPE_STATIC_BLOCK = 128,
      SCOPE_TS_MODULE = 256,
      SCOPE_VAR = SCOPE_PROGRAM | SCOPE_FUNCTION | SCOPE_STATIC_BLOCK | SCOPE_TS_MODULE;
    var BIND_KIND_VALUE = 1,
      BIND_KIND_TYPE = 2,
      BIND_SCOPE_VAR = 4,
      BIND_SCOPE_LEXICAL = 8,
      BIND_SCOPE_FUNCTION = 16,
      BIND_FLAGS_NONE = 64,
      BIND_FLAGS_CLASS = 128,
      BIND_FLAGS_TS_ENUM = 256,
      BIND_FLAGS_TS_CONST_ENUM = 512,
      BIND_FLAGS_TS_EXPORT_ONLY = 1024,
      BIND_FLAGS_FLOW_DECLARE_FN = 2048,
      BIND_FLAGS_TS_IMPORT = 4096,
      BIND_FLAGS_NO_LET_IN_LEXICAL = 8192;
    var BIND_CLASS = BIND_KIND_VALUE | BIND_KIND_TYPE | BIND_SCOPE_LEXICAL | BIND_FLAGS_CLASS | BIND_FLAGS_NO_LET_IN_LEXICAL,
      BIND_LEXICAL = BIND_KIND_VALUE | 0 | BIND_SCOPE_LEXICAL | BIND_FLAGS_NO_LET_IN_LEXICAL,
      BIND_CATCH_PARAM = BIND_KIND_VALUE | 0 | BIND_SCOPE_LEXICAL | 0,
      BIND_VAR = BIND_KIND_VALUE | 0 | BIND_SCOPE_VAR | 0,
      BIND_FUNCTION = BIND_KIND_VALUE | 0 | BIND_SCOPE_FUNCTION | 0,
      BIND_TS_INTERFACE = 0 | BIND_KIND_TYPE | 0 | BIND_FLAGS_CLASS,
      BIND_TS_TYPE = 0 | BIND_KIND_TYPE | 0 | 0,
      BIND_TS_ENUM = BIND_KIND_VALUE | BIND_KIND_TYPE | BIND_SCOPE_LEXICAL | BIND_FLAGS_TS_ENUM | BIND_FLAGS_NO_LET_IN_LEXICAL,
      BIND_TS_AMBIENT = 0 | 0 | 0 | BIND_FLAGS_TS_EXPORT_ONLY,
      BIND_NONE = 0 | 0 | 0 | BIND_FLAGS_NONE,
      BIND_OUTSIDE = BIND_KIND_VALUE | 0 | 0 | BIND_FLAGS_NONE,
      BIND_TS_CONST_ENUM = BIND_TS_ENUM | BIND_FLAGS_TS_CONST_ENUM,
      BIND_TS_NAMESPACE = 0 | 0 | 0 | BIND_FLAGS_TS_EXPORT_ONLY,
      BIND_TS_TYPE_IMPORT = 0 | BIND_KIND_TYPE | 0 | BIND_FLAGS_TS_IMPORT,
      BIND_FLOW_DECLARE_FN = BIND_FLAGS_FLOW_DECLARE_FN;
    var CLASS_ELEMENT_FLAG_STATIC = 4,
      CLASS_ELEMENT_KIND_GETTER = 2,
      CLASS_ELEMENT_KIND_SETTER = 1,
      CLASS_ELEMENT_KIND_ACCESSOR = CLASS_ELEMENT_KIND_GETTER | CLASS_ELEMENT_KIND_SETTER;
    var CLASS_ELEMENT_STATIC_GETTER = CLASS_ELEMENT_KIND_GETTER | CLASS_ELEMENT_FLAG_STATIC,
      CLASS_ELEMENT_STATIC_SETTER = CLASS_ELEMENT_KIND_SETTER | CLASS_ELEMENT_FLAG_STATIC,
      CLASS_ELEMENT_INSTANCE_GETTER = CLASS_ELEMENT_KIND_GETTER,
      CLASS_ELEMENT_INSTANCE_SETTER = CLASS_ELEMENT_KIND_SETTER,
      CLASS_ELEMENT_OTHER = 0;
  
    var Scope = _createClass(function Scope(flags) {
      this["var"] = new Set();
      this.lexical = new Set();
      this.functions = new Set();
      this.flags = flags;
    });
    var ScopeHandler = function () {
      function ScopeHandler(parser, inModule) {
        this.parser = void 0;
        this.scopeStack = [];
        this.inModule = void 0;
        this.undefinedExports = new Map();
        this.parser = parser;
        this.inModule = inModule;
      }
      var _proto = ScopeHandler.prototype;
      _proto.createScope = function createScope(flags) {
        return new Scope(flags);
      };
      _proto.enter = function enter(flags) {
        this.scopeStack.push(this.createScope(flags));
      };
      _proto.exit = function exit() {
        var scope = this.scopeStack.pop();
        return scope.flags;
      };
      _proto.treatFunctionsAsVarInScope = function treatFunctionsAsVarInScope(scope) {
        return !!(scope.flags & (SCOPE_FUNCTION | SCOPE_STATIC_BLOCK) || !this.parser.inModule && scope.flags & SCOPE_PROGRAM);
      };
      _proto.declareName = function declareName(name, bindingType, loc) {
        var scope = this.currentScope();
        if (bindingType & BIND_SCOPE_LEXICAL || bindingType & BIND_SCOPE_FUNCTION) {
          this.checkRedeclarationInScope(scope, name, bindingType, loc);
          if (bindingType & BIND_SCOPE_FUNCTION) {
            scope.functions.add(name);
          } else {
            scope.lexical.add(name);
          }
          if (bindingType & BIND_SCOPE_LEXICAL) {
            this.maybeExportDefined(scope, name);
          }
        } else if (bindingType & BIND_SCOPE_VAR) {
          for (var i = this.scopeStack.length - 1; i >= 0; --i) {
            scope = this.scopeStack[i];
            this.checkRedeclarationInScope(scope, name, bindingType, loc);
            scope["var"].add(name);
            this.maybeExportDefined(scope, name);
            if (scope.flags & SCOPE_VAR) break;
          }
        }
        if (this.parser.inModule && scope.flags & SCOPE_PROGRAM) {
          this.undefinedExports["delete"](name);
        }
      };
      _proto.maybeExportDefined = function maybeExportDefined(scope, name) {
        if (this.parser.inModule && scope.flags & SCOPE_PROGRAM) {
          this.undefinedExports["delete"](name);
        }
      };
      _proto.checkRedeclarationInScope = function checkRedeclarationInScope(scope, name, bindingType, loc) {
        if (this.isRedeclaredInScope(scope, name, bindingType)) {
          this.parser.raise(Errors.VarRedeclaration, {
            at: loc,
            identifierName: name
          });
        }
      };
      _proto.isRedeclaredInScope = function isRedeclaredInScope(scope, name, bindingType) {
        if (!(bindingType & BIND_KIND_VALUE)) return false;
        if (bindingType & BIND_SCOPE_LEXICAL) {
          return scope.lexical.has(name) || scope.functions.has(name) || scope["var"].has(name);
        }
        if (bindingType & BIND_SCOPE_FUNCTION) {
          return scope.lexical.has(name) || !this.treatFunctionsAsVarInScope(scope) && scope["var"].has(name);
        }
        return scope.lexical.has(name) && !(scope.flags & SCOPE_SIMPLE_CATCH && scope.lexical.values().next().value === name) || !this.treatFunctionsAsVarInScope(scope) && scope.functions.has(name);
      };
      _proto.checkLocalExport = function checkLocalExport(id) {
        var name = id.name;
        var topLevelScope = this.scopeStack[0];
        if (!topLevelScope.lexical.has(name) && !topLevelScope["var"].has(name) && !topLevelScope.functions.has(name)) {
          this.undefinedExports.set(name, id.loc.start);
        }
      };
      _proto.currentScope = function currentScope() {
        return this.scopeStack[this.scopeStack.length - 1];
      };
      _proto.currentVarScopeFlags = function currentVarScopeFlags() {
        for (var i = this.scopeStack.length - 1;; i--) {
          var flags = this.scopeStack[i].flags;
          if (flags & SCOPE_VAR) {
            return flags;
          }
        }
      };
      _proto.currentThisScopeFlags = function currentThisScopeFlags() {
        for (var i = this.scopeStack.length - 1;; i--) {
          var flags = this.scopeStack[i].flags;
          if (flags & (SCOPE_VAR | SCOPE_CLASS) && !(flags & SCOPE_ARROW)) {
            return flags;
          }
        }
      };
      _createClass(ScopeHandler, [{
        key: "inTopLevel",
        get: function get() {
          return (this.currentScope().flags & SCOPE_PROGRAM) > 0;
        }
      }, {
        key: "inFunction",
        get: function get() {
          return (this.currentVarScopeFlags() & SCOPE_FUNCTION) > 0;
        }
      }, {
        key: "allowSuper",
        get: function get() {
          return (this.currentThisScopeFlags() & SCOPE_SUPER) > 0;
        }
      }, {
        key: "allowDirectSuper",
        get: function get() {
          return (this.currentThisScopeFlags() & SCOPE_DIRECT_SUPER) > 0;
        }
      }, {
        key: "inClass",
        get: function get() {
          return (this.currentThisScopeFlags() & SCOPE_CLASS) > 0;
        }
      }, {
        key: "inClassAndNotInNonArrowFunction",
        get: function get() {
          var flags = this.currentThisScopeFlags();
          return (flags & SCOPE_CLASS) > 0 && (flags & SCOPE_FUNCTION) === 0;
        }
      }, {
        key: "inStaticBlock",
        get: function get() {
          for (var i = this.scopeStack.length - 1;; i--) {
            var flags = this.scopeStack[i].flags;
            if (flags & SCOPE_STATIC_BLOCK) {
              return true;
            }
            if (flags & (SCOPE_VAR | SCOPE_CLASS)) {
              return false;
            }
          }
        }
      }, {
        key: "inNonArrowFunction",
        get: function get() {
          return (this.currentThisScopeFlags() & SCOPE_FUNCTION) > 0;
        }
      }, {
        key: "treatFunctionsAsVar",
        get: function get() {
          return this.treatFunctionsAsVarInScope(this.currentScope());
        }
      }]);
      return ScopeHandler;
    }();
  
    var FlowScope = function (_Scope) {
      _inherits(FlowScope, _Scope);
      function FlowScope() {
        var _this;
        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
          args[_key] = arguments[_key];
        }
        _this = _Scope.call.apply(_Scope, [this].concat(args)) || this;
        _this.declareFunctions = new Set();
        return _this;
      }
      return _createClass(FlowScope);
    }(Scope);
    var FlowScopeHandler = function (_ScopeHandler) {
      _inherits(FlowScopeHandler, _ScopeHandler);
      function FlowScopeHandler() {
        return _ScopeHandler.apply(this, arguments) || this;
      }
      var _proto = FlowScopeHandler.prototype;
      _proto.createScope = function createScope(flags) {
        return new FlowScope(flags);
      };
      _proto.declareName = function declareName(name, bindingType, loc) {
        var scope = this.currentScope();
        if (bindingType & BIND_FLAGS_FLOW_DECLARE_FN) {
          this.checkRedeclarationInScope(scope, name, bindingType, loc);
          this.maybeExportDefined(scope, name);
          scope.declareFunctions.add(name);
          return;
        }
        _ScopeHandler.prototype.declareName.call(this, name, bindingType, loc);
      };
      _proto.isRedeclaredInScope = function isRedeclaredInScope(scope, name, bindingType) {
        if (_ScopeHandler.prototype.isRedeclaredInScope.call(this, scope, name, bindingType)) return true;
        if (bindingType & BIND_FLAGS_FLOW_DECLARE_FN) {
          return !scope.declareFunctions.has(name) && (scope.lexical.has(name) || scope.functions.has(name));
        }
        return false;
      };
      _proto.checkLocalExport = function checkLocalExport(id) {
        if (!this.scopeStack[0].declareFunctions.has(id.name)) {
          _ScopeHandler.prototype.checkLocalExport.call(this, id);
        }
      };
      return _createClass(FlowScopeHandler);
    }(ScopeHandler);
  
    var BaseParser = function () {
      function BaseParser() {
        this.sawUnambiguousESM = false;
        this.ambiguousScriptDifferentAst = false;
      }
      var _proto = BaseParser.prototype;
      _proto.hasPlugin = function hasPlugin(pluginConfig) {
        if (typeof pluginConfig === "string") {
          return this.plugins.has(pluginConfig);
        } else {
          var pluginName = pluginConfig[0],
            pluginOptions = pluginConfig[1];
          if (!this.hasPlugin(pluginName)) {
            return false;
          }
          var actualOptions = this.plugins.get(pluginName);
          for (var _i2 = 0, _ref2 = Object.keys(pluginOptions); _i2 < _ref2.length; _i2++) {
            var key = _ref2[_i2];
            if ((actualOptions == null ? void 0 : actualOptions[key]) !== pluginOptions[key]) {
              return false;
            }
          }
          return true;
        }
      };
      _proto.getPluginOption = function getPluginOption(plugin, name) {
        var _this$plugins$get;
        return (_this$plugins$get = this.plugins.get(plugin)) == null ? void 0 : _this$plugins$get[name];
      };
      return _createClass(BaseParser);
    }();
  
    function setTrailingComments(node, comments) {
      if (node.trailingComments === undefined) {
        node.trailingComments = comments;
      } else {
        var _node$trailingComment;
        (_node$trailingComment = node.trailingComments).unshift.apply(_node$trailingComment, comments);
      }
    }
    function setLeadingComments(node, comments) {
      if (node.leadingComments === undefined) {
        node.leadingComments = comments;
      } else {
        var _node$leadingComments;
        (_node$leadingComments = node.leadingComments).unshift.apply(_node$leadingComments, comments);
      }
    }
    function setInnerComments(node, comments) {
      if (node.innerComments === undefined) {
        node.innerComments = comments;
      } else {
        var _node$innerComments;
        (_node$innerComments = node.innerComments).unshift.apply(_node$innerComments, comments);
      }
    }
    function adjustInnerComments(node, elements, commentWS) {
      var lastElement = null;
      var i = elements.length;
      while (lastElement === null && i > 0) {
        lastElement = elements[--i];
      }
      if (lastElement === null || lastElement.start > commentWS.start) {
        setInnerComments(node, commentWS.comments);
      } else {
        setTrailingComments(lastElement, commentWS.comments);
      }
    }
    var CommentsParser = function (_BaseParser) {
      _inherits(CommentsParser, _BaseParser);
      function CommentsParser() {
        return _BaseParser.apply(this, arguments) || this;
      }
      var _proto = CommentsParser.prototype;
      _proto.addComment = function addComment(comment) {
        if (this.filename) comment.loc.filename = this.filename;
        this.state.comments.push(comment);
      };
      _proto.processComment = function processComment(node) {
        var commentStack = this.state.commentStack;
        var commentStackLength = commentStack.length;
        if (commentStackLength === 0) return;
        var i = commentStackLength - 1;
        var lastCommentWS = commentStack[i];
        if (lastCommentWS.start === node.end) {
          lastCommentWS.leadingNode = node;
          i--;
        }
        var nodeStart = node.start;
        for (; i >= 0; i--) {
          var commentWS = commentStack[i];
          var commentEnd = commentWS.end;
          if (commentEnd > nodeStart) {
            commentWS.containingNode = node;
            this.finalizeComment(commentWS);
            commentStack.splice(i, 1);
          } else {
            if (commentEnd === nodeStart) {
              commentWS.trailingNode = node;
            }
            break;
          }
        }
      };
      _proto.finalizeComment = function finalizeComment(commentWS) {
        var comments = commentWS.comments;
        if (commentWS.leadingNode !== null || commentWS.trailingNode !== null) {
          if (commentWS.leadingNode !== null) {
            setTrailingComments(commentWS.leadingNode, comments);
          }
          if (commentWS.trailingNode !== null) {
            setLeadingComments(commentWS.trailingNode, comments);
          }
        } else {
          var node = commentWS.containingNode,
            commentStart = commentWS.start;
          if (this.input.charCodeAt(commentStart - 1) === 44) {
            switch (node.type) {
              case "ObjectExpression":
              case "ObjectPattern":
              case "RecordExpression":
                adjustInnerComments(node, node.properties, commentWS);
                break;
              case "CallExpression":
              case "OptionalCallExpression":
                adjustInnerComments(node, node.arguments, commentWS);
                break;
              case "FunctionDeclaration":
              case "FunctionExpression":
              case "ArrowFunctionExpression":
              case "ObjectMethod":
              case "ClassMethod":
              case "ClassPrivateMethod":
                adjustInnerComments(node, node.params, commentWS);
                break;
              case "ArrayExpression":
              case "ArrayPattern":
              case "TupleExpression":
                adjustInnerComments(node, node.elements, commentWS);
                break;
              case "ExportNamedDeclaration":
              case "ImportDeclaration":
                adjustInnerComments(node, node.specifiers, commentWS);
                break;
              default:
                {
                  setInnerComments(node, comments);
                }
            }
          } else {
            setInnerComments(node, comments);
          }
        }
      };
      _proto.finalizeRemainingComments = function finalizeRemainingComments() {
        var commentStack = this.state.commentStack;
        for (var i = commentStack.length - 1; i >= 0; i--) {
          this.finalizeComment(commentStack[i]);
        }
        this.state.commentStack = [];
      };
      _proto.resetPreviousNodeTrailingComments = function resetPreviousNodeTrailingComments(node) {
        var commentStack = this.state.commentStack;
        var length = commentStack.length;
        if (length === 0) return;
        var commentWS = commentStack[length - 1];
        if (commentWS.leadingNode === node) {
          commentWS.leadingNode = null;
        }
      };
      _proto.takeSurroundingComments = function takeSurroundingComments(node, start, end) {
        var commentStack = this.state.commentStack;
        var commentStackLength = commentStack.length;
        if (commentStackLength === 0) return;
        var i = commentStackLength - 1;
        for (; i >= 0; i--) {
          var commentWS = commentStack[i];
          var commentEnd = commentWS.end;
          var commentStart = commentWS.start;
          if (commentStart === end) {
            commentWS.leadingNode = node;
          } else if (commentEnd === start) {
            commentWS.trailingNode = node;
          } else if (commentEnd < start) {
            break;
          }
        }
      };
      return _createClass(CommentsParser);
    }(BaseParser);
  
    var lineBreak = /\r\n?|[\n\u2028\u2029]/;
    var lineBreakG = new RegExp(lineBreak.source, "g");
    function isNewLine(code) {
      switch (code) {
        case 10:
        case 13:
        case 8232:
        case 8233:
          return true;
        default:
          return false;
      }
    }
    var skipWhiteSpace = /(?:\s|\/\/.*|\/\*[^]*?\*\/)*/g;
    var skipWhiteSpaceInLine = /(?:[^\S\n\r\u2028\u2029]|\/\/.*|\/\*.*?\*\/)*/g;
    var skipWhiteSpaceToLineBreak = new RegExp("(?=(" + skipWhiteSpaceInLine.source + "))\\1" + /(?=[\n\r\u2028\u2029]|\/\*(?!.*?\*\/)|$)/.source, "y");
    function isWhitespace(code) {
      switch (code) {
        case 0x0009:
        case 0x000b:
        case 0x000c:
        case 32:
        case 160:
        case 5760:
        case 0x2000:
        case 0x2001:
        case 0x2002:
        case 0x2003:
        case 0x2004:
        case 0x2005:
        case 0x2006:
        case 0x2007:
        case 0x2008:
        case 0x2009:
        case 0x200a:
        case 0x202f:
        case 0x205f:
        case 0x3000:
        case 0xfeff:
          return true;
        default:
          return false;
      }
    }
  
    var State = function () {
      function State() {
        this.strict = void 0;
        this.curLine = void 0;
        this.lineStart = void 0;
        this.startLoc = void 0;
        this.endLoc = void 0;
        this.errors = [];
        this.potentialArrowAt = -1;
        this.noArrowAt = [];
        this.noArrowParamsConversionAt = [];
        this.maybeInArrowParameters = false;
        this.inType = false;
        this.noAnonFunctionType = false;
        this.hasFlowComment = false;
        this.isAmbientContext = false;
        this.inAbstractClass = false;
        this.inDisallowConditionalTypesContext = false;
        this.topicContext = {
          maxNumOfResolvableTopics: 0,
          maxTopicIndex: null
        };
        this.soloAwait = false;
        this.inFSharpPipelineDirectBody = false;
        this.labels = [];
        this.comments = [];
        this.commentStack = [];
        this.pos = 0;
        this.type = 137;
        this.value = null;
        this.start = 0;
        this.end = 0;
        this.lastTokEndLoc = null;
        this.lastTokStartLoc = null;
        this.lastTokStart = 0;
        this.context = [types.brace];
        this.canStartJSXElement = true;
        this.containsEsc = false;
        this.firstInvalidTemplateEscapePos = null;
        this.strictErrors = new Map();
        this.tokensLength = 0;
      }
      var _proto = State.prototype;
      _proto.init = function init(_ref) {
        var strictMode = _ref.strictMode,
          sourceType = _ref.sourceType,
          startLine = _ref.startLine,
          startColumn = _ref.startColumn;
        this.strict = strictMode === false ? false : strictMode === true ? true : sourceType === "module";
        this.curLine = startLine;
        this.lineStart = -startColumn;
        this.startLoc = this.endLoc = new Position(startLine, startColumn, 0);
      };
      _proto.curPosition = function curPosition() {
        return new Position(this.curLine, this.pos - this.lineStart, this.pos);
      };
      _proto.clone = function clone(skipArrays) {
        var state = new State();
        var keys = Object.keys(this);
        for (var i = 0, length = keys.length; i < length; i++) {
          var key = keys[i];
          var val = this[key];
          if (!skipArrays && Array.isArray(val)) {
            val = val.slice();
          }
          state[key] = val;
        }
        return state;
      };
      return _createClass(State);
    }();
  
    var _excluded$4 = ["at"],
      _excluded2 = ["at"];
    function buildPosition(pos, lineStart, curLine) {
      return new Position(curLine, pos - lineStart, pos);
    }
    var VALID_REGEX_FLAGS = new Set([103, 109, 115, 105, 121, 117, 100, 118]);
    var Token = _createClass(function Token(state) {
      this.type = state.type;
      this.value = state.value;
      this.start = state.start;
      this.end = state.end;
      this.loc = new SourceLocation(state.startLoc, state.endLoc);
    });
    var Tokenizer = function (_CommentsParser) {
      _inherits(Tokenizer, _CommentsParser);
      function Tokenizer(options, input) {
        var _this;
        _this = _CommentsParser.call(this) || this;
        _this.isLookahead = void 0;
        _this.tokens = [];
        _this.errorHandlers_readInt = {
          invalidDigit: function invalidDigit(pos, lineStart, curLine, radix) {
            if (!_this.options.errorRecovery) return false;
            _this.raise(Errors.InvalidDigit, {
              at: buildPosition(pos, lineStart, curLine),
              radix: radix
            });
            return true;
          },
          numericSeparatorInEscapeSequence: _this.errorBuilder(Errors.NumericSeparatorInEscapeSequence),
          unexpectedNumericSeparator: _this.errorBuilder(Errors.UnexpectedNumericSeparator)
        };
        _this.errorHandlers_readCodePoint = Object.assign({}, _this.errorHandlers_readInt, {
          invalidEscapeSequence: _this.errorBuilder(Errors.InvalidEscapeSequence),
          invalidCodePoint: _this.errorBuilder(Errors.InvalidCodePoint)
        });
        _this.errorHandlers_readStringContents_string = Object.assign({}, _this.errorHandlers_readCodePoint, {
          strictNumericEscape: function strictNumericEscape(pos, lineStart, curLine) {
            _this.recordStrictModeErrors(Errors.StrictNumericEscape, {
              at: buildPosition(pos, lineStart, curLine)
            });
          },
          unterminated: function unterminated(pos, lineStart, curLine) {
            throw _this.raise(Errors.UnterminatedString, {
              at: buildPosition(pos - 1, lineStart, curLine)
            });
          }
        });
        _this.errorHandlers_readStringContents_template = Object.assign({}, _this.errorHandlers_readCodePoint, {
          strictNumericEscape: _this.errorBuilder(Errors.StrictNumericEscape),
          unterminated: function unterminated(pos, lineStart, curLine) {
            throw _this.raise(Errors.UnterminatedTemplate, {
              at: buildPosition(pos, lineStart, curLine)
            });
          }
        });
        _this.state = new State();
        _this.state.init(options);
        _this.input = input;
        _this.length = input.length;
        _this.isLookahead = false;
        return _this;
      }
      var _proto = Tokenizer.prototype;
      _proto.pushToken = function pushToken(token) {
        this.tokens.length = this.state.tokensLength;
        this.tokens.push(token);
        ++this.state.tokensLength;
      };
      _proto.next = function next() {
        this.checkKeywordEscapes();
        if (this.options.tokens) {
          this.pushToken(new Token(this.state));
        }
        this.state.lastTokStart = this.state.start;
        this.state.lastTokEndLoc = this.state.endLoc;
        this.state.lastTokStartLoc = this.state.startLoc;
        this.nextToken();
      };
      _proto.eat = function eat(type) {
        if (this.match(type)) {
          this.next();
          return true;
        } else {
          return false;
        }
      };
      _proto.match = function match(type) {
        return this.state.type === type;
      };
      _proto.createLookaheadState = function createLookaheadState(state) {
        return {
          pos: state.pos,
          value: null,
          type: state.type,
          start: state.start,
          end: state.end,
          context: [this.curContext()],
          inType: state.inType,
          startLoc: state.startLoc,
          lastTokEndLoc: state.lastTokEndLoc,
          curLine: state.curLine,
          lineStart: state.lineStart,
          curPosition: state.curPosition
        };
      };
      _proto.lookahead = function lookahead() {
        var old = this.state;
        this.state = this.createLookaheadState(old);
        this.isLookahead = true;
        this.nextToken();
        this.isLookahead = false;
        var curr = this.state;
        this.state = old;
        return curr;
      };
      _proto.nextTokenStart = function nextTokenStart() {
        return this.nextTokenStartSince(this.state.pos);
      };
      _proto.nextTokenStartSince = function nextTokenStartSince(pos) {
        skipWhiteSpace.lastIndex = pos;
        return skipWhiteSpace.test(this.input) ? skipWhiteSpace.lastIndex : pos;
      };
      _proto.lookaheadCharCode = function lookaheadCharCode() {
        return this.input.charCodeAt(this.nextTokenStart());
      };
      _proto.nextTokenInLineStart = function nextTokenInLineStart() {
        return this.nextTokenInLineStartSince(this.state.pos);
      };
      _proto.nextTokenInLineStartSince = function nextTokenInLineStartSince(pos) {
        skipWhiteSpaceInLine.lastIndex = pos;
        return skipWhiteSpaceInLine.test(this.input) ? skipWhiteSpaceInLine.lastIndex : pos;
      };
      _proto.lookaheadInLineCharCode = function lookaheadInLineCharCode() {
        return this.input.charCodeAt(this.nextTokenInLineStart());
      };
      _proto.codePointAtPos = function codePointAtPos(pos) {
        var cp = this.input.charCodeAt(pos);
        if ((cp & 0xfc00) === 0xd800 && ++pos < this.input.length) {
          var trail = this.input.charCodeAt(pos);
          if ((trail & 0xfc00) === 0xdc00) {
            cp = 0x10000 + ((cp & 0x3ff) << 10) + (trail & 0x3ff);
          }
        }
        return cp;
      };
      _proto.setStrict = function setStrict(strict) {
        var _this2 = this;
        this.state.strict = strict;
        if (strict) {
          this.state.strictErrors.forEach(function (_ref) {
            var toParseError = _ref[0],
              at = _ref[1];
            return _this2.raise(toParseError, {
              at: at
            });
          });
          this.state.strictErrors.clear();
        }
      };
      _proto.curContext = function curContext() {
        return this.state.context[this.state.context.length - 1];
      };
      _proto.nextToken = function nextToken() {
        this.skipSpace();
        this.state.start = this.state.pos;
        if (!this.isLookahead) this.state.startLoc = this.state.curPosition();
        if (this.state.pos >= this.length) {
          this.finishToken(137);
          return;
        }
        this.getTokenFromCode(this.codePointAtPos(this.state.pos));
      };
      _proto.skipBlockComment = function skipBlockComment(commentEnd) {
        var startLoc;
        if (!this.isLookahead) startLoc = this.state.curPosition();
        var start = this.state.pos;
        var end = this.input.indexOf(commentEnd, start + 2);
        if (end === -1) {
          throw this.raise(Errors.UnterminatedComment, {
            at: this.state.curPosition()
          });
        }
        this.state.pos = end + commentEnd.length;
        lineBreakG.lastIndex = start + 2;
        while (lineBreakG.test(this.input) && lineBreakG.lastIndex <= end) {
          ++this.state.curLine;
          this.state.lineStart = lineBreakG.lastIndex;
        }
        if (this.isLookahead) return;
        var comment = {
          type: "CommentBlock",
          value: this.input.slice(start + 2, end),
          start: start,
          end: end + commentEnd.length,
          loc: new SourceLocation(startLoc, this.state.curPosition())
        };
        if (this.options.tokens) this.pushToken(comment);
        return comment;
      };
      _proto.skipLineComment = function skipLineComment(startSkip) {
        var start = this.state.pos;
        var startLoc;
        if (!this.isLookahead) startLoc = this.state.curPosition();
        var ch = this.input.charCodeAt(this.state.pos += startSkip);
        if (this.state.pos < this.length) {
          while (!isNewLine(ch) && ++this.state.pos < this.length) {
            ch = this.input.charCodeAt(this.state.pos);
          }
        }
        if (this.isLookahead) return;
        var end = this.state.pos;
        var value = this.input.slice(start + startSkip, end);
        var comment = {
          type: "CommentLine",
          value: value,
          start: start,
          end: end,
          loc: new SourceLocation(startLoc, this.state.curPosition())
        };
        if (this.options.tokens) this.pushToken(comment);
        return comment;
      };
      _proto.skipSpace = function skipSpace() {
        var spaceStart = this.state.pos;
        var comments = [];
        loop: while (this.state.pos < this.length) {
          var ch = this.input.charCodeAt(this.state.pos);
          switch (ch) {
            case 32:
            case 160:
            case 9:
              ++this.state.pos;
              break;
            case 13:
              if (this.input.charCodeAt(this.state.pos + 1) === 10) {
                ++this.state.pos;
              }
            case 10:
            case 8232:
            case 8233:
              ++this.state.pos;
              ++this.state.curLine;
              this.state.lineStart = this.state.pos;
              break;
            case 47:
              switch (this.input.charCodeAt(this.state.pos + 1)) {
                case 42:
                  {
                    var comment = this.skipBlockComment("*/");
                    if (comment !== undefined) {
                      this.addComment(comment);
                      if (this.options.attachComment) comments.push(comment);
                    }
                    break;
                  }
                case 47:
                  {
                    var _comment = this.skipLineComment(2);
                    if (_comment !== undefined) {
                      this.addComment(_comment);
                      if (this.options.attachComment) comments.push(_comment);
                    }
                    break;
                  }
                default:
                  break loop;
              }
              break;
            default:
              if (isWhitespace(ch)) {
                ++this.state.pos;
              } else if (ch === 45 && !this.inModule && this.options.annexB) {
                var pos = this.state.pos;
                if (this.input.charCodeAt(pos + 1) === 45 && this.input.charCodeAt(pos + 2) === 62 && (spaceStart === 0 || this.state.lineStart > spaceStart)) {
                  var _comment2 = this.skipLineComment(3);
                  if (_comment2 !== undefined) {
                    this.addComment(_comment2);
                    if (this.options.attachComment) comments.push(_comment2);
                  }
                } else {
                  break loop;
                }
              } else if (ch === 60 && !this.inModule && this.options.annexB) {
                var _pos = this.state.pos;
                if (this.input.charCodeAt(_pos + 1) === 33 && this.input.charCodeAt(_pos + 2) === 45 && this.input.charCodeAt(_pos + 3) === 45) {
                  var _comment3 = this.skipLineComment(4);
                  if (_comment3 !== undefined) {
                    this.addComment(_comment3);
                    if (this.options.attachComment) comments.push(_comment3);
                  }
                } else {
                  break loop;
                }
              } else {
                break loop;
              }
          }
        }
        if (comments.length > 0) {
          var end = this.state.pos;
          var commentWhitespace = {
            start: spaceStart,
            end: end,
            comments: comments,
            leadingNode: null,
            trailingNode: null,
            containingNode: null
          };
          this.state.commentStack.push(commentWhitespace);
        }
      };
      _proto.finishToken = function finishToken(type, val) {
        this.state.end = this.state.pos;
        this.state.endLoc = this.state.curPosition();
        var prevType = this.state.type;
        this.state.type = type;
        this.state.value = val;
        if (!this.isLookahead) {
          this.updateContext(prevType);
        }
      };
      _proto.replaceToken = function replaceToken(type) {
        this.state.type = type;
        this.updateContext();
      };
      _proto.readToken_numberSign = function readToken_numberSign() {
        if (this.state.pos === 0 && this.readToken_interpreter()) {
          return;
        }
        var nextPos = this.state.pos + 1;
        var next = this.codePointAtPos(nextPos);
        if (next >= 48 && next <= 57) {
          throw this.raise(Errors.UnexpectedDigitAfterHash, {
            at: this.state.curPosition()
          });
        }
        if (next === 123 || next === 91 && this.hasPlugin("recordAndTuple")) {
          this.expectPlugin("recordAndTuple");
          if (this.getPluginOption("recordAndTuple", "syntaxType") === "bar") {
            throw this.raise(next === 123 ? Errors.RecordExpressionHashIncorrectStartSyntaxType : Errors.TupleExpressionHashIncorrectStartSyntaxType, {
              at: this.state.curPosition()
            });
          }
          this.state.pos += 2;
          if (next === 123) {
            this.finishToken(7);
          } else {
            this.finishToken(1);
          }
        } else if (isIdentifierStart(next)) {
          ++this.state.pos;
          this.finishToken(136, this.readWord1(next));
        } else if (next === 92) {
          ++this.state.pos;
          this.finishToken(136, this.readWord1());
        } else {
          this.finishOp(27, 1);
        }
      };
      _proto.readToken_dot = function readToken_dot() {
        var next = this.input.charCodeAt(this.state.pos + 1);
        if (next >= 48 && next <= 57) {
          this.readNumber(true);
          return;
        }
        if (next === 46 && this.input.charCodeAt(this.state.pos + 2) === 46) {
          this.state.pos += 3;
          this.finishToken(21);
        } else {
          ++this.state.pos;
          this.finishToken(16);
        }
      };
      _proto.readToken_slash = function readToken_slash() {
        var next = this.input.charCodeAt(this.state.pos + 1);
        if (next === 61) {
          this.finishOp(31, 2);
        } else {
          this.finishOp(56, 1);
        }
      };
      _proto.readToken_interpreter = function readToken_interpreter() {
        if (this.state.pos !== 0 || this.length < 2) return false;
        var ch = this.input.charCodeAt(this.state.pos + 1);
        if (ch !== 33) return false;
        var start = this.state.pos;
        this.state.pos += 1;
        while (!isNewLine(ch) && ++this.state.pos < this.length) {
          ch = this.input.charCodeAt(this.state.pos);
        }
        var value = this.input.slice(start + 2, this.state.pos);
        this.finishToken(28, value);
        return true;
      };
      _proto.readToken_mult_modulo = function readToken_mult_modulo(code) {
        var type = code === 42 ? 55 : 54;
        var width = 1;
        var next = this.input.charCodeAt(this.state.pos + 1);
        if (code === 42 && next === 42) {
          width++;
          next = this.input.charCodeAt(this.state.pos + 2);
          type = 57;
        }
        if (next === 61 && !this.state.inType) {
          width++;
          type = code === 37 ? 33 : 30;
        }
        this.finishOp(type, width);
      };
      _proto.readToken_pipe_amp = function readToken_pipe_amp(code) {
        var next = this.input.charCodeAt(this.state.pos + 1);
        if (next === code) {
          if (this.input.charCodeAt(this.state.pos + 2) === 61) {
            this.finishOp(30, 3);
          } else {
            this.finishOp(code === 124 ? 41 : 42, 2);
          }
          return;
        }
        if (code === 124) {
          if (next === 62) {
            this.finishOp(39, 2);
            return;
          }
          if (this.hasPlugin("recordAndTuple") && next === 125) {
            if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") {
              throw this.raise(Errors.RecordExpressionBarIncorrectEndSyntaxType, {
                at: this.state.curPosition()
              });
            }
            this.state.pos += 2;
            this.finishToken(9);
            return;
          }
          if (this.hasPlugin("recordAndTuple") && next === 93) {
            if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") {
              throw this.raise(Errors.TupleExpressionBarIncorrectEndSyntaxType, {
                at: this.state.curPosition()
              });
            }
            this.state.pos += 2;
            this.finishToken(4);
            return;
          }
        }
        if (next === 61) {
          this.finishOp(30, 2);
          return;
        }
        this.finishOp(code === 124 ? 43 : 45, 1);
      };
      _proto.readToken_caret = function readToken_caret() {
        var next = this.input.charCodeAt(this.state.pos + 1);
        if (next === 61 && !this.state.inType) {
          this.finishOp(32, 2);
        } else if (next === 94 && this.hasPlugin(["pipelineOperator", {
          proposal: "hack",
          topicToken: "^^"
        }])) {
          this.finishOp(37, 2);
          var lookaheadCh = this.input.codePointAt(this.state.pos);
          if (lookaheadCh === 94) {
            this.unexpected();
          }
        } else {
          this.finishOp(44, 1);
        }
      };
      _proto.readToken_atSign = function readToken_atSign() {
        var next = this.input.charCodeAt(this.state.pos + 1);
        if (next === 64 && this.hasPlugin(["pipelineOperator", {
          proposal: "hack",
          topicToken: "@@"
        }])) {
          this.finishOp(38, 2);
        } else {
          this.finishOp(26, 1);
        }
      };
      _proto.readToken_plus_min = function readToken_plus_min(code) {
        var next = this.input.charCodeAt(this.state.pos + 1);
        if (next === code) {
          this.finishOp(34, 2);
          return;
        }
        if (next === 61) {
          this.finishOp(30, 2);
        } else {
          this.finishOp(53, 1);
        }
      };
      _proto.readToken_lt = function readToken_lt() {
        var pos = this.state.pos;
        var next = this.input.charCodeAt(pos + 1);
        if (next === 60) {
          if (this.input.charCodeAt(pos + 2) === 61) {
            this.finishOp(30, 3);
            return;
          }
          this.finishOp(51, 2);
          return;
        }
        if (next === 61) {
          this.finishOp(49, 2);
          return;
        }
        this.finishOp(47, 1);
      };
      _proto.readToken_gt = function readToken_gt() {
        var pos = this.state.pos;
        var next = this.input.charCodeAt(pos + 1);
        if (next === 62) {
          var size = this.input.charCodeAt(pos + 2) === 62 ? 3 : 2;
          if (this.input.charCodeAt(pos + size) === 61) {
            this.finishOp(30, size + 1);
            return;
          }
          this.finishOp(52, size);
          return;
        }
        if (next === 61) {
          this.finishOp(49, 2);
          return;
        }
        this.finishOp(48, 1);
      };
      _proto.readToken_eq_excl = function readToken_eq_excl(code) {
        var next = this.input.charCodeAt(this.state.pos + 1);
        if (next === 61) {
          this.finishOp(46, this.input.charCodeAt(this.state.pos + 2) === 61 ? 3 : 2);
          return;
        }
        if (code === 61 && next === 62) {
          this.state.pos += 2;
          this.finishToken(19);
          return;
        }
        this.finishOp(code === 61 ? 29 : 35, 1);
      };
      _proto.readToken_question = function readToken_question() {
        var next = this.input.charCodeAt(this.state.pos + 1);
        var next2 = this.input.charCodeAt(this.state.pos + 2);
        if (next === 63) {
          if (next2 === 61) {
            this.finishOp(30, 3);
          } else {
            this.finishOp(40, 2);
          }
        } else if (next === 46 && !(next2 >= 48 && next2 <= 57)) {
          this.state.pos += 2;
          this.finishToken(18);
        } else {
          ++this.state.pos;
          this.finishToken(17);
        }
      };
      _proto.getTokenFromCode = function getTokenFromCode(code) {
        switch (code) {
          case 46:
            this.readToken_dot();
            return;
          case 40:
            ++this.state.pos;
            this.finishToken(10);
            return;
          case 41:
            ++this.state.pos;
            this.finishToken(11);
            return;
          case 59:
            ++this.state.pos;
            this.finishToken(13);
            return;
          case 44:
            ++this.state.pos;
            this.finishToken(12);
            return;
          case 91:
            if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) {
              if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") {
                throw this.raise(Errors.TupleExpressionBarIncorrectStartSyntaxType, {
                  at: this.state.curPosition()
                });
              }
              this.state.pos += 2;
              this.finishToken(2);
            } else {
              ++this.state.pos;
              this.finishToken(0);
            }
            return;
          case 93:
            ++this.state.pos;
            this.finishToken(3);
            return;
          case 123:
            if (this.hasPlugin("recordAndTuple") && this.input.charCodeAt(this.state.pos + 1) === 124) {
              if (this.getPluginOption("recordAndTuple", "syntaxType") !== "bar") {
                throw this.raise(Errors.RecordExpressionBarIncorrectStartSyntaxType, {
                  at: this.state.curPosition()
                });
              }
              this.state.pos += 2;
              this.finishToken(6);
            } else {
              ++this.state.pos;
              this.finishToken(5);
            }
            return;
          case 125:
            ++this.state.pos;
            this.finishToken(8);
            return;
          case 58:
            if (this.hasPlugin("functionBind") && this.input.charCodeAt(this.state.pos + 1) === 58) {
              this.finishOp(15, 2);
            } else {
              ++this.state.pos;
              this.finishToken(14);
            }
            return;
          case 63:
            this.readToken_question();
            return;
          case 96:
            this.readTemplateToken();
            return;
          case 48:
            {
              var next = this.input.charCodeAt(this.state.pos + 1);
              if (next === 120 || next === 88) {
                this.readRadixNumber(16);
                return;
              }
              if (next === 111 || next === 79) {
                this.readRadixNumber(8);
                return;
              }
              if (next === 98 || next === 66) {
                this.readRadixNumber(2);
                return;
              }
            }
          case 49:
          case 50:
          case 51:
          case 52:
          case 53:
          case 54:
          case 55:
          case 56:
          case 57:
            this.readNumber(false);
            return;
          case 34:
          case 39:
            this.readString(code);
            return;
          case 47:
            this.readToken_slash();
            return;
          case 37:
          case 42:
            this.readToken_mult_modulo(code);
            return;
          case 124:
          case 38:
            this.readToken_pipe_amp(code);
            return;
          case 94:
            this.readToken_caret();
            return;
          case 43:
          case 45:
            this.readToken_plus_min(code);
            return;
          case 60:
            this.readToken_lt();
            return;
          case 62:
            this.readToken_gt();
            return;
          case 61:
          case 33:
            this.readToken_eq_excl(code);
            return;
          case 126:
            this.finishOp(36, 1);
            return;
          case 64:
            this.readToken_atSign();
            return;
          case 35:
            this.readToken_numberSign();
            return;
          case 92:
            this.readWord();
            return;
          default:
            if (isIdentifierStart(code)) {
              this.readWord(code);
              return;
            }
        }
        throw this.raise(Errors.InvalidOrUnexpectedToken, {
          at: this.state.curPosition(),
          unexpected: String.fromCodePoint(code)
        });
      };
      _proto.finishOp = function finishOp(type, size) {
        var str = this.input.slice(this.state.pos, this.state.pos + size);
        this.state.pos += size;
        this.finishToken(type, str);
      };
      _proto.readRegexp = function readRegexp() {
        var startLoc = this.state.startLoc;
        var start = this.state.start + 1;
        var escaped, inClass;
        var pos = this.state.pos;
        for (;; ++pos) {
          if (pos >= this.length) {
            throw this.raise(Errors.UnterminatedRegExp, {
              at: createPositionWithColumnOffset(startLoc, 1)
            });
          }
          var ch = this.input.charCodeAt(pos);
          if (isNewLine(ch)) {
            throw this.raise(Errors.UnterminatedRegExp, {
              at: createPositionWithColumnOffset(startLoc, 1)
            });
          }
          if (escaped) {
            escaped = false;
          } else {
            if (ch === 91) {
              inClass = true;
            } else if (ch === 93 && inClass) {
              inClass = false;
            } else if (ch === 47 && !inClass) {
              break;
            }
            escaped = ch === 92;
          }
        }
        var content = this.input.slice(start, pos);
        ++pos;
        var mods = "";
        var nextPos = function nextPos() {
          return createPositionWithColumnOffset(startLoc, pos + 2 - start);
        };
        while (pos < this.length) {
          var cp = this.codePointAtPos(pos);
          var _char = String.fromCharCode(cp);
          if (VALID_REGEX_FLAGS.has(cp)) {
            if (cp === 118) {
              this.expectPlugin("regexpUnicodeSets", nextPos());
              if (mods.includes("u")) {
                this.raise(Errors.IncompatibleRegExpUVFlags, {
                  at: nextPos()
                });
              }
            } else if (cp === 117) {
              if (mods.includes("v")) {
                this.raise(Errors.IncompatibleRegExpUVFlags, {
                  at: nextPos()
                });
              }
            }
            if (mods.includes(_char)) {
              this.raise(Errors.DuplicateRegExpFlags, {
                at: nextPos()
              });
            }
          } else if (isIdentifierChar(cp) || cp === 92) {
            this.raise(Errors.MalformedRegExpFlags, {
              at: nextPos()
            });
          } else {
            break;
          }
          ++pos;
          mods += _char;
        }
        this.state.pos = pos;
        this.finishToken(135, {
          pattern: content,
          flags: mods
        });
      };
      _proto.readInt = function readInt$1(radix, len, forceLen, allowNumSeparator) {
        if (forceLen === void 0) {
          forceLen = false;
        }
        if (allowNumSeparator === void 0) {
          allowNumSeparator = true;
        }
        var _readInt2 = readInt(this.input, this.state.pos, this.state.lineStart, this.state.curLine, radix, len, forceLen, allowNumSeparator, this.errorHandlers_readInt, false),
          n = _readInt2.n,
          pos = _readInt2.pos;
        this.state.pos = pos;
        return n;
      };
      _proto.readRadixNumber = function readRadixNumber(radix) {
        var startLoc = this.state.curPosition();
        var isBigInt = false;
        this.state.pos += 2;
        var val = this.readInt(radix);
        if (val == null) {
          this.raise(Errors.InvalidDigit, {
            at: createPositionWithColumnOffset(startLoc, 2),
            radix: radix
          });
        }
        var next = this.input.charCodeAt(this.state.pos);
        if (next === 110) {
          ++this.state.pos;
          isBigInt = true;
        } else if (next === 109) {
          throw this.raise(Errors.InvalidDecimal, {
            at: startLoc
          });
        }
        if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {
          throw this.raise(Errors.NumberIdentifier, {
            at: this.state.curPosition()
          });
        }
        if (isBigInt) {
          var str = this.input.slice(startLoc.index, this.state.pos).replace(/[_n]/g, "");
          this.finishToken(133, str);
          return;
        }
        this.finishToken(132, val);
      };
      _proto.readNumber = function readNumber(startsWithDot) {
        var start = this.state.pos;
        var startLoc = this.state.curPosition();
        var isFloat = false;
        var isBigInt = false;
        var isDecimal = false;
        var hasExponent = false;
        var isOctal = false;
        if (!startsWithDot && this.readInt(10) === null) {
          this.raise(Errors.InvalidNumber, {
            at: this.state.curPosition()
          });
        }
        var hasLeadingZero = this.state.pos - start >= 2 && this.input.charCodeAt(start) === 48;
        if (hasLeadingZero) {
          var integer = this.input.slice(start, this.state.pos);
          this.recordStrictModeErrors(Errors.StrictOctalLiteral, {
            at: startLoc
          });
          if (!this.state.strict) {
            var underscorePos = integer.indexOf("_");
            if (underscorePos > 0) {
              this.raise(Errors.ZeroDigitNumericSeparator, {
                at: createPositionWithColumnOffset(startLoc, underscorePos)
              });
            }
          }
          isOctal = hasLeadingZero && !/[89]/.test(integer);
        }
        var next = this.input.charCodeAt(this.state.pos);
        if (next === 46 && !isOctal) {
          ++this.state.pos;
          this.readInt(10);
          isFloat = true;
          next = this.input.charCodeAt(this.state.pos);
        }
        if ((next === 69 || next === 101) && !isOctal) {
          next = this.input.charCodeAt(++this.state.pos);
          if (next === 43 || next === 45) {
            ++this.state.pos;
          }
          if (this.readInt(10) === null) {
            this.raise(Errors.InvalidOrMissingExponent, {
              at: startLoc
            });
          }
          isFloat = true;
          hasExponent = true;
          next = this.input.charCodeAt(this.state.pos);
        }
        if (next === 110) {
          if (isFloat || hasLeadingZero) {
            this.raise(Errors.InvalidBigIntLiteral, {
              at: startLoc
            });
          }
          ++this.state.pos;
          isBigInt = true;
        }
        if (next === 109) {
          this.expectPlugin("decimal", this.state.curPosition());
          if (hasExponent || hasLeadingZero) {
            this.raise(Errors.InvalidDecimal, {
              at: startLoc
            });
          }
          ++this.state.pos;
          isDecimal = true;
        }
        if (isIdentifierStart(this.codePointAtPos(this.state.pos))) {
          throw this.raise(Errors.NumberIdentifier, {
            at: this.state.curPosition()
          });
        }
        var str = this.input.slice(start, this.state.pos).replace(/[_mn]/g, "");
        if (isBigInt) {
          this.finishToken(133, str);
          return;
        }
        if (isDecimal) {
          this.finishToken(134, str);
          return;
        }
        var val = isOctal ? parseInt(str, 8) : parseFloat(str);
        this.finishToken(132, val);
      };
      _proto.readCodePoint = function readCodePoint$1(throwOnInvalid) {
        var _readCodePoint2 = readCodePoint(this.input, this.state.pos, this.state.lineStart, this.state.curLine, throwOnInvalid, this.errorHandlers_readCodePoint),
          code = _readCodePoint2.code,
          pos = _readCodePoint2.pos;
        this.state.pos = pos;
        return code;
      };
      _proto.readString = function readString(quote) {
        var _readStringContents = readStringContents(quote === 34 ? "double" : "single", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_string),
          str = _readStringContents.str,
          pos = _readStringContents.pos,
          curLine = _readStringContents.curLine,
          lineStart = _readStringContents.lineStart;
        this.state.pos = pos + 1;
        this.state.lineStart = lineStart;
        this.state.curLine = curLine;
        this.finishToken(131, str);
      };
      _proto.readTemplateContinuation = function readTemplateContinuation() {
        if (!this.match(8)) {
          this.unexpected(null, 8);
        }
        this.state.pos--;
        this.readTemplateToken();
      };
      _proto.readTemplateToken = function readTemplateToken() {
        var opening = this.input[this.state.pos];
        var _readStringContents2 = readStringContents("template", this.input, this.state.pos + 1, this.state.lineStart, this.state.curLine, this.errorHandlers_readStringContents_template),
          str = _readStringContents2.str,
          firstInvalidLoc = _readStringContents2.firstInvalidLoc,
          pos = _readStringContents2.pos,
          curLine = _readStringContents2.curLine,
          lineStart = _readStringContents2.lineStart;
        this.state.pos = pos + 1;
        this.state.lineStart = lineStart;
        this.state.curLine = curLine;
        if (firstInvalidLoc) {
          this.state.firstInvalidTemplateEscapePos = new Position(firstInvalidLoc.curLine, firstInvalidLoc.pos - firstInvalidLoc.lineStart, firstInvalidLoc.pos);
        }
        if (this.input.codePointAt(pos) === 96) {
          this.finishToken(24, firstInvalidLoc ? null : opening + str + "`");
        } else {
          this.state.pos++;
          this.finishToken(25, firstInvalidLoc ? null : opening + str + "${");
        }
      };
      _proto.recordStrictModeErrors = function recordStrictModeErrors(toParseError, _ref2) {
        var at = _ref2.at;
        var index = at.index;
        if (this.state.strict && !this.state.strictErrors.has(index)) {
          this.raise(toParseError, {
            at: at
          });
        } else {
          this.state.strictErrors.set(index, [toParseError, at]);
        }
      };
      _proto.readWord1 = function readWord1(firstCode) {
        this.state.containsEsc = false;
        var word = "";
        var start = this.state.pos;
        var chunkStart = this.state.pos;
        if (firstCode !== undefined) {
          this.state.pos += firstCode <= 0xffff ? 1 : 2;
        }
        while (this.state.pos < this.length) {
          var ch = this.codePointAtPos(this.state.pos);
          if (isIdentifierChar(ch)) {
            this.state.pos += ch <= 0xffff ? 1 : 2;
          } else if (ch === 92) {
            this.state.containsEsc = true;
            word += this.input.slice(chunkStart, this.state.pos);
            var escStart = this.state.curPosition();
            var identifierCheck = this.state.pos === start ? isIdentifierStart : isIdentifierChar;
            if (this.input.charCodeAt(++this.state.pos) !== 117) {
              this.raise(Errors.MissingUnicodeEscape, {
                at: this.state.curPosition()
              });
              chunkStart = this.state.pos - 1;
              continue;
            }
            ++this.state.pos;
            var esc = this.readCodePoint(true);
            if (esc !== null) {
              if (!identifierCheck(esc)) {
                this.raise(Errors.EscapedCharNotAnIdentifier, {
                  at: escStart
                });
              }
              word += String.fromCodePoint(esc);
            }
            chunkStart = this.state.pos;
          } else {
            break;
          }
        }
        return word + this.input.slice(chunkStart, this.state.pos);
      };
      _proto.readWord = function readWord(firstCode) {
        var word = this.readWord1(firstCode);
        var type = keywords.get(word);
        if (type !== undefined) {
          this.finishToken(type, tokenLabelName(type));
        } else {
          this.finishToken(130, word);
        }
      };
      _proto.checkKeywordEscapes = function checkKeywordEscapes() {
        var type = this.state.type;
        if (tokenIsKeyword(type) && this.state.containsEsc) {
          this.raise(Errors.InvalidEscapedReservedWord, {
            at: this.state.startLoc,
            reservedWord: tokenLabelName(type)
          });
        }
      };
      _proto.raise = function raise(toParseError, raiseProperties) {
        var at = raiseProperties.at,
          details = _objectWithoutPropertiesLoose(raiseProperties, _excluded$4);
        var loc = at instanceof Position ? at : at.loc.start;
        var error = toParseError({
          loc: loc,
          details: details
        });
        if (!this.options.errorRecovery) throw error;
        if (!this.isLookahead) this.state.errors.push(error);
        return error;
      };
      _proto.raiseOverwrite = function raiseOverwrite(toParseError, raiseProperties) {
        var at = raiseProperties.at,
          details = _objectWithoutPropertiesLoose(raiseProperties, _excluded2);
        var loc = at instanceof Position ? at : at.loc.start;
        var pos = loc.index;
        var errors = this.state.errors;
        for (var i = errors.length - 1; i >= 0; i--) {
          var error = errors[i];
          if (error.loc.index === pos) {
            return errors[i] = toParseError({
              loc: loc,
              details: details
            });
          }
          if (error.loc.index < pos) break;
        }
        return this.raise(toParseError, raiseProperties);
      };
      _proto.updateContext = function updateContext(prevType) {};
      _proto.unexpected = function unexpected(loc, type) {
        throw this.raise(Errors.UnexpectedToken, {
          expected: type ? tokenLabelName(type) : null,
          at: loc != null ? loc : this.state.startLoc
        });
      };
      _proto.expectPlugin = function expectPlugin(pluginName, loc) {
        if (this.hasPlugin(pluginName)) {
          return true;
        }
        throw this.raise(Errors.MissingPlugin, {
          at: loc != null ? loc : this.state.startLoc,
          missingPlugin: [pluginName]
        });
      };
      _proto.expectOnePlugin = function expectOnePlugin(pluginNames) {
        var _this3 = this;
        if (!pluginNames.some(function (name) {
          return _this3.hasPlugin(name);
        })) {
          throw this.raise(Errors.MissingOneOfPlugins, {
            at: this.state.startLoc,
            missingPlugin: pluginNames
          });
        }
      };
      _proto.errorBuilder = function errorBuilder(error) {
        var _this4 = this;
        return function (pos, lineStart, curLine) {
          _this4.raise(error, {
            at: buildPosition(pos, lineStart, curLine)
          });
        };
      };
      return _createClass(Tokenizer);
    }(CommentsParser);
  
    var ClassScope = _createClass(function ClassScope() {
      this.privateNames = new Set();
      this.loneAccessors = new Map();
      this.undefinedPrivateNames = new Map();
    });
    var ClassScopeHandler = function () {
      function ClassScopeHandler(parser) {
        this.parser = void 0;
        this.stack = [];
        this.undefinedPrivateNames = new Map();
        this.parser = parser;
      }
      var _proto = ClassScopeHandler.prototype;
      _proto.current = function current() {
        return this.stack[this.stack.length - 1];
      };
      _proto.enter = function enter() {
        this.stack.push(new ClassScope());
      };
      _proto.exit = function exit() {
        var oldClassScope = this.stack.pop();
        var current = this.current();
        for (var _i2 = 0, _Array$from2 = Array.from(oldClassScope.undefinedPrivateNames); _i2 < _Array$from2.length; _i2++) {
          var _Array$from2$_i = _Array$from2[_i2],
            name = _Array$from2$_i[0],
            loc = _Array$from2$_i[1];
          if (current) {
            if (!current.undefinedPrivateNames.has(name)) {
              current.undefinedPrivateNames.set(name, loc);
            }
          } else {
            this.parser.raise(Errors.InvalidPrivateFieldResolution, {
              at: loc,
              identifierName: name
            });
          }
        }
      };
      _proto.declarePrivateName = function declarePrivateName(name, elementType, loc) {
        var _this$current = this.current(),
          privateNames = _this$current.privateNames,
          loneAccessors = _this$current.loneAccessors,
          undefinedPrivateNames = _this$current.undefinedPrivateNames;
        var redefined = privateNames.has(name);
        if (elementType & CLASS_ELEMENT_KIND_ACCESSOR) {
          var accessor = redefined && loneAccessors.get(name);
          if (accessor) {
            var oldStatic = accessor & CLASS_ELEMENT_FLAG_STATIC;
            var newStatic = elementType & CLASS_ELEMENT_FLAG_STATIC;
            var oldKind = accessor & CLASS_ELEMENT_KIND_ACCESSOR;
            var newKind = elementType & CLASS_ELEMENT_KIND_ACCESSOR;
            redefined = oldKind === newKind || oldStatic !== newStatic;
            if (!redefined) loneAccessors["delete"](name);
          } else if (!redefined) {
            loneAccessors.set(name, elementType);
          }
        }
        if (redefined) {
          this.parser.raise(Errors.PrivateNameRedeclaration, {
            at: loc,
            identifierName: name
          });
        }
        privateNames.add(name);
        undefinedPrivateNames["delete"](name);
      };
      _proto.usePrivateName = function usePrivateName(name, loc) {
        var classScope;
        for (var _i4 = 0, _this$stack2 = this.stack; _i4 < _this$stack2.length; _i4++) {
          classScope = _this$stack2[_i4];
          if (classScope.privateNames.has(name)) return;
        }
        if (classScope) {
          classScope.undefinedPrivateNames.set(name, loc);
        } else {
          this.parser.raise(Errors.InvalidPrivateFieldResolution, {
            at: loc,
            identifierName: name
          });
        }
      };
      return _createClass(ClassScopeHandler);
    }();
  
    var kExpression = 0,
      kMaybeArrowParameterDeclaration = 1,
      kMaybeAsyncArrowParameterDeclaration = 2,
      kParameterDeclaration = 3;
    var ExpressionScope = function () {
      function ExpressionScope(type) {
        if (type === void 0) {
          type = kExpression;
        }
        this.type = void 0;
        this.type = type;
      }
      var _proto = ExpressionScope.prototype;
      _proto.canBeArrowParameterDeclaration = function canBeArrowParameterDeclaration() {
        return this.type === kMaybeAsyncArrowParameterDeclaration || this.type === kMaybeArrowParameterDeclaration;
      };
      _proto.isCertainlyParameterDeclaration = function isCertainlyParameterDeclaration() {
        return this.type === kParameterDeclaration;
      };
      return _createClass(ExpressionScope);
    }();
    var ArrowHeadParsingScope = function (_ExpressionScope) {
      _inherits(ArrowHeadParsingScope, _ExpressionScope);
      function ArrowHeadParsingScope(type) {
        var _this;
        _this = _ExpressionScope.call(this, type) || this;
        _this.declarationErrors = new Map();
        return _this;
      }
      var _proto2 = ArrowHeadParsingScope.prototype;
      _proto2.recordDeclarationError = function recordDeclarationError(ParsingErrorClass, _ref) {
        var at = _ref.at;
        var index = at.index;
        this.declarationErrors.set(index, [ParsingErrorClass, at]);
      };
      _proto2.clearDeclarationError = function clearDeclarationError(index) {
        this.declarationErrors["delete"](index);
      };
      _proto2.iterateErrors = function iterateErrors(iterator) {
        this.declarationErrors.forEach(iterator);
      };
      return _createClass(ArrowHeadParsingScope);
    }(ExpressionScope);
    var ExpressionScopeHandler = function () {
      function ExpressionScopeHandler(parser) {
        this.parser = void 0;
        this.stack = [new ExpressionScope()];
        this.parser = parser;
      }
      var _proto3 = ExpressionScopeHandler.prototype;
      _proto3.enter = function enter(scope) {
        this.stack.push(scope);
      };
      _proto3.exit = function exit() {
        this.stack.pop();
      };
      _proto3.recordParameterInitializerError = function recordParameterInitializerError(toParseError, _ref2) {
        var node = _ref2.at;
        var origin = {
          at: node.loc.start
        };
        var stack = this.stack;
        var i = stack.length - 1;
        var scope = stack[i];
        while (!scope.isCertainlyParameterDeclaration()) {
          if (scope.canBeArrowParameterDeclaration()) {
            scope.recordDeclarationError(toParseError, origin);
          } else {
            return;
          }
          scope = stack[--i];
        }
        this.parser.raise(toParseError, origin);
      };
      _proto3.recordArrowParameterBindingError = function recordArrowParameterBindingError(error, _ref3) {
        var node = _ref3.at;
        var stack = this.stack;
        var scope = stack[stack.length - 1];
        var origin = {
          at: node.loc.start
        };
        if (scope.isCertainlyParameterDeclaration()) {
          this.parser.raise(error, origin);
        } else if (scope.canBeArrowParameterDeclaration()) {
          scope.recordDeclarationError(error, origin);
        } else {
          return;
        }
      };
      _proto3.recordAsyncArrowParametersError = function recordAsyncArrowParametersError(_ref4) {
        var at = _ref4.at;
        var stack = this.stack;
        var i = stack.length - 1;
        var scope = stack[i];
        while (scope.canBeArrowParameterDeclaration()) {
          if (scope.type === kMaybeAsyncArrowParameterDeclaration) {
            scope.recordDeclarationError(Errors.AwaitBindingIdentifier, {
              at: at
            });
          }
          scope = stack[--i];
        }
      };
      _proto3.validateAsPattern = function validateAsPattern() {
        var _this2 = this;
        var stack = this.stack;
        var currentScope = stack[stack.length - 1];
        if (!currentScope.canBeArrowParameterDeclaration()) return;
        currentScope.iterateErrors(function (_ref5) {
          var toParseError = _ref5[0],
            loc = _ref5[1];
          _this2.parser.raise(toParseError, {
            at: loc
          });
          var i = stack.length - 2;
          var scope = stack[i];
          while (scope.canBeArrowParameterDeclaration()) {
            scope.clearDeclarationError(loc.index);
            scope = stack[--i];
          }
        });
      };
      return _createClass(ExpressionScopeHandler);
    }();
    function newParameterDeclarationScope() {
      return new ExpressionScope(kParameterDeclaration);
    }
    function newArrowHeadScope() {
      return new ArrowHeadParsingScope(kMaybeArrowParameterDeclaration);
    }
    function newAsyncArrowScope() {
      return new ArrowHeadParsingScope(kMaybeAsyncArrowParameterDeclaration);
    }
    function newExpressionScope() {
      return new ExpressionScope();
    }
  
    var PARAM = 0,
      PARAM_YIELD = 1,
      PARAM_AWAIT = 2,
      PARAM_RETURN = 4,
      PARAM_IN = 8;
    var ProductionParameterHandler = function () {
      function ProductionParameterHandler() {
        this.stacks = [];
      }
      var _proto = ProductionParameterHandler.prototype;
      _proto.enter = function enter(flags) {
        this.stacks.push(flags);
      };
      _proto.exit = function exit() {
        this.stacks.pop();
      };
      _proto.currentFlags = function currentFlags() {
        return this.stacks[this.stacks.length - 1];
      };
      _createClass(ProductionParameterHandler, [{
        key: "hasAwait",
        get: function get() {
          return (this.currentFlags() & PARAM_AWAIT) > 0;
        }
      }, {
        key: "hasYield",
        get: function get() {
          return (this.currentFlags() & PARAM_YIELD) > 0;
        }
      }, {
        key: "hasReturn",
        get: function get() {
          return (this.currentFlags() & PARAM_RETURN) > 0;
        }
      }, {
        key: "hasIn",
        get: function get() {
          return (this.currentFlags() & PARAM_IN) > 0;
        }
      }]);
      return ProductionParameterHandler;
    }();
    function functionFlags(isAsync, isGenerator) {
      return (isAsync ? PARAM_AWAIT : 0) | (isGenerator ? PARAM_YIELD : 0);
    }
  
    var UtilParser = function (_Tokenizer) {
      _inherits(UtilParser, _Tokenizer);
      function UtilParser() {
        return _Tokenizer.apply(this, arguments) || this;
      }
      var _proto = UtilParser.prototype;
      _proto.addExtra = function addExtra(node, key, value, enumerable) {
        if (enumerable === void 0) {
          enumerable = true;
        }
        if (!node) return;
        var extra = node.extra = node.extra || {};
        if (enumerable) {
          extra[key] = value;
        } else {
          Object.defineProperty(extra, key, {
            enumerable: enumerable,
            value: value
          });
        }
      };
      _proto.isContextual = function isContextual(token) {
        return this.state.type === token && !this.state.containsEsc;
      };
      _proto.isUnparsedContextual = function isUnparsedContextual(nameStart, name) {
        var nameEnd = nameStart + name.length;
        if (this.input.slice(nameStart, nameEnd) === name) {
          var nextCh = this.input.charCodeAt(nameEnd);
          return !(isIdentifierChar(nextCh) || (nextCh & 0xfc00) === 0xd800);
        }
        return false;
      };
      _proto.isLookaheadContextual = function isLookaheadContextual(name) {
        var next = this.nextTokenStart();
        return this.isUnparsedContextual(next, name);
      };
      _proto.eatContextual = function eatContextual(token) {
        if (this.isContextual(token)) {
          this.next();
          return true;
        }
        return false;
      };
      _proto.expectContextual = function expectContextual(token, toParseError) {
        if (!this.eatContextual(token)) {
          if (toParseError != null) {
            throw this.raise(toParseError, {
              at: this.state.startLoc
            });
          }
          this.unexpected(null, token);
        }
      };
      _proto.canInsertSemicolon = function canInsertSemicolon() {
        return this.match(137) || this.match(8) || this.hasPrecedingLineBreak();
      };
      _proto.hasPrecedingLineBreak = function hasPrecedingLineBreak() {
        return lineBreak.test(this.input.slice(this.state.lastTokEndLoc.index, this.state.start));
      };
      _proto.hasFollowingLineBreak = function hasFollowingLineBreak() {
        skipWhiteSpaceToLineBreak.lastIndex = this.state.end;
        return skipWhiteSpaceToLineBreak.test(this.input);
      };
      _proto.isLineTerminator = function isLineTerminator() {
        return this.eat(13) || this.canInsertSemicolon();
      };
      _proto.semicolon = function semicolon(allowAsi) {
        if (allowAsi === void 0) {
          allowAsi = true;
        }
        if (allowAsi ? this.isLineTerminator() : this.eat(13)) return;
        this.raise(Errors.MissingSemicolon, {
          at: this.state.lastTokEndLoc
        });
      };
      _proto.expect = function expect(type, loc) {
        this.eat(type) || this.unexpected(loc, type);
      };
      _proto.tryParse = function tryParse(fn, oldState) {
        if (oldState === void 0) {
          oldState = this.state.clone();
        }
        var abortSignal = {
          node: null
        };
        try {
          var _node = fn(function (node) {
            if (node === void 0) {
              node = null;
            }
            abortSignal.node = node;
            throw abortSignal;
          });
          if (this.state.errors.length > oldState.errors.length) {
            var failState = this.state;
            this.state = oldState;
            this.state.tokensLength = failState.tokensLength;
            return {
              node: _node,
              error: failState.errors[oldState.errors.length],
              thrown: false,
              aborted: false,
              failState: failState
            };
          }
          return {
            node: _node,
            error: null,
            thrown: false,
            aborted: false,
            failState: null
          };
        } catch (error) {
          var _failState = this.state;
          this.state = oldState;
          if (error instanceof SyntaxError) {
            return {
              node: null,
              error: error,
              thrown: true,
              aborted: false,
              failState: _failState
            };
          }
          if (error === abortSignal) {
            return {
              node: abortSignal.node,
              error: null,
              thrown: false,
              aborted: true,
              failState: _failState
            };
          }
          throw error;
        }
      };
      _proto.checkExpressionErrors = function checkExpressionErrors(refExpressionErrors, andThrow) {
        if (!refExpressionErrors) return false;
        var shorthandAssignLoc = refExpressionErrors.shorthandAssignLoc,
          doubleProtoLoc = refExpressionErrors.doubleProtoLoc,
          privateKeyLoc = refExpressionErrors.privateKeyLoc,
          optionalParametersLoc = refExpressionErrors.optionalParametersLoc;
        var hasErrors = !!shorthandAssignLoc || !!doubleProtoLoc || !!optionalParametersLoc || !!privateKeyLoc;
        if (!andThrow) {
          return hasErrors;
        }
        if (shorthandAssignLoc != null) {
          this.raise(Errors.InvalidCoverInitializedName, {
            at: shorthandAssignLoc
          });
        }
        if (doubleProtoLoc != null) {
          this.raise(Errors.DuplicateProto, {
            at: doubleProtoLoc
          });
        }
        if (privateKeyLoc != null) {
          this.raise(Errors.UnexpectedPrivateField, {
            at: privateKeyLoc
          });
        }
        if (optionalParametersLoc != null) {
          this.unexpected(optionalParametersLoc);
        }
      };
      _proto.isLiteralPropertyName = function isLiteralPropertyName() {
        return tokenIsLiteralPropertyName(this.state.type);
      };
      _proto.isPrivateName = function isPrivateName(node) {
        return node.type === "PrivateName";
      };
      _proto.getPrivateNameSV = function getPrivateNameSV(node) {
        return node.id.name;
      };
      _proto.hasPropertyAsPrivateName = function hasPropertyAsPrivateName(node) {
        return (node.type === "MemberExpression" || node.type === "OptionalMemberExpression") && this.isPrivateName(node.property);
      };
      _proto.isObjectProperty = function isObjectProperty(node) {
        return node.type === "ObjectProperty";
      };
      _proto.isObjectMethod = function isObjectMethod(node) {
        return node.type === "ObjectMethod";
      };
      _proto.initializeScopes = function initializeScopes(inModule) {
        var _this = this;
        if (inModule === void 0) {
          inModule = this.options.sourceType === "module";
        }
        var oldLabels = this.state.labels;
        this.state.labels = [];
        var oldExportedIdentifiers = this.exportedIdentifiers;
        this.exportedIdentifiers = new Set();
        var oldInModule = this.inModule;
        this.inModule = inModule;
        var oldScope = this.scope;
        var ScopeHandler = this.getScopeHandler();
        this.scope = new ScopeHandler(this, inModule);
        var oldProdParam = this.prodParam;
        this.prodParam = new ProductionParameterHandler();
        var oldClassScope = this.classScope;
        this.classScope = new ClassScopeHandler(this);
        var oldExpressionScope = this.expressionScope;
        this.expressionScope = new ExpressionScopeHandler(this);
        return function () {
          _this.state.labels = oldLabels;
          _this.exportedIdentifiers = oldExportedIdentifiers;
          _this.inModule = oldInModule;
          _this.scope = oldScope;
          _this.prodParam = oldProdParam;
          _this.classScope = oldClassScope;
          _this.expressionScope = oldExpressionScope;
        };
      };
      _proto.enterInitialScopes = function enterInitialScopes() {
        var paramFlags = PARAM;
        if (this.inModule) {
          paramFlags |= PARAM_AWAIT;
        }
        this.scope.enter(SCOPE_PROGRAM);
        this.prodParam.enter(paramFlags);
      };
      _proto.checkDestructuringPrivate = function checkDestructuringPrivate(refExpressionErrors) {
        var privateKeyLoc = refExpressionErrors.privateKeyLoc;
        if (privateKeyLoc !== null) {
          this.expectPlugin("destructuringPrivate", privateKeyLoc);
        }
      };
      return _createClass(UtilParser);
    }(Tokenizer);
    var ExpressionErrors = _createClass(function ExpressionErrors() {
      this.shorthandAssignLoc = null;
      this.doubleProtoLoc = null;
      this.privateKeyLoc = null;
      this.optionalParametersLoc = null;
    });
  
    var Node = _createClass(function Node(parser, pos, loc) {
      this.type = "";
      this.start = pos;
      this.end = 0;
      this.loc = new SourceLocation(loc);
      if (parser != null && parser.options.ranges) this.range = [pos, 0];
      if (parser != null && parser.filename) this.loc.filename = parser.filename;
    });
    var NodePrototype = Node.prototype;
    {
      NodePrototype.__clone = function () {
        var newNode = new Node(undefined, this.start, this.loc.start);
        var keys = Object.keys(this);
        for (var i = 0, length = keys.length; i < length; i++) {
          var _key = keys[i];
          if (_key !== "leadingComments" && _key !== "trailingComments" && _key !== "innerComments") {
            newNode[_key] = this[_key];
          }
        }
        return newNode;
      };
    }
    function clonePlaceholder(node) {
      return cloneIdentifier(node);
    }
    function cloneIdentifier(node) {
      var type = node.type,
        start = node.start,
        end = node.end,
        loc = node.loc,
        range = node.range,
        extra = node.extra,
        name = node.name;
      var cloned = Object.create(NodePrototype);
      cloned.type = type;
      cloned.start = start;
      cloned.end = end;
      cloned.loc = loc;
      cloned.range = range;
      cloned.extra = extra;
      cloned.name = name;
      if (type === "Placeholder") {
        cloned.expectedNode = node.expectedNode;
      }
      return cloned;
    }
    function cloneStringLiteral(node) {
      var type = node.type,
        start = node.start,
        end = node.end,
        loc = node.loc,
        range = node.range,
        extra = node.extra;
      if (type === "Placeholder") {
        return clonePlaceholder(node);
      }
      var cloned = Object.create(NodePrototype);
      cloned.type = type;
      cloned.start = start;
      cloned.end = end;
      cloned.loc = loc;
      cloned.range = range;
      if (node.raw !== undefined) {
        cloned.raw = node.raw;
      } else {
        cloned.extra = extra;
      }
      cloned.value = node.value;
      return cloned;
    }
    var NodeUtils = function (_UtilParser) {
      _inherits(NodeUtils, _UtilParser);
      function NodeUtils() {
        return _UtilParser.apply(this, arguments) || this;
      }
      var _proto = NodeUtils.prototype;
      _proto.startNode = function startNode() {
        return new Node(this, this.state.start, this.state.startLoc);
      };
      _proto.startNodeAt = function startNodeAt(loc) {
        return new Node(this, loc.index, loc);
      };
      _proto.startNodeAtNode = function startNodeAtNode(type) {
        return this.startNodeAt(type.loc.start);
      };
      _proto.finishNode = function finishNode(node, type) {
        return this.finishNodeAt(node, type, this.state.lastTokEndLoc);
      };
      _proto.finishNodeAt = function finishNodeAt(node, type, endLoc) {
        node.type = type;
        node.end = endLoc.index;
        node.loc.end = endLoc;
        if (this.options.ranges) node.range[1] = endLoc.index;
        if (this.options.attachComment) this.processComment(node);
        return node;
      };
      _proto.resetStartLocation = function resetStartLocation(node, startLoc) {
        node.start = startLoc.index;
        node.loc.start = startLoc;
        if (this.options.ranges) node.range[0] = startLoc.index;
      };
      _proto.resetEndLocation = function resetEndLocation(node, endLoc) {
        if (endLoc === void 0) {
          endLoc = this.state.lastTokEndLoc;
        }
        node.end = endLoc.index;
        node.loc.end = endLoc;
        if (this.options.ranges) node.range[1] = endLoc.index;
      };
      _proto.resetStartLocationFromNode = function resetStartLocationFromNode(node, locationNode) {
        this.resetStartLocation(node, locationNode.loc.start);
      };
      return _createClass(NodeUtils);
    }(UtilParser);
  
    var _templateObject$z;
    var reservedTypes = new Set(["_", "any", "bool", "boolean", "empty", "extends", "false", "interface", "mixed", "null", "number", "static", "string", "true", "typeof", "void"]);
    var FlowErrors = ParseErrorEnum(_templateObject$z || (_templateObject$z = _taggedTemplateLiteralLoose(["flow"])))({
      AmbiguousConditionalArrow: "Ambiguous expression: wrap the arrow functions in parentheses to disambiguate.",
      AmbiguousDeclareModuleKind: "Found both `declare module.exports` and `declare export` in the same module. Modules can only have 1 since they are either an ES module or they are a CommonJS module.",
      AssignReservedType: function AssignReservedType(_ref) {
        var reservedType = _ref.reservedType;
        return "Cannot overwrite reserved type " + reservedType + ".";
      },
      DeclareClassElement: "The `declare` modifier can only appear on class fields.",
      DeclareClassFieldInitializer: "Initializers are not allowed in fields with the `declare` modifier.",
      DuplicateDeclareModuleExports: "Duplicate `declare module.exports` statement.",
      EnumBooleanMemberNotInitialized: function EnumBooleanMemberNotInitialized(_ref2) {
        var memberName = _ref2.memberName,
          enumName = _ref2.enumName;
        return "Boolean enum members need to be initialized. Use either `" + memberName + " = true,` or `" + memberName + " = false,` in enum `" + enumName + "`.";
      },
      EnumDuplicateMemberName: function EnumDuplicateMemberName(_ref3) {
        var memberName = _ref3.memberName,
          enumName = _ref3.enumName;
        return "Enum member names need to be unique, but the name `" + memberName + "` has already been used before in enum `" + enumName + "`.";
      },
      EnumInconsistentMemberValues: function EnumInconsistentMemberValues(_ref4) {
        var enumName = _ref4.enumName;
        return "Enum `" + enumName + "` has inconsistent member initializers. Either use no initializers, or consistently use literals (either booleans, numbers, or strings) for all member initializers.";
      },
      EnumInvalidExplicitType: function EnumInvalidExplicitType(_ref5) {
        var invalidEnumType = _ref5.invalidEnumType,
          enumName = _ref5.enumName;
        return "Enum type `" + invalidEnumType + "` is not valid. Use one of `boolean`, `number`, `string`, or `symbol` in enum `" + enumName + "`.";
      },
      EnumInvalidExplicitTypeUnknownSupplied: function EnumInvalidExplicitTypeUnknownSupplied(_ref6) {
        var enumName = _ref6.enumName;
        return "Supplied enum type is not valid. Use one of `boolean`, `number`, `string`, or `symbol` in enum `" + enumName + "`.";
      },
      EnumInvalidMemberInitializerPrimaryType: function EnumInvalidMemberInitializerPrimaryType(_ref7) {
        var enumName = _ref7.enumName,
          memberName = _ref7.memberName,
          explicitType = _ref7.explicitType;
        return "Enum `" + enumName + "` has type `" + explicitType + "`, so the initializer of `" + memberName + "` needs to be a " + explicitType + " literal.";
      },
      EnumInvalidMemberInitializerSymbolType: function EnumInvalidMemberInitializerSymbolType(_ref8) {
        var enumName = _ref8.enumName,
          memberName = _ref8.memberName;
        return "Symbol enum members cannot be initialized. Use `" + memberName + ",` in enum `" + enumName + "`.";
      },
      EnumInvalidMemberInitializerUnknownType: function EnumInvalidMemberInitializerUnknownType(_ref9) {
        var enumName = _ref9.enumName,
          memberName = _ref9.memberName;
        return "The enum member initializer for `" + memberName + "` needs to be a literal (either a boolean, number, or string) in enum `" + enumName + "`.";
      },
      EnumInvalidMemberName: function EnumInvalidMemberName(_ref10) {
        var enumName = _ref10.enumName,
          memberName = _ref10.memberName,
          suggestion = _ref10.suggestion;
        return "Enum member names cannot start with lowercase 'a' through 'z'. Instead of using `" + memberName + "`, consider using `" + suggestion + "`, in enum `" + enumName + "`.";
      },
      EnumNumberMemberNotInitialized: function EnumNumberMemberNotInitialized(_ref11) {
        var enumName = _ref11.enumName,
          memberName = _ref11.memberName;
        return "Number enum members need to be initialized, e.g. `" + memberName + " = 1` in enum `" + enumName + "`.";
      },
      EnumStringMemberInconsistentlyInitailized: function EnumStringMemberInconsistentlyInitailized(_ref12) {
        var enumName = _ref12.enumName;
        return "String enum members need to consistently either all use initializers, or use no initializers, in enum `" + enumName + "`.";
      },
      GetterMayNotHaveThisParam: "A getter cannot have a `this` parameter.",
      ImportReflectionHasImportType: "An `import module` declaration can not use `type` or `typeof` keyword.",
      ImportTypeShorthandOnlyInPureImport: "The `type` and `typeof` keywords on named imports can only be used on regular `import` statements. It cannot be used with `import type` or `import typeof` statements.",
      InexactInsideExact: "Explicit inexact syntax cannot appear inside an explicit exact object type.",
      InexactInsideNonObject: "Explicit inexact syntax cannot appear in class or interface definitions.",
      InexactVariance: "Explicit inexact syntax cannot have variance.",
      InvalidNonTypeImportInDeclareModule: "Imports within a `declare module` body must always be `import type` or `import typeof`.",
      MissingTypeParamDefault: "Type parameter declaration needs a default, since a preceding type parameter declaration has a default.",
      NestedDeclareModule: "`declare module` cannot be used inside another `declare module`.",
      NestedFlowComment: "Cannot have a flow comment inside another flow comment.",
      PatternIsOptional: Object.assign({
        message: "A binding pattern parameter cannot be optional in an implementation signature."
      }, {
        reasonCode: "OptionalBindingPattern"
      }),
      SetterMayNotHaveThisParam: "A setter cannot have a `this` parameter.",
      SpreadVariance: "Spread properties cannot have variance.",
      ThisParamAnnotationRequired: "A type annotation is required for the `this` parameter.",
      ThisParamBannedInConstructor: "Constructors cannot have a `this` parameter; constructors don't bind `this` like other functions.",
      ThisParamMayNotBeOptional: "The `this` parameter cannot be optional.",
      ThisParamMustBeFirst: "The `this` parameter must be the first function parameter.",
      ThisParamNoDefault: "The `this` parameter may not have a default value.",
      TypeBeforeInitializer: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.",
      TypeCastInPattern: "The type cast expression is expected to be wrapped with parenthesis.",
      UnexpectedExplicitInexactInObject: "Explicit inexact syntax must appear at the end of an inexact object.",
      UnexpectedReservedType: function UnexpectedReservedType(_ref13) {
        var reservedType = _ref13.reservedType;
        return "Unexpected reserved type " + reservedType + ".";
      },
      UnexpectedReservedUnderscore: "`_` is only allowed as a type argument to call or new.",
      UnexpectedSpaceBetweenModuloChecks: "Spaces between `%` and `checks` are not allowed here.",
      UnexpectedSpreadType: "Spread operator cannot appear in class or interface definitions.",
      UnexpectedSubtractionOperand: 'Unexpected token, expected "number" or "bigint".',
      UnexpectedTokenAfterTypeParameter: "Expected an arrow function after this type parameter declaration.",
      UnexpectedTypeParameterBeforeAsyncArrowFunction: "Type parameters must come after the async keyword, e.g. instead of `<T> async () => {}`, use `async <T>() => {}`.",
      UnsupportedDeclareExportKind: function UnsupportedDeclareExportKind(_ref14) {
        var unsupportedExportKind = _ref14.unsupportedExportKind,
          suggestion = _ref14.suggestion;
        return "`declare export " + unsupportedExportKind + "` is not supported. Use `" + suggestion + "` instead.";
      },
      UnsupportedStatementInDeclareModule: "Only declares and type imports are allowed inside declare module.",
      UnterminatedFlowComment: "Unterminated flow-comment."
    });
    function isEsModuleType(bodyElement) {
      return bodyElement.type === "DeclareExportAllDeclaration" || bodyElement.type === "DeclareExportDeclaration" && (!bodyElement.declaration || bodyElement.declaration.type !== "TypeAlias" && bodyElement.declaration.type !== "InterfaceDeclaration");
    }
    function hasTypeImportKind(node) {
      return node.importKind === "type" || node.importKind === "typeof";
    }
    function isMaybeDefaultImport(type) {
      return tokenIsKeywordOrIdentifier(type) && type !== 97;
    }
    var exportSuggestions = {
      "const": "declare export var",
      "let": "declare export var",
      type: "export type",
      "interface": "export interface"
    };
    function partition(list, test) {
      var list1 = [];
      var list2 = [];
      for (var i = 0; i < list.length; i++) {
        (test(list[i], i, list) ? list1 : list2).push(list[i]);
      }
      return [list1, list2];
    }
    var FLOW_PRAGMA_REGEX = /\*?\s*@((?:no)?flow)\b/;
    var flow = (function (superClass) {
      return function (_superClass) {
        _inherits(FlowParserMixin, _superClass);
        function FlowParserMixin() {
          var _this2;
          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
            args[_key] = arguments[_key];
          }
          _this2 = _superClass.call.apply(_superClass, [this].concat(args)) || this;
          _this2.flowPragma = undefined;
          return _this2;
        }
        var _proto = FlowParserMixin.prototype;
        _proto.getScopeHandler = function getScopeHandler() {
          return FlowScopeHandler;
        };
        _proto.shouldParseTypes = function shouldParseTypes() {
          return this.getPluginOption("flow", "all") || this.flowPragma === "flow";
        };
        _proto.shouldParseEnums = function shouldParseEnums() {
          return !!this.getPluginOption("flow", "enums");
        };
        _proto.finishToken = function finishToken(type, val) {
          if (type !== 131 && type !== 13 && type !== 28) {
            if (this.flowPragma === undefined) {
              this.flowPragma = null;
            }
          }
          _superClass.prototype.finishToken.call(this, type, val);
        };
        _proto.addComment = function addComment(comment) {
          if (this.flowPragma === undefined) {
            var matches = FLOW_PRAGMA_REGEX.exec(comment.value);
            if (!matches) ; else if (matches[1] === "flow") {
              this.flowPragma = "flow";
            } else if (matches[1] === "noflow") {
              this.flowPragma = "noflow";
            } else {
              throw new Error("Unexpected flow pragma");
            }
          }
          _superClass.prototype.addComment.call(this, comment);
        };
        _proto.flowParseTypeInitialiser = function flowParseTypeInitialiser(tok) {
          var oldInType = this.state.inType;
          this.state.inType = true;
          this.expect(tok || 14);
          var type = this.flowParseType();
          this.state.inType = oldInType;
          return type;
        };
        _proto.flowParsePredicate = function flowParsePredicate() {
          var node = this.startNode();
          var moduloLoc = this.state.startLoc;
          this.next();
          this.expectContextual(108);
          if (this.state.lastTokStart > moduloLoc.index + 1) {
            this.raise(FlowErrors.UnexpectedSpaceBetweenModuloChecks, {
              at: moduloLoc
            });
          }
          if (this.eat(10)) {
            node.value = _superClass.prototype.parseExpression.call(this);
            this.expect(11);
            return this.finishNode(node, "DeclaredPredicate");
          } else {
            return this.finishNode(node, "InferredPredicate");
          }
        };
        _proto.flowParseTypeAndPredicateInitialiser = function flowParseTypeAndPredicateInitialiser() {
          var oldInType = this.state.inType;
          this.state.inType = true;
          this.expect(14);
          var type = null;
          var predicate = null;
          if (this.match(54)) {
            this.state.inType = oldInType;
            predicate = this.flowParsePredicate();
          } else {
            type = this.flowParseType();
            this.state.inType = oldInType;
            if (this.match(54)) {
              predicate = this.flowParsePredicate();
            }
          }
          return [type, predicate];
        };
        _proto.flowParseDeclareClass = function flowParseDeclareClass(node) {
          this.next();
          this.flowParseInterfaceish(node, true);
          return this.finishNode(node, "DeclareClass");
        };
        _proto.flowParseDeclareFunction = function flowParseDeclareFunction(node) {
          this.next();
          var id = node.id = this.parseIdentifier();
          var typeNode = this.startNode();
          var typeContainer = this.startNode();
          if (this.match(47)) {
            typeNode.typeParameters = this.flowParseTypeParameterDeclaration();
          } else {
            typeNode.typeParameters = null;
          }
          this.expect(10);
          var tmp = this.flowParseFunctionTypeParams();
          typeNode.params = tmp.params;
          typeNode.rest = tmp.rest;
          typeNode["this"] = tmp._this;
          this.expect(11);
          var _this$flowParseTypeAn = this.flowParseTypeAndPredicateInitialiser();
          typeNode.returnType = _this$flowParseTypeAn[0];
          node.predicate = _this$flowParseTypeAn[1];
          typeContainer.typeAnnotation = this.finishNode(typeNode, "FunctionTypeAnnotation");
          id.typeAnnotation = this.finishNode(typeContainer, "TypeAnnotation");
          this.resetEndLocation(id);
          this.semicolon();
          this.scope.declareName(node.id.name, BIND_FLOW_DECLARE_FN, node.id.loc.start);
          return this.finishNode(node, "DeclareFunction");
        };
        _proto.flowParseDeclare = function flowParseDeclare(node, insideModule) {
          if (this.match(80)) {
            return this.flowParseDeclareClass(node);
          } else if (this.match(68)) {
            return this.flowParseDeclareFunction(node);
          } else if (this.match(74)) {
            return this.flowParseDeclareVariable(node);
          } else if (this.eatContextual(125)) {
            if (this.match(16)) {
              return this.flowParseDeclareModuleExports(node);
            } else {
              if (insideModule) {
                this.raise(FlowErrors.NestedDeclareModule, {
                  at: this.state.lastTokStartLoc
                });
              }
              return this.flowParseDeclareModule(node);
            }
          } else if (this.isContextual(128)) {
            return this.flowParseDeclareTypeAlias(node);
          } else if (this.isContextual(129)) {
            return this.flowParseDeclareOpaqueType(node);
          } else if (this.isContextual(127)) {
            return this.flowParseDeclareInterface(node);
          } else if (this.match(82)) {
            return this.flowParseDeclareExportDeclaration(node, insideModule);
          } else {
            this.unexpected();
          }
        };
        _proto.flowParseDeclareVariable = function flowParseDeclareVariable(node) {
          this.next();
          node.id = this.flowParseTypeAnnotatableIdentifier(true);
          this.scope.declareName(node.id.name, BIND_VAR, node.id.loc.start);
          this.semicolon();
          return this.finishNode(node, "DeclareVariable");
        };
        _proto.flowParseDeclareModule = function flowParseDeclareModule(node) {
          var _this3 = this;
          this.scope.enter(SCOPE_OTHER);
          if (this.match(131)) {
            node.id = _superClass.prototype.parseExprAtom.call(this);
          } else {
            node.id = this.parseIdentifier();
          }
          var bodyNode = node.body = this.startNode();
          var body = bodyNode.body = [];
          this.expect(5);
          while (!this.match(8)) {
            var _bodyNode = this.startNode();
            if (this.match(83)) {
              this.next();
              if (!this.isContextual(128) && !this.match(87)) {
                this.raise(FlowErrors.InvalidNonTypeImportInDeclareModule, {
                  at: this.state.lastTokStartLoc
                });
              }
              _superClass.prototype.parseImport.call(this, _bodyNode);
            } else {
              this.expectContextual(123, FlowErrors.UnsupportedStatementInDeclareModule);
              _bodyNode = this.flowParseDeclare(_bodyNode, true);
            }
            body.push(_bodyNode);
          }
          this.scope.exit();
          this.expect(8);
          this.finishNode(bodyNode, "BlockStatement");
          var kind = null;
          var hasModuleExport = false;
          body.forEach(function (bodyElement) {
            if (isEsModuleType(bodyElement)) {
              if (kind === "CommonJS") {
                _this3.raise(FlowErrors.AmbiguousDeclareModuleKind, {
                  at: bodyElement
                });
              }
              kind = "ES";
            } else if (bodyElement.type === "DeclareModuleExports") {
              if (hasModuleExport) {
                _this3.raise(FlowErrors.DuplicateDeclareModuleExports, {
                  at: bodyElement
                });
              }
              if (kind === "ES") {
                _this3.raise(FlowErrors.AmbiguousDeclareModuleKind, {
                  at: bodyElement
                });
              }
              kind = "CommonJS";
              hasModuleExport = true;
            }
          });
          node.kind = kind || "CommonJS";
          return this.finishNode(node, "DeclareModule");
        };
        _proto.flowParseDeclareExportDeclaration = function flowParseDeclareExportDeclaration(node, insideModule) {
          this.expect(82);
          if (this.eat(65)) {
            if (this.match(68) || this.match(80)) {
              node.declaration = this.flowParseDeclare(this.startNode());
            } else {
              node.declaration = this.flowParseType();
              this.semicolon();
            }
            node["default"] = true;
            return this.finishNode(node, "DeclareExportDeclaration");
          } else {
            if (this.match(75) || this.isLet() || (this.isContextual(128) || this.isContextual(127)) && !insideModule) {
              var label = this.state.value;
              throw this.raise(FlowErrors.UnsupportedDeclareExportKind, {
                at: this.state.startLoc,
                unsupportedExportKind: label,
                suggestion: exportSuggestions[label]
              });
            }
            if (this.match(74) || this.match(68) || this.match(80) || this.isContextual(129)) {
              node.declaration = this.flowParseDeclare(this.startNode());
              node["default"] = false;
              return this.finishNode(node, "DeclareExportDeclaration");
            } else if (this.match(55) || this.match(5) || this.isContextual(127) || this.isContextual(128) || this.isContextual(129)) {
              node = this.parseExport(node, null);
              if (node.type === "ExportNamedDeclaration") {
                node.type = "ExportDeclaration";
                node["default"] = false;
                delete node.exportKind;
              }
              node.type = "Declare" + node.type;
              return node;
            }
          }
          this.unexpected();
        };
        _proto.flowParseDeclareModuleExports = function flowParseDeclareModuleExports(node) {
          this.next();
          this.expectContextual(109);
          node.typeAnnotation = this.flowParseTypeAnnotation();
          this.semicolon();
          return this.finishNode(node, "DeclareModuleExports");
        };
        _proto.flowParseDeclareTypeAlias = function flowParseDeclareTypeAlias(node) {
          this.next();
          var finished = this.flowParseTypeAlias(node);
          finished.type = "DeclareTypeAlias";
          return finished;
        };
        _proto.flowParseDeclareOpaqueType = function flowParseDeclareOpaqueType(node) {
          this.next();
          var finished = this.flowParseOpaqueType(node, true);
          finished.type = "DeclareOpaqueType";
          return finished;
        };
        _proto.flowParseDeclareInterface = function flowParseDeclareInterface(node) {
          this.next();
          this.flowParseInterfaceish(node, false);
          return this.finishNode(node, "DeclareInterface");
        };
        _proto.flowParseInterfaceish = function flowParseInterfaceish(node, isClass) {
          node.id = this.flowParseRestrictedIdentifier(!isClass, true);
          this.scope.declareName(node.id.name, isClass ? BIND_FUNCTION : BIND_LEXICAL, node.id.loc.start);
          if (this.match(47)) {
            node.typeParameters = this.flowParseTypeParameterDeclaration();
          } else {
            node.typeParameters = null;
          }
          node["extends"] = [];
          if (this.eat(81)) {
            do {
              node["extends"].push(this.flowParseInterfaceExtends());
            } while (!isClass && this.eat(12));
          }
          if (isClass) {
            node["implements"] = [];
            node.mixins = [];
            if (this.eatContextual(115)) {
              do {
                node.mixins.push(this.flowParseInterfaceExtends());
              } while (this.eat(12));
            }
            if (this.eatContextual(111)) {
              do {
                node["implements"].push(this.flowParseInterfaceExtends());
              } while (this.eat(12));
            }
          }
          node.body = this.flowParseObjectType({
            allowStatic: isClass,
            allowExact: false,
            allowSpread: false,
            allowProto: isClass,
            allowInexact: false
          });
        };
        _proto.flowParseInterfaceExtends = function flowParseInterfaceExtends() {
          var node = this.startNode();
          node.id = this.flowParseQualifiedTypeIdentifier();
          if (this.match(47)) {
            node.typeParameters = this.flowParseTypeParameterInstantiation();
          } else {
            node.typeParameters = null;
          }
          return this.finishNode(node, "InterfaceExtends");
        };
        _proto.flowParseInterface = function flowParseInterface(node) {
          this.flowParseInterfaceish(node, false);
          return this.finishNode(node, "InterfaceDeclaration");
        };
        _proto.checkNotUnderscore = function checkNotUnderscore(word) {
          if (word === "_") {
            this.raise(FlowErrors.UnexpectedReservedUnderscore, {
              at: this.state.startLoc
            });
          }
        };
        _proto.checkReservedType = function checkReservedType(word, startLoc, declaration) {
          if (!reservedTypes.has(word)) return;
          this.raise(declaration ? FlowErrors.AssignReservedType : FlowErrors.UnexpectedReservedType, {
            at: startLoc,
            reservedType: word
          });
        };
        _proto.flowParseRestrictedIdentifier = function flowParseRestrictedIdentifier(liberal, declaration) {
          this.checkReservedType(this.state.value, this.state.startLoc, declaration);
          return this.parseIdentifier(liberal);
        };
        _proto.flowParseTypeAlias = function flowParseTypeAlias(node) {
          node.id = this.flowParseRestrictedIdentifier(false, true);
          this.scope.declareName(node.id.name, BIND_LEXICAL, node.id.loc.start);
          if (this.match(47)) {
            node.typeParameters = this.flowParseTypeParameterDeclaration();
          } else {
            node.typeParameters = null;
          }
          node.right = this.flowParseTypeInitialiser(29);
          this.semicolon();
          return this.finishNode(node, "TypeAlias");
        };
        _proto.flowParseOpaqueType = function flowParseOpaqueType(node, declare) {
          this.expectContextual(128);
          node.id = this.flowParseRestrictedIdentifier(true, true);
          this.scope.declareName(node.id.name, BIND_LEXICAL, node.id.loc.start);
          if (this.match(47)) {
            node.typeParameters = this.flowParseTypeParameterDeclaration();
          } else {
            node.typeParameters = null;
          }
          node.supertype = null;
          if (this.match(14)) {
            node.supertype = this.flowParseTypeInitialiser(14);
          }
          node.impltype = null;
          if (!declare) {
            node.impltype = this.flowParseTypeInitialiser(29);
          }
          this.semicolon();
          return this.finishNode(node, "OpaqueType");
        };
        _proto.flowParseTypeParameter = function flowParseTypeParameter(requireDefault) {
          if (requireDefault === void 0) {
            requireDefault = false;
          }
          var nodeStartLoc = this.state.startLoc;
          var node = this.startNode();
          var variance = this.flowParseVariance();
          var ident = this.flowParseTypeAnnotatableIdentifier();
          node.name = ident.name;
          node.variance = variance;
          node.bound = ident.typeAnnotation;
          if (this.match(29)) {
            this.eat(29);
            node["default"] = this.flowParseType();
          } else {
            if (requireDefault) {
              this.raise(FlowErrors.MissingTypeParamDefault, {
                at: nodeStartLoc
              });
            }
          }
          return this.finishNode(node, "TypeParameter");
        };
        _proto.flowParseTypeParameterDeclaration = function flowParseTypeParameterDeclaration() {
          var oldInType = this.state.inType;
          var node = this.startNode();
          node.params = [];
          this.state.inType = true;
          if (this.match(47) || this.match(140)) {
            this.next();
          } else {
            this.unexpected();
          }
          var defaultRequired = false;
          do {
            var typeParameter = this.flowParseTypeParameter(defaultRequired);
            node.params.push(typeParameter);
            if (typeParameter["default"]) {
              defaultRequired = true;
            }
            if (!this.match(48)) {
              this.expect(12);
            }
          } while (!this.match(48));
          this.expect(48);
          this.state.inType = oldInType;
          return this.finishNode(node, "TypeParameterDeclaration");
        };
        _proto.flowParseTypeParameterInstantiation = function flowParseTypeParameterInstantiation() {
          var node = this.startNode();
          var oldInType = this.state.inType;
          node.params = [];
          this.state.inType = true;
          this.expect(47);
          var oldNoAnonFunctionType = this.state.noAnonFunctionType;
          this.state.noAnonFunctionType = false;
          while (!this.match(48)) {
            node.params.push(this.flowParseType());
            if (!this.match(48)) {
              this.expect(12);
            }
          }
          this.state.noAnonFunctionType = oldNoAnonFunctionType;
          this.expect(48);
          this.state.inType = oldInType;
          return this.finishNode(node, "TypeParameterInstantiation");
        };
        _proto.flowParseTypeParameterInstantiationCallOrNew = function flowParseTypeParameterInstantiationCallOrNew() {
          var node = this.startNode();
          var oldInType = this.state.inType;
          node.params = [];
          this.state.inType = true;
          this.expect(47);
          while (!this.match(48)) {
            node.params.push(this.flowParseTypeOrImplicitInstantiation());
            if (!this.match(48)) {
              this.expect(12);
            }
          }
          this.expect(48);
          this.state.inType = oldInType;
          return this.finishNode(node, "TypeParameterInstantiation");
        };
        _proto.flowParseInterfaceType = function flowParseInterfaceType() {
          var node = this.startNode();
          this.expectContextual(127);
          node["extends"] = [];
          if (this.eat(81)) {
            do {
              node["extends"].push(this.flowParseInterfaceExtends());
            } while (this.eat(12));
          }
          node.body = this.flowParseObjectType({
            allowStatic: false,
            allowExact: false,
            allowSpread: false,
            allowProto: false,
            allowInexact: false
          });
          return this.finishNode(node, "InterfaceTypeAnnotation");
        };
        _proto.flowParseObjectPropertyKey = function flowParseObjectPropertyKey() {
          return this.match(132) || this.match(131) ? _superClass.prototype.parseExprAtom.call(this) : this.parseIdentifier(true);
        };
        _proto.flowParseObjectTypeIndexer = function flowParseObjectTypeIndexer(node, isStatic, variance) {
          node["static"] = isStatic;
          if (this.lookahead().type === 14) {
            node.id = this.flowParseObjectPropertyKey();
            node.key = this.flowParseTypeInitialiser();
          } else {
            node.id = null;
            node.key = this.flowParseType();
          }
          this.expect(3);
          node.value = this.flowParseTypeInitialiser();
          node.variance = variance;
          return this.finishNode(node, "ObjectTypeIndexer");
        };
        _proto.flowParseObjectTypeInternalSlot = function flowParseObjectTypeInternalSlot(node, isStatic) {
          node["static"] = isStatic;
          node.id = this.flowParseObjectPropertyKey();
          this.expect(3);
          this.expect(3);
          if (this.match(47) || this.match(10)) {
            node.method = true;
            node.optional = false;
            node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.loc.start));
          } else {
            node.method = false;
            if (this.eat(17)) {
              node.optional = true;
            }
            node.value = this.flowParseTypeInitialiser();
          }
          return this.finishNode(node, "ObjectTypeInternalSlot");
        };
        _proto.flowParseObjectTypeMethodish = function flowParseObjectTypeMethodish(node) {
          node.params = [];
          node.rest = null;
          node.typeParameters = null;
          node["this"] = null;
          if (this.match(47)) {
            node.typeParameters = this.flowParseTypeParameterDeclaration();
          }
          this.expect(10);
          if (this.match(78)) {
            node["this"] = this.flowParseFunctionTypeParam(true);
            node["this"].name = null;
            if (!this.match(11)) {
              this.expect(12);
            }
          }
          while (!this.match(11) && !this.match(21)) {
            node.params.push(this.flowParseFunctionTypeParam(false));
            if (!this.match(11)) {
              this.expect(12);
            }
          }
          if (this.eat(21)) {
            node.rest = this.flowParseFunctionTypeParam(false);
          }
          this.expect(11);
          node.returnType = this.flowParseTypeInitialiser();
          return this.finishNode(node, "FunctionTypeAnnotation");
        };
        _proto.flowParseObjectTypeCallProperty = function flowParseObjectTypeCallProperty(node, isStatic) {
          var valueNode = this.startNode();
          node["static"] = isStatic;
          node.value = this.flowParseObjectTypeMethodish(valueNode);
          return this.finishNode(node, "ObjectTypeCallProperty");
        };
        _proto.flowParseObjectType = function flowParseObjectType(_ref15) {
          var allowStatic = _ref15.allowStatic,
            allowExact = _ref15.allowExact,
            allowSpread = _ref15.allowSpread,
            allowProto = _ref15.allowProto,
            allowInexact = _ref15.allowInexact;
          var oldInType = this.state.inType;
          this.state.inType = true;
          var nodeStart = this.startNode();
          nodeStart.callProperties = [];
          nodeStart.properties = [];
          nodeStart.indexers = [];
          nodeStart.internalSlots = [];
          var endDelim;
          var exact;
          var inexact = false;
          if (allowExact && this.match(6)) {
            this.expect(6);
            endDelim = 9;
            exact = true;
          } else {
            this.expect(5);
            endDelim = 8;
            exact = false;
          }
          nodeStart.exact = exact;
          while (!this.match(endDelim)) {
            var isStatic = false;
            var protoStartLoc = null;
            var inexactStartLoc = null;
            var node = this.startNode();
            if (allowProto && this.isContextual(116)) {
              var lookahead = this.lookahead();
              if (lookahead.type !== 14 && lookahead.type !== 17) {
                this.next();
                protoStartLoc = this.state.startLoc;
                allowStatic = false;
              }
            }
            if (allowStatic && this.isContextual(104)) {
              var _lookahead = this.lookahead();
              if (_lookahead.type !== 14 && _lookahead.type !== 17) {
                this.next();
                isStatic = true;
              }
            }
            var variance = this.flowParseVariance();
            if (this.eat(0)) {
              if (protoStartLoc != null) {
                this.unexpected(protoStartLoc);
              }
              if (this.eat(0)) {
                if (variance) {
                  this.unexpected(variance.loc.start);
                }
                nodeStart.internalSlots.push(this.flowParseObjectTypeInternalSlot(node, isStatic));
              } else {
                nodeStart.indexers.push(this.flowParseObjectTypeIndexer(node, isStatic, variance));
              }
            } else if (this.match(10) || this.match(47)) {
              if (protoStartLoc != null) {
                this.unexpected(protoStartLoc);
              }
              if (variance) {
                this.unexpected(variance.loc.start);
              }
              nodeStart.callProperties.push(this.flowParseObjectTypeCallProperty(node, isStatic));
            } else {
              var kind = "init";
              if (this.isContextual(98) || this.isContextual(103)) {
                var _lookahead2 = this.lookahead();
                if (tokenIsLiteralPropertyName(_lookahead2.type)) {
                  kind = this.state.value;
                  this.next();
                }
              }
              var propOrInexact = this.flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact != null ? allowInexact : !exact);
              if (propOrInexact === null) {
                inexact = true;
                inexactStartLoc = this.state.lastTokStartLoc;
              } else {
                nodeStart.properties.push(propOrInexact);
              }
            }
            this.flowObjectTypeSemicolon();
            if (inexactStartLoc && !this.match(8) && !this.match(9)) {
              this.raise(FlowErrors.UnexpectedExplicitInexactInObject, {
                at: inexactStartLoc
              });
            }
          }
          this.expect(endDelim);
          if (allowSpread) {
            nodeStart.inexact = inexact;
          }
          var out = this.finishNode(nodeStart, "ObjectTypeAnnotation");
          this.state.inType = oldInType;
          return out;
        };
        _proto.flowParseObjectTypeProperty = function flowParseObjectTypeProperty(node, isStatic, protoStartLoc, variance, kind, allowSpread, allowInexact) {
          if (this.eat(21)) {
            var isInexactToken = this.match(12) || this.match(13) || this.match(8) || this.match(9);
            if (isInexactToken) {
              if (!allowSpread) {
                this.raise(FlowErrors.InexactInsideNonObject, {
                  at: this.state.lastTokStartLoc
                });
              } else if (!allowInexact) {
                this.raise(FlowErrors.InexactInsideExact, {
                  at: this.state.lastTokStartLoc
                });
              }
              if (variance) {
                this.raise(FlowErrors.InexactVariance, {
                  at: variance
                });
              }
              return null;
            }
            if (!allowSpread) {
              this.raise(FlowErrors.UnexpectedSpreadType, {
                at: this.state.lastTokStartLoc
              });
            }
            if (protoStartLoc != null) {
              this.unexpected(protoStartLoc);
            }
            if (variance) {
              this.raise(FlowErrors.SpreadVariance, {
                at: variance
              });
            }
            node.argument = this.flowParseType();
            return this.finishNode(node, "ObjectTypeSpreadProperty");
          } else {
            node.key = this.flowParseObjectPropertyKey();
            node["static"] = isStatic;
            node.proto = protoStartLoc != null;
            node.kind = kind;
            var optional = false;
            if (this.match(47) || this.match(10)) {
              node.method = true;
              if (protoStartLoc != null) {
                this.unexpected(protoStartLoc);
              }
              if (variance) {
                this.unexpected(variance.loc.start);
              }
              node.value = this.flowParseObjectTypeMethodish(this.startNodeAt(node.loc.start));
              if (kind === "get" || kind === "set") {
                this.flowCheckGetterSetterParams(node);
              }
              if (!allowSpread && node.key.name === "constructor" && node.value["this"]) {
                this.raise(FlowErrors.ThisParamBannedInConstructor, {
                  at: node.value["this"]
                });
              }
            } else {
              if (kind !== "init") this.unexpected();
              node.method = false;
              if (this.eat(17)) {
                optional = true;
              }
              node.value = this.flowParseTypeInitialiser();
              node.variance = variance;
            }
            node.optional = optional;
            return this.finishNode(node, "ObjectTypeProperty");
          }
        };
        _proto.flowCheckGetterSetterParams = function flowCheckGetterSetterParams(property) {
          var paramCount = property.kind === "get" ? 0 : 1;
          var length = property.value.params.length + (property.value.rest ? 1 : 0);
          if (property.value["this"]) {
            this.raise(property.kind === "get" ? FlowErrors.GetterMayNotHaveThisParam : FlowErrors.SetterMayNotHaveThisParam, {
              at: property.value["this"]
            });
          }
          if (length !== paramCount) {
            this.raise(property.kind === "get" ? Errors.BadGetterArity : Errors.BadSetterArity, {
              at: property
            });
          }
          if (property.kind === "set" && property.value.rest) {
            this.raise(Errors.BadSetterRestParameter, {
              at: property
            });
          }
        };
        _proto.flowObjectTypeSemicolon = function flowObjectTypeSemicolon() {
          if (!this.eat(13) && !this.eat(12) && !this.match(8) && !this.match(9)) {
            this.unexpected();
          }
        };
        _proto.flowParseQualifiedTypeIdentifier = function flowParseQualifiedTypeIdentifier(startLoc, id) {
          var _startLoc;
          (_startLoc = startLoc) != null ? _startLoc : startLoc = this.state.startLoc;
          var node = id || this.flowParseRestrictedIdentifier(true);
          while (this.eat(16)) {
            var node2 = this.startNodeAt(startLoc);
            node2.qualification = node;
            node2.id = this.flowParseRestrictedIdentifier(true);
            node = this.finishNode(node2, "QualifiedTypeIdentifier");
          }
          return node;
        };
        _proto.flowParseGenericType = function flowParseGenericType(startLoc, id) {
          var node = this.startNodeAt(startLoc);
          node.typeParameters = null;
          node.id = this.flowParseQualifiedTypeIdentifier(startLoc, id);
          if (this.match(47)) {
            node.typeParameters = this.flowParseTypeParameterInstantiation();
          }
          return this.finishNode(node, "GenericTypeAnnotation");
        };
        _proto.flowParseTypeofType = function flowParseTypeofType() {
          var node = this.startNode();
          this.expect(87);
          node.argument = this.flowParsePrimaryType();
          return this.finishNode(node, "TypeofTypeAnnotation");
        };
        _proto.flowParseTupleType = function flowParseTupleType() {
          var node = this.startNode();
          node.types = [];
          this.expect(0);
          while (this.state.pos < this.length && !this.match(3)) {
            node.types.push(this.flowParseType());
            if (this.match(3)) break;
            this.expect(12);
          }
          this.expect(3);
          return this.finishNode(node, "TupleTypeAnnotation");
        };
        _proto.flowParseFunctionTypeParam = function flowParseFunctionTypeParam(first) {
          var name = null;
          var optional = false;
          var typeAnnotation = null;
          var node = this.startNode();
          var lh = this.lookahead();
          var isThis = this.state.type === 78;
          if (lh.type === 14 || lh.type === 17) {
            if (isThis && !first) {
              this.raise(FlowErrors.ThisParamMustBeFirst, {
                at: node
              });
            }
            name = this.parseIdentifier(isThis);
            if (this.eat(17)) {
              optional = true;
              if (isThis) {
                this.raise(FlowErrors.ThisParamMayNotBeOptional, {
                  at: node
                });
              }
            }
            typeAnnotation = this.flowParseTypeInitialiser();
          } else {
            typeAnnotation = this.flowParseType();
          }
          node.name = name;
          node.optional = optional;
          node.typeAnnotation = typeAnnotation;
          return this.finishNode(node, "FunctionTypeParam");
        };
        _proto.reinterpretTypeAsFunctionTypeParam = function reinterpretTypeAsFunctionTypeParam(type) {
          var node = this.startNodeAt(type.loc.start);
          node.name = null;
          node.optional = false;
          node.typeAnnotation = type;
          return this.finishNode(node, "FunctionTypeParam");
        };
        _proto.flowParseFunctionTypeParams = function flowParseFunctionTypeParams(params) {
          if (params === void 0) {
            params = [];
          }
          var rest = null;
          var _this = null;
          if (this.match(78)) {
            _this = this.flowParseFunctionTypeParam(true);
            _this.name = null;
            if (!this.match(11)) {
              this.expect(12);
            }
          }
          while (!this.match(11) && !this.match(21)) {
            params.push(this.flowParseFunctionTypeParam(false));
            if (!this.match(11)) {
              this.expect(12);
            }
          }
          if (this.eat(21)) {
            rest = this.flowParseFunctionTypeParam(false);
          }
          return {
            params: params,
            rest: rest,
            _this: _this
          };
        };
        _proto.flowIdentToTypeAnnotation = function flowIdentToTypeAnnotation(startLoc, node, id) {
          switch (id.name) {
            case "any":
              return this.finishNode(node, "AnyTypeAnnotation");
            case "bool":
            case "boolean":
              return this.finishNode(node, "BooleanTypeAnnotation");
            case "mixed":
              return this.finishNode(node, "MixedTypeAnnotation");
            case "empty":
              return this.finishNode(node, "EmptyTypeAnnotation");
            case "number":
              return this.finishNode(node, "NumberTypeAnnotation");
            case "string":
              return this.finishNode(node, "StringTypeAnnotation");
            case "symbol":
              return this.finishNode(node, "SymbolTypeAnnotation");
            default:
              this.checkNotUnderscore(id.name);
              return this.flowParseGenericType(startLoc, id);
          }
        };
        _proto.flowParsePrimaryType = function flowParsePrimaryType() {
          var startLoc = this.state.startLoc;
          var node = this.startNode();
          var tmp;
          var type;
          var isGroupedType = false;
          var oldNoAnonFunctionType = this.state.noAnonFunctionType;
          switch (this.state.type) {
            case 5:
              return this.flowParseObjectType({
                allowStatic: false,
                allowExact: false,
                allowSpread: true,
                allowProto: false,
                allowInexact: true
              });
            case 6:
              return this.flowParseObjectType({
                allowStatic: false,
                allowExact: true,
                allowSpread: true,
                allowProto: false,
                allowInexact: false
              });
            case 0:
              this.state.noAnonFunctionType = false;
              type = this.flowParseTupleType();
              this.state.noAnonFunctionType = oldNoAnonFunctionType;
              return type;
            case 47:
              node.typeParameters = this.flowParseTypeParameterDeclaration();
              this.expect(10);
              tmp = this.flowParseFunctionTypeParams();
              node.params = tmp.params;
              node.rest = tmp.rest;
              node["this"] = tmp._this;
              this.expect(11);
              this.expect(19);
              node.returnType = this.flowParseType();
              return this.finishNode(node, "FunctionTypeAnnotation");
            case 10:
              this.next();
              if (!this.match(11) && !this.match(21)) {
                if (tokenIsIdentifier(this.state.type) || this.match(78)) {
                  var token = this.lookahead().type;
                  isGroupedType = token !== 17 && token !== 14;
                } else {
                  isGroupedType = true;
                }
              }
              if (isGroupedType) {
                this.state.noAnonFunctionType = false;
                type = this.flowParseType();
                this.state.noAnonFunctionType = oldNoAnonFunctionType;
                if (this.state.noAnonFunctionType || !(this.match(12) || this.match(11) && this.lookahead().type === 19)) {
                  this.expect(11);
                  return type;
                } else {
                  this.eat(12);
                }
              }
              if (type) {
                tmp = this.flowParseFunctionTypeParams([this.reinterpretTypeAsFunctionTypeParam(type)]);
              } else {
                tmp = this.flowParseFunctionTypeParams();
              }
              node.params = tmp.params;
              node.rest = tmp.rest;
              node["this"] = tmp._this;
              this.expect(11);
              this.expect(19);
              node.returnType = this.flowParseType();
              node.typeParameters = null;
              return this.finishNode(node, "FunctionTypeAnnotation");
            case 131:
              return this.parseLiteral(this.state.value, "StringLiteralTypeAnnotation");
            case 85:
            case 86:
              node.value = this.match(85);
              this.next();
              return this.finishNode(node, "BooleanLiteralTypeAnnotation");
            case 53:
              if (this.state.value === "-") {
                this.next();
                if (this.match(132)) {
                  return this.parseLiteralAtNode(-this.state.value, "NumberLiteralTypeAnnotation", node);
                }
                if (this.match(133)) {
                  return this.parseLiteralAtNode(-this.state.value, "BigIntLiteralTypeAnnotation", node);
                }
                throw this.raise(FlowErrors.UnexpectedSubtractionOperand, {
                  at: this.state.startLoc
                });
              }
              this.unexpected();
              return;
            case 132:
              return this.parseLiteral(this.state.value, "NumberLiteralTypeAnnotation");
            case 133:
              return this.parseLiteral(this.state.value, "BigIntLiteralTypeAnnotation");
            case 88:
              this.next();
              return this.finishNode(node, "VoidTypeAnnotation");
            case 84:
              this.next();
              return this.finishNode(node, "NullLiteralTypeAnnotation");
            case 78:
              this.next();
              return this.finishNode(node, "ThisTypeAnnotation");
            case 55:
              this.next();
              return this.finishNode(node, "ExistsTypeAnnotation");
            case 87:
              return this.flowParseTypeofType();
            default:
              if (tokenIsKeyword(this.state.type)) {
                var label = tokenLabelName(this.state.type);
                this.next();
                return _superClass.prototype.createIdentifier.call(this, node, label);
              } else if (tokenIsIdentifier(this.state.type)) {
                if (this.isContextual(127)) {
                  return this.flowParseInterfaceType();
                }
                return this.flowIdentToTypeAnnotation(startLoc, node, this.parseIdentifier());
              }
          }
          this.unexpected();
        };
        _proto.flowParsePostfixType = function flowParsePostfixType() {
          var startLoc = this.state.startLoc;
          var type = this.flowParsePrimaryType();
          var seenOptionalIndexedAccess = false;
          while ((this.match(0) || this.match(18)) && !this.canInsertSemicolon()) {
            var node = this.startNodeAt(startLoc);
            var optional = this.eat(18);
            seenOptionalIndexedAccess = seenOptionalIndexedAccess || optional;
            this.expect(0);
            if (!optional && this.match(3)) {
              node.elementType = type;
              this.next();
              type = this.finishNode(node, "ArrayTypeAnnotation");
            } else {
              node.objectType = type;
              node.indexType = this.flowParseType();
              this.expect(3);
              if (seenOptionalIndexedAccess) {
                node.optional = optional;
                type = this.finishNode(node, "OptionalIndexedAccessType");
              } else {
                type = this.finishNode(node, "IndexedAccessType");
              }
            }
          }
          return type;
        };
        _proto.flowParsePrefixType = function flowParsePrefixType() {
          var node = this.startNode();
          if (this.eat(17)) {
            node.typeAnnotation = this.flowParsePrefixType();
            return this.finishNode(node, "NullableTypeAnnotation");
          } else {
            return this.flowParsePostfixType();
          }
        };
        _proto.flowParseAnonFunctionWithoutParens = function flowParseAnonFunctionWithoutParens() {
          var param = this.flowParsePrefixType();
          if (!this.state.noAnonFunctionType && this.eat(19)) {
            var node = this.startNodeAt(param.loc.start);
            node.params = [this.reinterpretTypeAsFunctionTypeParam(param)];
            node.rest = null;
            node["this"] = null;
            node.returnType = this.flowParseType();
            node.typeParameters = null;
            return this.finishNode(node, "FunctionTypeAnnotation");
          }
          return param;
        };
        _proto.flowParseIntersectionType = function flowParseIntersectionType() {
          var node = this.startNode();
          this.eat(45);
          var type = this.flowParseAnonFunctionWithoutParens();
          node.types = [type];
          while (this.eat(45)) {
            node.types.push(this.flowParseAnonFunctionWithoutParens());
          }
          return node.types.length === 1 ? type : this.finishNode(node, "IntersectionTypeAnnotation");
        };
        _proto.flowParseUnionType = function flowParseUnionType() {
          var node = this.startNode();
          this.eat(43);
          var type = this.flowParseIntersectionType();
          node.types = [type];
          while (this.eat(43)) {
            node.types.push(this.flowParseIntersectionType());
          }
          return node.types.length === 1 ? type : this.finishNode(node, "UnionTypeAnnotation");
        };
        _proto.flowParseType = function flowParseType() {
          var oldInType = this.state.inType;
          this.state.inType = true;
          var type = this.flowParseUnionType();
          this.state.inType = oldInType;
          return type;
        };
        _proto.flowParseTypeOrImplicitInstantiation = function flowParseTypeOrImplicitInstantiation() {
          if (this.state.type === 130 && this.state.value === "_") {
            var startLoc = this.state.startLoc;
            var node = this.parseIdentifier();
            return this.flowParseGenericType(startLoc, node);
          } else {
            return this.flowParseType();
          }
        };
        _proto.flowParseTypeAnnotation = function flowParseTypeAnnotation() {
          var node = this.startNode();
          node.typeAnnotation = this.flowParseTypeInitialiser();
          return this.finishNode(node, "TypeAnnotation");
        };
        _proto.flowParseTypeAnnotatableIdentifier = function flowParseTypeAnnotatableIdentifier(allowPrimitiveOverride) {
          var ident = allowPrimitiveOverride ? this.parseIdentifier() : this.flowParseRestrictedIdentifier();
          if (this.match(14)) {
            ident.typeAnnotation = this.flowParseTypeAnnotation();
            this.resetEndLocation(ident);
          }
          return ident;
        };
        _proto.typeCastToParameter = function typeCastToParameter(node) {
          node.expression.typeAnnotation = node.typeAnnotation;
          this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);
          return node.expression;
        };
        _proto.flowParseVariance = function flowParseVariance() {
          var variance = null;
          if (this.match(53)) {
            variance = this.startNode();
            if (this.state.value === "+") {
              variance.kind = "plus";
            } else {
              variance.kind = "minus";
            }
            this.next();
            return this.finishNode(variance, "Variance");
          }
          return variance;
        };
        _proto.parseFunctionBody = function parseFunctionBody(node, allowExpressionBody, isMethod) {
          var _this4 = this;
          if (isMethod === void 0) {
            isMethod = false;
          }
          if (allowExpressionBody) {
            this.forwardNoArrowParamsConversionAt(node, function () {
              return _superClass.prototype.parseFunctionBody.call(_this4, node, true, isMethod);
            });
            return;
          }
          _superClass.prototype.parseFunctionBody.call(this, node, false, isMethod);
        };
        _proto.parseFunctionBodyAndFinish = function parseFunctionBodyAndFinish(node, type, isMethod) {
          if (isMethod === void 0) {
            isMethod = false;
          }
          if (this.match(14)) {
            var typeNode = this.startNode();
            var _this$flowParseTypeAn2 = this.flowParseTypeAndPredicateInitialiser();
            typeNode.typeAnnotation = _this$flowParseTypeAn2[0];
            node.predicate = _this$flowParseTypeAn2[1];
            node.returnType = typeNode.typeAnnotation ? this.finishNode(typeNode, "TypeAnnotation") : null;
          }
          return _superClass.prototype.parseFunctionBodyAndFinish.call(this, node, type, isMethod);
        };
        _proto.parseStatementLike = function parseStatementLike(flags) {
          if (this.state.strict && this.isContextual(127)) {
            var lookahead = this.lookahead();
            if (tokenIsKeywordOrIdentifier(lookahead.type)) {
              var node = this.startNode();
              this.next();
              return this.flowParseInterface(node);
            }
          } else if (this.shouldParseEnums() && this.isContextual(124)) {
            var _node = this.startNode();
            this.next();
            return this.flowParseEnumDeclaration(_node);
          }
          var stmt = _superClass.prototype.parseStatementLike.call(this, flags);
          if (this.flowPragma === undefined && !this.isValidDirective(stmt)) {
            this.flowPragma = null;
          }
          return stmt;
        };
        _proto.parseExpressionStatement = function parseExpressionStatement(node, expr, decorators) {
          if (expr.type === "Identifier") {
            if (expr.name === "declare") {
              if (this.match(80) || tokenIsIdentifier(this.state.type) || this.match(68) || this.match(74) || this.match(82)) {
                return this.flowParseDeclare(node);
              }
            } else if (tokenIsIdentifier(this.state.type)) {
              if (expr.name === "interface") {
                return this.flowParseInterface(node);
              } else if (expr.name === "type") {
                return this.flowParseTypeAlias(node);
              } else if (expr.name === "opaque") {
                return this.flowParseOpaqueType(node, false);
              }
            }
          }
          return _superClass.prototype.parseExpressionStatement.call(this, node, expr, decorators);
        };
        _proto.shouldParseExportDeclaration = function shouldParseExportDeclaration() {
          var type = this.state.type;
          if (tokenIsFlowInterfaceOrTypeOrOpaque(type) || this.shouldParseEnums() && type === 124) {
            return !this.state.containsEsc;
          }
          return _superClass.prototype.shouldParseExportDeclaration.call(this);
        };
        _proto.isExportDefaultSpecifier = function isExportDefaultSpecifier() {
          var type = this.state.type;
          if (tokenIsFlowInterfaceOrTypeOrOpaque(type) || this.shouldParseEnums() && type === 124) {
            return this.state.containsEsc;
          }
          return _superClass.prototype.isExportDefaultSpecifier.call(this);
        };
        _proto.parseExportDefaultExpression = function parseExportDefaultExpression() {
          if (this.shouldParseEnums() && this.isContextual(124)) {
            var node = this.startNode();
            this.next();
            return this.flowParseEnumDeclaration(node);
          }
          return _superClass.prototype.parseExportDefaultExpression.call(this);
        };
        _proto.parseConditional = function parseConditional(expr, startLoc, refExpressionErrors) {
          var _this5 = this;
          if (!this.match(17)) return expr;
          if (this.state.maybeInArrowParameters) {
            var nextCh = this.lookaheadCharCode();
            if (nextCh === 44 || nextCh === 61 || nextCh === 58 || nextCh === 41) {
              this.setOptionalParametersError(refExpressionErrors);
              return expr;
            }
          }
          this.expect(17);
          var state = this.state.clone();
          var originalNoArrowAt = this.state.noArrowAt;
          var node = this.startNodeAt(startLoc);
          var _this$tryParseConditi = this.tryParseConditionalConsequent(),
            consequent = _this$tryParseConditi.consequent,
            failed = _this$tryParseConditi.failed;
          var _this$getArrowLikeExp = this.getArrowLikeExpressions(consequent),
            valid = _this$getArrowLikeExp[0],
            invalid = _this$getArrowLikeExp[1];
          if (failed || invalid.length > 0) {
            var noArrowAt = [].concat(originalNoArrowAt);
            if (invalid.length > 0) {
              this.state = state;
              this.state.noArrowAt = noArrowAt;
              for (var i = 0; i < invalid.length; i++) {
                noArrowAt.push(invalid[i].start);
              }
              var _this$tryParseConditi2 = this.tryParseConditionalConsequent();
              consequent = _this$tryParseConditi2.consequent;
              failed = _this$tryParseConditi2.failed;
              var _this$getArrowLikeExp2 = this.getArrowLikeExpressions(consequent);
              valid = _this$getArrowLikeExp2[0];
              invalid = _this$getArrowLikeExp2[1];
            }
            if (failed && valid.length > 1) {
              this.raise(FlowErrors.AmbiguousConditionalArrow, {
                at: state.startLoc
              });
            }
            if (failed && valid.length === 1) {
              this.state = state;
              noArrowAt.push(valid[0].start);
              this.state.noArrowAt = noArrowAt;
              var _this$tryParseConditi3 = this.tryParseConditionalConsequent();
              consequent = _this$tryParseConditi3.consequent;
              failed = _this$tryParseConditi3.failed;
            }
          }
          this.getArrowLikeExpressions(consequent, true);
          this.state.noArrowAt = originalNoArrowAt;
          this.expect(14);
          node.test = expr;
          node.consequent = consequent;
          node.alternate = this.forwardNoArrowParamsConversionAt(node, function () {
            return _this5.parseMaybeAssign(undefined, undefined);
          });
          return this.finishNode(node, "ConditionalExpression");
        };
        _proto.tryParseConditionalConsequent = function tryParseConditionalConsequent() {
          this.state.noArrowParamsConversionAt.push(this.state.start);
          var consequent = this.parseMaybeAssignAllowIn();
          var failed = !this.match(14);
          this.state.noArrowParamsConversionAt.pop();
          return {
            consequent: consequent,
            failed: failed
          };
        };
        _proto.getArrowLikeExpressions = function getArrowLikeExpressions(node, disallowInvalid) {
          var _this6 = this;
          var stack = [node];
          var arrows = [];
          while (stack.length !== 0) {
            var _node2 = stack.pop();
            if (_node2.type === "ArrowFunctionExpression") {
              if (_node2.typeParameters || !_node2.returnType) {
                this.finishArrowValidation(_node2);
              } else {
                arrows.push(_node2);
              }
              stack.push(_node2.body);
            } else if (_node2.type === "ConditionalExpression") {
              stack.push(_node2.consequent);
              stack.push(_node2.alternate);
            }
          }
          if (disallowInvalid) {
            arrows.forEach(function (node) {
              return _this6.finishArrowValidation(node);
            });
            return [arrows, []];
          }
          return partition(arrows, function (node) {
            return node.params.every(function (param) {
              return _this6.isAssignable(param, true);
            });
          });
        };
        _proto.finishArrowValidation = function finishArrowValidation(node) {
          var _node$extra;
          this.toAssignableList(node.params, (_node$extra = node.extra) == null ? void 0 : _node$extra.trailingCommaLoc, false);
          this.scope.enter(SCOPE_FUNCTION | SCOPE_ARROW);
          _superClass.prototype.checkParams.call(this, node, false, true);
          this.scope.exit();
        };
        _proto.forwardNoArrowParamsConversionAt = function forwardNoArrowParamsConversionAt(node, parse) {
          var result;
          if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) {
            this.state.noArrowParamsConversionAt.push(this.state.start);
            result = parse();
            this.state.noArrowParamsConversionAt.pop();
          } else {
            result = parse();
          }
          return result;
        };
        _proto.parseParenItem = function parseParenItem(node, startLoc) {
          node = _superClass.prototype.parseParenItem.call(this, node, startLoc);
          if (this.eat(17)) {
            node.optional = true;
            this.resetEndLocation(node);
          }
          if (this.match(14)) {
            var typeCastNode = this.startNodeAt(startLoc);
            typeCastNode.expression = node;
            typeCastNode.typeAnnotation = this.flowParseTypeAnnotation();
            return this.finishNode(typeCastNode, "TypeCastExpression");
          }
          return node;
        };
        _proto.assertModuleNodeAllowed = function assertModuleNodeAllowed(node) {
          if (node.type === "ImportDeclaration" && (node.importKind === "type" || node.importKind === "typeof") || node.type === "ExportNamedDeclaration" && node.exportKind === "type" || node.type === "ExportAllDeclaration" && node.exportKind === "type") {
            return;
          }
          _superClass.prototype.assertModuleNodeAllowed.call(this, node);
        };
        _proto.parseExport = function parseExport(node, decorators) {
          var decl = _superClass.prototype.parseExport.call(this, node, decorators);
          if (decl.type === "ExportNamedDeclaration" || decl.type === "ExportAllDeclaration") {
            decl.exportKind = decl.exportKind || "value";
          }
          return decl;
        };
        _proto.parseExportDeclaration = function parseExportDeclaration(node) {
          if (this.isContextual(128)) {
            node.exportKind = "type";
            var declarationNode = this.startNode();
            this.next();
            if (this.match(5)) {
              node.specifiers = this.parseExportSpecifiers(true);
              _superClass.prototype.parseExportFrom.call(this, node);
              return null;
            } else {
              return this.flowParseTypeAlias(declarationNode);
            }
          } else if (this.isContextual(129)) {
            node.exportKind = "type";
            var _declarationNode = this.startNode();
            this.next();
            return this.flowParseOpaqueType(_declarationNode, false);
          } else if (this.isContextual(127)) {
            node.exportKind = "type";
            var _declarationNode2 = this.startNode();
            this.next();
            return this.flowParseInterface(_declarationNode2);
          } else if (this.shouldParseEnums() && this.isContextual(124)) {
            node.exportKind = "value";
            var _declarationNode3 = this.startNode();
            this.next();
            return this.flowParseEnumDeclaration(_declarationNode3);
          } else {
            return _superClass.prototype.parseExportDeclaration.call(this, node);
          }
        };
        _proto.eatExportStar = function eatExportStar(node) {
          if (_superClass.prototype.eatExportStar.call(this, node)) return true;
          if (this.isContextual(128) && this.lookahead().type === 55) {
            node.exportKind = "type";
            this.next();
            this.next();
            return true;
          }
          return false;
        };
        _proto.maybeParseExportNamespaceSpecifier = function maybeParseExportNamespaceSpecifier(node) {
          var startLoc = this.state.startLoc;
          var hasNamespace = _superClass.prototype.maybeParseExportNamespaceSpecifier.call(this, node);
          if (hasNamespace && node.exportKind === "type") {
            this.unexpected(startLoc);
          }
          return hasNamespace;
        };
        _proto.parseClassId = function parseClassId(node, isStatement, optionalId) {
          _superClass.prototype.parseClassId.call(this, node, isStatement, optionalId);
          if (this.match(47)) {
            node.typeParameters = this.flowParseTypeParameterDeclaration();
          }
        };
        _proto.parseClassMember = function parseClassMember(classBody, member, state) {
          var startLoc = this.state.startLoc;
          if (this.isContextual(123)) {
            if (_superClass.prototype.parseClassMemberFromModifier.call(this, classBody, member)) {
              return;
            }
            member.declare = true;
          }
          _superClass.prototype.parseClassMember.call(this, classBody, member, state);
          if (member.declare) {
            if (member.type !== "ClassProperty" && member.type !== "ClassPrivateProperty" && member.type !== "PropertyDefinition") {
              this.raise(FlowErrors.DeclareClassElement, {
                at: startLoc
              });
            } else if (member.value) {
              this.raise(FlowErrors.DeclareClassFieldInitializer, {
                at: member.value
              });
            }
          }
        };
        _proto.isIterator = function isIterator(word) {
          return word === "iterator" || word === "asyncIterator";
        };
        _proto.readIterator = function readIterator() {
          var word = _superClass.prototype.readWord1.call(this);
          var fullWord = "@@" + word;
          if (!this.isIterator(word) || !this.state.inType) {
            this.raise(Errors.InvalidIdentifier, {
              at: this.state.curPosition(),
              identifierName: fullWord
            });
          }
          this.finishToken(130, fullWord);
        };
        _proto.getTokenFromCode = function getTokenFromCode(code) {
          var next = this.input.charCodeAt(this.state.pos + 1);
          if (code === 123 && next === 124) {
            this.finishOp(6, 2);
          } else if (this.state.inType && (code === 62 || code === 60)) {
            this.finishOp(code === 62 ? 48 : 47, 1);
          } else if (this.state.inType && code === 63) {
            if (next === 46) {
              this.finishOp(18, 2);
            } else {
              this.finishOp(17, 1);
            }
          } else if (isIteratorStart(code, next, this.input.charCodeAt(this.state.pos + 2))) {
            this.state.pos += 2;
            this.readIterator();
          } else {
            _superClass.prototype.getTokenFromCode.call(this, code);
          }
        };
        _proto.isAssignable = function isAssignable(node, isBinding) {
          if (node.type === "TypeCastExpression") {
            return this.isAssignable(node.expression, isBinding);
          } else {
            return _superClass.prototype.isAssignable.call(this, node, isBinding);
          }
        };
        _proto.toAssignable = function toAssignable(node, isLHS) {
          if (isLHS === void 0) {
            isLHS = false;
          }
          if (!isLHS && node.type === "AssignmentExpression" && node.left.type === "TypeCastExpression") {
            node.left = this.typeCastToParameter(node.left);
          }
          _superClass.prototype.toAssignable.call(this, node, isLHS);
        };
        _proto.toAssignableList = function toAssignableList(exprList, trailingCommaLoc, isLHS) {
          for (var i = 0; i < exprList.length; i++) {
            var expr = exprList[i];
            if ((expr == null ? void 0 : expr.type) === "TypeCastExpression") {
              exprList[i] = this.typeCastToParameter(expr);
            }
          }
          _superClass.prototype.toAssignableList.call(this, exprList, trailingCommaLoc, isLHS);
        };
        _proto.toReferencedList = function toReferencedList(exprList, isParenthesizedExpr) {
          for (var i = 0; i < exprList.length; i++) {
            var _expr$extra;
            var expr = exprList[i];
            if (expr && expr.type === "TypeCastExpression" && !((_expr$extra = expr.extra) != null && _expr$extra.parenthesized) && (exprList.length > 1 || !isParenthesizedExpr)) {
              this.raise(FlowErrors.TypeCastInPattern, {
                at: expr.typeAnnotation
              });
            }
          }
          return exprList;
        };
        _proto.parseArrayLike = function parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) {
          var node = _superClass.prototype.parseArrayLike.call(this, close, canBePattern, isTuple, refExpressionErrors);
          if (canBePattern && !this.state.maybeInArrowParameters) {
            this.toReferencedList(node.elements);
          }
          return node;
        };
        _proto.isValidLVal = function isValidLVal(type, isParenthesized, binding) {
          return type === "TypeCastExpression" || _superClass.prototype.isValidLVal.call(this, type, isParenthesized, binding);
        };
        _proto.parseClassProperty = function parseClassProperty(node) {
          if (this.match(14)) {
            node.typeAnnotation = this.flowParseTypeAnnotation();
          }
          return _superClass.prototype.parseClassProperty.call(this, node);
        };
        _proto.parseClassPrivateProperty = function parseClassPrivateProperty(node) {
          if (this.match(14)) {
            node.typeAnnotation = this.flowParseTypeAnnotation();
          }
          return _superClass.prototype.parseClassPrivateProperty.call(this, node);
        };
        _proto.isClassMethod = function isClassMethod() {
          return this.match(47) || _superClass.prototype.isClassMethod.call(this);
        };
        _proto.isClassProperty = function isClassProperty() {
          return this.match(14) || _superClass.prototype.isClassProperty.call(this);
        };
        _proto.isNonstaticConstructor = function isNonstaticConstructor(method) {
          return !this.match(14) && _superClass.prototype.isNonstaticConstructor.call(this, method);
        };
        _proto.pushClassMethod = function pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {
          if (method.variance) {
            this.unexpected(method.variance.loc.start);
          }
          delete method.variance;
          if (this.match(47)) {
            method.typeParameters = this.flowParseTypeParameterDeclaration();
          }
          _superClass.prototype.pushClassMethod.call(this, classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper);
          if (method.params && isConstructor) {
            var params = method.params;
            if (params.length > 0 && this.isThisParam(params[0])) {
              this.raise(FlowErrors.ThisParamBannedInConstructor, {
                at: method
              });
            }
          } else if (method.type === "MethodDefinition" && isConstructor && method.value.params) {
            var _params = method.value.params;
            if (_params.length > 0 && this.isThisParam(_params[0])) {
              this.raise(FlowErrors.ThisParamBannedInConstructor, {
                at: method
              });
            }
          }
        };
        _proto.pushClassPrivateMethod = function pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {
          if (method.variance) {
            this.unexpected(method.variance.loc.start);
          }
          delete method.variance;
          if (this.match(47)) {
            method.typeParameters = this.flowParseTypeParameterDeclaration();
          }
          _superClass.prototype.pushClassPrivateMethod.call(this, classBody, method, isGenerator, isAsync);
        };
        _proto.parseClassSuper = function parseClassSuper(node) {
          _superClass.prototype.parseClassSuper.call(this, node);
          if (node.superClass && this.match(47)) {
            node.superTypeParameters = this.flowParseTypeParameterInstantiation();
          }
          if (this.isContextual(111)) {
            this.next();
            var implemented = node["implements"] = [];
            do {
              var _node3 = this.startNode();
              _node3.id = this.flowParseRestrictedIdentifier(true);
              if (this.match(47)) {
                _node3.typeParameters = this.flowParseTypeParameterInstantiation();
              } else {
                _node3.typeParameters = null;
              }
              implemented.push(this.finishNode(_node3, "ClassImplements"));
            } while (this.eat(12));
          }
        };
        _proto.checkGetterSetterParams = function checkGetterSetterParams(method) {
          _superClass.prototype.checkGetterSetterParams.call(this, method);
          var params = this.getObjectOrClassMethodParams(method);
          if (params.length > 0) {
            var param = params[0];
            if (this.isThisParam(param) && method.kind === "get") {
              this.raise(FlowErrors.GetterMayNotHaveThisParam, {
                at: param
              });
            } else if (this.isThisParam(param)) {
              this.raise(FlowErrors.SetterMayNotHaveThisParam, {
                at: param
              });
            }
          }
        };
        _proto.parsePropertyNamePrefixOperator = function parsePropertyNamePrefixOperator(node) {
          node.variance = this.flowParseVariance();
        };
        _proto.parseObjPropValue = function parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {
          if (prop.variance) {
            this.unexpected(prop.variance.loc.start);
          }
          delete prop.variance;
          var typeParameters;
          if (this.match(47) && !isAccessor) {
            typeParameters = this.flowParseTypeParameterDeclaration();
            if (!this.match(10)) this.unexpected();
          }
          var result = _superClass.prototype.parseObjPropValue.call(this, prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors);
          if (typeParameters) {
            (result.value || result).typeParameters = typeParameters;
          }
          return result;
        };
        _proto.parseAssignableListItemTypes = function parseAssignableListItemTypes(param) {
          if (this.eat(17)) {
            if (param.type !== "Identifier") {
              this.raise(FlowErrors.PatternIsOptional, {
                at: param
              });
            }
            if (this.isThisParam(param)) {
              this.raise(FlowErrors.ThisParamMayNotBeOptional, {
                at: param
              });
            }
            param.optional = true;
          }
          if (this.match(14)) {
            param.typeAnnotation = this.flowParseTypeAnnotation();
          } else if (this.isThisParam(param)) {
            this.raise(FlowErrors.ThisParamAnnotationRequired, {
              at: param
            });
          }
          if (this.match(29) && this.isThisParam(param)) {
            this.raise(FlowErrors.ThisParamNoDefault, {
              at: param
            });
          }
          this.resetEndLocation(param);
          return param;
        };
        _proto.parseMaybeDefault = function parseMaybeDefault(startLoc, left) {
          var node = _superClass.prototype.parseMaybeDefault.call(this, startLoc, left);
          if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) {
            this.raise(FlowErrors.TypeBeforeInitializer, {
              at: node.typeAnnotation
            });
          }
          return node;
        };
        _proto.shouldParseDefaultImport = function shouldParseDefaultImport(node) {
          if (!hasTypeImportKind(node)) {
            return _superClass.prototype.shouldParseDefaultImport.call(this, node);
          }
          return isMaybeDefaultImport(this.state.type);
        };
        _proto.checkImportReflection = function checkImportReflection(node) {
          _superClass.prototype.checkImportReflection.call(this, node);
          if (node.module && node.importKind !== "value") {
            this.raise(FlowErrors.ImportReflectionHasImportType, {
              at: node.specifiers[0].loc.start
            });
          }
        };
        _proto.parseImportSpecifierLocal = function parseImportSpecifierLocal(node, specifier, type) {
          specifier.local = hasTypeImportKind(node) ? this.flowParseRestrictedIdentifier(true, true) : this.parseIdentifier();
          node.specifiers.push(this.finishImportSpecifier(specifier, type));
        };
        _proto.maybeParseDefaultImportSpecifier = function maybeParseDefaultImportSpecifier(node) {
          node.importKind = "value";
          var kind = null;
          if (this.match(87)) {
            kind = "typeof";
          } else if (this.isContextual(128)) {
            kind = "type";
          }
          if (kind) {
            var lh = this.lookahead();
            var type = lh.type;
            if (kind === "type" && type === 55) {
              this.unexpected(null, lh.type);
            }
            if (isMaybeDefaultImport(type) || type === 5 || type === 55) {
              this.next();
              node.importKind = kind;
            }
          }
          return _superClass.prototype.maybeParseDefaultImportSpecifier.call(this, node);
        };
        _proto.parseImportSpecifier = function parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) {
          var firstIdent = specifier.imported;
          var specifierTypeKind = null;
          if (firstIdent.type === "Identifier") {
            if (firstIdent.name === "type") {
              specifierTypeKind = "type";
            } else if (firstIdent.name === "typeof") {
              specifierTypeKind = "typeof";
            }
          }
          var isBinding = false;
          if (this.isContextual(93) && !this.isLookaheadContextual("as")) {
            var as_ident = this.parseIdentifier(true);
            if (specifierTypeKind !== null && !tokenIsKeywordOrIdentifier(this.state.type)) {
              specifier.imported = as_ident;
              specifier.importKind = specifierTypeKind;
              specifier.local = cloneIdentifier(as_ident);
            } else {
              specifier.imported = firstIdent;
              specifier.importKind = null;
              specifier.local = this.parseIdentifier();
            }
          } else {
            if (specifierTypeKind !== null && tokenIsKeywordOrIdentifier(this.state.type)) {
              specifier.imported = this.parseIdentifier(true);
              specifier.importKind = specifierTypeKind;
            } else {
              if (importedIsString) {
                throw this.raise(Errors.ImportBindingIsString, {
                  at: specifier,
                  importName: firstIdent.value
                });
              }
              specifier.imported = firstIdent;
              specifier.importKind = null;
            }
            if (this.eatContextual(93)) {
              specifier.local = this.parseIdentifier();
            } else {
              isBinding = true;
              specifier.local = cloneIdentifier(specifier.imported);
            }
          }
          var specifierIsTypeImport = hasTypeImportKind(specifier);
          if (isInTypeOnlyImport && specifierIsTypeImport) {
            this.raise(FlowErrors.ImportTypeShorthandOnlyInPureImport, {
              at: specifier
            });
          }
          if (isInTypeOnlyImport || specifierIsTypeImport) {
            this.checkReservedType(specifier.local.name, specifier.local.loc.start, true);
          }
          if (isBinding && !isInTypeOnlyImport && !specifierIsTypeImport) {
            this.checkReservedWord(specifier.local.name, specifier.loc.start, true, true);
          }
          return this.finishImportSpecifier(specifier, "ImportSpecifier");
        };
        _proto.parseBindingAtom = function parseBindingAtom() {
          switch (this.state.type) {
            case 78:
              return this.parseIdentifier(true);
            default:
              return _superClass.prototype.parseBindingAtom.call(this);
          }
        };
        _proto.parseFunctionParams = function parseFunctionParams(node, isConstructor) {
          var kind = node.kind;
          if (kind !== "get" && kind !== "set" && this.match(47)) {
            node.typeParameters = this.flowParseTypeParameterDeclaration();
          }
          _superClass.prototype.parseFunctionParams.call(this, node, isConstructor);
        };
        _proto.parseVarId = function parseVarId(decl, kind) {
          _superClass.prototype.parseVarId.call(this, decl, kind);
          if (this.match(14)) {
            decl.id.typeAnnotation = this.flowParseTypeAnnotation();
            this.resetEndLocation(decl.id);
          }
        };
        _proto.parseAsyncArrowFromCallExpression = function parseAsyncArrowFromCallExpression(node, call) {
          if (this.match(14)) {
            var oldNoAnonFunctionType = this.state.noAnonFunctionType;
            this.state.noAnonFunctionType = true;
            node.returnType = this.flowParseTypeAnnotation();
            this.state.noAnonFunctionType = oldNoAnonFunctionType;
          }
          return _superClass.prototype.parseAsyncArrowFromCallExpression.call(this, node, call);
        };
        _proto.shouldParseAsyncArrow = function shouldParseAsyncArrow() {
          return this.match(14) || _superClass.prototype.shouldParseAsyncArrow.call(this);
        };
        _proto.parseMaybeAssign = function parseMaybeAssign(refExpressionErrors, afterLeftParse) {
          var _this7 = this,
            _jsx;
          var state = null;
          var jsx;
          if (this.hasPlugin("jsx") && (this.match(140) || this.match(47))) {
            state = this.state.clone();
            jsx = this.tryParse(function () {
              return _superClass.prototype.parseMaybeAssign.call(_this7, refExpressionErrors, afterLeftParse);
            }, state);
            if (!jsx.error) return jsx.node;
            var context = this.state.context;
            var currentContext = context[context.length - 1];
            if (currentContext === types.j_oTag || currentContext === types.j_expr) {
              context.pop();
            }
          }
          if ((_jsx = jsx) != null && _jsx.error || this.match(47)) {
            var _jsx2, _jsx3;
            state = state || this.state.clone();
            var typeParameters;
            var arrow = this.tryParse(function (abort) {
              var _arrowExpression$extr;
              typeParameters = _this7.flowParseTypeParameterDeclaration();
              var arrowExpression = _this7.forwardNoArrowParamsConversionAt(typeParameters, function () {
                var result = _superClass.prototype.parseMaybeAssign.call(_this7, refExpressionErrors, afterLeftParse);
                _this7.resetStartLocationFromNode(result, typeParameters);
                return result;
              });
              if ((_arrowExpression$extr = arrowExpression.extra) != null && _arrowExpression$extr.parenthesized) abort();
              var expr = _this7.maybeUnwrapTypeCastExpression(arrowExpression);
              if (expr.type !== "ArrowFunctionExpression") abort();
              expr.typeParameters = typeParameters;
              _this7.resetStartLocationFromNode(expr, typeParameters);
              return arrowExpression;
            }, state);
            var arrowExpression = null;
            if (arrow.node && this.maybeUnwrapTypeCastExpression(arrow.node).type === "ArrowFunctionExpression") {
              if (!arrow.error && !arrow.aborted) {
                if (arrow.node.async) {
                  this.raise(FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction, {
                    at: typeParameters
                  });
                }
                return arrow.node;
              }
              arrowExpression = arrow.node;
            }
            if ((_jsx2 = jsx) != null && _jsx2.node) {
              this.state = jsx.failState;
              return jsx.node;
            }
            if (arrowExpression) {
              this.state = arrow.failState;
              return arrowExpression;
            }
            if ((_jsx3 = jsx) != null && _jsx3.thrown) throw jsx.error;
            if (arrow.thrown) throw arrow.error;
            throw this.raise(FlowErrors.UnexpectedTokenAfterTypeParameter, {
              at: typeParameters
            });
          }
          return _superClass.prototype.parseMaybeAssign.call(this, refExpressionErrors, afterLeftParse);
        };
        _proto.parseArrow = function parseArrow(node) {
          var _this8 = this;
          if (this.match(14)) {
            var result = this.tryParse(function () {
              var oldNoAnonFunctionType = _this8.state.noAnonFunctionType;
              _this8.state.noAnonFunctionType = true;
              var typeNode = _this8.startNode();
              var _this8$flowParseTypeA = _this8.flowParseTypeAndPredicateInitialiser();
              typeNode.typeAnnotation = _this8$flowParseTypeA[0];
              node.predicate = _this8$flowParseTypeA[1];
              _this8.state.noAnonFunctionType = oldNoAnonFunctionType;
              if (_this8.canInsertSemicolon()) _this8.unexpected();
              if (!_this8.match(19)) _this8.unexpected();
              return typeNode;
            });
            if (result.thrown) return null;
            if (result.error) this.state = result.failState;
            node.returnType = result.node.typeAnnotation ? this.finishNode(result.node, "TypeAnnotation") : null;
          }
          return _superClass.prototype.parseArrow.call(this, node);
        };
        _proto.shouldParseArrow = function shouldParseArrow(params) {
          return this.match(14) || _superClass.prototype.shouldParseArrow.call(this, params);
        };
        _proto.setArrowFunctionParameters = function setArrowFunctionParameters(node, params) {
          if (this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) {
            node.params = params;
          } else {
            _superClass.prototype.setArrowFunctionParameters.call(this, node, params);
          }
        };
        _proto.checkParams = function checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged) {
          if (strictModeChanged === void 0) {
            strictModeChanged = true;
          }
          if (isArrowFunction && this.state.noArrowParamsConversionAt.indexOf(node.start) !== -1) {
            return;
          }
          for (var i = 0; i < node.params.length; i++) {
            if (this.isThisParam(node.params[i]) && i > 0) {
              this.raise(FlowErrors.ThisParamMustBeFirst, {
                at: node.params[i]
              });
            }
          }
          _superClass.prototype.checkParams.call(this, node, allowDuplicates, isArrowFunction, strictModeChanged);
        };
        _proto.parseParenAndDistinguishExpression = function parseParenAndDistinguishExpression(canBeArrow) {
          return _superClass.prototype.parseParenAndDistinguishExpression.call(this, canBeArrow && this.state.noArrowAt.indexOf(this.state.start) === -1);
        };
        _proto.parseSubscripts = function parseSubscripts(base, startLoc, noCalls) {
          var _this9 = this;
          if (base.type === "Identifier" && base.name === "async" && this.state.noArrowAt.indexOf(startLoc.index) !== -1) {
            this.next();
            var node = this.startNodeAt(startLoc);
            node.callee = base;
            node.arguments = _superClass.prototype.parseCallExpressionArguments.call(this, 11, false);
            base = this.finishNode(node, "CallExpression");
          } else if (base.type === "Identifier" && base.name === "async" && this.match(47)) {
            var state = this.state.clone();
            var arrow = this.tryParse(function (abort) {
              return _this9.parseAsyncArrowWithTypeParameters(startLoc) || abort();
            }, state);
            if (!arrow.error && !arrow.aborted) return arrow.node;
            var result = this.tryParse(function () {
              return _superClass.prototype.parseSubscripts.call(_this9, base, startLoc, noCalls);
            }, state);
            if (result.node && !result.error) return result.node;
            if (arrow.node) {
              this.state = arrow.failState;
              return arrow.node;
            }
            if (result.node) {
              this.state = result.failState;
              return result.node;
            }
            throw arrow.error || result.error;
          }
          return _superClass.prototype.parseSubscripts.call(this, base, startLoc, noCalls);
        };
        _proto.parseSubscript = function parseSubscript(base, startLoc, noCalls, subscriptState) {
          var _this10 = this;
          if (this.match(18) && this.isLookaheadToken_lt()) {
            subscriptState.optionalChainMember = true;
            if (noCalls) {
              subscriptState.stop = true;
              return base;
            }
            this.next();
            var node = this.startNodeAt(startLoc);
            node.callee = base;
            node.typeArguments = this.flowParseTypeParameterInstantiation();
            this.expect(10);
            node.arguments = this.parseCallExpressionArguments(11, false);
            node.optional = true;
            return this.finishCallExpression(node, true);
          } else if (!noCalls && this.shouldParseTypes() && this.match(47)) {
            var _node4 = this.startNodeAt(startLoc);
            _node4.callee = base;
            var result = this.tryParse(function () {
              _node4.typeArguments = _this10.flowParseTypeParameterInstantiationCallOrNew();
              _this10.expect(10);
              _node4.arguments = _superClass.prototype.parseCallExpressionArguments.call(_this10, 11, false);
              if (subscriptState.optionalChainMember) {
                _node4.optional = false;
              }
              return _this10.finishCallExpression(_node4, subscriptState.optionalChainMember);
            });
            if (result.node) {
              if (result.error) this.state = result.failState;
              return result.node;
            }
          }
          return _superClass.prototype.parseSubscript.call(this, base, startLoc, noCalls, subscriptState);
        };
        _proto.parseNewCallee = function parseNewCallee(node) {
          var _this11 = this;
          _superClass.prototype.parseNewCallee.call(this, node);
          var targs = null;
          if (this.shouldParseTypes() && this.match(47)) {
            targs = this.tryParse(function () {
              return _this11.flowParseTypeParameterInstantiationCallOrNew();
            }).node;
          }
          node.typeArguments = targs;
        };
        _proto.parseAsyncArrowWithTypeParameters = function parseAsyncArrowWithTypeParameters(startLoc) {
          var node = this.startNodeAt(startLoc);
          this.parseFunctionParams(node, false);
          if (!this.parseArrow(node)) return;
          return _superClass.prototype.parseArrowExpression.call(this, node, undefined, true);
        };
        _proto.readToken_mult_modulo = function readToken_mult_modulo(code) {
          var next = this.input.charCodeAt(this.state.pos + 1);
          if (code === 42 && next === 47 && this.state.hasFlowComment) {
            this.state.hasFlowComment = false;
            this.state.pos += 2;
            this.nextToken();
            return;
          }
          _superClass.prototype.readToken_mult_modulo.call(this, code);
        };
        _proto.readToken_pipe_amp = function readToken_pipe_amp(code) {
          var next = this.input.charCodeAt(this.state.pos + 1);
          if (code === 124 && next === 125) {
            this.finishOp(9, 2);
            return;
          }
          _superClass.prototype.readToken_pipe_amp.call(this, code);
        };
        _proto.parseTopLevel = function parseTopLevel(file, program) {
          var fileNode = _superClass.prototype.parseTopLevel.call(this, file, program);
          if (this.state.hasFlowComment) {
            this.raise(FlowErrors.UnterminatedFlowComment, {
              at: this.state.curPosition()
            });
          }
          return fileNode;
        };
        _proto.skipBlockComment = function skipBlockComment() {
          if (this.hasPlugin("flowComments") && this.skipFlowComment()) {
            if (this.state.hasFlowComment) {
              throw this.raise(FlowErrors.NestedFlowComment, {
                at: this.state.startLoc
              });
            }
            this.hasFlowCommentCompletion();
            var commentSkip = this.skipFlowComment();
            if (commentSkip) {
              this.state.pos += commentSkip;
              this.state.hasFlowComment = true;
            }
            return;
          }
          return _superClass.prototype.skipBlockComment.call(this, this.state.hasFlowComment ? "*-/" : "*/");
        };
        _proto.skipFlowComment = function skipFlowComment() {
          var pos = this.state.pos;
          var shiftToFirstNonWhiteSpace = 2;
          while ([32, 9].includes(this.input.charCodeAt(pos + shiftToFirstNonWhiteSpace))) {
            shiftToFirstNonWhiteSpace++;
          }
          var ch2 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos);
          var ch3 = this.input.charCodeAt(shiftToFirstNonWhiteSpace + pos + 1);
          if (ch2 === 58 && ch3 === 58) {
            return shiftToFirstNonWhiteSpace + 2;
          }
          if (this.input.slice(shiftToFirstNonWhiteSpace + pos, shiftToFirstNonWhiteSpace + pos + 12) === "flow-include") {
            return shiftToFirstNonWhiteSpace + 12;
          }
          if (ch2 === 58 && ch3 !== 58) {
            return shiftToFirstNonWhiteSpace;
          }
          return false;
        };
        _proto.hasFlowCommentCompletion = function hasFlowCommentCompletion() {
          var end = this.input.indexOf("*/", this.state.pos);
          if (end === -1) {
            throw this.raise(Errors.UnterminatedComment, {
              at: this.state.curPosition()
            });
          }
        };
        _proto.flowEnumErrorBooleanMemberNotInitialized = function flowEnumErrorBooleanMemberNotInitialized(loc, _ref16) {
          var enumName = _ref16.enumName,
            memberName = _ref16.memberName;
          this.raise(FlowErrors.EnumBooleanMemberNotInitialized, {
            at: loc,
            memberName: memberName,
            enumName: enumName
          });
        };
        _proto.flowEnumErrorInvalidMemberInitializer = function flowEnumErrorInvalidMemberInitializer(loc, enumContext) {
          return this.raise(!enumContext.explicitType ? FlowErrors.EnumInvalidMemberInitializerUnknownType : enumContext.explicitType === "symbol" ? FlowErrors.EnumInvalidMemberInitializerSymbolType : FlowErrors.EnumInvalidMemberInitializerPrimaryType, Object.assign({
            at: loc
          }, enumContext));
        };
        _proto.flowEnumErrorNumberMemberNotInitialized = function flowEnumErrorNumberMemberNotInitialized(loc, _ref17) {
          var enumName = _ref17.enumName,
            memberName = _ref17.memberName;
          this.raise(FlowErrors.EnumNumberMemberNotInitialized, {
            at: loc,
            enumName: enumName,
            memberName: memberName
          });
        };
        _proto.flowEnumErrorStringMemberInconsistentlyInitailized = function flowEnumErrorStringMemberInconsistentlyInitailized(node, _ref18) {
          var enumName = _ref18.enumName;
          this.raise(FlowErrors.EnumStringMemberInconsistentlyInitailized, {
            at: node,
            enumName: enumName
          });
        };
        _proto.flowEnumMemberInit = function flowEnumMemberInit() {
          var _this12 = this;
          var startLoc = this.state.startLoc;
          var endOfInit = function endOfInit() {
            return _this12.match(12) || _this12.match(8);
          };
          switch (this.state.type) {
            case 132:
              {
                var literal = this.parseNumericLiteral(this.state.value);
                if (endOfInit()) {
                  return {
                    type: "number",
                    loc: literal.loc.start,
                    value: literal
                  };
                }
                return {
                  type: "invalid",
                  loc: startLoc
                };
              }
            case 131:
              {
                var _literal = this.parseStringLiteral(this.state.value);
                if (endOfInit()) {
                  return {
                    type: "string",
                    loc: _literal.loc.start,
                    value: _literal
                  };
                }
                return {
                  type: "invalid",
                  loc: startLoc
                };
              }
            case 85:
            case 86:
              {
                var _literal2 = this.parseBooleanLiteral(this.match(85));
                if (endOfInit()) {
                  return {
                    type: "boolean",
                    loc: _literal2.loc.start,
                    value: _literal2
                  };
                }
                return {
                  type: "invalid",
                  loc: startLoc
                };
              }
            default:
              return {
                type: "invalid",
                loc: startLoc
              };
          }
        };
        _proto.flowEnumMemberRaw = function flowEnumMemberRaw() {
          var loc = this.state.startLoc;
          var id = this.parseIdentifier(true);
          var init = this.eat(29) ? this.flowEnumMemberInit() : {
            type: "none",
            loc: loc
          };
          return {
            id: id,
            init: init
          };
        };
        _proto.flowEnumCheckExplicitTypeMismatch = function flowEnumCheckExplicitTypeMismatch(loc, context, expectedType) {
          var explicitType = context.explicitType;
          if (explicitType === null) {
            return;
          }
          if (explicitType !== expectedType) {
            this.flowEnumErrorInvalidMemberInitializer(loc, context);
          }
        };
        _proto.flowEnumMembers = function flowEnumMembers(_ref19) {
          var enumName = _ref19.enumName,
            explicitType = _ref19.explicitType;
          var seenNames = new Set();
          var members = {
            booleanMembers: [],
            numberMembers: [],
            stringMembers: [],
            defaultedMembers: []
          };
          var hasUnknownMembers = false;
          while (!this.match(8)) {
            if (this.eat(21)) {
              hasUnknownMembers = true;
              break;
            }
            var memberNode = this.startNode();
            var _this$flowEnumMemberR = this.flowEnumMemberRaw(),
              id = _this$flowEnumMemberR.id,
              init = _this$flowEnumMemberR.init;
            var memberName = id.name;
            if (memberName === "") {
              continue;
            }
            if (/^[a-z]/.test(memberName)) {
              this.raise(FlowErrors.EnumInvalidMemberName, {
                at: id,
                memberName: memberName,
                suggestion: memberName[0].toUpperCase() + memberName.slice(1),
                enumName: enumName
              });
            }
            if (seenNames.has(memberName)) {
              this.raise(FlowErrors.EnumDuplicateMemberName, {
                at: id,
                memberName: memberName,
                enumName: enumName
              });
            }
            seenNames.add(memberName);
            var context = {
              enumName: enumName,
              explicitType: explicitType,
              memberName: memberName
            };
            memberNode.id = id;
            switch (init.type) {
              case "boolean":
                {
                  this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "boolean");
                  memberNode.init = init.value;
                  members.booleanMembers.push(this.finishNode(memberNode, "EnumBooleanMember"));
                  break;
                }
              case "number":
                {
                  this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "number");
                  memberNode.init = init.value;
                  members.numberMembers.push(this.finishNode(memberNode, "EnumNumberMember"));
                  break;
                }
              case "string":
                {
                  this.flowEnumCheckExplicitTypeMismatch(init.loc, context, "string");
                  memberNode.init = init.value;
                  members.stringMembers.push(this.finishNode(memberNode, "EnumStringMember"));
                  break;
                }
              case "invalid":
                {
                  throw this.flowEnumErrorInvalidMemberInitializer(init.loc, context);
                }
              case "none":
                {
                  switch (explicitType) {
                    case "boolean":
                      this.flowEnumErrorBooleanMemberNotInitialized(init.loc, context);
                      break;
                    case "number":
                      this.flowEnumErrorNumberMemberNotInitialized(init.loc, context);
                      break;
                    default:
                      members.defaultedMembers.push(this.finishNode(memberNode, "EnumDefaultedMember"));
                  }
                }
            }
            if (!this.match(8)) {
              this.expect(12);
            }
          }
          return {
            members: members,
            hasUnknownMembers: hasUnknownMembers
          };
        };
        _proto.flowEnumStringMembers = function flowEnumStringMembers(initializedMembers, defaultedMembers, _ref20) {
          var enumName = _ref20.enumName;
          if (initializedMembers.length === 0) {
            return defaultedMembers;
          } else if (defaultedMembers.length === 0) {
            return initializedMembers;
          } else if (defaultedMembers.length > initializedMembers.length) {
            for (var _i2 = 0; _i2 < initializedMembers.length; _i2++) {
              var member = initializedMembers[_i2];
              this.flowEnumErrorStringMemberInconsistentlyInitailized(member, {
                enumName: enumName
              });
            }
            return defaultedMembers;
          } else {
            for (var _i4 = 0; _i4 < defaultedMembers.length; _i4++) {
              var _member = defaultedMembers[_i4];
              this.flowEnumErrorStringMemberInconsistentlyInitailized(_member, {
                enumName: enumName
              });
            }
            return initializedMembers;
          }
        };
        _proto.flowEnumParseExplicitType = function flowEnumParseExplicitType(_ref21) {
          var enumName = _ref21.enumName;
          if (!this.eatContextual(101)) return null;
          if (!tokenIsIdentifier(this.state.type)) {
            throw this.raise(FlowErrors.EnumInvalidExplicitTypeUnknownSupplied, {
              at: this.state.startLoc,
              enumName: enumName
            });
          }
          var value = this.state.value;
          this.next();
          if (value !== "boolean" && value !== "number" && value !== "string" && value !== "symbol") {
            this.raise(FlowErrors.EnumInvalidExplicitType, {
              at: this.state.startLoc,
              enumName: enumName,
              invalidEnumType: value
            });
          }
          return value;
        };
        _proto.flowEnumBody = function flowEnumBody(node, id) {
          var _this13 = this;
          var enumName = id.name;
          var nameLoc = id.loc.start;
          var explicitType = this.flowEnumParseExplicitType({
            enumName: enumName
          });
          this.expect(5);
          var _this$flowEnumMembers = this.flowEnumMembers({
              enumName: enumName,
              explicitType: explicitType
            }),
            members = _this$flowEnumMembers.members,
            hasUnknownMembers = _this$flowEnumMembers.hasUnknownMembers;
          node.hasUnknownMembers = hasUnknownMembers;
          switch (explicitType) {
            case "boolean":
              node.explicitType = true;
              node.members = members.booleanMembers;
              this.expect(8);
              return this.finishNode(node, "EnumBooleanBody");
            case "number":
              node.explicitType = true;
              node.members = members.numberMembers;
              this.expect(8);
              return this.finishNode(node, "EnumNumberBody");
            case "string":
              node.explicitType = true;
              node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, {
                enumName: enumName
              });
              this.expect(8);
              return this.finishNode(node, "EnumStringBody");
            case "symbol":
              node.members = members.defaultedMembers;
              this.expect(8);
              return this.finishNode(node, "EnumSymbolBody");
            default:
              {
                var empty = function empty() {
                  node.members = [];
                  _this13.expect(8);
                  return _this13.finishNode(node, "EnumStringBody");
                };
                node.explicitType = false;
                var boolsLen = members.booleanMembers.length;
                var numsLen = members.numberMembers.length;
                var strsLen = members.stringMembers.length;
                var defaultedLen = members.defaultedMembers.length;
                if (!boolsLen && !numsLen && !strsLen && !defaultedLen) {
                  return empty();
                } else if (!boolsLen && !numsLen) {
                  node.members = this.flowEnumStringMembers(members.stringMembers, members.defaultedMembers, {
                    enumName: enumName
                  });
                  this.expect(8);
                  return this.finishNode(node, "EnumStringBody");
                } else if (!numsLen && !strsLen && boolsLen >= defaultedLen) {
                  for (var _i6 = 0, _members$defaultedMem2 = members.defaultedMembers; _i6 < _members$defaultedMem2.length; _i6++) {
                    var member = _members$defaultedMem2[_i6];
                    this.flowEnumErrorBooleanMemberNotInitialized(member.loc.start, {
                      enumName: enumName,
                      memberName: member.id.name
                    });
                  }
                  node.members = members.booleanMembers;
                  this.expect(8);
                  return this.finishNode(node, "EnumBooleanBody");
                } else if (!boolsLen && !strsLen && numsLen >= defaultedLen) {
                  for (var _i8 = 0, _members$defaultedMem4 = members.defaultedMembers; _i8 < _members$defaultedMem4.length; _i8++) {
                    var _member2 = _members$defaultedMem4[_i8];
                    this.flowEnumErrorNumberMemberNotInitialized(_member2.loc.start, {
                      enumName: enumName,
                      memberName: _member2.id.name
                    });
                  }
                  node.members = members.numberMembers;
                  this.expect(8);
                  return this.finishNode(node, "EnumNumberBody");
                } else {
                  this.raise(FlowErrors.EnumInconsistentMemberValues, {
                    at: nameLoc,
                    enumName: enumName
                  });
                  return empty();
                }
              }
          }
        };
        _proto.flowParseEnumDeclaration = function flowParseEnumDeclaration(node) {
          var id = this.parseIdentifier();
          node.id = id;
          node.body = this.flowEnumBody(this.startNode(), id);
          return this.finishNode(node, "EnumDeclaration");
        };
        _proto.isLookaheadToken_lt = function isLookaheadToken_lt() {
          var next = this.nextTokenStart();
          if (this.input.charCodeAt(next) === 60) {
            var afterNext = this.input.charCodeAt(next + 1);
            return afterNext !== 60 && afterNext !== 61;
          }
          return false;
        };
        _proto.maybeUnwrapTypeCastExpression = function maybeUnwrapTypeCastExpression(node) {
          return node.type === "TypeCastExpression" ? node.expression : node;
        };
        return _createClass(FlowParserMixin);
      }(superClass);
    });
  
    var entities = {
      __proto__: null,
      quot: "\"",
      amp: "&",
      apos: "'",
      lt: "<",
      gt: ">",
      nbsp: "\xA0",
      iexcl: "\xA1",
      cent: "\xA2",
      pound: "\xA3",
      curren: "\xA4",
      yen: "\xA5",
      brvbar: "\xA6",
      sect: "\xA7",
      uml: "\xA8",
      copy: "\xA9",
      ordf: "\xAA",
      laquo: "\xAB",
      not: "\xAC",
      shy: "\xAD",
      reg: "\xAE",
      macr: "\xAF",
      deg: "\xB0",
      plusmn: "\xB1",
      sup2: "\xB2",
      sup3: "\xB3",
      acute: "\xB4",
      micro: "\xB5",
      para: "\xB6",
      middot: "\xB7",
      cedil: "\xB8",
      sup1: "\xB9",
      ordm: "\xBA",
      raquo: "\xBB",
      frac14: "\xBC",
      frac12: "\xBD",
      frac34: "\xBE",
      iquest: "\xBF",
      Agrave: "\xC0",
      Aacute: "\xC1",
      Acirc: "\xC2",
      Atilde: "\xC3",
      Auml: "\xC4",
      Aring: "\xC5",
      AElig: "\xC6",
      Ccedil: "\xC7",
      Egrave: "\xC8",
      Eacute: "\xC9",
      Ecirc: "\xCA",
      Euml: "\xCB",
      Igrave: "\xCC",
      Iacute: "\xCD",
      Icirc: "\xCE",
      Iuml: "\xCF",
      ETH: "\xD0",
      Ntilde: "\xD1",
      Ograve: "\xD2",
      Oacute: "\xD3",
      Ocirc: "\xD4",
      Otilde: "\xD5",
      Ouml: "\xD6",
      times: "\xD7",
      Oslash: "\xD8",
      Ugrave: "\xD9",
      Uacute: "\xDA",
      Ucirc: "\xDB",
      Uuml: "\xDC",
      Yacute: "\xDD",
      THORN: "\xDE",
      szlig: "\xDF",
      agrave: "\xE0",
      aacute: "\xE1",
      acirc: "\xE2",
      atilde: "\xE3",
      auml: "\xE4",
      aring: "\xE5",
      aelig: "\xE6",
      ccedil: "\xE7",
      egrave: "\xE8",
      eacute: "\xE9",
      ecirc: "\xEA",
      euml: "\xEB",
      igrave: "\xEC",
      iacute: "\xED",
      icirc: "\xEE",
      iuml: "\xEF",
      eth: "\xF0",
      ntilde: "\xF1",
      ograve: "\xF2",
      oacute: "\xF3",
      ocirc: "\xF4",
      otilde: "\xF5",
      ouml: "\xF6",
      divide: "\xF7",
      oslash: "\xF8",
      ugrave: "\xF9",
      uacute: "\xFA",
      ucirc: "\xFB",
      uuml: "\xFC",
      yacute: "\xFD",
      thorn: "\xFE",
      yuml: "\xFF",
      OElig: "\u0152",
      oelig: "\u0153",
      Scaron: "\u0160",
      scaron: "\u0161",
      Yuml: "\u0178",
      fnof: "\u0192",
      circ: "\u02C6",
      tilde: "\u02DC",
      Alpha: "\u0391",
      Beta: "\u0392",
      Gamma: "\u0393",
      Delta: "\u0394",
      Epsilon: "\u0395",
      Zeta: "\u0396",
      Eta: "\u0397",
      Theta: "\u0398",
      Iota: "\u0399",
      Kappa: "\u039A",
      Lambda: "\u039B",
      Mu: "\u039C",
      Nu: "\u039D",
      Xi: "\u039E",
      Omicron: "\u039F",
      Pi: "\u03A0",
      Rho: "\u03A1",
      Sigma: "\u03A3",
      Tau: "\u03A4",
      Upsilon: "\u03A5",
      Phi: "\u03A6",
      Chi: "\u03A7",
      Psi: "\u03A8",
      Omega: "\u03A9",
      alpha: "\u03B1",
      beta: "\u03B2",
      gamma: "\u03B3",
      delta: "\u03B4",
      epsilon: "\u03B5",
      zeta: "\u03B6",
      eta: "\u03B7",
      theta: "\u03B8",
      iota: "\u03B9",
      kappa: "\u03BA",
      lambda: "\u03BB",
      mu: "\u03BC",
      nu: "\u03BD",
      xi: "\u03BE",
      omicron: "\u03BF",
      pi: "\u03C0",
      rho: "\u03C1",
      sigmaf: "\u03C2",
      sigma: "\u03C3",
      tau: "\u03C4",
      upsilon: "\u03C5",
      phi: "\u03C6",
      chi: "\u03C7",
      psi: "\u03C8",
      omega: "\u03C9",
      thetasym: "\u03D1",
      upsih: "\u03D2",
      piv: "\u03D6",
      ensp: "\u2002",
      emsp: "\u2003",
      thinsp: "\u2009",
      zwnj: "\u200C",
      zwj: "\u200D",
      lrm: "\u200E",
      rlm: "\u200F",
      ndash: "\u2013",
      mdash: "\u2014",
      lsquo: "\u2018",
      rsquo: "\u2019",
      sbquo: "\u201A",
      ldquo: "\u201C",
      rdquo: "\u201D",
      bdquo: "\u201E",
      dagger: "\u2020",
      Dagger: "\u2021",
      bull: "\u2022",
      hellip: "\u2026",
      permil: "\u2030",
      prime: "\u2032",
      Prime: "\u2033",
      lsaquo: "\u2039",
      rsaquo: "\u203A",
      oline: "\u203E",
      frasl: "\u2044",
      euro: "\u20AC",
      image: "\u2111",
      weierp: "\u2118",
      real: "\u211C",
      trade: "\u2122",
      alefsym: "\u2135",
      larr: "\u2190",
      uarr: "\u2191",
      rarr: "\u2192",
      darr: "\u2193",
      harr: "\u2194",
      crarr: "\u21B5",
      lArr: "\u21D0",
      uArr: "\u21D1",
      rArr: "\u21D2",
      dArr: "\u21D3",
      hArr: "\u21D4",
      forall: "\u2200",
      part: "\u2202",
      exist: "\u2203",
      empty: "\u2205",
      nabla: "\u2207",
      isin: "\u2208",
      notin: "\u2209",
      ni: "\u220B",
      prod: "\u220F",
      sum: "\u2211",
      minus: "\u2212",
      lowast: "\u2217",
      radic: "\u221A",
      prop: "\u221D",
      infin: "\u221E",
      ang: "\u2220",
      and: "\u2227",
      or: "\u2228",
      cap: "\u2229",
      cup: "\u222A",
      "int": "\u222B",
      there4: "\u2234",
      sim: "\u223C",
      cong: "\u2245",
      asymp: "\u2248",
      ne: "\u2260",
      equiv: "\u2261",
      le: "\u2264",
      ge: "\u2265",
      sub: "\u2282",
      sup: "\u2283",
      nsub: "\u2284",
      sube: "\u2286",
      supe: "\u2287",
      oplus: "\u2295",
      otimes: "\u2297",
      perp: "\u22A5",
      sdot: "\u22C5",
      lceil: "\u2308",
      rceil: "\u2309",
      lfloor: "\u230A",
      rfloor: "\u230B",
      lang: "\u2329",
      rang: "\u232A",
      loz: "\u25CA",
      spades: "\u2660",
      clubs: "\u2663",
      hearts: "\u2665",
      diams: "\u2666"
    };
  
    var _templateObject$y;
    var JsxErrors = ParseErrorEnum(_templateObject$y || (_templateObject$y = _taggedTemplateLiteralLoose(["jsx"])))({
      AttributeIsEmpty: "JSX attributes must only be assigned a non-empty expression.",
      MissingClosingTagElement: function MissingClosingTagElement(_ref) {
        var openingTagName = _ref.openingTagName;
        return "Expected corresponding JSX closing tag for <" + openingTagName + ">.";
      },
      MissingClosingTagFragment: "Expected corresponding JSX closing tag for <>.",
      UnexpectedSequenceExpression: "Sequence expressions cannot be directly nested inside JSX. Did you mean to wrap it in parentheses (...)?",
      UnexpectedToken: function UnexpectedToken(_ref2) {
        var unexpected = _ref2.unexpected,
          HTMLEntity = _ref2.HTMLEntity;
        return "Unexpected token `" + unexpected + "`. Did you mean `" + HTMLEntity + "` or `{'" + unexpected + "'}`?";
      },
      UnsupportedJsxValue: "JSX value should be either an expression or a quoted JSX text.",
      UnterminatedJsxContent: "Unterminated JSX contents.",
      UnwrappedAdjacentJSXElements: "Adjacent JSX elements must be wrapped in an enclosing tag. Did you want a JSX fragment <>...</>?"
    });
    function isFragment(object) {
      return object ? object.type === "JSXOpeningFragment" || object.type === "JSXClosingFragment" : false;
    }
    function getQualifiedJSXName(object) {
      if (object.type === "JSXIdentifier") {
        return object.name;
      }
      if (object.type === "JSXNamespacedName") {
        return object.namespace.name + ":" + object.name.name;
      }
      if (object.type === "JSXMemberExpression") {
        return getQualifiedJSXName(object.object) + "." + getQualifiedJSXName(object.property);
      }
      throw new Error("Node had unexpected type: " + object.type);
    }
    var jsx = (function (superClass) {
      return function (_superClass) {
        _inherits(JSXParserMixin, _superClass);
        function JSXParserMixin() {
          return _superClass.apply(this, arguments) || this;
        }
        var _proto = JSXParserMixin.prototype;
        _proto.jsxReadToken = function jsxReadToken() {
          var out = "";
          var chunkStart = this.state.pos;
          for (;;) {
            if (this.state.pos >= this.length) {
              throw this.raise(JsxErrors.UnterminatedJsxContent, {
                at: this.state.startLoc
              });
            }
            var ch = this.input.charCodeAt(this.state.pos);
            switch (ch) {
              case 60:
              case 123:
                if (this.state.pos === this.state.start) {
                  if (ch === 60 && this.state.canStartJSXElement) {
                    ++this.state.pos;
                    this.finishToken(140);
                  } else {
                    _superClass.prototype.getTokenFromCode.call(this, ch);
                  }
                  return;
                }
                out += this.input.slice(chunkStart, this.state.pos);
                this.finishToken(139, out);
                return;
              case 38:
                out += this.input.slice(chunkStart, this.state.pos);
                out += this.jsxReadEntity();
                chunkStart = this.state.pos;
                break;
              case 62:
              case 125:
              default:
                if (isNewLine(ch)) {
                  out += this.input.slice(chunkStart, this.state.pos);
                  out += this.jsxReadNewLine(true);
                  chunkStart = this.state.pos;
                } else {
                  ++this.state.pos;
                }
            }
          }
        };
        _proto.jsxReadNewLine = function jsxReadNewLine(normalizeCRLF) {
          var ch = this.input.charCodeAt(this.state.pos);
          var out;
          ++this.state.pos;
          if (ch === 13 && this.input.charCodeAt(this.state.pos) === 10) {
            ++this.state.pos;
            out = normalizeCRLF ? "\n" : "\r\n";
          } else {
            out = String.fromCharCode(ch);
          }
          ++this.state.curLine;
          this.state.lineStart = this.state.pos;
          return out;
        };
        _proto.jsxReadString = function jsxReadString(quote) {
          var out = "";
          var chunkStart = ++this.state.pos;
          for (;;) {
            if (this.state.pos >= this.length) {
              throw this.raise(Errors.UnterminatedString, {
                at: this.state.startLoc
              });
            }
            var ch = this.input.charCodeAt(this.state.pos);
            if (ch === quote) break;
            if (ch === 38) {
              out += this.input.slice(chunkStart, this.state.pos);
              out += this.jsxReadEntity();
              chunkStart = this.state.pos;
            } else if (isNewLine(ch)) {
              out += this.input.slice(chunkStart, this.state.pos);
              out += this.jsxReadNewLine(false);
              chunkStart = this.state.pos;
            } else {
              ++this.state.pos;
            }
          }
          out += this.input.slice(chunkStart, this.state.pos++);
          this.finishToken(131, out);
        };
        _proto.jsxReadEntity = function jsxReadEntity() {
          var startPos = ++this.state.pos;
          if (this.codePointAtPos(this.state.pos) === 35) {
            ++this.state.pos;
            var radix = 10;
            if (this.codePointAtPos(this.state.pos) === 120) {
              radix = 16;
              ++this.state.pos;
            }
            var codePoint = this.readInt(radix, undefined, false, "bail");
            if (codePoint !== null && this.codePointAtPos(this.state.pos) === 59) {
              ++this.state.pos;
              return String.fromCodePoint(codePoint);
            }
          } else {
            var count = 0;
            var semi = false;
            while (count++ < 10 && this.state.pos < this.length && !(semi = this.codePointAtPos(this.state.pos) == 59)) {
              ++this.state.pos;
            }
            if (semi) {
              var desc = this.input.slice(startPos, this.state.pos);
              var entity = entities[desc];
              ++this.state.pos;
              if (entity) {
                return entity;
              }
            }
          }
          this.state.pos = startPos;
          return "&";
        };
        _proto.jsxReadWord = function jsxReadWord() {
          var ch;
          var start = this.state.pos;
          do {
            ch = this.input.charCodeAt(++this.state.pos);
          } while (isIdentifierChar(ch) || ch === 45);
          this.finishToken(138, this.input.slice(start, this.state.pos));
        };
        _proto.jsxParseIdentifier = function jsxParseIdentifier() {
          var node = this.startNode();
          if (this.match(138)) {
            node.name = this.state.value;
          } else if (tokenIsKeyword(this.state.type)) {
            node.name = tokenLabelName(this.state.type);
          } else {
            this.unexpected();
          }
          this.next();
          return this.finishNode(node, "JSXIdentifier");
        };
        _proto.jsxParseNamespacedName = function jsxParseNamespacedName() {
          var startLoc = this.state.startLoc;
          var name = this.jsxParseIdentifier();
          if (!this.eat(14)) return name;
          var node = this.startNodeAt(startLoc);
          node.namespace = name;
          node.name = this.jsxParseIdentifier();
          return this.finishNode(node, "JSXNamespacedName");
        };
        _proto.jsxParseElementName = function jsxParseElementName() {
          var startLoc = this.state.startLoc;
          var node = this.jsxParseNamespacedName();
          if (node.type === "JSXNamespacedName") {
            return node;
          }
          while (this.eat(16)) {
            var newNode = this.startNodeAt(startLoc);
            newNode.object = node;
            newNode.property = this.jsxParseIdentifier();
            node = this.finishNode(newNode, "JSXMemberExpression");
          }
          return node;
        };
        _proto.jsxParseAttributeValue = function jsxParseAttributeValue() {
          var node;
          switch (this.state.type) {
            case 5:
              node = this.startNode();
              this.setContext(types.brace);
              this.next();
              node = this.jsxParseExpressionContainer(node, types.j_oTag);
              if (node.expression.type === "JSXEmptyExpression") {
                this.raise(JsxErrors.AttributeIsEmpty, {
                  at: node
                });
              }
              return node;
            case 140:
            case 131:
              return this.parseExprAtom();
            default:
              throw this.raise(JsxErrors.UnsupportedJsxValue, {
                at: this.state.startLoc
              });
          }
        };
        _proto.jsxParseEmptyExpression = function jsxParseEmptyExpression() {
          var node = this.startNodeAt(this.state.lastTokEndLoc);
          return this.finishNodeAt(node, "JSXEmptyExpression", this.state.startLoc);
        };
        _proto.jsxParseSpreadChild = function jsxParseSpreadChild(node) {
          this.next();
          node.expression = this.parseExpression();
          this.setContext(types.j_expr);
          this.state.canStartJSXElement = true;
          this.expect(8);
          return this.finishNode(node, "JSXSpreadChild");
        };
        _proto.jsxParseExpressionContainer = function jsxParseExpressionContainer(node, previousContext) {
          if (this.match(8)) {
            node.expression = this.jsxParseEmptyExpression();
          } else {
            var expression = this.parseExpression();
            node.expression = expression;
          }
          this.setContext(previousContext);
          this.state.canStartJSXElement = true;
          this.expect(8);
          return this.finishNode(node, "JSXExpressionContainer");
        };
        _proto.jsxParseAttribute = function jsxParseAttribute() {
          var node = this.startNode();
          if (this.match(5)) {
            this.setContext(types.brace);
            this.next();
            this.expect(21);
            node.argument = this.parseMaybeAssignAllowIn();
            this.setContext(types.j_oTag);
            this.state.canStartJSXElement = true;
            this.expect(8);
            return this.finishNode(node, "JSXSpreadAttribute");
          }
          node.name = this.jsxParseNamespacedName();
          node.value = this.eat(29) ? this.jsxParseAttributeValue() : null;
          return this.finishNode(node, "JSXAttribute");
        };
        _proto.jsxParseOpeningElementAt = function jsxParseOpeningElementAt(startLoc) {
          var node = this.startNodeAt(startLoc);
          if (this.eat(141)) {
            return this.finishNode(node, "JSXOpeningFragment");
          }
          node.name = this.jsxParseElementName();
          return this.jsxParseOpeningElementAfterName(node);
        };
        _proto.jsxParseOpeningElementAfterName = function jsxParseOpeningElementAfterName(node) {
          var attributes = [];
          while (!this.match(56) && !this.match(141)) {
            attributes.push(this.jsxParseAttribute());
          }
          node.attributes = attributes;
          node.selfClosing = this.eat(56);
          this.expect(141);
          return this.finishNode(node, "JSXOpeningElement");
        };
        _proto.jsxParseClosingElementAt = function jsxParseClosingElementAt(startLoc) {
          var node = this.startNodeAt(startLoc);
          if (this.eat(141)) {
            return this.finishNode(node, "JSXClosingFragment");
          }
          node.name = this.jsxParseElementName();
          this.expect(141);
          return this.finishNode(node, "JSXClosingElement");
        };
        _proto.jsxParseElementAt = function jsxParseElementAt(startLoc) {
          var node = this.startNodeAt(startLoc);
          var children = [];
          var openingElement = this.jsxParseOpeningElementAt(startLoc);
          var closingElement = null;
          if (!openingElement.selfClosing) {
            contents: for (;;) {
              switch (this.state.type) {
                case 140:
                  startLoc = this.state.startLoc;
                  this.next();
                  if (this.eat(56)) {
                    closingElement = this.jsxParseClosingElementAt(startLoc);
                    break contents;
                  }
                  children.push(this.jsxParseElementAt(startLoc));
                  break;
                case 139:
                  children.push(this.parseExprAtom());
                  break;
                case 5:
                  {
                    var _node = this.startNode();
                    this.setContext(types.brace);
                    this.next();
                    if (this.match(21)) {
                      children.push(this.jsxParseSpreadChild(_node));
                    } else {
                      children.push(this.jsxParseExpressionContainer(_node, types.j_expr));
                    }
                    break;
                  }
                default:
                  this.unexpected();
              }
            }
            if (isFragment(openingElement) && !isFragment(closingElement) && closingElement !== null) {
              this.raise(JsxErrors.MissingClosingTagFragment, {
                at: closingElement
              });
            } else if (!isFragment(openingElement) && isFragment(closingElement)) {
              this.raise(JsxErrors.MissingClosingTagElement, {
                at: closingElement,
                openingTagName: getQualifiedJSXName(openingElement.name)
              });
            } else if (!isFragment(openingElement) && !isFragment(closingElement)) {
              if (getQualifiedJSXName(closingElement.name) !== getQualifiedJSXName(openingElement.name)) {
                this.raise(JsxErrors.MissingClosingTagElement, {
                  at: closingElement,
                  openingTagName: getQualifiedJSXName(openingElement.name)
                });
              }
            }
          }
          if (isFragment(openingElement)) {
            node.openingFragment = openingElement;
            node.closingFragment = closingElement;
          } else {
            node.openingElement = openingElement;
            node.closingElement = closingElement;
          }
          node.children = children;
          if (this.match(47)) {
            throw this.raise(JsxErrors.UnwrappedAdjacentJSXElements, {
              at: this.state.startLoc
            });
          }
          return isFragment(openingElement) ? this.finishNode(node, "JSXFragment") : this.finishNode(node, "JSXElement");
        };
        _proto.jsxParseElement = function jsxParseElement() {
          var startLoc = this.state.startLoc;
          this.next();
          return this.jsxParseElementAt(startLoc);
        };
        _proto.setContext = function setContext(newContext) {
          var context = this.state.context;
          context[context.length - 1] = newContext;
        };
        _proto.parseExprAtom = function parseExprAtom(refExpressionErrors) {
          if (this.match(139)) {
            return this.parseLiteral(this.state.value, "JSXText");
          } else if (this.match(140)) {
            return this.jsxParseElement();
          } else if (this.match(47) && this.input.charCodeAt(this.state.pos) !== 33) {
            this.replaceToken(140);
            return this.jsxParseElement();
          } else {
            return _superClass.prototype.parseExprAtom.call(this, refExpressionErrors);
          }
        };
        _proto.skipSpace = function skipSpace() {
          var curContext = this.curContext();
          if (!curContext.preserveSpace) _superClass.prototype.skipSpace.call(this);
        };
        _proto.getTokenFromCode = function getTokenFromCode(code) {
          var context = this.curContext();
          if (context === types.j_expr) {
            this.jsxReadToken();
            return;
          }
          if (context === types.j_oTag || context === types.j_cTag) {
            if (isIdentifierStart(code)) {
              this.jsxReadWord();
              return;
            }
            if (code === 62) {
              ++this.state.pos;
              this.finishToken(141);
              return;
            }
            if ((code === 34 || code === 39) && context === types.j_oTag) {
              this.jsxReadString(code);
              return;
            }
          }
          if (code === 60 && this.state.canStartJSXElement && this.input.charCodeAt(this.state.pos + 1) !== 33) {
            ++this.state.pos;
            this.finishToken(140);
            return;
          }
          _superClass.prototype.getTokenFromCode.call(this, code);
        };
        _proto.updateContext = function updateContext(prevType) {
          var _this$state = this.state,
            context = _this$state.context,
            type = _this$state.type;
          if (type === 56 && prevType === 140) {
            context.splice(-2, 2, types.j_cTag);
            this.state.canStartJSXElement = false;
          } else if (type === 140) {
            context.push(types.j_oTag);
          } else if (type === 141) {
            var out = context[context.length - 1];
            if (out === types.j_oTag && prevType === 56 || out === types.j_cTag) {
              context.pop();
              this.state.canStartJSXElement = context[context.length - 1] === types.j_expr;
            } else {
              this.setContext(types.j_expr);
              this.state.canStartJSXElement = true;
            }
          } else {
            this.state.canStartJSXElement = tokenComesBeforeExpression(type);
          }
        };
        return _createClass(JSXParserMixin);
      }(superClass);
    });
  
    var TypeScriptScope = function (_Scope) {
      _inherits(TypeScriptScope, _Scope);
      function TypeScriptScope() {
        var _this;
        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
          args[_key] = arguments[_key];
        }
        _this = _Scope.call.apply(_Scope, [this].concat(args)) || this;
        _this.types = new Set();
        _this.enums = new Set();
        _this.constEnums = new Set();
        _this.classes = new Set();
        _this.exportOnlyBindings = new Set();
        return _this;
      }
      return _createClass(TypeScriptScope);
    }(Scope);
    var TypeScriptScopeHandler = function (_ScopeHandler) {
      _inherits(TypeScriptScopeHandler, _ScopeHandler);
      function TypeScriptScopeHandler() {
        var _this2;
        for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
          args[_key2] = arguments[_key2];
        }
        _this2 = _ScopeHandler.call.apply(_ScopeHandler, [this].concat(args)) || this;
        _this2.importsStack = [];
        return _this2;
      }
      var _proto = TypeScriptScopeHandler.prototype;
      _proto.createScope = function createScope(flags) {
        this.importsStack.push(new Set());
        return new TypeScriptScope(flags);
      };
      _proto.enter = function enter(flags) {
        if (flags == SCOPE_TS_MODULE) {
          this.importsStack.push(new Set());
        }
        _ScopeHandler.prototype.enter.call(this, flags);
      };
      _proto.exit = function exit() {
        var flags = _ScopeHandler.prototype.exit.call(this);
        if (flags == SCOPE_TS_MODULE) {
          this.importsStack.pop();
        }
        return flags;
      };
      _proto.hasImport = function hasImport(name, allowShadow) {
        var len = this.importsStack.length;
        if (this.importsStack[len - 1].has(name)) {
          return true;
        }
        if (!allowShadow && len > 1) {
          for (var i = 0; i < len - 1; i++) {
            if (this.importsStack[i].has(name)) return true;
          }
        }
        return false;
      };
      _proto.declareName = function declareName(name, bindingType, loc) {
        if (bindingType & BIND_FLAGS_TS_IMPORT) {
          if (this.hasImport(name, true)) {
            this.parser.raise(Errors.VarRedeclaration, {
              at: loc,
              identifierName: name
            });
          }
          this.importsStack[this.importsStack.length - 1].add(name);
          return;
        }
        var scope = this.currentScope();
        if (bindingType & BIND_FLAGS_TS_EXPORT_ONLY) {
          this.maybeExportDefined(scope, name);
          scope.exportOnlyBindings.add(name);
          return;
        }
        _ScopeHandler.prototype.declareName.call(this, name, bindingType, loc);
        if (bindingType & BIND_KIND_TYPE) {
          if (!(bindingType & BIND_KIND_VALUE)) {
            this.checkRedeclarationInScope(scope, name, bindingType, loc);
            this.maybeExportDefined(scope, name);
          }
          scope.types.add(name);
        }
        if (bindingType & BIND_FLAGS_TS_ENUM) scope.enums.add(name);
        if (bindingType & BIND_FLAGS_TS_CONST_ENUM) scope.constEnums.add(name);
        if (bindingType & BIND_FLAGS_CLASS) scope.classes.add(name);
      };
      _proto.isRedeclaredInScope = function isRedeclaredInScope(scope, name, bindingType) {
        if (scope.enums.has(name)) {
          if (bindingType & BIND_FLAGS_TS_ENUM) {
            var isConst = !!(bindingType & BIND_FLAGS_TS_CONST_ENUM);
            var wasConst = scope.constEnums.has(name);
            return isConst !== wasConst;
          }
          return true;
        }
        if (bindingType & BIND_FLAGS_CLASS && scope.classes.has(name)) {
          if (scope.lexical.has(name)) {
            return !!(bindingType & BIND_KIND_VALUE);
          } else {
            return false;
          }
        }
        if (bindingType & BIND_KIND_TYPE && scope.types.has(name)) {
          return true;
        }
        return _ScopeHandler.prototype.isRedeclaredInScope.call(this, scope, name, bindingType);
      };
      _proto.checkLocalExport = function checkLocalExport(id) {
        var name = id.name;
        if (this.hasImport(name)) return;
        var len = this.scopeStack.length;
        for (var i = len - 1; i >= 0; i--) {
          var scope = this.scopeStack[i];
          if (scope.types.has(name) || scope.exportOnlyBindings.has(name)) return;
        }
        _ScopeHandler.prototype.checkLocalExport.call(this, id);
      };
      return _createClass(TypeScriptScopeHandler);
    }(ScopeHandler);
  
    var getOwn$1 = function getOwn(object, key) {
      return Object.hasOwnProperty.call(object, key) && object[key];
    };
    var unwrapParenthesizedExpression = function unwrapParenthesizedExpression(node) {
      return node.type === "ParenthesizedExpression" ? unwrapParenthesizedExpression(node.expression) : node;
    };
    var ParseBindingListFlags = {
      ALLOW_EMPTY: 1,
      IS_FUNCTION_PARAMS: 2,
      IS_CONSTRUCTOR_PARAMS: 4
    };
    var LValParser = function (_NodeUtils) {
      _inherits(LValParser, _NodeUtils);
      function LValParser() {
        return _NodeUtils.apply(this, arguments) || this;
      }
      var _proto = LValParser.prototype;
      _proto.toAssignable = function toAssignable(node, isLHS) {
        var _node$extra, _node$extra3;
        if (isLHS === void 0) {
          isLHS = false;
        }
        var parenthesized = undefined;
        if (node.type === "ParenthesizedExpression" || (_node$extra = node.extra) != null && _node$extra.parenthesized) {
          parenthesized = unwrapParenthesizedExpression(node);
          if (isLHS) {
            if (parenthesized.type === "Identifier") {
              this.expressionScope.recordArrowParameterBindingError(Errors.InvalidParenthesizedAssignment, {
                at: node
              });
            } else if (parenthesized.type !== "MemberExpression") {
              this.raise(Errors.InvalidParenthesizedAssignment, {
                at: node
              });
            }
          } else {
            this.raise(Errors.InvalidParenthesizedAssignment, {
              at: node
            });
          }
        }
        switch (node.type) {
          case "Identifier":
          case "ObjectPattern":
          case "ArrayPattern":
          case "AssignmentPattern":
          case "RestElement":
            break;
          case "ObjectExpression":
            node.type = "ObjectPattern";
            for (var i = 0, length = node.properties.length, last = length - 1; i < length; i++) {
              var _node$extra2;
              var _prop = node.properties[i];
              var isLast = i === last;
              this.toAssignableObjectExpressionProp(_prop, isLast, isLHS);
              if (isLast && _prop.type === "RestElement" && (_node$extra2 = node.extra) != null && _node$extra2.trailingCommaLoc) {
                this.raise(Errors.RestTrailingComma, {
                  at: node.extra.trailingCommaLoc
                });
              }
            }
            break;
          case "ObjectProperty":
            {
              var key = node.key,
                value = node.value;
              if (this.isPrivateName(key)) {
                this.classScope.usePrivateName(this.getPrivateNameSV(key), key.loc.start);
              }
              this.toAssignable(value, isLHS);
              break;
            }
          case "SpreadElement":
            {
              throw new Error("Internal @babel/parser error (this is a bug, please report it)." + " SpreadElement should be converted by .toAssignable's caller.");
            }
          case "ArrayExpression":
            node.type = "ArrayPattern";
            this.toAssignableList(node.elements, (_node$extra3 = node.extra) == null ? void 0 : _node$extra3.trailingCommaLoc, isLHS);
            break;
          case "AssignmentExpression":
            if (node.operator !== "=") {
              this.raise(Errors.MissingEqInAssignment, {
                at: node.left.loc.end
              });
            }
            node.type = "AssignmentPattern";
            delete node.operator;
            this.toAssignable(node.left, isLHS);
            break;
          case "ParenthesizedExpression":
            this.toAssignable(parenthesized, isLHS);
            break;
        }
      };
      _proto.toAssignableObjectExpressionProp = function toAssignableObjectExpressionProp(prop, isLast, isLHS) {
        if (prop.type === "ObjectMethod") {
          this.raise(prop.kind === "get" || prop.kind === "set" ? Errors.PatternHasAccessor : Errors.PatternHasMethod, {
            at: prop.key
          });
        } else if (prop.type === "SpreadElement") {
          prop.type = "RestElement";
          var arg = prop.argument;
          this.checkToRestConversion(arg, false);
          this.toAssignable(arg, isLHS);
          if (!isLast) {
            this.raise(Errors.RestTrailingComma, {
              at: prop
            });
          }
        } else {
          this.toAssignable(prop, isLHS);
        }
      };
      _proto.toAssignableList = function toAssignableList(exprList, trailingCommaLoc, isLHS) {
        var end = exprList.length - 1;
        for (var i = 0; i <= end; i++) {
          var elt = exprList[i];
          if (!elt) continue;
          if (elt.type === "SpreadElement") {
            elt.type = "RestElement";
            var arg = elt.argument;
            this.checkToRestConversion(arg, true);
            this.toAssignable(arg, isLHS);
          } else {
            this.toAssignable(elt, isLHS);
          }
          if (elt.type === "RestElement") {
            if (i < end) {
              this.raise(Errors.RestTrailingComma, {
                at: elt
              });
            } else if (trailingCommaLoc) {
              this.raise(Errors.RestTrailingComma, {
                at: trailingCommaLoc
              });
            }
          }
        }
      };
      _proto.isAssignable = function isAssignable(node, isBinding) {
        var _this = this;
        switch (node.type) {
          case "Identifier":
          case "ObjectPattern":
          case "ArrayPattern":
          case "AssignmentPattern":
          case "RestElement":
            return true;
          case "ObjectExpression":
            {
              var last = node.properties.length - 1;
              return node.properties.every(function (prop, i) {
                return prop.type !== "ObjectMethod" && (i === last || prop.type !== "SpreadElement") && _this.isAssignable(prop);
              });
            }
          case "ObjectProperty":
            return this.isAssignable(node.value);
          case "SpreadElement":
            return this.isAssignable(node.argument);
          case "ArrayExpression":
            return node.elements.every(function (element) {
              return element === null || _this.isAssignable(element);
            });
          case "AssignmentExpression":
            return node.operator === "=";
          case "ParenthesizedExpression":
            return this.isAssignable(node.expression);
          case "MemberExpression":
          case "OptionalMemberExpression":
            return !isBinding;
          default:
            return false;
        }
      };
      _proto.toReferencedList = function toReferencedList(exprList, isParenthesizedExpr) {
        return exprList;
      };
      _proto.toReferencedListDeep = function toReferencedListDeep(exprList, isParenthesizedExpr) {
        this.toReferencedList(exprList, isParenthesizedExpr);
        for (var _i2 = 0; _i2 < exprList.length; _i2++) {
          var expr = exprList[_i2];
          if ((expr == null ? void 0 : expr.type) === "ArrayExpression") {
            this.toReferencedListDeep(expr.elements);
          }
        }
      };
      _proto.parseSpread = function parseSpread(refExpressionErrors) {
        var node = this.startNode();
        this.next();
        node.argument = this.parseMaybeAssignAllowIn(refExpressionErrors, undefined);
        return this.finishNode(node, "SpreadElement");
      };
      _proto.parseRestBinding = function parseRestBinding() {
        var node = this.startNode();
        this.next();
        node.argument = this.parseBindingAtom();
        return this.finishNode(node, "RestElement");
      };
      _proto.parseBindingAtom = function parseBindingAtom() {
        switch (this.state.type) {
          case 0:
            {
              var node = this.startNode();
              this.next();
              node.elements = this.parseBindingList(3, 93, ParseBindingListFlags.ALLOW_EMPTY);
              return this.finishNode(node, "ArrayPattern");
            }
          case 5:
            return this.parseObjectLike(8, true);
        }
        return this.parseIdentifier();
      };
      _proto.parseBindingList = function parseBindingList(close, closeCharCode, flags) {
        var allowEmpty = flags & ParseBindingListFlags.ALLOW_EMPTY;
        var elts = [];
        var first = true;
        while (!this.eat(close)) {
          if (first) {
            first = false;
          } else {
            this.expect(12);
          }
          if (allowEmpty && this.match(12)) {
            elts.push(null);
          } else if (this.eat(close)) {
            break;
          } else if (this.match(21)) {
            elts.push(this.parseAssignableListItemTypes(this.parseRestBinding(), flags));
            if (!this.checkCommaAfterRest(closeCharCode)) {
              this.expect(close);
              break;
            }
          } else {
            var decorators = [];
            if (this.match(26) && this.hasPlugin("decorators")) {
              this.raise(Errors.UnsupportedParameterDecorator, {
                at: this.state.startLoc
              });
            }
            while (this.match(26)) {
              decorators.push(this.parseDecorator());
            }
            elts.push(this.parseAssignableListItem(flags, decorators));
          }
        }
        return elts;
      };
      _proto.parseBindingRestProperty = function parseBindingRestProperty(prop) {
        this.next();
        prop.argument = this.parseIdentifier();
        this.checkCommaAfterRest(125);
        return this.finishNode(prop, "RestElement");
      };
      _proto.parseBindingProperty = function parseBindingProperty() {
        var prop = this.startNode();
        var _this$state = this.state,
          type = _this$state.type,
          startLoc = _this$state.startLoc;
        if (type === 21) {
          return this.parseBindingRestProperty(prop);
        } else if (type === 136) {
          this.expectPlugin("destructuringPrivate", startLoc);
          this.classScope.usePrivateName(this.state.value, startLoc);
          prop.key = this.parsePrivateName();
        } else {
          this.parsePropertyName(prop);
        }
        prop.method = false;
        return this.parseObjPropValue(prop, startLoc, false, false, true, false);
      };
      _proto.parseAssignableListItem = function parseAssignableListItem(flags, decorators) {
        var left = this.parseMaybeDefault();
        this.parseAssignableListItemTypes(left, flags);
        var elt = this.parseMaybeDefault(left.loc.start, left);
        if (decorators.length) {
          left.decorators = decorators;
        }
        return elt;
      };
      _proto.parseAssignableListItemTypes = function parseAssignableListItemTypes(param, flags) {
        return param;
      };
      _proto.parseMaybeDefault = function parseMaybeDefault(startLoc, left) {
        var _startLoc, _left;
        (_startLoc = startLoc) != null ? _startLoc : startLoc = this.state.startLoc;
        left = (_left = left) != null ? _left : this.parseBindingAtom();
        if (!this.eat(29)) return left;
        var node = this.startNodeAt(startLoc);
        node.left = left;
        node.right = this.parseMaybeAssignAllowIn();
        return this.finishNode(node, "AssignmentPattern");
      };
      _proto.isValidLVal = function isValidLVal(type, isUnparenthesizedInAssign, binding) {
        return getOwn$1({
          AssignmentPattern: "left",
          RestElement: "argument",
          ObjectProperty: "value",
          ParenthesizedExpression: "expression",
          ArrayPattern: "elements",
          ObjectPattern: "properties"
        }, type);
      };
      _proto.checkLVal = function checkLVal(expression, _ref) {
        var _expression$extra;
        var ancestor = _ref["in"],
          _ref$binding = _ref.binding,
          binding = _ref$binding === void 0 ? BIND_NONE : _ref$binding,
          _ref$checkClashes = _ref.checkClashes,
          checkClashes = _ref$checkClashes === void 0 ? false : _ref$checkClashes,
          _ref$strictModeChange = _ref.strictModeChanged,
          strictModeChanged = _ref$strictModeChange === void 0 ? false : _ref$strictModeChange,
          _ref$hasParenthesized = _ref.hasParenthesizedAncestor,
          hasParenthesizedAncestor = _ref$hasParenthesized === void 0 ? false : _ref$hasParenthesized;
        var type = expression.type;
        if (this.isObjectMethod(expression)) return;
        if (type === "MemberExpression") {
          if (binding !== BIND_NONE) {
            this.raise(Errors.InvalidPropertyBindingPattern, {
              at: expression
            });
          }
          return;
        }
        if (type === "Identifier") {
          this.checkIdentifier(expression, binding, strictModeChanged);
          var _ref2 = expression,
            name = _ref2.name;
          if (checkClashes) {
            if (checkClashes.has(name)) {
              this.raise(Errors.ParamDupe, {
                at: expression
              });
            } else {
              checkClashes.add(name);
            }
          }
          return;
        }
        var validity = this.isValidLVal(type, !(hasParenthesizedAncestor || (_expression$extra = expression.extra) != null && _expression$extra.parenthesized) && ancestor.type === "AssignmentExpression", binding);
        if (validity === true) return;
        if (validity === false) {
          var ParseErrorClass = binding === BIND_NONE ? Errors.InvalidLhs : Errors.InvalidLhsBinding;
          this.raise(ParseErrorClass, {
            at: expression,
            ancestor: ancestor
          });
          return;
        }
        var _ref3 = Array.isArray(validity) ? validity : [validity, type === "ParenthesizedExpression"],
          key = _ref3[0],
          isParenthesizedExpression = _ref3[1];
        var nextAncestor = type === "ArrayPattern" || type === "ObjectPattern" || type === "ParenthesizedExpression" ? {
          type: type
        } : ancestor;
        for (var _i4 = 0, _concat2 = [].concat(expression[key]); _i4 < _concat2.length; _i4++) {
          var child = _concat2[_i4];
          if (child) {
            this.checkLVal(child, {
              "in": nextAncestor,
              binding: binding,
              checkClashes: checkClashes,
              strictModeChanged: strictModeChanged,
              hasParenthesizedAncestor: isParenthesizedExpression
            });
          }
        }
      };
      _proto.checkIdentifier = function checkIdentifier(at, bindingType, strictModeChanged) {
        if (strictModeChanged === void 0) {
          strictModeChanged = false;
        }
        if (this.state.strict && (strictModeChanged ? isStrictBindReservedWord(at.name, this.inModule) : isStrictBindOnlyReservedWord(at.name))) {
          if (bindingType === BIND_NONE) {
            this.raise(Errors.StrictEvalArguments, {
              at: at,
              referenceName: at.name
            });
          } else {
            this.raise(Errors.StrictEvalArgumentsBinding, {
              at: at,
              bindingName: at.name
            });
          }
        }
        if (bindingType & BIND_FLAGS_NO_LET_IN_LEXICAL && at.name === "let") {
          this.raise(Errors.LetInLexicalBinding, {
            at: at
          });
        }
        if (!(bindingType & BIND_NONE)) {
          this.declareNameFromIdentifier(at, bindingType);
        }
      };
      _proto.declareNameFromIdentifier = function declareNameFromIdentifier(identifier, binding) {
        this.scope.declareName(identifier.name, binding, identifier.loc.start);
      };
      _proto.checkToRestConversion = function checkToRestConversion(node, allowPattern) {
        switch (node.type) {
          case "ParenthesizedExpression":
            this.checkToRestConversion(node.expression, allowPattern);
            break;
          case "Identifier":
          case "MemberExpression":
            break;
          case "ArrayExpression":
          case "ObjectExpression":
            if (allowPattern) break;
          default:
            this.raise(Errors.InvalidRestAssignmentPattern, {
              at: node
            });
        }
      };
      _proto.checkCommaAfterRest = function checkCommaAfterRest(close) {
        if (!this.match(12)) {
          return false;
        }
        this.raise(this.lookaheadCharCode() === close ? Errors.RestTrailingComma : Errors.ElementAfterRest, {
          at: this.state.startLoc
        });
        return true;
      };
      return _createClass(LValParser);
    }(NodeUtils);
  
    var _templateObject$x;
    var getOwn = function getOwn(object, key) {
      return Object.hasOwnProperty.call(object, key) && object[key];
    };
    function nonNull(x) {
      if (x == null) {
        throw new Error("Unexpected " + x + " value.");
      }
      return x;
    }
    function assert$2(x) {
      if (!x) {
        throw new Error("Assert fail");
      }
    }
    var TSErrors = ParseErrorEnum(_templateObject$x || (_templateObject$x = _taggedTemplateLiteralLoose(["typescript"])))({
      AbstractMethodHasImplementation: function AbstractMethodHasImplementation(_ref) {
        var methodName = _ref.methodName;
        return "Method '" + methodName + "' cannot have an implementation because it is marked abstract.";
      },
      AbstractPropertyHasInitializer: function AbstractPropertyHasInitializer(_ref2) {
        var propertyName = _ref2.propertyName;
        return "Property '" + propertyName + "' cannot have an initializer because it is marked abstract.";
      },
      AccesorCannotDeclareThisParameter: "'get' and 'set' accessors cannot declare 'this' parameters.",
      AccesorCannotHaveTypeParameters: "An accessor cannot have type parameters.",
      AccessorCannotBeOptional: "An 'accessor' property cannot be declared optional.",
      ClassMethodHasDeclare: "Class methods cannot have the 'declare' modifier.",
      ClassMethodHasReadonly: "Class methods cannot have the 'readonly' modifier.",
      ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference: "A 'const' initializer in an ambient context must be a string or numeric literal or literal enum reference.",
      ConstructorHasTypeParameters: "Type parameters cannot appear on a constructor declaration.",
      DeclareAccessor: function DeclareAccessor(_ref3) {
        var kind = _ref3.kind;
        return "'declare' is not allowed in " + kind + "ters.";
      },
      DeclareClassFieldHasInitializer: "Initializers are not allowed in ambient contexts.",
      DeclareFunctionHasImplementation: "An implementation cannot be declared in ambient contexts.",
      DuplicateAccessibilityModifier: function DuplicateAccessibilityModifier(_ref4) {
        _ref4.modifier;
        return "Accessibility modifier already seen.";
      },
      DuplicateModifier: function DuplicateModifier(_ref5) {
        var modifier = _ref5.modifier;
        return "Duplicate modifier: '" + modifier + "'.";
      },
      EmptyHeritageClauseType: function EmptyHeritageClauseType(_ref6) {
        var token = _ref6.token;
        return "'" + token + "' list cannot be empty.";
      },
      EmptyTypeArguments: "Type argument list cannot be empty.",
      EmptyTypeParameters: "Type parameter list cannot be empty.",
      ExpectedAmbientAfterExportDeclare: "'export declare' must be followed by an ambient declaration.",
      ImportAliasHasImportType: "An import alias can not use 'import type'.",
      ImportReflectionHasImportType: "An `import module` declaration can not use `type` modifier",
      IncompatibleModifiers: function IncompatibleModifiers(_ref7) {
        var modifiers = _ref7.modifiers;
        return "'" + modifiers[0] + "' modifier cannot be used with '" + modifiers[1] + "' modifier.";
      },
      IndexSignatureHasAbstract: "Index signatures cannot have the 'abstract' modifier.",
      IndexSignatureHasAccessibility: function IndexSignatureHasAccessibility(_ref8) {
        var modifier = _ref8.modifier;
        return "Index signatures cannot have an accessibility modifier ('" + modifier + "').";
      },
      IndexSignatureHasDeclare: "Index signatures cannot have the 'declare' modifier.",
      IndexSignatureHasOverride: "'override' modifier cannot appear on an index signature.",
      IndexSignatureHasStatic: "Index signatures cannot have the 'static' modifier.",
      InitializerNotAllowedInAmbientContext: "Initializers are not allowed in ambient contexts.",
      InvalidModifierOnTypeMember: function InvalidModifierOnTypeMember(_ref9) {
        var modifier = _ref9.modifier;
        return "'" + modifier + "' modifier cannot appear on a type member.";
      },
      InvalidModifierOnTypeParameter: function InvalidModifierOnTypeParameter(_ref10) {
        var modifier = _ref10.modifier;
        return "'" + modifier + "' modifier cannot appear on a type parameter.";
      },
      InvalidModifierOnTypeParameterPositions: function InvalidModifierOnTypeParameterPositions(_ref11) {
        var modifier = _ref11.modifier;
        return "'" + modifier + "' modifier can only appear on a type parameter of a class, interface or type alias.";
      },
      InvalidModifiersOrder: function InvalidModifiersOrder(_ref12) {
        var orderedModifiers = _ref12.orderedModifiers;
        return "'" + orderedModifiers[0] + "' modifier must precede '" + orderedModifiers[1] + "' modifier.";
      },
      InvalidPropertyAccessAfterInstantiationExpression: "Invalid property access after an instantiation expression. " + "You can either wrap the instantiation expression in parentheses, or delete the type arguments.",
      InvalidTupleMemberLabel: "Tuple members must be labeled with a simple identifier.",
      MissingInterfaceName: "'interface' declarations must be followed by an identifier.",
      MixedLabeledAndUnlabeledElements: "Tuple members must all have names or all not have names.",
      NonAbstractClassHasAbstractMethod: "Abstract methods can only appear within an abstract class.",
      NonClassMethodPropertyHasAbstractModifer: "'abstract' modifier can only appear on a class, method, or property declaration.",
      OptionalTypeBeforeRequired: "A required element cannot follow an optional element.",
      OverrideNotInSubClass: "This member cannot have an 'override' modifier because its containing class does not extend another class.",
      PatternIsOptional: "A binding pattern parameter cannot be optional in an implementation signature.",
      PrivateElementHasAbstract: "Private elements cannot have the 'abstract' modifier.",
      PrivateElementHasAccessibility: function PrivateElementHasAccessibility(_ref13) {
        var modifier = _ref13.modifier;
        return "Private elements cannot have an accessibility modifier ('" + modifier + "').";
      },
      ReadonlyForMethodSignature: "'readonly' modifier can only appear on a property declaration or index signature.",
      ReservedArrowTypeParam: "This syntax is reserved in files with the .mts or .cts extension. Add a trailing comma, as in `<T,>() => ...`.",
      ReservedTypeAssertion: "This syntax is reserved in files with the .mts or .cts extension. Use an `as` expression instead.",
      SetAccesorCannotHaveOptionalParameter: "A 'set' accessor cannot have an optional parameter.",
      SetAccesorCannotHaveRestParameter: "A 'set' accessor cannot have rest parameter.",
      SetAccesorCannotHaveReturnType: "A 'set' accessor cannot have a return type annotation.",
      SingleTypeParameterWithoutTrailingComma: function SingleTypeParameterWithoutTrailingComma(_ref14) {
        var typeParameterName = _ref14.typeParameterName;
        return "Single type parameter " + typeParameterName + " should have a trailing comma. Example usage: <" + typeParameterName + ",>.";
      },
      StaticBlockCannotHaveModifier: "Static class blocks cannot have any modifier.",
      TupleOptionalAfterType: "A labeled tuple optional element must be declared using a question mark after the name and before the colon (`name?: type`), rather than after the type (`name: type?`).",
      TypeAnnotationAfterAssign: "Type annotations must come before default assignments, e.g. instead of `age = 25: number` use `age: number = 25`.",
      TypeImportCannotSpecifyDefaultAndNamed: "A type-only import can specify a default import or named bindings, but not both.",
      TypeModifierIsUsedInTypeExports: "The 'type' modifier cannot be used on a named export when 'export type' is used on its export statement.",
      TypeModifierIsUsedInTypeImports: "The 'type' modifier cannot be used on a named import when 'import type' is used on its import statement.",
      UnexpectedParameterModifier: "A parameter property is only allowed in a constructor implementation.",
      UnexpectedReadonly: "'readonly' type modifier is only permitted on array and tuple literal types.",
      UnexpectedTypeAnnotation: "Did not expect a type annotation here.",
      UnexpectedTypeCastInParameter: "Unexpected type cast in parameter position.",
      UnsupportedImportTypeArgument: "Argument in a type import must be a string literal.",
      UnsupportedParameterPropertyKind: "A parameter property may not be declared using a binding pattern.",
      UnsupportedSignatureParameterKind: function UnsupportedSignatureParameterKind(_ref15) {
        var type = _ref15.type;
        return "Name in a signature must be an Identifier, ObjectPattern or ArrayPattern, instead got " + type + ".";
      }
    });
    function keywordTypeFromName(value) {
      switch (value) {
        case "any":
          return "TSAnyKeyword";
        case "boolean":
          return "TSBooleanKeyword";
        case "bigint":
          return "TSBigIntKeyword";
        case "never":
          return "TSNeverKeyword";
        case "number":
          return "TSNumberKeyword";
        case "object":
          return "TSObjectKeyword";
        case "string":
          return "TSStringKeyword";
        case "symbol":
          return "TSSymbolKeyword";
        case "undefined":
          return "TSUndefinedKeyword";
        case "unknown":
          return "TSUnknownKeyword";
        default:
          return undefined;
      }
    }
    function tsIsAccessModifier(modifier) {
      return modifier === "private" || modifier === "public" || modifier === "protected";
    }
    function tsIsVarianceAnnotations(modifier) {
      return modifier === "in" || modifier === "out";
    }
    var typescript = (function (superClass) {
      return function (_superClass) {
        _inherits(TypeScriptParserMixin, _superClass);
        function TypeScriptParserMixin() {
          var _this;
          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
            args[_key] = arguments[_key];
          }
          _this = _superClass.call.apply(_superClass, [this].concat(args)) || this;
          _this.tsParseInOutModifiers = _this.tsParseModifiers.bind(_assertThisInitialized(_this), {
            allowedModifiers: ["in", "out"],
            disallowedModifiers: ["const", "public", "private", "protected", "readonly", "declare", "abstract", "override"],
            errorTemplate: TSErrors.InvalidModifierOnTypeParameter
          });
          _this.tsParseConstModifier = _this.tsParseModifiers.bind(_assertThisInitialized(_this), {
            allowedModifiers: ["const"],
            disallowedModifiers: ["in", "out"],
            errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions
          });
          _this.tsParseInOutConstModifiers = _this.tsParseModifiers.bind(_assertThisInitialized(_this), {
            allowedModifiers: ["in", "out", "const"],
            disallowedModifiers: ["public", "private", "protected", "readonly", "declare", "abstract", "override"],
            errorTemplate: TSErrors.InvalidModifierOnTypeParameter
          });
          return _this;
        }
        var _proto = TypeScriptParserMixin.prototype;
        _proto.getScopeHandler = function getScopeHandler() {
          return TypeScriptScopeHandler;
        };
        _proto.tsIsIdentifier = function tsIsIdentifier() {
          return tokenIsIdentifier(this.state.type);
        };
        _proto.tsTokenCanFollowModifier = function tsTokenCanFollowModifier() {
          return (this.match(0) || this.match(5) || this.match(55) || this.match(21) || this.match(136) || this.isLiteralPropertyName()) && !this.hasPrecedingLineBreak();
        };
        _proto.tsNextTokenCanFollowModifier = function tsNextTokenCanFollowModifier() {
          this.next();
          return this.tsTokenCanFollowModifier();
        };
        _proto.tsParseModifier = function tsParseModifier(allowedModifiers, stopOnStartOfClassStaticBlock) {
          if (!tokenIsIdentifier(this.state.type) && this.state.type !== 58 && this.state.type !== 75) {
            return undefined;
          }
          var modifier = this.state.value;
          if (allowedModifiers.indexOf(modifier) !== -1) {
            if (stopOnStartOfClassStaticBlock && this.tsIsStartOfStaticBlocks()) {
              return undefined;
            }
            if (this.tsTryParse(this.tsNextTokenCanFollowModifier.bind(this))) {
              return modifier;
            }
          }
          return undefined;
        };
        _proto.tsParseModifiers = function tsParseModifiers(_ref16, modified) {
          var _this2 = this;
          var allowedModifiers = _ref16.allowedModifiers,
            disallowedModifiers = _ref16.disallowedModifiers,
            stopOnStartOfClassStaticBlock = _ref16.stopOnStartOfClassStaticBlock,
            _ref16$errorTemplate = _ref16.errorTemplate,
            errorTemplate = _ref16$errorTemplate === void 0 ? TSErrors.InvalidModifierOnTypeMember : _ref16$errorTemplate;
          var enforceOrder = function enforceOrder(loc, modifier, before, after) {
            if (modifier === before && modified[after]) {
              _this2.raise(TSErrors.InvalidModifiersOrder, {
                at: loc,
                orderedModifiers: [before, after]
              });
            }
          };
          var incompatible = function incompatible(loc, modifier, mod1, mod2) {
            if (modified[mod1] && modifier === mod2 || modified[mod2] && modifier === mod1) {
              _this2.raise(TSErrors.IncompatibleModifiers, {
                at: loc,
                modifiers: [mod1, mod2]
              });
            }
          };
          for (;;) {
            var startLoc = this.state.startLoc;
            var modifier = this.tsParseModifier(allowedModifiers.concat(disallowedModifiers != null ? disallowedModifiers : []), stopOnStartOfClassStaticBlock);
            if (!modifier) break;
            if (tsIsAccessModifier(modifier)) {
              if (modified.accessibility) {
                this.raise(TSErrors.DuplicateAccessibilityModifier, {
                  at: startLoc,
                  modifier: modifier
                });
              } else {
                enforceOrder(startLoc, modifier, modifier, "override");
                enforceOrder(startLoc, modifier, modifier, "static");
                enforceOrder(startLoc, modifier, modifier, "readonly");
                modified.accessibility = modifier;
              }
            } else if (tsIsVarianceAnnotations(modifier)) {
              if (modified[modifier]) {
                this.raise(TSErrors.DuplicateModifier, {
                  at: startLoc,
                  modifier: modifier
                });
              }
              modified[modifier] = true;
              enforceOrder(startLoc, modifier, "in", "out");
            } else {
              if (Object.hasOwnProperty.call(modified, modifier)) {
                this.raise(TSErrors.DuplicateModifier, {
                  at: startLoc,
                  modifier: modifier
                });
              } else {
                enforceOrder(startLoc, modifier, "static", "readonly");
                enforceOrder(startLoc, modifier, "static", "override");
                enforceOrder(startLoc, modifier, "override", "readonly");
                enforceOrder(startLoc, modifier, "abstract", "override");
                incompatible(startLoc, modifier, "declare", "override");
                incompatible(startLoc, modifier, "static", "abstract");
              }
              modified[modifier] = true;
            }
            if (disallowedModifiers != null && disallowedModifiers.includes(modifier)) {
              this.raise(errorTemplate, {
                at: startLoc,
                modifier: modifier
              });
            }
          }
        };
        _proto.tsIsListTerminator = function tsIsListTerminator(kind) {
          switch (kind) {
            case "EnumMembers":
            case "TypeMembers":
              return this.match(8);
            case "HeritageClauseElement":
              return this.match(5);
            case "TupleElementTypes":
              return this.match(3);
            case "TypeParametersOrArguments":
              return this.match(48);
          }
        };
        _proto.tsParseList = function tsParseList(kind, parseElement) {
          var result = [];
          while (!this.tsIsListTerminator(kind)) {
            result.push(parseElement());
          }
          return result;
        };
        _proto.tsParseDelimitedList = function tsParseDelimitedList(kind, parseElement, refTrailingCommaPos) {
          return nonNull(this.tsParseDelimitedListWorker(kind, parseElement, true, refTrailingCommaPos));
        };
        _proto.tsParseDelimitedListWorker = function tsParseDelimitedListWorker(kind, parseElement, expectSuccess, refTrailingCommaPos) {
          var result = [];
          var trailingCommaPos = -1;
          for (;;) {
            if (this.tsIsListTerminator(kind)) {
              break;
            }
            trailingCommaPos = -1;
            var element = parseElement();
            if (element == null) {
              return undefined;
            }
            result.push(element);
            if (this.eat(12)) {
              trailingCommaPos = this.state.lastTokStart;
              continue;
            }
            if (this.tsIsListTerminator(kind)) {
              break;
            }
            if (expectSuccess) {
              this.expect(12);
            }
            return undefined;
          }
          if (refTrailingCommaPos) {
            refTrailingCommaPos.value = trailingCommaPos;
          }
          return result;
        };
        _proto.tsParseBracketedList = function tsParseBracketedList(kind, parseElement, bracket, skipFirstToken, refTrailingCommaPos) {
          if (!skipFirstToken) {
            if (bracket) {
              this.expect(0);
            } else {
              this.expect(47);
            }
          }
          var result = this.tsParseDelimitedList(kind, parseElement, refTrailingCommaPos);
          if (bracket) {
            this.expect(3);
          } else {
            this.expect(48);
          }
          return result;
        };
        _proto.tsParseImportType = function tsParseImportType() {
          var node = this.startNode();
          this.expect(83);
          this.expect(10);
          if (!this.match(131)) {
            this.raise(TSErrors.UnsupportedImportTypeArgument, {
              at: this.state.startLoc
            });
          }
          node.argument = _superClass.prototype.parseExprAtom.call(this);
          this.expect(11);
          if (this.eat(16)) {
            node.qualifier = this.tsParseEntityName();
          }
          if (this.match(47)) {
            node.typeParameters = this.tsParseTypeArguments();
          }
          return this.finishNode(node, "TSImportType");
        };
        _proto.tsParseEntityName = function tsParseEntityName(allowReservedWords) {
          if (allowReservedWords === void 0) {
            allowReservedWords = true;
          }
          var entity = this.parseIdentifier(allowReservedWords);
          while (this.eat(16)) {
            var _node = this.startNodeAtNode(entity);
            _node.left = entity;
            _node.right = this.parseIdentifier(allowReservedWords);
            entity = this.finishNode(_node, "TSQualifiedName");
          }
          return entity;
        };
        _proto.tsParseTypeReference = function tsParseTypeReference() {
          var node = this.startNode();
          node.typeName = this.tsParseEntityName();
          if (!this.hasPrecedingLineBreak() && this.match(47)) {
            node.typeParameters = this.tsParseTypeArguments();
          }
          return this.finishNode(node, "TSTypeReference");
        };
        _proto.tsParseThisTypePredicate = function tsParseThisTypePredicate(lhs) {
          this.next();
          var node = this.startNodeAtNode(lhs);
          node.parameterName = lhs;
          node.typeAnnotation = this.tsParseTypeAnnotation(false);
          node.asserts = false;
          return this.finishNode(node, "TSTypePredicate");
        };
        _proto.tsParseThisTypeNode = function tsParseThisTypeNode() {
          var node = this.startNode();
          this.next();
          return this.finishNode(node, "TSThisType");
        };
        _proto.tsParseTypeQuery = function tsParseTypeQuery() {
          var node = this.startNode();
          this.expect(87);
          if (this.match(83)) {
            node.exprName = this.tsParseImportType();
          } else {
            node.exprName = this.tsParseEntityName();
          }
          if (!this.hasPrecedingLineBreak() && this.match(47)) {
            node.typeParameters = this.tsParseTypeArguments();
          }
          return this.finishNode(node, "TSTypeQuery");
        };
        _proto.tsParseTypeParameter = function tsParseTypeParameter(parseModifiers) {
          var node = this.startNode();
          parseModifiers(node);
          node.name = this.tsParseTypeParameterName();
          node.constraint = this.tsEatThenParseType(81);
          node["default"] = this.tsEatThenParseType(29);
          return this.finishNode(node, "TSTypeParameter");
        };
        _proto.tsTryParseTypeParameters = function tsTryParseTypeParameters(parseModifiers) {
          if (this.match(47)) {
            return this.tsParseTypeParameters(parseModifiers);
          }
        };
        _proto.tsParseTypeParameters = function tsParseTypeParameters(parseModifiers) {
          var node = this.startNode();
          if (this.match(47) || this.match(140)) {
            this.next();
          } else {
            this.unexpected();
          }
          var refTrailingCommaPos = {
            value: -1
          };
          node.params = this.tsParseBracketedList("TypeParametersOrArguments", this.tsParseTypeParameter.bind(this, parseModifiers), false, true, refTrailingCommaPos);
          if (node.params.length === 0) {
            this.raise(TSErrors.EmptyTypeParameters, {
              at: node
            });
          }
          if (refTrailingCommaPos.value !== -1) {
            this.addExtra(node, "trailingComma", refTrailingCommaPos.value);
          }
          return this.finishNode(node, "TSTypeParameterDeclaration");
        };
        _proto.tsFillSignature = function tsFillSignature(returnToken, signature) {
          var returnTokenRequired = returnToken === 19;
          var paramsKey = "parameters";
          var returnTypeKey = "typeAnnotation";
          signature.typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);
          this.expect(10);
          signature[paramsKey] = this.tsParseBindingListForSignature();
          if (returnTokenRequired) {
            signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken);
          } else if (this.match(returnToken)) {
            signature[returnTypeKey] = this.tsParseTypeOrTypePredicateAnnotation(returnToken);
          }
        };
        _proto.tsParseBindingListForSignature = function tsParseBindingListForSignature() {
          var list = _superClass.prototype.parseBindingList.call(this, 11, 41, ParseBindingListFlags.IS_FUNCTION_PARAMS);
          for (var _i2 = 0; _i2 < list.length; _i2++) {
            var pattern = list[_i2];
            var type = pattern.type;
            if (type === "AssignmentPattern" || type === "TSParameterProperty") {
              this.raise(TSErrors.UnsupportedSignatureParameterKind, {
                at: pattern,
                type: type
              });
            }
          }
          return list;
        };
        _proto.tsParseTypeMemberSemicolon = function tsParseTypeMemberSemicolon() {
          if (!this.eat(12) && !this.isLineTerminator()) {
            this.expect(13);
          }
        };
        _proto.tsParseSignatureMember = function tsParseSignatureMember(kind, node) {
          this.tsFillSignature(14, node);
          this.tsParseTypeMemberSemicolon();
          return this.finishNode(node, kind);
        };
        _proto.tsIsUnambiguouslyIndexSignature = function tsIsUnambiguouslyIndexSignature() {
          this.next();
          if (tokenIsIdentifier(this.state.type)) {
            this.next();
            return this.match(14);
          }
          return false;
        };
        _proto.tsTryParseIndexSignature = function tsTryParseIndexSignature(node) {
          if (!(this.match(0) && this.tsLookAhead(this.tsIsUnambiguouslyIndexSignature.bind(this)))) {
            return;
          }
          this.expect(0);
          var id = this.parseIdentifier();
          id.typeAnnotation = this.tsParseTypeAnnotation();
          this.resetEndLocation(id);
          this.expect(3);
          node.parameters = [id];
          var type = this.tsTryParseTypeAnnotation();
          if (type) node.typeAnnotation = type;
          this.tsParseTypeMemberSemicolon();
          return this.finishNode(node, "TSIndexSignature");
        };
        _proto.tsParsePropertyOrMethodSignature = function tsParsePropertyOrMethodSignature(node, readonly) {
          if (this.eat(17)) node.optional = true;
          var nodeAny = node;
          if (this.match(10) || this.match(47)) {
            if (readonly) {
              this.raise(TSErrors.ReadonlyForMethodSignature, {
                at: node
              });
            }
            var method = nodeAny;
            if (method.kind && this.match(47)) {
              this.raise(TSErrors.AccesorCannotHaveTypeParameters, {
                at: this.state.curPosition()
              });
            }
            this.tsFillSignature(14, method);
            this.tsParseTypeMemberSemicolon();
            var paramsKey = "parameters";
            var returnTypeKey = "typeAnnotation";
            if (method.kind === "get") {
              if (method[paramsKey].length > 0) {
                this.raise(Errors.BadGetterArity, {
                  at: this.state.curPosition()
                });
                if (this.isThisParam(method[paramsKey][0])) {
                  this.raise(TSErrors.AccesorCannotDeclareThisParameter, {
                    at: this.state.curPosition()
                  });
                }
              }
            } else if (method.kind === "set") {
              if (method[paramsKey].length !== 1) {
                this.raise(Errors.BadSetterArity, {
                  at: this.state.curPosition()
                });
              } else {
                var firstParameter = method[paramsKey][0];
                if (this.isThisParam(firstParameter)) {
                  this.raise(TSErrors.AccesorCannotDeclareThisParameter, {
                    at: this.state.curPosition()
                  });
                }
                if (firstParameter.type === "Identifier" && firstParameter.optional) {
                  this.raise(TSErrors.SetAccesorCannotHaveOptionalParameter, {
                    at: this.state.curPosition()
                  });
                }
                if (firstParameter.type === "RestElement") {
                  this.raise(TSErrors.SetAccesorCannotHaveRestParameter, {
                    at: this.state.curPosition()
                  });
                }
              }
              if (method[returnTypeKey]) {
                this.raise(TSErrors.SetAccesorCannotHaveReturnType, {
                  at: method[returnTypeKey]
                });
              }
            } else {
              method.kind = "method";
            }
            return this.finishNode(method, "TSMethodSignature");
          } else {
            var property = nodeAny;
            if (readonly) property.readonly = true;
            var type = this.tsTryParseTypeAnnotation();
            if (type) property.typeAnnotation = type;
            this.tsParseTypeMemberSemicolon();
            return this.finishNode(property, "TSPropertySignature");
          }
        };
        _proto.tsParseTypeMember = function tsParseTypeMember() {
          var node = this.startNode();
          if (this.match(10) || this.match(47)) {
            return this.tsParseSignatureMember("TSCallSignatureDeclaration", node);
          }
          if (this.match(77)) {
            var id = this.startNode();
            this.next();
            if (this.match(10) || this.match(47)) {
              return this.tsParseSignatureMember("TSConstructSignatureDeclaration", node);
            } else {
              node.key = this.createIdentifier(id, "new");
              return this.tsParsePropertyOrMethodSignature(node, false);
            }
          }
          this.tsParseModifiers({
            allowedModifiers: ["readonly"],
            disallowedModifiers: ["declare", "abstract", "private", "protected", "public", "static", "override"]
          }, node);
          var idx = this.tsTryParseIndexSignature(node);
          if (idx) {
            return idx;
          }
          _superClass.prototype.parsePropertyName.call(this, node);
          if (!node.computed && node.key.type === "Identifier" && (node.key.name === "get" || node.key.name === "set") && this.tsTokenCanFollowModifier()) {
            node.kind = node.key.name;
            _superClass.prototype.parsePropertyName.call(this, node);
          }
          return this.tsParsePropertyOrMethodSignature(node, !!node.readonly);
        };
        _proto.tsParseTypeLiteral = function tsParseTypeLiteral() {
          var node = this.startNode();
          node.members = this.tsParseObjectTypeMembers();
          return this.finishNode(node, "TSTypeLiteral");
        };
        _proto.tsParseObjectTypeMembers = function tsParseObjectTypeMembers() {
          this.expect(5);
          var members = this.tsParseList("TypeMembers", this.tsParseTypeMember.bind(this));
          this.expect(8);
          return members;
        };
        _proto.tsIsStartOfMappedType = function tsIsStartOfMappedType() {
          this.next();
          if (this.eat(53)) {
            return this.isContextual(120);
          }
          if (this.isContextual(120)) {
            this.next();
          }
          if (!this.match(0)) {
            return false;
          }
          this.next();
          if (!this.tsIsIdentifier()) {
            return false;
          }
          this.next();
          return this.match(58);
        };
        _proto.tsParseMappedTypeParameter = function tsParseMappedTypeParameter() {
          var node = this.startNode();
          node.name = this.tsParseTypeParameterName();
          node.constraint = this.tsExpectThenParseType(58);
          return this.finishNode(node, "TSTypeParameter");
        };
        _proto.tsParseMappedType = function tsParseMappedType() {
          var node = this.startNode();
          this.expect(5);
          if (this.match(53)) {
            node.readonly = this.state.value;
            this.next();
            this.expectContextual(120);
          } else if (this.eatContextual(120)) {
            node.readonly = true;
          }
          this.expect(0);
          node.typeParameter = this.tsParseMappedTypeParameter();
          node.nameType = this.eatContextual(93) ? this.tsParseType() : null;
          this.expect(3);
          if (this.match(53)) {
            node.optional = this.state.value;
            this.next();
            this.expect(17);
          } else if (this.eat(17)) {
            node.optional = true;
          }
          node.typeAnnotation = this.tsTryParseType();
          this.semicolon();
          this.expect(8);
          return this.finishNode(node, "TSMappedType");
        };
        _proto.tsParseTupleType = function tsParseTupleType() {
          var _this3 = this;
          var node = this.startNode();
          node.elementTypes = this.tsParseBracketedList("TupleElementTypes", this.tsParseTupleElementType.bind(this), true, false);
          var seenOptionalElement = false;
          var labeledElements = null;
          node.elementTypes.forEach(function (elementNode) {
            var _labeledElements;
            var _elementNode = elementNode,
              type = _elementNode.type;
            if (seenOptionalElement && type !== "TSRestType" && type !== "TSOptionalType" && !(type === "TSNamedTupleMember" && elementNode.optional)) {
              _this3.raise(TSErrors.OptionalTypeBeforeRequired, {
                at: elementNode
              });
            }
            seenOptionalElement || (seenOptionalElement = type === "TSNamedTupleMember" && elementNode.optional || type === "TSOptionalType");
            var checkType = type;
            if (type === "TSRestType") {
              elementNode = elementNode.typeAnnotation;
              checkType = elementNode.type;
            }
            var isLabeled = checkType === "TSNamedTupleMember";
            (_labeledElements = labeledElements) != null ? _labeledElements : labeledElements = isLabeled;
            if (labeledElements !== isLabeled) {
              _this3.raise(TSErrors.MixedLabeledAndUnlabeledElements, {
                at: elementNode
              });
            }
          });
          return this.finishNode(node, "TSTupleType");
        };
        _proto.tsParseTupleElementType = function tsParseTupleElementType() {
          var startLoc = this.state.startLoc;
          var rest = this.eat(21);
          var labeled;
          var label;
          var optional;
          var type;
          var isWord = tokenIsKeywordOrIdentifier(this.state.type);
          var chAfterWord = isWord ? this.lookaheadCharCode() : null;
          if (chAfterWord === 58) {
            labeled = true;
            optional = false;
            label = this.parseIdentifier(true);
            this.expect(14);
            type = this.tsParseType();
          } else if (chAfterWord === 63) {
            optional = true;
            var _startLoc = this.state.startLoc;
            var wordName = this.state.value;
            var typeOrLabel = this.tsParseNonArrayType();
            if (this.lookaheadCharCode() === 58) {
              labeled = true;
              label = this.createIdentifier(this.startNodeAt(_startLoc), wordName);
              this.expect(17);
              this.expect(14);
              type = this.tsParseType();
            } else {
              labeled = false;
              type = typeOrLabel;
              this.expect(17);
            }
          } else {
            type = this.tsParseType();
            optional = this.eat(17);
            labeled = this.eat(14);
          }
          if (labeled) {
            var labeledNode;
            if (label) {
              labeledNode = this.startNodeAtNode(label);
              labeledNode.optional = optional;
              labeledNode.label = label;
              labeledNode.elementType = type;
              if (this.eat(17)) {
                labeledNode.optional = true;
                this.raise(TSErrors.TupleOptionalAfterType, {
                  at: this.state.lastTokStartLoc
                });
              }
            } else {
              labeledNode = this.startNodeAtNode(type);
              labeledNode.optional = optional;
              this.raise(TSErrors.InvalidTupleMemberLabel, {
                at: type
              });
              labeledNode.label = type;
              labeledNode.elementType = this.tsParseType();
            }
            type = this.finishNode(labeledNode, "TSNamedTupleMember");
          } else if (optional) {
            var optionalTypeNode = this.startNodeAtNode(type);
            optionalTypeNode.typeAnnotation = type;
            type = this.finishNode(optionalTypeNode, "TSOptionalType");
          }
          if (rest) {
            var restNode = this.startNodeAt(startLoc);
            restNode.typeAnnotation = type;
            type = this.finishNode(restNode, "TSRestType");
          }
          return type;
        };
        _proto.tsParseParenthesizedType = function tsParseParenthesizedType() {
          var node = this.startNode();
          this.expect(10);
          node.typeAnnotation = this.tsParseType();
          this.expect(11);
          return this.finishNode(node, "TSParenthesizedType");
        };
        _proto.tsParseFunctionOrConstructorType = function tsParseFunctionOrConstructorType(type, _abstract) {
          var _this4 = this;
          var node = this.startNode();
          if (type === "TSConstructorType") {
            node["abstract"] = !!_abstract;
            if (_abstract) this.next();
            this.next();
          }
          this.tsInAllowConditionalTypesContext(function () {
            return _this4.tsFillSignature(19, node);
          });
          return this.finishNode(node, type);
        };
        _proto.tsParseLiteralTypeNode = function tsParseLiteralTypeNode() {
          var node = this.startNode();
          switch (this.state.type) {
            case 132:
            case 133:
            case 131:
            case 85:
            case 86:
              node.literal = _superClass.prototype.parseExprAtom.call(this);
              break;
            default:
              this.unexpected();
          }
          return this.finishNode(node, "TSLiteralType");
        };
        _proto.tsParseTemplateLiteralType = function tsParseTemplateLiteralType() {
          var node = this.startNode();
          node.literal = _superClass.prototype.parseTemplate.call(this, false);
          return this.finishNode(node, "TSLiteralType");
        };
        _proto.parseTemplateSubstitution = function parseTemplateSubstitution() {
          if (this.state.inType) return this.tsParseType();
          return _superClass.prototype.parseTemplateSubstitution.call(this);
        };
        _proto.tsParseThisTypeOrThisTypePredicate = function tsParseThisTypeOrThisTypePredicate() {
          var thisKeyword = this.tsParseThisTypeNode();
          if (this.isContextual(114) && !this.hasPrecedingLineBreak()) {
            return this.tsParseThisTypePredicate(thisKeyword);
          } else {
            return thisKeyword;
          }
        };
        _proto.tsParseNonArrayType = function tsParseNonArrayType() {
          switch (this.state.type) {
            case 131:
            case 132:
            case 133:
            case 85:
            case 86:
              return this.tsParseLiteralTypeNode();
            case 53:
              if (this.state.value === "-") {
                var _node2 = this.startNode();
                var nextToken = this.lookahead();
                if (nextToken.type !== 132 && nextToken.type !== 133) {
                  this.unexpected();
                }
                _node2.literal = this.parseMaybeUnary();
                return this.finishNode(_node2, "TSLiteralType");
              }
              break;
            case 78:
              return this.tsParseThisTypeOrThisTypePredicate();
            case 87:
              return this.tsParseTypeQuery();
            case 83:
              return this.tsParseImportType();
            case 5:
              return this.tsLookAhead(this.tsIsStartOfMappedType.bind(this)) ? this.tsParseMappedType() : this.tsParseTypeLiteral();
            case 0:
              return this.tsParseTupleType();
            case 10:
              return this.tsParseParenthesizedType();
            case 25:
            case 24:
              return this.tsParseTemplateLiteralType();
            default:
              {
                var type = this.state.type;
                if (tokenIsIdentifier(type) || type === 88 || type === 84) {
                  var nodeType = type === 88 ? "TSVoidKeyword" : type === 84 ? "TSNullKeyword" : keywordTypeFromName(this.state.value);
                  if (nodeType !== undefined && this.lookaheadCharCode() !== 46) {
                    var _node3 = this.startNode();
                    this.next();
                    return this.finishNode(_node3, nodeType);
                  }
                  return this.tsParseTypeReference();
                }
              }
          }
          this.unexpected();
        };
        _proto.tsParseArrayTypeOrHigher = function tsParseArrayTypeOrHigher() {
          var type = this.tsParseNonArrayType();
          while (!this.hasPrecedingLineBreak() && this.eat(0)) {
            if (this.match(3)) {
              var _node4 = this.startNodeAtNode(type);
              _node4.elementType = type;
              this.expect(3);
              type = this.finishNode(_node4, "TSArrayType");
            } else {
              var _node5 = this.startNodeAtNode(type);
              _node5.objectType = type;
              _node5.indexType = this.tsParseType();
              this.expect(3);
              type = this.finishNode(_node5, "TSIndexedAccessType");
            }
          }
          return type;
        };
        _proto.tsParseTypeOperator = function tsParseTypeOperator() {
          var node = this.startNode();
          var operator = this.state.value;
          this.next();
          node.operator = operator;
          node.typeAnnotation = this.tsParseTypeOperatorOrHigher();
          if (operator === "readonly") {
            this.tsCheckTypeAnnotationForReadOnly(node);
          }
          return this.finishNode(node, "TSTypeOperator");
        };
        _proto.tsCheckTypeAnnotationForReadOnly = function tsCheckTypeAnnotationForReadOnly(node) {
          switch (node.typeAnnotation.type) {
            case "TSTupleType":
            case "TSArrayType":
              return;
            default:
              this.raise(TSErrors.UnexpectedReadonly, {
                at: node
              });
          }
        };
        _proto.tsParseInferType = function tsParseInferType() {
          var _this5 = this;
          var node = this.startNode();
          this.expectContextual(113);
          var typeParameter = this.startNode();
          typeParameter.name = this.tsParseTypeParameterName();
          typeParameter.constraint = this.tsTryParse(function () {
            return _this5.tsParseConstraintForInferType();
          });
          node.typeParameter = this.finishNode(typeParameter, "TSTypeParameter");
          return this.finishNode(node, "TSInferType");
        };
        _proto.tsParseConstraintForInferType = function tsParseConstraintForInferType() {
          var _this6 = this;
          if (this.eat(81)) {
            var constraint = this.tsInDisallowConditionalTypesContext(function () {
              return _this6.tsParseType();
            });
            if (this.state.inDisallowConditionalTypesContext || !this.match(17)) {
              return constraint;
            }
          }
        };
        _proto.tsParseTypeOperatorOrHigher = function tsParseTypeOperatorOrHigher() {
          var _this7 = this;
          var isTypeOperator = tokenIsTSTypeOperator(this.state.type) && !this.state.containsEsc;
          return isTypeOperator ? this.tsParseTypeOperator() : this.isContextual(113) ? this.tsParseInferType() : this.tsInAllowConditionalTypesContext(function () {
            return _this7.tsParseArrayTypeOrHigher();
          });
        };
        _proto.tsParseUnionOrIntersectionType = function tsParseUnionOrIntersectionType(kind, parseConstituentType, operator) {
          var node = this.startNode();
          var hasLeadingOperator = this.eat(operator);
          var types = [];
          do {
            types.push(parseConstituentType());
          } while (this.eat(operator));
          if (types.length === 1 && !hasLeadingOperator) {
            return types[0];
          }
          node.types = types;
          return this.finishNode(node, kind);
        };
        _proto.tsParseIntersectionTypeOrHigher = function tsParseIntersectionTypeOrHigher() {
          return this.tsParseUnionOrIntersectionType("TSIntersectionType", this.tsParseTypeOperatorOrHigher.bind(this), 45);
        };
        _proto.tsParseUnionTypeOrHigher = function tsParseUnionTypeOrHigher() {
          return this.tsParseUnionOrIntersectionType("TSUnionType", this.tsParseIntersectionTypeOrHigher.bind(this), 43);
        };
        _proto.tsIsStartOfFunctionType = function tsIsStartOfFunctionType() {
          if (this.match(47)) {
            return true;
          }
          return this.match(10) && this.tsLookAhead(this.tsIsUnambiguouslyStartOfFunctionType.bind(this));
        };
        _proto.tsSkipParameterStart = function tsSkipParameterStart() {
          if (tokenIsIdentifier(this.state.type) || this.match(78)) {
            this.next();
            return true;
          }
          if (this.match(5)) {
            var errors = this.state.errors;
            var previousErrorCount = errors.length;
            try {
              this.parseObjectLike(8, true);
              return errors.length === previousErrorCount;
            } catch (_unused) {
              return false;
            }
          }
          if (this.match(0)) {
            this.next();
            var _errors = this.state.errors;
            var _previousErrorCount = _errors.length;
            try {
              _superClass.prototype.parseBindingList.call(this, 3, 93, ParseBindingListFlags.ALLOW_EMPTY);
              return _errors.length === _previousErrorCount;
            } catch (_unused2) {
              return false;
            }
          }
          return false;
        };
        _proto.tsIsUnambiguouslyStartOfFunctionType = function tsIsUnambiguouslyStartOfFunctionType() {
          this.next();
          if (this.match(11) || this.match(21)) {
            return true;
          }
          if (this.tsSkipParameterStart()) {
            if (this.match(14) || this.match(12) || this.match(17) || this.match(29)) {
              return true;
            }
            if (this.match(11)) {
              this.next();
              if (this.match(19)) {
                return true;
              }
            }
          }
          return false;
        };
        _proto.tsParseTypeOrTypePredicateAnnotation = function tsParseTypeOrTypePredicateAnnotation(returnToken) {
          var _this8 = this;
          return this.tsInType(function () {
            var t = _this8.startNode();
            _this8.expect(returnToken);
            var node = _this8.startNode();
            var asserts = !!_this8.tsTryParse(_this8.tsParseTypePredicateAsserts.bind(_this8));
            if (asserts && _this8.match(78)) {
              var thisTypePredicate = _this8.tsParseThisTypeOrThisTypePredicate();
              if (thisTypePredicate.type === "TSThisType") {
                node.parameterName = thisTypePredicate;
                node.asserts = true;
                node.typeAnnotation = null;
                thisTypePredicate = _this8.finishNode(node, "TSTypePredicate");
              } else {
                _this8.resetStartLocationFromNode(thisTypePredicate, node);
                thisTypePredicate.asserts = true;
              }
              t.typeAnnotation = thisTypePredicate;
              return _this8.finishNode(t, "TSTypeAnnotation");
            }
            var typePredicateVariable = _this8.tsIsIdentifier() && _this8.tsTryParse(_this8.tsParseTypePredicatePrefix.bind(_this8));
            if (!typePredicateVariable) {
              if (!asserts) {
                return _this8.tsParseTypeAnnotation(false, t);
              }
              node.parameterName = _this8.parseIdentifier();
              node.asserts = asserts;
              node.typeAnnotation = null;
              t.typeAnnotation = _this8.finishNode(node, "TSTypePredicate");
              return _this8.finishNode(t, "TSTypeAnnotation");
            }
            var type = _this8.tsParseTypeAnnotation(false);
            node.parameterName = typePredicateVariable;
            node.typeAnnotation = type;
            node.asserts = asserts;
            t.typeAnnotation = _this8.finishNode(node, "TSTypePredicate");
            return _this8.finishNode(t, "TSTypeAnnotation");
          });
        };
        _proto.tsTryParseTypeOrTypePredicateAnnotation = function tsTryParseTypeOrTypePredicateAnnotation() {
          if (this.match(14)) {
            return this.tsParseTypeOrTypePredicateAnnotation(14);
          }
        };
        _proto.tsTryParseTypeAnnotation = function tsTryParseTypeAnnotation() {
          if (this.match(14)) {
            return this.tsParseTypeAnnotation();
          }
        };
        _proto.tsTryParseType = function tsTryParseType() {
          return this.tsEatThenParseType(14);
        };
        _proto.tsParseTypePredicatePrefix = function tsParseTypePredicatePrefix() {
          var id = this.parseIdentifier();
          if (this.isContextual(114) && !this.hasPrecedingLineBreak()) {
            this.next();
            return id;
          }
        };
        _proto.tsParseTypePredicateAsserts = function tsParseTypePredicateAsserts() {
          if (this.state.type !== 107) {
            return false;
          }
          var containsEsc = this.state.containsEsc;
          this.next();
          if (!tokenIsIdentifier(this.state.type) && !this.match(78)) {
            return false;
          }
          if (containsEsc) {
            this.raise(Errors.InvalidEscapedReservedWord, {
              at: this.state.lastTokStartLoc,
              reservedWord: "asserts"
            });
          }
          return true;
        };
        _proto.tsParseTypeAnnotation = function tsParseTypeAnnotation(eatColon, t) {
          var _this9 = this;
          if (eatColon === void 0) {
            eatColon = true;
          }
          if (t === void 0) {
            t = this.startNode();
          }
          this.tsInType(function () {
            if (eatColon) _this9.expect(14);
            t.typeAnnotation = _this9.tsParseType();
          });
          return this.finishNode(t, "TSTypeAnnotation");
        };
        _proto.tsParseType = function tsParseType() {
          var _this10 = this;
          assert$2(this.state.inType);
          var type = this.tsParseNonConditionalType();
          if (this.state.inDisallowConditionalTypesContext || this.hasPrecedingLineBreak() || !this.eat(81)) {
            return type;
          }
          var node = this.startNodeAtNode(type);
          node.checkType = type;
          node.extendsType = this.tsInDisallowConditionalTypesContext(function () {
            return _this10.tsParseNonConditionalType();
          });
          this.expect(17);
          node.trueType = this.tsInAllowConditionalTypesContext(function () {
            return _this10.tsParseType();
          });
          this.expect(14);
          node.falseType = this.tsInAllowConditionalTypesContext(function () {
            return _this10.tsParseType();
          });
          return this.finishNode(node, "TSConditionalType");
        };
        _proto.isAbstractConstructorSignature = function isAbstractConstructorSignature() {
          return this.isContextual(122) && this.lookahead().type === 77;
        };
        _proto.tsParseNonConditionalType = function tsParseNonConditionalType() {
          if (this.tsIsStartOfFunctionType()) {
            return this.tsParseFunctionOrConstructorType("TSFunctionType");
          }
          if (this.match(77)) {
            return this.tsParseFunctionOrConstructorType("TSConstructorType");
          } else if (this.isAbstractConstructorSignature()) {
            return this.tsParseFunctionOrConstructorType("TSConstructorType", true);
          }
          return this.tsParseUnionTypeOrHigher();
        };
        _proto.tsParseTypeAssertion = function tsParseTypeAssertion() {
          var _this11 = this;
          if (this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) {
            this.raise(TSErrors.ReservedTypeAssertion, {
              at: this.state.startLoc
            });
          }
          var node = this.startNode();
          node.typeAnnotation = this.tsInType(function () {
            _this11.next();
            return _this11.match(75) ? _this11.tsParseTypeReference() : _this11.tsParseType();
          });
          this.expect(48);
          node.expression = this.parseMaybeUnary();
          return this.finishNode(node, "TSTypeAssertion");
        };
        _proto.tsParseHeritageClause = function tsParseHeritageClause(token) {
          var _this12 = this;
          var originalStartLoc = this.state.startLoc;
          var delimitedList = this.tsParseDelimitedList("HeritageClauseElement", function () {
            var node = _this12.startNode();
            node.expression = _this12.tsParseEntityName();
            if (_this12.match(47)) {
              node.typeParameters = _this12.tsParseTypeArguments();
            }
            return _this12.finishNode(node, "TSExpressionWithTypeArguments");
          });
          if (!delimitedList.length) {
            this.raise(TSErrors.EmptyHeritageClauseType, {
              at: originalStartLoc,
              token: token
            });
          }
          return delimitedList;
        };
        _proto.tsParseInterfaceDeclaration = function tsParseInterfaceDeclaration(node, properties) {
          if (properties === void 0) {
            properties = {};
          }
          if (this.hasFollowingLineBreak()) return null;
          this.expectContextual(127);
          if (properties.declare) node.declare = true;
          if (tokenIsIdentifier(this.state.type)) {
            node.id = this.parseIdentifier();
            this.checkIdentifier(node.id, BIND_TS_INTERFACE);
          } else {
            node.id = null;
            this.raise(TSErrors.MissingInterfaceName, {
              at: this.state.startLoc
            });
          }
          node.typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers);
          if (this.eat(81)) {
            node["extends"] = this.tsParseHeritageClause("extends");
          }
          var body = this.startNode();
          body.body = this.tsInType(this.tsParseObjectTypeMembers.bind(this));
          node.body = this.finishNode(body, "TSInterfaceBody");
          return this.finishNode(node, "TSInterfaceDeclaration");
        };
        _proto.tsParseTypeAliasDeclaration = function tsParseTypeAliasDeclaration(node) {
          var _this13 = this;
          node.id = this.parseIdentifier();
          this.checkIdentifier(node.id, BIND_TS_TYPE);
          node.typeAnnotation = this.tsInType(function () {
            node.typeParameters = _this13.tsTryParseTypeParameters(_this13.tsParseInOutModifiers);
            _this13.expect(29);
            if (_this13.isContextual(112) && _this13.lookahead().type !== 16) {
              var _node6 = _this13.startNode();
              _this13.next();
              return _this13.finishNode(_node6, "TSIntrinsicKeyword");
            }
            return _this13.tsParseType();
          });
          this.semicolon();
          return this.finishNode(node, "TSTypeAliasDeclaration");
        };
        _proto.tsInNoContext = function tsInNoContext(cb) {
          var oldContext = this.state.context;
          this.state.context = [oldContext[0]];
          try {
            return cb();
          } finally {
            this.state.context = oldContext;
          }
        };
        _proto.tsInType = function tsInType(cb) {
          var oldInType = this.state.inType;
          this.state.inType = true;
          try {
            return cb();
          } finally {
            this.state.inType = oldInType;
          }
        };
        _proto.tsInDisallowConditionalTypesContext = function tsInDisallowConditionalTypesContext(cb) {
          var oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext;
          this.state.inDisallowConditionalTypesContext = true;
          try {
            return cb();
          } finally {
            this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext;
          }
        };
        _proto.tsInAllowConditionalTypesContext = function tsInAllowConditionalTypesContext(cb) {
          var oldInDisallowConditionalTypesContext = this.state.inDisallowConditionalTypesContext;
          this.state.inDisallowConditionalTypesContext = false;
          try {
            return cb();
          } finally {
            this.state.inDisallowConditionalTypesContext = oldInDisallowConditionalTypesContext;
          }
        };
        _proto.tsEatThenParseType = function tsEatThenParseType(token) {
          if (this.match(token)) {
            return this.tsNextThenParseType();
          }
        };
        _proto.tsExpectThenParseType = function tsExpectThenParseType(token) {
          var _this14 = this;
          return this.tsInType(function () {
            _this14.expect(token);
            return _this14.tsParseType();
          });
        };
        _proto.tsNextThenParseType = function tsNextThenParseType() {
          var _this15 = this;
          return this.tsInType(function () {
            _this15.next();
            return _this15.tsParseType();
          });
        };
        _proto.tsParseEnumMember = function tsParseEnumMember() {
          var node = this.startNode();
          node.id = this.match(131) ? _superClass.prototype.parseStringLiteral.call(this, this.state.value) : this.parseIdentifier(true);
          if (this.eat(29)) {
            node.initializer = _superClass.prototype.parseMaybeAssignAllowIn.call(this);
          }
          return this.finishNode(node, "TSEnumMember");
        };
        _proto.tsParseEnumDeclaration = function tsParseEnumDeclaration(node, properties) {
          if (properties === void 0) {
            properties = {};
          }
          if (properties["const"]) node["const"] = true;
          if (properties.declare) node.declare = true;
          this.expectContextual(124);
          node.id = this.parseIdentifier();
          this.checkIdentifier(node.id, node["const"] ? BIND_TS_CONST_ENUM : BIND_TS_ENUM);
          this.expect(5);
          node.members = this.tsParseDelimitedList("EnumMembers", this.tsParseEnumMember.bind(this));
          this.expect(8);
          return this.finishNode(node, "TSEnumDeclaration");
        };
        _proto.tsParseModuleBlock = function tsParseModuleBlock() {
          var node = this.startNode();
          this.scope.enter(SCOPE_OTHER);
          this.expect(5);
          _superClass.prototype.parseBlockOrModuleBlockBody.call(this, node.body = [], undefined, true, 8);
          this.scope.exit();
          return this.finishNode(node, "TSModuleBlock");
        };
        _proto.tsParseModuleOrNamespaceDeclaration = function tsParseModuleOrNamespaceDeclaration(node, nested) {
          if (nested === void 0) {
            nested = false;
          }
          node.id = this.parseIdentifier();
          if (!nested) {
            this.checkIdentifier(node.id, BIND_TS_NAMESPACE);
          }
          if (this.eat(16)) {
            var inner = this.startNode();
            this.tsParseModuleOrNamespaceDeclaration(inner, true);
            node.body = inner;
          } else {
            this.scope.enter(SCOPE_TS_MODULE);
            this.prodParam.enter(PARAM);
            node.body = this.tsParseModuleBlock();
            this.prodParam.exit();
            this.scope.exit();
          }
          return this.finishNode(node, "TSModuleDeclaration");
        };
        _proto.tsParseAmbientExternalModuleDeclaration = function tsParseAmbientExternalModuleDeclaration(node) {
          if (this.isContextual(110)) {
            node.global = true;
            node.id = this.parseIdentifier();
          } else if (this.match(131)) {
            node.id = _superClass.prototype.parseStringLiteral.call(this, this.state.value);
          } else {
            this.unexpected();
          }
          if (this.match(5)) {
            this.scope.enter(SCOPE_TS_MODULE);
            this.prodParam.enter(PARAM);
            node.body = this.tsParseModuleBlock();
            this.prodParam.exit();
            this.scope.exit();
          } else {
            this.semicolon();
          }
          return this.finishNode(node, "TSModuleDeclaration");
        };
        _proto.tsParseImportEqualsDeclaration = function tsParseImportEqualsDeclaration(node, isExport) {
          node.isExport = isExport || false;
          node.id = this.parseIdentifier();
          this.checkIdentifier(node.id, BIND_FLAGS_TS_IMPORT);
          this.expect(29);
          var moduleReference = this.tsParseModuleReference();
          if (node.importKind === "type" && moduleReference.type !== "TSExternalModuleReference") {
            this.raise(TSErrors.ImportAliasHasImportType, {
              at: moduleReference
            });
          }
          node.moduleReference = moduleReference;
          this.semicolon();
          return this.finishNode(node, "TSImportEqualsDeclaration");
        };
        _proto.tsIsExternalModuleReference = function tsIsExternalModuleReference() {
          return this.isContextual(117) && this.lookaheadCharCode() === 40;
        };
        _proto.tsParseModuleReference = function tsParseModuleReference() {
          return this.tsIsExternalModuleReference() ? this.tsParseExternalModuleReference() : this.tsParseEntityName(false);
        };
        _proto.tsParseExternalModuleReference = function tsParseExternalModuleReference() {
          var node = this.startNode();
          this.expectContextual(117);
          this.expect(10);
          if (!this.match(131)) {
            this.unexpected();
          }
          node.expression = _superClass.prototype.parseExprAtom.call(this);
          this.expect(11);
          return this.finishNode(node, "TSExternalModuleReference");
        };
        _proto.tsLookAhead = function tsLookAhead(f) {
          var state = this.state.clone();
          var res = f();
          this.state = state;
          return res;
        };
        _proto.tsTryParseAndCatch = function tsTryParseAndCatch(f) {
          var result = this.tryParse(function (abort) {
            return f() || abort();
          });
          if (result.aborted || !result.node) return;
          if (result.error) this.state = result.failState;
          return result.node;
        };
        _proto.tsTryParse = function tsTryParse(f) {
          var state = this.state.clone();
          var result = f();
          if (result !== undefined && result !== false) {
            return result;
          }
          this.state = state;
        };
        _proto.tsTryParseDeclare = function tsTryParseDeclare(nany) {
          var _this16 = this;
          if (this.isLineTerminator()) {
            return;
          }
          var startType = this.state.type;
          var kind;
          if (this.isContextual(99)) {
            startType = 74;
            kind = "let";
          }
          return this.tsInAmbientContext(function () {
            switch (startType) {
              case 68:
                nany.declare = true;
                return _superClass.prototype.parseFunctionStatement.call(_this16, nany, false, false);
              case 80:
                nany.declare = true;
                return _this16.parseClass(nany, true, false);
              case 124:
                return _this16.tsParseEnumDeclaration(nany, {
                  declare: true
                });
              case 110:
                return _this16.tsParseAmbientExternalModuleDeclaration(nany);
              case 75:
              case 74:
                if (!_this16.match(75) || !_this16.isLookaheadContextual("enum")) {
                  nany.declare = true;
                  return _this16.parseVarStatement(nany, kind || _this16.state.value, true);
                }
                _this16.expect(75);
                return _this16.tsParseEnumDeclaration(nany, {
                  "const": true,
                  declare: true
                });
              case 127:
                {
                  var result = _this16.tsParseInterfaceDeclaration(nany, {
                    declare: true
                  });
                  if (result) return result;
                }
              default:
                if (tokenIsIdentifier(startType)) {
                  return _this16.tsParseDeclaration(nany, _this16.state.value, true, null);
                }
            }
          });
        };
        _proto.tsTryParseExportDeclaration = function tsTryParseExportDeclaration() {
          return this.tsParseDeclaration(this.startNode(), this.state.value, true, null);
        };
        _proto.tsParseExpressionStatement = function tsParseExpressionStatement(node, expr, decorators) {
          switch (expr.name) {
            case "declare":
              {
                var declaration = this.tsTryParseDeclare(node);
                if (declaration) {
                  declaration.declare = true;
                }
                return declaration;
              }
            case "global":
              if (this.match(5)) {
                this.scope.enter(SCOPE_TS_MODULE);
                this.prodParam.enter(PARAM);
                var mod = node;
                mod.global = true;
                mod.id = expr;
                mod.body = this.tsParseModuleBlock();
                this.scope.exit();
                this.prodParam.exit();
                return this.finishNode(mod, "TSModuleDeclaration");
              }
              break;
            default:
              return this.tsParseDeclaration(node, expr.name, false, decorators);
          }
        };
        _proto.tsParseDeclaration = function tsParseDeclaration(node, value, next, decorators) {
          switch (value) {
            case "abstract":
              if (this.tsCheckLineTerminator(next) && (this.match(80) || tokenIsIdentifier(this.state.type))) {
                return this.tsParseAbstractDeclaration(node, decorators);
              }
              break;
            case "module":
              if (this.tsCheckLineTerminator(next)) {
                if (this.match(131)) {
                  return this.tsParseAmbientExternalModuleDeclaration(node);
                } else if (tokenIsIdentifier(this.state.type)) {
                  return this.tsParseModuleOrNamespaceDeclaration(node);
                }
              }
              break;
            case "namespace":
              if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) {
                return this.tsParseModuleOrNamespaceDeclaration(node);
              }
              break;
            case "type":
              if (this.tsCheckLineTerminator(next) && tokenIsIdentifier(this.state.type)) {
                return this.tsParseTypeAliasDeclaration(node);
              }
              break;
          }
        };
        _proto.tsCheckLineTerminator = function tsCheckLineTerminator(next) {
          if (next) {
            if (this.hasFollowingLineBreak()) return false;
            this.next();
            return true;
          }
          return !this.isLineTerminator();
        };
        _proto.tsTryParseGenericAsyncArrowFunction = function tsTryParseGenericAsyncArrowFunction(startLoc) {
          var _this17 = this;
          if (!this.match(47)) return;
          var oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
          this.state.maybeInArrowParameters = true;
          var res = this.tsTryParseAndCatch(function () {
            var node = _this17.startNodeAt(startLoc);
            node.typeParameters = _this17.tsParseTypeParameters(_this17.tsParseConstModifier);
            _superClass.prototype.parseFunctionParams.call(_this17, node);
            node.returnType = _this17.tsTryParseTypeOrTypePredicateAnnotation();
            _this17.expect(19);
            return node;
          });
          this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
          if (!res) return;
          return _superClass.prototype.parseArrowExpression.call(this, res, null, true);
        };
        _proto.tsParseTypeArgumentsInExpression = function tsParseTypeArgumentsInExpression() {
          if (this.reScan_lt() !== 47) return;
          return this.tsParseTypeArguments();
        };
        _proto.tsParseTypeArguments = function tsParseTypeArguments() {
          var _this18 = this;
          var node = this.startNode();
          node.params = this.tsInType(function () {
            return _this18.tsInNoContext(function () {
              _this18.expect(47);
              return _this18.tsParseDelimitedList("TypeParametersOrArguments", _this18.tsParseType.bind(_this18));
            });
          });
          if (node.params.length === 0) {
            this.raise(TSErrors.EmptyTypeArguments, {
              at: node
            });
          }
          this.expect(48);
          return this.finishNode(node, "TSTypeParameterInstantiation");
        };
        _proto.tsIsDeclarationStart = function tsIsDeclarationStart() {
          return tokenIsTSDeclarationStart(this.state.type);
        };
        _proto.isExportDefaultSpecifier = function isExportDefaultSpecifier() {
          if (this.tsIsDeclarationStart()) return false;
          return _superClass.prototype.isExportDefaultSpecifier.call(this);
        };
        _proto.parseAssignableListItem = function parseAssignableListItem(flags, decorators) {
          var startLoc = this.state.startLoc;
          var modified = {};
          this.tsParseModifiers({
            allowedModifiers: ["public", "private", "protected", "override", "readonly"]
          }, modified);
          var accessibility = modified.accessibility;
          var override = modified.override;
          var readonly = modified.readonly;
          if (!(flags & ParseBindingListFlags.IS_CONSTRUCTOR_PARAMS) && (accessibility || readonly || override)) {
            this.raise(TSErrors.UnexpectedParameterModifier, {
              at: startLoc
            });
          }
          var left = this.parseMaybeDefault();
          this.parseAssignableListItemTypes(left, flags);
          var elt = this.parseMaybeDefault(left.loc.start, left);
          if (accessibility || readonly || override) {
            var pp = this.startNodeAt(startLoc);
            if (decorators.length) {
              pp.decorators = decorators;
            }
            if (accessibility) pp.accessibility = accessibility;
            if (readonly) pp.readonly = readonly;
            if (override) pp.override = override;
            if (elt.type !== "Identifier" && elt.type !== "AssignmentPattern") {
              this.raise(TSErrors.UnsupportedParameterPropertyKind, {
                at: pp
              });
            }
            pp.parameter = elt;
            return this.finishNode(pp, "TSParameterProperty");
          }
          if (decorators.length) {
            left.decorators = decorators;
          }
          return elt;
        };
        _proto.isSimpleParameter = function isSimpleParameter(node) {
          return node.type === "TSParameterProperty" && _superClass.prototype.isSimpleParameter.call(this, node.parameter) || _superClass.prototype.isSimpleParameter.call(this, node);
        };
        _proto.tsDisallowOptionalPattern = function tsDisallowOptionalPattern(node) {
          for (var _i4 = 0, _node$params2 = node.params; _i4 < _node$params2.length; _i4++) {
            var param = _node$params2[_i4];
            if (param.type !== "Identifier" && param.optional && !this.state.isAmbientContext) {
              this.raise(TSErrors.PatternIsOptional, {
                at: param
              });
            }
          }
        };
        _proto.setArrowFunctionParameters = function setArrowFunctionParameters(node, params, trailingCommaLoc) {
          _superClass.prototype.setArrowFunctionParameters.call(this, node, params, trailingCommaLoc);
          this.tsDisallowOptionalPattern(node);
        };
        _proto.parseFunctionBodyAndFinish = function parseFunctionBodyAndFinish(node, type, isMethod) {
          if (isMethod === void 0) {
            isMethod = false;
          }
          if (this.match(14)) {
            node.returnType = this.tsParseTypeOrTypePredicateAnnotation(14);
          }
          var bodilessType = type === "FunctionDeclaration" ? "TSDeclareFunction" : type === "ClassMethod" || type === "ClassPrivateMethod" ? "TSDeclareMethod" : undefined;
          if (bodilessType && !this.match(5) && this.isLineTerminator()) {
            return this.finishNode(node, bodilessType);
          }
          if (bodilessType === "TSDeclareFunction" && this.state.isAmbientContext) {
            this.raise(TSErrors.DeclareFunctionHasImplementation, {
              at: node
            });
            if (node.declare) {
              return _superClass.prototype.parseFunctionBodyAndFinish.call(this, node, bodilessType, isMethod);
            }
          }
          this.tsDisallowOptionalPattern(node);
          return _superClass.prototype.parseFunctionBodyAndFinish.call(this, node, type, isMethod);
        };
        _proto.registerFunctionStatementId = function registerFunctionStatementId(node) {
          if (!node.body && node.id) {
            this.checkIdentifier(node.id, BIND_TS_AMBIENT);
          } else {
            _superClass.prototype.registerFunctionStatementId.call(this, node);
          }
        };
        _proto.tsCheckForInvalidTypeCasts = function tsCheckForInvalidTypeCasts(items) {
          var _this19 = this;
          items.forEach(function (node) {
            if ((node == null ? void 0 : node.type) === "TSTypeCastExpression") {
              _this19.raise(TSErrors.UnexpectedTypeAnnotation, {
                at: node.typeAnnotation
              });
            }
          });
        };
        _proto.toReferencedList = function toReferencedList(exprList, isInParens) {
          this.tsCheckForInvalidTypeCasts(exprList);
          return exprList;
        };
        _proto.parseArrayLike = function parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) {
          var node = _superClass.prototype.parseArrayLike.call(this, close, canBePattern, isTuple, refExpressionErrors);
          if (node.type === "ArrayExpression") {
            this.tsCheckForInvalidTypeCasts(node.elements);
          }
          return node;
        };
        _proto.parseSubscript = function parseSubscript(base, startLoc, noCalls, state) {
          var _this20 = this;
          if (!this.hasPrecedingLineBreak() && this.match(35)) {
            this.state.canStartJSXElement = false;
            this.next();
            var nonNullExpression = this.startNodeAt(startLoc);
            nonNullExpression.expression = base;
            return this.finishNode(nonNullExpression, "TSNonNullExpression");
          }
          var isOptionalCall = false;
          if (this.match(18) && this.lookaheadCharCode() === 60) {
            if (noCalls) {
              state.stop = true;
              return base;
            }
            state.optionalChainMember = isOptionalCall = true;
            this.next();
          }
          if (this.match(47) || this.match(51)) {
            var missingParenErrorLoc;
            var result = this.tsTryParseAndCatch(function () {
              if (!noCalls && _this20.atPossibleAsyncArrow(base)) {
                var asyncArrowFn = _this20.tsTryParseGenericAsyncArrowFunction(startLoc);
                if (asyncArrowFn) {
                  return asyncArrowFn;
                }
              }
              var typeArguments = _this20.tsParseTypeArgumentsInExpression();
              if (!typeArguments) return;
              if (isOptionalCall && !_this20.match(10)) {
                missingParenErrorLoc = _this20.state.curPosition();
                return;
              }
              if (tokenIsTemplate(_this20.state.type)) {
                var _result = _superClass.prototype.parseTaggedTemplateExpression.call(_this20, base, startLoc, state);
                _result.typeParameters = typeArguments;
                return _result;
              }
              if (!noCalls && _this20.eat(10)) {
                var _node7 = _this20.startNodeAt(startLoc);
                _node7.callee = base;
                _node7.arguments = _this20.parseCallExpressionArguments(11, false);
                _this20.tsCheckForInvalidTypeCasts(_node7.arguments);
                _node7.typeParameters = typeArguments;
                if (state.optionalChainMember) {
                  _node7.optional = isOptionalCall;
                }
                return _this20.finishCallExpression(_node7, state.optionalChainMember);
              }
              var tokenType = _this20.state.type;
              if (tokenType === 48 || tokenType === 52 || tokenType !== 10 && tokenCanStartExpression(tokenType) && !_this20.hasPrecedingLineBreak()) {
                return;
              }
              var node = _this20.startNodeAt(startLoc);
              node.expression = base;
              node.typeParameters = typeArguments;
              return _this20.finishNode(node, "TSInstantiationExpression");
            });
            if (missingParenErrorLoc) {
              this.unexpected(missingParenErrorLoc, 10);
            }
            if (result) {
              if (result.type === "TSInstantiationExpression" && (this.match(16) || this.match(18) && this.lookaheadCharCode() !== 40)) {
                this.raise(TSErrors.InvalidPropertyAccessAfterInstantiationExpression, {
                  at: this.state.startLoc
                });
              }
              return result;
            }
          }
          return _superClass.prototype.parseSubscript.call(this, base, startLoc, noCalls, state);
        };
        _proto.parseNewCallee = function parseNewCallee(node) {
          var _callee$extra;
          _superClass.prototype.parseNewCallee.call(this, node);
          var callee = node.callee;
          if (callee.type === "TSInstantiationExpression" && !((_callee$extra = callee.extra) != null && _callee$extra.parenthesized)) {
            node.typeParameters = callee.typeParameters;
            node.callee = callee.expression;
          }
        };
        _proto.parseExprOp = function parseExprOp(left, leftStartLoc, minPrec) {
          var _this21 = this;
          var isSatisfies;
          if (tokenOperatorPrecedence(58) > minPrec && !this.hasPrecedingLineBreak() && (this.isContextual(93) || (isSatisfies = this.isContextual(118)))) {
            var _node8 = this.startNodeAt(leftStartLoc);
            _node8.expression = left;
            _node8.typeAnnotation = this.tsInType(function () {
              _this21.next();
              if (_this21.match(75)) {
                if (isSatisfies) {
                  _this21.raise(Errors.UnexpectedKeyword, {
                    at: _this21.state.startLoc,
                    keyword: "const"
                  });
                }
                return _this21.tsParseTypeReference();
              }
              return _this21.tsParseType();
            });
            this.finishNode(_node8, isSatisfies ? "TSSatisfiesExpression" : "TSAsExpression");
            this.reScan_lt_gt();
            return this.parseExprOp(_node8, leftStartLoc, minPrec);
          }
          return _superClass.prototype.parseExprOp.call(this, left, leftStartLoc, minPrec);
        };
        _proto.checkReservedWord = function checkReservedWord(word, startLoc, checkKeywords, isBinding) {
          if (!this.state.isAmbientContext) {
            _superClass.prototype.checkReservedWord.call(this, word, startLoc, checkKeywords, isBinding);
          }
        };
        _proto.checkImportReflection = function checkImportReflection(node) {
          _superClass.prototype.checkImportReflection.call(this, node);
          if (node.module && node.importKind !== "value") {
            this.raise(TSErrors.ImportReflectionHasImportType, {
              at: node.specifiers[0].loc.start
            });
          }
        };
        _proto.checkDuplicateExports = function checkDuplicateExports() {};
        _proto.parseImport = function parseImport(node) {
          node.importKind = "value";
          if (tokenIsIdentifier(this.state.type) || this.match(55) || this.match(5)) {
            var ahead = this.lookahead();
            if (this.isContextual(128) && ahead.type !== 12 && ahead.type !== 97 && ahead.type !== 29) {
              node.importKind = "type";
              this.next();
              ahead = this.lookahead();
            }
            if (tokenIsIdentifier(this.state.type) && ahead.type === 29) {
              return this.tsParseImportEqualsDeclaration(node);
            }
          }
          var importNode = _superClass.prototype.parseImport.call(this, node);
          if (importNode.importKind === "type" && importNode.specifiers.length > 1 && importNode.specifiers[0].type === "ImportDefaultSpecifier") {
            this.raise(TSErrors.TypeImportCannotSpecifyDefaultAndNamed, {
              at: importNode
            });
          }
          return importNode;
        };
        _proto.parseExport = function parseExport(node, decorators) {
          if (this.match(83)) {
            this.next();
            if (this.isContextual(128) && this.lookaheadCharCode() !== 61) {
              node.importKind = "type";
              this.next();
            } else {
              node.importKind = "value";
            }
            return this.tsParseImportEqualsDeclaration(node, true);
          } else if (this.eat(29)) {
            var assign = node;
            assign.expression = _superClass.prototype.parseExpression.call(this);
            this.semicolon();
            return this.finishNode(assign, "TSExportAssignment");
          } else if (this.eatContextual(93)) {
            var decl = node;
            this.expectContextual(126);
            decl.id = this.parseIdentifier();
            this.semicolon();
            return this.finishNode(decl, "TSNamespaceExportDeclaration");
          } else {
            node.exportKind = "value";
            if (this.isContextual(128)) {
              var ch = this.lookaheadCharCode();
              if (ch === 123 || ch === 42) {
                this.next();
                node.exportKind = "type";
              }
            }
            return _superClass.prototype.parseExport.call(this, node, decorators);
          }
        };
        _proto.isAbstractClass = function isAbstractClass() {
          return this.isContextual(122) && this.lookahead().type === 80;
        };
        _proto.parseExportDefaultExpression = function parseExportDefaultExpression() {
          if (this.isAbstractClass()) {
            var cls = this.startNode();
            this.next();
            cls["abstract"] = true;
            return this.parseClass(cls, true, true);
          }
          if (this.match(127)) {
            var result = this.tsParseInterfaceDeclaration(this.startNode());
            if (result) return result;
          }
          return _superClass.prototype.parseExportDefaultExpression.call(this);
        };
        _proto.parseVarStatement = function parseVarStatement(node, kind, allowMissingInitializer) {
          if (allowMissingInitializer === void 0) {
            allowMissingInitializer = false;
          }
          var isAmbientContext = this.state.isAmbientContext;
          var declaration = _superClass.prototype.parseVarStatement.call(this, node, kind, allowMissingInitializer || isAmbientContext);
          if (!isAmbientContext) return declaration;
          for (var _i6 = 0, _declaration$declarat2 = declaration.declarations; _i6 < _declaration$declarat2.length; _i6++) {
            var _declaration$declarat3 = _declaration$declarat2[_i6],
              id = _declaration$declarat3.id,
              init = _declaration$declarat3.init;
            if (!init) continue;
            if (kind !== "const" || !!id.typeAnnotation) {
              this.raise(TSErrors.InitializerNotAllowedInAmbientContext, {
                at: init
              });
            } else if (!isValidAmbientConstInitializer(init, this.hasPlugin("estree"))) {
              this.raise(TSErrors.ConstInitiailizerMustBeStringOrNumericLiteralOrLiteralEnumReference, {
                at: init
              });
            }
          }
          return declaration;
        };
        _proto.parseStatementContent = function parseStatementContent(flags, decorators) {
          if (this.match(75) && this.isLookaheadContextual("enum")) {
            var _node9 = this.startNode();
            this.expect(75);
            return this.tsParseEnumDeclaration(_node9, {
              "const": true
            });
          }
          if (this.isContextual(124)) {
            return this.tsParseEnumDeclaration(this.startNode());
          }
          if (this.isContextual(127)) {
            var result = this.tsParseInterfaceDeclaration(this.startNode());
            if (result) return result;
          }
          return _superClass.prototype.parseStatementContent.call(this, flags, decorators);
        };
        _proto.parseAccessModifier = function parseAccessModifier() {
          return this.tsParseModifier(["public", "protected", "private"]);
        };
        _proto.tsHasSomeModifiers = function tsHasSomeModifiers(member, modifiers) {
          return modifiers.some(function (modifier) {
            if (tsIsAccessModifier(modifier)) {
              return member.accessibility === modifier;
            }
            return !!member[modifier];
          });
        };
        _proto.tsIsStartOfStaticBlocks = function tsIsStartOfStaticBlocks() {
          return this.isContextual(104) && this.lookaheadCharCode() === 123;
        };
        _proto.parseClassMember = function parseClassMember(classBody, member, state) {
          var _this22 = this;
          var modifiers = ["declare", "private", "public", "protected", "override", "abstract", "readonly", "static"];
          this.tsParseModifiers({
            allowedModifiers: modifiers,
            disallowedModifiers: ["in", "out"],
            stopOnStartOfClassStaticBlock: true,
            errorTemplate: TSErrors.InvalidModifierOnTypeParameterPositions
          }, member);
          var callParseClassMemberWithIsStatic = function callParseClassMemberWithIsStatic() {
            if (_this22.tsIsStartOfStaticBlocks()) {
              _this22.next();
              _this22.next();
              if (_this22.tsHasSomeModifiers(member, modifiers)) {
                _this22.raise(TSErrors.StaticBlockCannotHaveModifier, {
                  at: _this22.state.curPosition()
                });
              }
              _superClass.prototype.parseClassStaticBlock.call(_this22, classBody, member);
            } else {
              _this22.parseClassMemberWithIsStatic(classBody, member, state, !!member["static"]);
            }
          };
          if (member.declare) {
            this.tsInAmbientContext(callParseClassMemberWithIsStatic);
          } else {
            callParseClassMemberWithIsStatic();
          }
        };
        _proto.parseClassMemberWithIsStatic = function parseClassMemberWithIsStatic(classBody, member, state, isStatic) {
          var idx = this.tsTryParseIndexSignature(member);
          if (idx) {
            classBody.body.push(idx);
            if (member["abstract"]) {
              this.raise(TSErrors.IndexSignatureHasAbstract, {
                at: member
              });
            }
            if (member.accessibility) {
              this.raise(TSErrors.IndexSignatureHasAccessibility, {
                at: member,
                modifier: member.accessibility
              });
            }
            if (member.declare) {
              this.raise(TSErrors.IndexSignatureHasDeclare, {
                at: member
              });
            }
            if (member.override) {
              this.raise(TSErrors.IndexSignatureHasOverride, {
                at: member
              });
            }
            return;
          }
          if (!this.state.inAbstractClass && member["abstract"]) {
            this.raise(TSErrors.NonAbstractClassHasAbstractMethod, {
              at: member
            });
          }
          if (member.override) {
            if (!state.hadSuperClass) {
              this.raise(TSErrors.OverrideNotInSubClass, {
                at: member
              });
            }
          }
          _superClass.prototype.parseClassMemberWithIsStatic.call(this, classBody, member, state, isStatic);
        };
        _proto.parsePostMemberNameModifiers = function parsePostMemberNameModifiers(methodOrProp) {
          var optional = this.eat(17);
          if (optional) methodOrProp.optional = true;
          if (methodOrProp.readonly && this.match(10)) {
            this.raise(TSErrors.ClassMethodHasReadonly, {
              at: methodOrProp
            });
          }
          if (methodOrProp.declare && this.match(10)) {
            this.raise(TSErrors.ClassMethodHasDeclare, {
              at: methodOrProp
            });
          }
        };
        _proto.parseExpressionStatement = function parseExpressionStatement(node, expr, decorators) {
          var decl = expr.type === "Identifier" ? this.tsParseExpressionStatement(node, expr, decorators) : undefined;
          return decl || _superClass.prototype.parseExpressionStatement.call(this, node, expr, decorators);
        };
        _proto.shouldParseExportDeclaration = function shouldParseExportDeclaration() {
          if (this.tsIsDeclarationStart()) return true;
          return _superClass.prototype.shouldParseExportDeclaration.call(this);
        };
        _proto.parseConditional = function parseConditional(expr, startLoc, refExpressionErrors) {
          var _this23 = this;
          if (!this.state.maybeInArrowParameters || !this.match(17)) {
            return _superClass.prototype.parseConditional.call(this, expr, startLoc, refExpressionErrors);
          }
          var result = this.tryParse(function () {
            return _superClass.prototype.parseConditional.call(_this23, expr, startLoc);
          });
          if (!result.node) {
            if (result.error) {
              _superClass.prototype.setOptionalParametersError.call(this, refExpressionErrors, result.error);
            }
            return expr;
          }
          if (result.error) this.state = result.failState;
          return result.node;
        };
        _proto.parseParenItem = function parseParenItem(node, startLoc) {
          node = _superClass.prototype.parseParenItem.call(this, node, startLoc);
          if (this.eat(17)) {
            node.optional = true;
            this.resetEndLocation(node);
          }
          if (this.match(14)) {
            var typeCastNode = this.startNodeAt(startLoc);
            typeCastNode.expression = node;
            typeCastNode.typeAnnotation = this.tsParseTypeAnnotation();
            return this.finishNode(typeCastNode, "TSTypeCastExpression");
          }
          return node;
        };
        _proto.parseExportDeclaration = function parseExportDeclaration(node) {
          var _this24 = this;
          if (!this.state.isAmbientContext && this.isContextual(123)) {
            return this.tsInAmbientContext(function () {
              return _this24.parseExportDeclaration(node);
            });
          }
          var startLoc = this.state.startLoc;
          var isDeclare = this.eatContextual(123);
          if (isDeclare && (this.isContextual(123) || !this.shouldParseExportDeclaration())) {
            throw this.raise(TSErrors.ExpectedAmbientAfterExportDeclare, {
              at: this.state.startLoc
            });
          }
          var isIdentifier = tokenIsIdentifier(this.state.type);
          var declaration = isIdentifier && this.tsTryParseExportDeclaration() || _superClass.prototype.parseExportDeclaration.call(this, node);
          if (!declaration) return null;
          if (declaration.type === "TSInterfaceDeclaration" || declaration.type === "TSTypeAliasDeclaration" || isDeclare) {
            node.exportKind = "type";
          }
          if (isDeclare) {
            this.resetStartLocation(declaration, startLoc);
            declaration.declare = true;
          }
          return declaration;
        };
        _proto.parseClassId = function parseClassId(node, isStatement, optionalId, bindingType) {
          if ((!isStatement || optionalId) && this.isContextual(111)) {
            return;
          }
          _superClass.prototype.parseClassId.call(this, node, isStatement, optionalId, node.declare ? BIND_TS_AMBIENT : BIND_CLASS);
          var typeParameters = this.tsTryParseTypeParameters(this.tsParseInOutConstModifiers);
          if (typeParameters) node.typeParameters = typeParameters;
        };
        _proto.parseClassPropertyAnnotation = function parseClassPropertyAnnotation(node) {
          if (!node.optional) {
            if (this.eat(35)) {
              node.definite = true;
            } else if (this.eat(17)) {
              node.optional = true;
            }
          }
          var type = this.tsTryParseTypeAnnotation();
          if (type) node.typeAnnotation = type;
        };
        _proto.parseClassProperty = function parseClassProperty(node) {
          this.parseClassPropertyAnnotation(node);
          if (this.state.isAmbientContext && !(node.readonly && !node.typeAnnotation) && this.match(29)) {
            this.raise(TSErrors.DeclareClassFieldHasInitializer, {
              at: this.state.startLoc
            });
          }
          if (node["abstract"] && this.match(29)) {
            var key = node.key;
            this.raise(TSErrors.AbstractPropertyHasInitializer, {
              at: this.state.startLoc,
              propertyName: key.type === "Identifier" && !node.computed ? key.name : "[" + this.input.slice(key.start, key.end) + "]"
            });
          }
          return _superClass.prototype.parseClassProperty.call(this, node);
        };
        _proto.parseClassPrivateProperty = function parseClassPrivateProperty(node) {
          if (node["abstract"]) {
            this.raise(TSErrors.PrivateElementHasAbstract, {
              at: node
            });
          }
          if (node.accessibility) {
            this.raise(TSErrors.PrivateElementHasAccessibility, {
              at: node,
              modifier: node.accessibility
            });
          }
          this.parseClassPropertyAnnotation(node);
          return _superClass.prototype.parseClassPrivateProperty.call(this, node);
        };
        _proto.parseClassAccessorProperty = function parseClassAccessorProperty(node) {
          this.parseClassPropertyAnnotation(node);
          if (node.optional) {
            this.raise(TSErrors.AccessorCannotBeOptional, {
              at: node
            });
          }
          return _superClass.prototype.parseClassAccessorProperty.call(this, node);
        };
        _proto.pushClassMethod = function pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {
          var typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);
          if (typeParameters && isConstructor) {
            this.raise(TSErrors.ConstructorHasTypeParameters, {
              at: typeParameters
            });
          }
          var _method$declare = method.declare,
            declare = _method$declare === void 0 ? false : _method$declare,
            kind = method.kind;
          if (declare && (kind === "get" || kind === "set")) {
            this.raise(TSErrors.DeclareAccessor, {
              at: method,
              kind: kind
            });
          }
          if (typeParameters) method.typeParameters = typeParameters;
          _superClass.prototype.pushClassMethod.call(this, classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper);
        };
        _proto.pushClassPrivateMethod = function pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {
          var typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);
          if (typeParameters) method.typeParameters = typeParameters;
          _superClass.prototype.pushClassPrivateMethod.call(this, classBody, method, isGenerator, isAsync);
        };
        _proto.declareClassPrivateMethodInScope = function declareClassPrivateMethodInScope(node, kind) {
          if (node.type === "TSDeclareMethod") return;
          if (node.type === "MethodDefinition" && !node.value.body) return;
          _superClass.prototype.declareClassPrivateMethodInScope.call(this, node, kind);
        };
        _proto.parseClassSuper = function parseClassSuper(node) {
          _superClass.prototype.parseClassSuper.call(this, node);
          if (node.superClass && (this.match(47) || this.match(51))) {
            node.superTypeParameters = this.tsParseTypeArgumentsInExpression();
          }
          if (this.eatContextual(111)) {
            node["implements"] = this.tsParseHeritageClause("implements");
          }
        };
        _proto.parseObjPropValue = function parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {
          var typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);
          if (typeParameters) prop.typeParameters = typeParameters;
          return _superClass.prototype.parseObjPropValue.call(this, prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors);
        };
        _proto.parseFunctionParams = function parseFunctionParams(node, isConstructor) {
          var typeParameters = this.tsTryParseTypeParameters(this.tsParseConstModifier);
          if (typeParameters) node.typeParameters = typeParameters;
          _superClass.prototype.parseFunctionParams.call(this, node, isConstructor);
        };
        _proto.parseVarId = function parseVarId(decl, kind) {
          _superClass.prototype.parseVarId.call(this, decl, kind);
          if (decl.id.type === "Identifier" && !this.hasPrecedingLineBreak() && this.eat(35)) {
            decl.definite = true;
          }
          var type = this.tsTryParseTypeAnnotation();
          if (type) {
            decl.id.typeAnnotation = type;
            this.resetEndLocation(decl.id);
          }
        };
        _proto.parseAsyncArrowFromCallExpression = function parseAsyncArrowFromCallExpression(node, call) {
          if (this.match(14)) {
            node.returnType = this.tsParseTypeAnnotation();
          }
          return _superClass.prototype.parseAsyncArrowFromCallExpression.call(this, node, call);
        };
        _proto.parseMaybeAssign = function parseMaybeAssign(refExpressionErrors, afterLeftParse) {
          var _this25 = this,
            _jsx,
            _jsx2,
            _typeCast,
            _jsx3,
            _typeCast2;
          var state;
          var jsx;
          var typeCast;
          if (this.hasPlugin("jsx") && (this.match(140) || this.match(47))) {
            state = this.state.clone();
            jsx = this.tryParse(function () {
              return _superClass.prototype.parseMaybeAssign.call(_this25, refExpressionErrors, afterLeftParse);
            }, state);
            if (!jsx.error) return jsx.node;
            var context = this.state.context;
            var currentContext = context[context.length - 1];
            if (currentContext === types.j_oTag || currentContext === types.j_expr) {
              context.pop();
            }
          }
          if (!((_jsx = jsx) != null && _jsx.error) && !this.match(47)) {
            return _superClass.prototype.parseMaybeAssign.call(this, refExpressionErrors, afterLeftParse);
          }
          if (!state || state === this.state) state = this.state.clone();
          var typeParameters;
          var arrow = this.tryParse(function (abort) {
            var _expr$extra, _typeParameters;
            typeParameters = _this25.tsParseTypeParameters(_this25.tsParseConstModifier);
            var expr = _superClass.prototype.parseMaybeAssign.call(_this25, refExpressionErrors, afterLeftParse);
            if (expr.type !== "ArrowFunctionExpression" || (_expr$extra = expr.extra) != null && _expr$extra.parenthesized) {
              abort();
            }
            if (((_typeParameters = typeParameters) == null ? void 0 : _typeParameters.params.length) !== 0) {
              _this25.resetStartLocationFromNode(expr, typeParameters);
            }
            expr.typeParameters = typeParameters;
            return expr;
          }, state);
          if (!arrow.error && !arrow.aborted) {
            if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);
            return arrow.node;
          }
          if (!jsx) {
            assert$2(!this.hasPlugin("jsx"));
            typeCast = this.tryParse(function () {
              return _superClass.prototype.parseMaybeAssign.call(_this25, refExpressionErrors, afterLeftParse);
            }, state);
            if (!typeCast.error) return typeCast.node;
          }
          if ((_jsx2 = jsx) != null && _jsx2.node) {
            this.state = jsx.failState;
            return jsx.node;
          }
          if (arrow.node) {
            this.state = arrow.failState;
            if (typeParameters) this.reportReservedArrowTypeParam(typeParameters);
            return arrow.node;
          }
          if ((_typeCast = typeCast) != null && _typeCast.node) {
            this.state = typeCast.failState;
            return typeCast.node;
          }
          throw ((_jsx3 = jsx) == null ? void 0 : _jsx3.error) || arrow.error || ((_typeCast2 = typeCast) == null ? void 0 : _typeCast2.error);
        };
        _proto.reportReservedArrowTypeParam = function reportReservedArrowTypeParam(node) {
          var _node$extra;
          if (node.params.length === 1 && !node.params[0].constraint && !((_node$extra = node.extra) != null && _node$extra.trailingComma) && this.getPluginOption("typescript", "disallowAmbiguousJSXLike")) {
            this.raise(TSErrors.ReservedArrowTypeParam, {
              at: node
            });
          }
        };
        _proto.parseMaybeUnary = function parseMaybeUnary(refExpressionErrors, sawUnary) {
          if (!this.hasPlugin("jsx") && this.match(47)) {
            return this.tsParseTypeAssertion();
          }
          return _superClass.prototype.parseMaybeUnary.call(this, refExpressionErrors, sawUnary);
        };
        _proto.parseArrow = function parseArrow(node) {
          var _this26 = this;
          if (this.match(14)) {
            var result = this.tryParse(function (abort) {
              var returnType = _this26.tsParseTypeOrTypePredicateAnnotation(14);
              if (_this26.canInsertSemicolon() || !_this26.match(19)) abort();
              return returnType;
            });
            if (result.aborted) return;
            if (!result.thrown) {
              if (result.error) this.state = result.failState;
              node.returnType = result.node;
            }
          }
          return _superClass.prototype.parseArrow.call(this, node);
        };
        _proto.parseAssignableListItemTypes = function parseAssignableListItemTypes(param, flags) {
          if (!(flags & ParseBindingListFlags.IS_FUNCTION_PARAMS)) return param;
          if (this.eat(17)) {
            param.optional = true;
          }
          var type = this.tsTryParseTypeAnnotation();
          if (type) param.typeAnnotation = type;
          this.resetEndLocation(param);
          return param;
        };
        _proto.isAssignable = function isAssignable(node, isBinding) {
          switch (node.type) {
            case "TSTypeCastExpression":
              return this.isAssignable(node.expression, isBinding);
            case "TSParameterProperty":
              return true;
            default:
              return _superClass.prototype.isAssignable.call(this, node, isBinding);
          }
        };
        _proto.toAssignable = function toAssignable(node, isLHS) {
          if (isLHS === void 0) {
            isLHS = false;
          }
          switch (node.type) {
            case "ParenthesizedExpression":
              this.toAssignableParenthesizedExpression(node, isLHS);
              break;
            case "TSAsExpression":
            case "TSSatisfiesExpression":
            case "TSNonNullExpression":
            case "TSTypeAssertion":
              if (isLHS) {
                this.expressionScope.recordArrowParameterBindingError(TSErrors.UnexpectedTypeCastInParameter, {
                  at: node
                });
              } else {
                this.raise(TSErrors.UnexpectedTypeCastInParameter, {
                  at: node
                });
              }
              this.toAssignable(node.expression, isLHS);
              break;
            case "AssignmentExpression":
              if (!isLHS && node.left.type === "TSTypeCastExpression") {
                node.left = this.typeCastToParameter(node.left);
              }
            default:
              _superClass.prototype.toAssignable.call(this, node, isLHS);
          }
        };
        _proto.toAssignableParenthesizedExpression = function toAssignableParenthesizedExpression(node, isLHS) {
          switch (node.expression.type) {
            case "TSAsExpression":
            case "TSSatisfiesExpression":
            case "TSNonNullExpression":
            case "TSTypeAssertion":
            case "ParenthesizedExpression":
              this.toAssignable(node.expression, isLHS);
              break;
            default:
              _superClass.prototype.toAssignable.call(this, node, isLHS);
          }
        };
        _proto.checkToRestConversion = function checkToRestConversion(node, allowPattern) {
          switch (node.type) {
            case "TSAsExpression":
            case "TSSatisfiesExpression":
            case "TSTypeAssertion":
            case "TSNonNullExpression":
              this.checkToRestConversion(node.expression, false);
              break;
            default:
              _superClass.prototype.checkToRestConversion.call(this, node, allowPattern);
          }
        };
        _proto.isValidLVal = function isValidLVal(type, isUnparenthesizedInAssign, binding) {
          return getOwn({
            TSTypeCastExpression: true,
            TSParameterProperty: "parameter",
            TSNonNullExpression: "expression",
            TSAsExpression: (binding !== BIND_NONE || !isUnparenthesizedInAssign) && ["expression", true],
            TSSatisfiesExpression: (binding !== BIND_NONE || !isUnparenthesizedInAssign) && ["expression", true],
            TSTypeAssertion: (binding !== BIND_NONE || !isUnparenthesizedInAssign) && ["expression", true]
          }, type) || _superClass.prototype.isValidLVal.call(this, type, isUnparenthesizedInAssign, binding);
        };
        _proto.parseBindingAtom = function parseBindingAtom() {
          if (this.state.type === 78) {
            return this.parseIdentifier(true);
          }
          return _superClass.prototype.parseBindingAtom.call(this);
        };
        _proto.parseMaybeDecoratorArguments = function parseMaybeDecoratorArguments(expr) {
          if (this.match(47) || this.match(51)) {
            var typeArguments = this.tsParseTypeArgumentsInExpression();
            if (this.match(10)) {
              var call = _superClass.prototype.parseMaybeDecoratorArguments.call(this, expr);
              call.typeParameters = typeArguments;
              return call;
            }
            this.unexpected(null, 10);
          }
          return _superClass.prototype.parseMaybeDecoratorArguments.call(this, expr);
        };
        _proto.checkCommaAfterRest = function checkCommaAfterRest(close) {
          if (this.state.isAmbientContext && this.match(12) && this.lookaheadCharCode() === close) {
            this.next();
            return false;
          }
          return _superClass.prototype.checkCommaAfterRest.call(this, close);
        };
        _proto.isClassMethod = function isClassMethod() {
          return this.match(47) || _superClass.prototype.isClassMethod.call(this);
        };
        _proto.isClassProperty = function isClassProperty() {
          return this.match(35) || this.match(14) || _superClass.prototype.isClassProperty.call(this);
        };
        _proto.parseMaybeDefault = function parseMaybeDefault(startLoc, left) {
          var node = _superClass.prototype.parseMaybeDefault.call(this, startLoc, left);
          if (node.type === "AssignmentPattern" && node.typeAnnotation && node.right.start < node.typeAnnotation.start) {
            this.raise(TSErrors.TypeAnnotationAfterAssign, {
              at: node.typeAnnotation
            });
          }
          return node;
        };
        _proto.getTokenFromCode = function getTokenFromCode(code) {
          if (this.state.inType) {
            if (code === 62) {
              this.finishOp(48, 1);
              return;
            }
            if (code === 60) {
              this.finishOp(47, 1);
              return;
            }
          }
          _superClass.prototype.getTokenFromCode.call(this, code);
        };
        _proto.reScan_lt_gt = function reScan_lt_gt() {
          var type = this.state.type;
          if (type === 47) {
            this.state.pos -= 1;
            this.readToken_lt();
          } else if (type === 48) {
            this.state.pos -= 1;
            this.readToken_gt();
          }
        };
        _proto.reScan_lt = function reScan_lt() {
          var type = this.state.type;
          if (type === 51) {
            this.state.pos -= 2;
            this.finishOp(47, 1);
            return 47;
          }
          return type;
        };
        _proto.toAssignableList = function toAssignableList(exprList, trailingCommaLoc, isLHS) {
          for (var i = 0; i < exprList.length; i++) {
            var expr = exprList[i];
            if ((expr == null ? void 0 : expr.type) === "TSTypeCastExpression") {
              exprList[i] = this.typeCastToParameter(expr);
            }
          }
          _superClass.prototype.toAssignableList.call(this, exprList, trailingCommaLoc, isLHS);
        };
        _proto.typeCastToParameter = function typeCastToParameter(node) {
          node.expression.typeAnnotation = node.typeAnnotation;
          this.resetEndLocation(node.expression, node.typeAnnotation.loc.end);
          return node.expression;
        };
        _proto.shouldParseArrow = function shouldParseArrow(params) {
          var _this27 = this;
          if (this.match(14)) {
            return params.every(function (expr) {
              return _this27.isAssignable(expr, true);
            });
          }
          return _superClass.prototype.shouldParseArrow.call(this, params);
        };
        _proto.shouldParseAsyncArrow = function shouldParseAsyncArrow() {
          return this.match(14) || _superClass.prototype.shouldParseAsyncArrow.call(this);
        };
        _proto.canHaveLeadingDecorator = function canHaveLeadingDecorator() {
          return _superClass.prototype.canHaveLeadingDecorator.call(this) || this.isAbstractClass();
        };
        _proto.jsxParseOpeningElementAfterName = function jsxParseOpeningElementAfterName(node) {
          var _this28 = this;
          if (this.match(47) || this.match(51)) {
            var typeArguments = this.tsTryParseAndCatch(function () {
              return _this28.tsParseTypeArgumentsInExpression();
            });
            if (typeArguments) node.typeParameters = typeArguments;
          }
          return _superClass.prototype.jsxParseOpeningElementAfterName.call(this, node);
        };
        _proto.getGetterSetterExpectedParamCount = function getGetterSetterExpectedParamCount(method) {
          var baseCount = _superClass.prototype.getGetterSetterExpectedParamCount.call(this, method);
          var params = this.getObjectOrClassMethodParams(method);
          var firstParam = params[0];
          var hasContextParam = firstParam && this.isThisParam(firstParam);
          return hasContextParam ? baseCount + 1 : baseCount;
        };
        _proto.parseCatchClauseParam = function parseCatchClauseParam() {
          var param = _superClass.prototype.parseCatchClauseParam.call(this);
          var type = this.tsTryParseTypeAnnotation();
          if (type) {
            param.typeAnnotation = type;
            this.resetEndLocation(param);
          }
          return param;
        };
        _proto.tsInAmbientContext = function tsInAmbientContext(cb) {
          var oldIsAmbientContext = this.state.isAmbientContext;
          this.state.isAmbientContext = true;
          try {
            return cb();
          } finally {
            this.state.isAmbientContext = oldIsAmbientContext;
          }
        };
        _proto.parseClass = function parseClass(node, isStatement, optionalId) {
          var oldInAbstractClass = this.state.inAbstractClass;
          this.state.inAbstractClass = !!node["abstract"];
          try {
            return _superClass.prototype.parseClass.call(this, node, isStatement, optionalId);
          } finally {
            this.state.inAbstractClass = oldInAbstractClass;
          }
        };
        _proto.tsParseAbstractDeclaration = function tsParseAbstractDeclaration(node, decorators) {
          if (this.match(80)) {
            node["abstract"] = true;
            return this.maybeTakeDecorators(decorators, this.parseClass(node, true, false));
          } else if (this.isContextual(127)) {
            if (!this.hasFollowingLineBreak()) {
              node["abstract"] = true;
              this.raise(TSErrors.NonClassMethodPropertyHasAbstractModifer, {
                at: node
              });
              return this.tsParseInterfaceDeclaration(node);
            }
          } else {
            this.unexpected(null, 80);
          }
        };
        _proto.parseMethod = function parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope) {
          var method = _superClass.prototype.parseMethod.call(this, node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope);
          if (method["abstract"]) {
            var hasBody = this.hasPlugin("estree") ? !!method.value.body : !!method.body;
            if (hasBody) {
              var key = method.key;
              this.raise(TSErrors.AbstractMethodHasImplementation, {
                at: method,
                methodName: key.type === "Identifier" && !method.computed ? key.name : "[" + this.input.slice(key.start, key.end) + "]"
              });
            }
          }
          return method;
        };
        _proto.tsParseTypeParameterName = function tsParseTypeParameterName() {
          var typeName = this.parseIdentifier();
          return typeName.name;
        };
        _proto.shouldParseAsAmbientContext = function shouldParseAsAmbientContext() {
          return !!this.getPluginOption("typescript", "dts");
        };
        _proto.parse = function parse() {
          if (this.shouldParseAsAmbientContext()) {
            this.state.isAmbientContext = true;
          }
          return _superClass.prototype.parse.call(this);
        };
        _proto.getExpression = function getExpression() {
          if (this.shouldParseAsAmbientContext()) {
            this.state.isAmbientContext = true;
          }
          return _superClass.prototype.getExpression.call(this);
        };
        _proto.parseExportSpecifier = function parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) {
          if (!isString && isMaybeTypeOnly) {
            this.parseTypeOnlyImportExportSpecifier(node, false, isInTypeExport);
            return this.finishNode(node, "ExportSpecifier");
          }
          node.exportKind = "value";
          return _superClass.prototype.parseExportSpecifier.call(this, node, isString, isInTypeExport, isMaybeTypeOnly);
        };
        _proto.parseImportSpecifier = function parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) {
          if (!importedIsString && isMaybeTypeOnly) {
            this.parseTypeOnlyImportExportSpecifier(specifier, true, isInTypeOnlyImport);
            return this.finishNode(specifier, "ImportSpecifier");
          }
          specifier.importKind = "value";
          return _superClass.prototype.parseImportSpecifier.call(this, specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, isInTypeOnlyImport ? BIND_TS_TYPE_IMPORT : BIND_FLAGS_TS_IMPORT);
        };
        _proto.parseTypeOnlyImportExportSpecifier = function parseTypeOnlyImportExportSpecifier(node, isImport, isInTypeOnlyImportExport) {
          var leftOfAsKey = isImport ? "imported" : "local";
          var rightOfAsKey = isImport ? "local" : "exported";
          var leftOfAs = node[leftOfAsKey];
          var rightOfAs;
          var hasTypeSpecifier = false;
          var canParseAsKeyword = true;
          var loc = leftOfAs.loc.start;
          if (this.isContextual(93)) {
            var firstAs = this.parseIdentifier();
            if (this.isContextual(93)) {
              var secondAs = this.parseIdentifier();
              if (tokenIsKeywordOrIdentifier(this.state.type)) {
                hasTypeSpecifier = true;
                leftOfAs = firstAs;
                rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName();
                canParseAsKeyword = false;
              } else {
                rightOfAs = secondAs;
                canParseAsKeyword = false;
              }
            } else if (tokenIsKeywordOrIdentifier(this.state.type)) {
              canParseAsKeyword = false;
              rightOfAs = isImport ? this.parseIdentifier() : this.parseModuleExportName();
            } else {
              hasTypeSpecifier = true;
              leftOfAs = firstAs;
            }
          } else if (tokenIsKeywordOrIdentifier(this.state.type)) {
            hasTypeSpecifier = true;
            if (isImport) {
              leftOfAs = this.parseIdentifier(true);
              if (!this.isContextual(93)) {
                this.checkReservedWord(leftOfAs.name, leftOfAs.loc.start, true, true);
              }
            } else {
              leftOfAs = this.parseModuleExportName();
            }
          }
          if (hasTypeSpecifier && isInTypeOnlyImportExport) {
            this.raise(isImport ? TSErrors.TypeModifierIsUsedInTypeImports : TSErrors.TypeModifierIsUsedInTypeExports, {
              at: loc
            });
          }
          node[leftOfAsKey] = leftOfAs;
          node[rightOfAsKey] = rightOfAs;
          var kindKey = isImport ? "importKind" : "exportKind";
          node[kindKey] = hasTypeSpecifier ? "type" : "value";
          if (canParseAsKeyword && this.eatContextual(93)) {
            node[rightOfAsKey] = isImport ? this.parseIdentifier() : this.parseModuleExportName();
          }
          if (!node[rightOfAsKey]) {
            node[rightOfAsKey] = cloneIdentifier(node[leftOfAsKey]);
          }
          if (isImport) {
            this.checkIdentifier(node[rightOfAsKey], hasTypeSpecifier ? BIND_TS_TYPE_IMPORT : BIND_FLAGS_TS_IMPORT);
          }
        };
        return _createClass(TypeScriptParserMixin);
      }(superClass);
    });
    function isPossiblyLiteralEnum(expression) {
      if (expression.type !== "MemberExpression") return false;
      var computed = expression.computed,
        property = expression.property;
      if (computed && property.type !== "StringLiteral" && (property.type !== "TemplateLiteral" || property.expressions.length > 0)) {
        return false;
      }
      return isUncomputedMemberExpressionChain(expression.object);
    }
    function isValidAmbientConstInitializer(expression, estree) {
      var _expression$extra;
      var type = expression.type;
      if ((_expression$extra = expression.extra) != null && _expression$extra.parenthesized) {
        return false;
      }
      if (estree) {
        if (type === "Literal") {
          var value = expression.value;
          if (typeof value === "string" || typeof value === "boolean") {
            return true;
          }
        }
      } else {
        if (type === "StringLiteral" || type === "BooleanLiteral") {
          return true;
        }
      }
      if (isNumber(expression, estree) || isNegativeNumber(expression, estree)) {
        return true;
      }
      if (type === "TemplateLiteral" && expression.expressions.length === 0) {
        return true;
      }
      if (isPossiblyLiteralEnum(expression)) {
        return true;
      }
      return false;
    }
    function isNumber(expression, estree) {
      if (estree) {
        return expression.type === "Literal" && (typeof expression.value === "number" || "bigint" in expression);
      }
      return expression.type === "NumericLiteral" || expression.type === "BigIntLiteral";
    }
    function isNegativeNumber(expression, estree) {
      if (expression.type === "UnaryExpression") {
        var _ref17 = expression,
          operator = _ref17.operator,
          argument = _ref17.argument;
        if (operator === "-" && isNumber(argument, estree)) {
          return true;
        }
      }
      return false;
    }
    function isUncomputedMemberExpressionChain(expression) {
      if (expression.type === "Identifier") return true;
      if (expression.type !== "MemberExpression" || expression.computed) {
        return false;
      }
      return isUncomputedMemberExpressionChain(expression.object);
    }
  
    var _templateObject$w;
    var PlaceholderErrors = ParseErrorEnum(_templateObject$w || (_templateObject$w = _taggedTemplateLiteralLoose(["placeholders"])))({
      ClassNameIsRequired: "A class name is required.",
      UnexpectedSpace: "Unexpected space in placeholder."
    });
    var placeholders = (function (superClass) {
      return function (_superClass) {
        _inherits(PlaceholdersParserMixin, _superClass);
        function PlaceholdersParserMixin() {
          return _superClass.apply(this, arguments) || this;
        }
        var _proto = PlaceholdersParserMixin.prototype;
        _proto.parsePlaceholder = function parsePlaceholder(expectedNode) {
          if (this.match(142)) {
            var node = this.startNode();
            this.next();
            this.assertNoSpace();
            node.name = _superClass.prototype.parseIdentifier.call(this, true);
            this.assertNoSpace();
            this.expect(142);
            return this.finishPlaceholder(node, expectedNode);
          }
        };
        _proto.finishPlaceholder = function finishPlaceholder(node, expectedNode) {
          var isFinished = !!(node.expectedNode && node.type === "Placeholder");
          node.expectedNode = expectedNode;
          return isFinished ? node : this.finishNode(node, "Placeholder");
        };
        _proto.getTokenFromCode = function getTokenFromCode(code) {
          if (code === 37 && this.input.charCodeAt(this.state.pos + 1) === 37) {
            this.finishOp(142, 2);
          } else {
            _superClass.prototype.getTokenFromCode.call(this, code);
          }
        };
        _proto.parseExprAtom = function parseExprAtom(refExpressionErrors) {
          return this.parsePlaceholder("Expression") || _superClass.prototype.parseExprAtom.call(this, refExpressionErrors);
        };
        _proto.parseIdentifier = function parseIdentifier(liberal) {
          return this.parsePlaceholder("Identifier") || _superClass.prototype.parseIdentifier.call(this, liberal);
        };
        _proto.checkReservedWord = function checkReservedWord(word, startLoc, checkKeywords, isBinding) {
          if (word !== undefined) {
            _superClass.prototype.checkReservedWord.call(this, word, startLoc, checkKeywords, isBinding);
          }
        };
        _proto.parseBindingAtom = function parseBindingAtom() {
          return this.parsePlaceholder("Pattern") || _superClass.prototype.parseBindingAtom.call(this);
        };
        _proto.isValidLVal = function isValidLVal(type, isParenthesized, binding) {
          return type === "Placeholder" || _superClass.prototype.isValidLVal.call(this, type, isParenthesized, binding);
        };
        _proto.toAssignable = function toAssignable(node, isLHS) {
          if (node && node.type === "Placeholder" && node.expectedNode === "Expression") {
            node.expectedNode = "Pattern";
          } else {
            _superClass.prototype.toAssignable.call(this, node, isLHS);
          }
        };
        _proto.chStartsBindingIdentifier = function chStartsBindingIdentifier(ch, pos) {
          if (_superClass.prototype.chStartsBindingIdentifier.call(this, ch, pos)) {
            return true;
          }
          var nextToken = this.lookahead();
          if (nextToken.type === 142) {
            return true;
          }
          return false;
        };
        _proto.verifyBreakContinue = function verifyBreakContinue(node, isBreak) {
          if (node.label && node.label.type === "Placeholder") return;
          _superClass.prototype.verifyBreakContinue.call(this, node, isBreak);
        };
        _proto.parseExpressionStatement = function parseExpressionStatement(node, expr) {
          if (expr.type !== "Placeholder" || expr.extra && expr.extra.parenthesized) {
            return _superClass.prototype.parseExpressionStatement.call(this, node, expr);
          }
          if (this.match(14)) {
            var stmt = node;
            stmt.label = this.finishPlaceholder(expr, "Identifier");
            this.next();
            stmt.body = _superClass.prototype.parseStatementOrSloppyAnnexBFunctionDeclaration.call(this);
            return this.finishNode(stmt, "LabeledStatement");
          }
          this.semicolon();
          node.name = expr.name;
          return this.finishPlaceholder(node, "Statement");
        };
        _proto.parseBlock = function parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse) {
          return this.parsePlaceholder("BlockStatement") || _superClass.prototype.parseBlock.call(this, allowDirectives, createNewLexicalScope, afterBlockParse);
        };
        _proto.parseFunctionId = function parseFunctionId(requireId) {
          return this.parsePlaceholder("Identifier") || _superClass.prototype.parseFunctionId.call(this, requireId);
        };
        _proto.parseClass = function parseClass(node, isStatement, optionalId) {
          var type = isStatement ? "ClassDeclaration" : "ClassExpression";
          this.next();
          var oldStrict = this.state.strict;
          var placeholder = this.parsePlaceholder("Identifier");
          if (placeholder) {
            if (this.match(81) || this.match(142) || this.match(5)) {
              node.id = placeholder;
            } else if (optionalId || !isStatement) {
              node.id = null;
              node.body = this.finishPlaceholder(placeholder, "ClassBody");
              return this.finishNode(node, type);
            } else {
              throw this.raise(PlaceholderErrors.ClassNameIsRequired, {
                at: this.state.startLoc
              });
            }
          } else {
            this.parseClassId(node, isStatement, optionalId);
          }
          _superClass.prototype.parseClassSuper.call(this, node);
          node.body = this.parsePlaceholder("ClassBody") || _superClass.prototype.parseClassBody.call(this, !!node.superClass, oldStrict);
          return this.finishNode(node, type);
        };
        _proto.parseExport = function parseExport(node, decorators) {
          var placeholder = this.parsePlaceholder("Identifier");
          if (!placeholder) return _superClass.prototype.parseExport.call(this, node, decorators);
          if (!this.isContextual(97) && !this.match(12)) {
            node.specifiers = [];
            node.source = null;
            node.declaration = this.finishPlaceholder(placeholder, "Declaration");
            return this.finishNode(node, "ExportNamedDeclaration");
          }
          this.expectPlugin("exportDefaultFrom");
          var specifier = this.startNode();
          specifier.exported = placeholder;
          node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")];
          return _superClass.prototype.parseExport.call(this, node, decorators);
        };
        _proto.isExportDefaultSpecifier = function isExportDefaultSpecifier() {
          if (this.match(65)) {
            var next = this.nextTokenStart();
            if (this.isUnparsedContextual(next, "from")) {
              if (this.input.startsWith(tokenLabelName(142), this.nextTokenStartSince(next + 4))) {
                return true;
              }
            }
          }
          return _superClass.prototype.isExportDefaultSpecifier.call(this);
        };
        _proto.maybeParseExportDefaultSpecifier = function maybeParseExportDefaultSpecifier(node) {
          if (node.specifiers && node.specifiers.length > 0) {
            return true;
          }
          return _superClass.prototype.maybeParseExportDefaultSpecifier.call(this, node);
        };
        _proto.checkExport = function checkExport(node) {
          var specifiers = node.specifiers;
          if (specifiers != null && specifiers.length) {
            node.specifiers = specifiers.filter(function (node) {
              return node.exported.type === "Placeholder";
            });
          }
          _superClass.prototype.checkExport.call(this, node);
          node.specifiers = specifiers;
        };
        _proto.parseImport = function parseImport(node) {
          var placeholder = this.parsePlaceholder("Identifier");
          if (!placeholder) return _superClass.prototype.parseImport.call(this, node);
          node.specifiers = [];
          if (!this.isContextual(97) && !this.match(12)) {
            node.source = this.finishPlaceholder(placeholder, "StringLiteral");
            this.semicolon();
            return this.finishNode(node, "ImportDeclaration");
          }
          var specifier = this.startNodeAtNode(placeholder);
          specifier.local = placeholder;
          node.specifiers.push(this.finishNode(specifier, "ImportDefaultSpecifier"));
          if (this.eat(12)) {
            var hasStarImport = this.maybeParseStarImportSpecifier(node);
            if (!hasStarImport) this.parseNamedImportSpecifiers(node);
          }
          this.expectContextual(97);
          node.source = this.parseImportSource();
          this.semicolon();
          return this.finishNode(node, "ImportDeclaration");
        };
        _proto.parseImportSource = function parseImportSource() {
          return this.parsePlaceholder("StringLiteral") || _superClass.prototype.parseImportSource.call(this);
        };
        _proto.assertNoSpace = function assertNoSpace() {
          if (this.state.start > this.state.lastTokEndLoc.index) {
            this.raise(PlaceholderErrors.UnexpectedSpace, {
              at: this.state.lastTokEndLoc
            });
          }
        };
        return _createClass(PlaceholdersParserMixin);
      }(superClass);
    });
  
    var v8intrinsic = (function (superClass) {
      return function (_superClass) {
        _inherits(V8IntrinsicMixin, _superClass);
        function V8IntrinsicMixin() {
          return _superClass.apply(this, arguments) || this;
        }
        var _proto = V8IntrinsicMixin.prototype;
        _proto.parseV8Intrinsic = function parseV8Intrinsic() {
          if (this.match(54)) {
            var v8IntrinsicStartLoc = this.state.startLoc;
            var node = this.startNode();
            this.next();
            if (tokenIsIdentifier(this.state.type)) {
              var name = this.parseIdentifierName();
              var identifier = this.createIdentifier(node, name);
              identifier.type = "V8IntrinsicIdentifier";
              if (this.match(10)) {
                return identifier;
              }
            }
            this.unexpected(v8IntrinsicStartLoc);
          }
        };
        _proto.parseExprAtom = function parseExprAtom(refExpressionErrors) {
          return this.parseV8Intrinsic() || _superClass.prototype.parseExprAtom.call(this, refExpressionErrors);
        };
        return _createClass(V8IntrinsicMixin);
      }(superClass);
    });
  
    function hasPlugin(plugins, expectedConfig) {
      var _ref = typeof expectedConfig === "string" ? [expectedConfig, {}] : expectedConfig,
        expectedName = _ref[0],
        expectedOptions = _ref[1];
      var expectedKeys = Object.keys(expectedOptions);
      var expectedOptionsIsEmpty = expectedKeys.length === 0;
      return plugins.some(function (p) {
        if (typeof p === "string") {
          return expectedOptionsIsEmpty && p === expectedName;
        } else {
          var pluginName = p[0],
            pluginOptions = p[1];
          if (pluginName !== expectedName) {
            return false;
          }
          for (var _i2 = 0; _i2 < expectedKeys.length; _i2++) {
            var key = expectedKeys[_i2];
            if (pluginOptions[key] !== expectedOptions[key]) {
              return false;
            }
          }
          return true;
        }
      });
    }
    function getPluginOption(plugins, name, option) {
      var plugin = plugins.find(function (plugin) {
        if (Array.isArray(plugin)) {
          return plugin[0] === name;
        } else {
          return plugin === name;
        }
      });
      if (plugin && Array.isArray(plugin) && plugin.length > 1) {
        return plugin[1][option];
      }
      return null;
    }
    var PIPELINE_PROPOSALS$1 = ["minimal", "fsharp", "hack", "smart"];
    var TOPIC_TOKENS$1 = ["^^", "@@", "^", "%", "#"];
    var RECORD_AND_TUPLE_SYNTAX_TYPES = ["hash", "bar"];
    function validatePlugins(plugins) {
      if (hasPlugin(plugins, "decorators")) {
        if (hasPlugin(plugins, "decorators-legacy")) {
          throw new Error("Cannot use the decorators and decorators-legacy plugin together");
        }
        var decoratorsBeforeExport = getPluginOption(plugins, "decorators", "decoratorsBeforeExport");
        if (decoratorsBeforeExport != null && typeof decoratorsBeforeExport !== "boolean") {
          throw new Error("'decoratorsBeforeExport' must be a boolean, if specified.");
        }
        var allowCallParenthesized = getPluginOption(plugins, "decorators", "allowCallParenthesized");
        if (allowCallParenthesized != null && typeof allowCallParenthesized !== "boolean") {
          throw new Error("'allowCallParenthesized' must be a boolean.");
        }
      }
      if (hasPlugin(plugins, "flow") && hasPlugin(plugins, "typescript")) {
        throw new Error("Cannot combine flow and typescript plugins.");
      }
      if (hasPlugin(plugins, "placeholders") && hasPlugin(plugins, "v8intrinsic")) {
        throw new Error("Cannot combine placeholders and v8intrinsic plugins.");
      }
      if (hasPlugin(plugins, "pipelineOperator")) {
        var proposal = getPluginOption(plugins, "pipelineOperator", "proposal");
        if (!PIPELINE_PROPOSALS$1.includes(proposal)) {
          var proposalList = PIPELINE_PROPOSALS$1.map(function (p) {
            return "\"" + p + "\"";
          }).join(", ");
          throw new Error("\"pipelineOperator\" requires \"proposal\" option whose value must be one of: " + proposalList + ".");
        }
        var tupleSyntaxIsHash = hasPlugin(plugins, ["recordAndTuple", {
          syntaxType: "hash"
        }]);
        if (proposal === "hack") {
          if (hasPlugin(plugins, "placeholders")) {
            throw new Error("Cannot combine placeholders plugin and Hack-style pipes.");
          }
          if (hasPlugin(plugins, "v8intrinsic")) {
            throw new Error("Cannot combine v8intrinsic plugin and Hack-style pipes.");
          }
          var topicToken = getPluginOption(plugins, "pipelineOperator", "topicToken");
          if (!TOPIC_TOKENS$1.includes(topicToken)) {
            var tokenList = TOPIC_TOKENS$1.map(function (t) {
              return "\"" + t + "\"";
            }).join(", ");
            throw new Error("\"pipelineOperator\" in \"proposal\": \"hack\" mode also requires a \"topicToken\" option whose value must be one of: " + tokenList + ".");
          }
          if (topicToken === "#" && tupleSyntaxIsHash) {
            throw new Error('Plugin conflict between `["pipelineOperator", { proposal: "hack", topicToken: "#" }]` and `["recordAndtuple", { syntaxType: "hash"}]`.');
          }
        } else if (proposal === "smart" && tupleSyntaxIsHash) {
          throw new Error('Plugin conflict between `["pipelineOperator", { proposal: "smart" }]` and `["recordAndtuple", { syntaxType: "hash"}]`.');
        }
      }
      if (hasPlugin(plugins, "moduleAttributes")) {
        {
          if (hasPlugin(plugins, "importAssertions")) {
            throw new Error("Cannot combine importAssertions and moduleAttributes plugins.");
          }
          var moduleAttributesVersionPluginOption = getPluginOption(plugins, "moduleAttributes", "version");
          if (moduleAttributesVersionPluginOption !== "may-2020") {
            throw new Error("The 'moduleAttributes' plugin requires a 'version' option," + " representing the last proposal update. Currently, the" + " only supported value is 'may-2020'.");
          }
        }
      }
      if (hasPlugin(plugins, "recordAndTuple") && getPluginOption(plugins, "recordAndTuple", "syntaxType") != null && !RECORD_AND_TUPLE_SYNTAX_TYPES.includes(getPluginOption(plugins, "recordAndTuple", "syntaxType"))) {
        throw new Error("The 'syntaxType' option of the 'recordAndTuple' plugin must be one of: " + RECORD_AND_TUPLE_SYNTAX_TYPES.map(function (p) {
          return "'" + p + "'";
        }).join(", "));
      }
      if (hasPlugin(plugins, "asyncDoExpressions") && !hasPlugin(plugins, "doExpressions")) {
        var error = new Error("'asyncDoExpressions' requires 'doExpressions', please add 'doExpressions' to parser plugins.");
        error.missingPlugins = "doExpressions";
        throw error;
      }
    }
    var mixinPlugins = {
      estree: estree,
      jsx: jsx,
      flow: flow,
      typescript: typescript,
      v8intrinsic: v8intrinsic,
      placeholders: placeholders
    };
    var mixinPluginNames = Object.keys(mixinPlugins);
  
    var ExpressionParser = function (_LValParser) {
      _inherits(ExpressionParser, _LValParser);
      function ExpressionParser() {
        return _LValParser.apply(this, arguments) || this;
      }
      var _proto = ExpressionParser.prototype;
      _proto.checkProto = function checkProto(prop, isRecord, protoRef, refExpressionErrors) {
        if (prop.type === "SpreadElement" || this.isObjectMethod(prop) || prop.computed || prop.shorthand) {
          return;
        }
        var key = prop.key;
        var name = key.type === "Identifier" ? key.name : key.value;
        if (name === "__proto__") {
          if (isRecord) {
            this.raise(Errors.RecordNoProto, {
              at: key
            });
            return;
          }
          if (protoRef.used) {
            if (refExpressionErrors) {
              if (refExpressionErrors.doubleProtoLoc === null) {
                refExpressionErrors.doubleProtoLoc = key.loc.start;
              }
            } else {
              this.raise(Errors.DuplicateProto, {
                at: key
              });
            }
          }
          protoRef.used = true;
        }
      };
      _proto.shouldExitDescending = function shouldExitDescending(expr, potentialArrowAt) {
        return expr.type === "ArrowFunctionExpression" && expr.start === potentialArrowAt;
      };
      _proto.getExpression = function getExpression() {
        this.enterInitialScopes();
        this.nextToken();
        var expr = this.parseExpression();
        if (!this.match(137)) {
          this.unexpected();
        }
        this.finalizeRemainingComments();
        expr.comments = this.state.comments;
        expr.errors = this.state.errors;
        if (this.options.tokens) {
          expr.tokens = this.tokens;
        }
        return expr;
      };
      _proto.parseExpression = function parseExpression(disallowIn, refExpressionErrors) {
        var _this = this;
        if (disallowIn) {
          return this.disallowInAnd(function () {
            return _this.parseExpressionBase(refExpressionErrors);
          });
        }
        return this.allowInAnd(function () {
          return _this.parseExpressionBase(refExpressionErrors);
        });
      };
      _proto.parseExpressionBase = function parseExpressionBase(refExpressionErrors) {
        var startLoc = this.state.startLoc;
        var expr = this.parseMaybeAssign(refExpressionErrors);
        if (this.match(12)) {
          var _node = this.startNodeAt(startLoc);
          _node.expressions = [expr];
          while (this.eat(12)) {
            _node.expressions.push(this.parseMaybeAssign(refExpressionErrors));
          }
          this.toReferencedList(_node.expressions);
          return this.finishNode(_node, "SequenceExpression");
        }
        return expr;
      };
      _proto.parseMaybeAssignDisallowIn = function parseMaybeAssignDisallowIn(refExpressionErrors, afterLeftParse) {
        var _this2 = this;
        return this.disallowInAnd(function () {
          return _this2.parseMaybeAssign(refExpressionErrors, afterLeftParse);
        });
      };
      _proto.parseMaybeAssignAllowIn = function parseMaybeAssignAllowIn(refExpressionErrors, afterLeftParse) {
        var _this3 = this;
        return this.allowInAnd(function () {
          return _this3.parseMaybeAssign(refExpressionErrors, afterLeftParse);
        });
      };
      _proto.setOptionalParametersError = function setOptionalParametersError(refExpressionErrors, resultError) {
        var _resultError$loc;
        refExpressionErrors.optionalParametersLoc = (_resultError$loc = resultError == null ? void 0 : resultError.loc) != null ? _resultError$loc : this.state.startLoc;
      };
      _proto.parseMaybeAssign = function parseMaybeAssign(refExpressionErrors, afterLeftParse) {
        var startLoc = this.state.startLoc;
        if (this.isContextual(106)) {
          if (this.prodParam.hasYield) {
            var _left = this.parseYield();
            if (afterLeftParse) {
              _left = afterLeftParse.call(this, _left, startLoc);
            }
            return _left;
          }
        }
        var ownExpressionErrors;
        if (refExpressionErrors) {
          ownExpressionErrors = false;
        } else {
          refExpressionErrors = new ExpressionErrors();
          ownExpressionErrors = true;
        }
        var type = this.state.type;
        if (type === 10 || tokenIsIdentifier(type)) {
          this.state.potentialArrowAt = this.state.start;
        }
        var left = this.parseMaybeConditional(refExpressionErrors);
        if (afterLeftParse) {
          left = afterLeftParse.call(this, left, startLoc);
        }
        if (tokenIsAssignment(this.state.type)) {
          var _node2 = this.startNodeAt(startLoc);
          var operator = this.state.value;
          _node2.operator = operator;
          if (this.match(29)) {
            this.toAssignable(left, true);
            _node2.left = left;
            var startIndex = startLoc.index;
            if (refExpressionErrors.doubleProtoLoc != null && refExpressionErrors.doubleProtoLoc.index >= startIndex) {
              refExpressionErrors.doubleProtoLoc = null;
            }
            if (refExpressionErrors.shorthandAssignLoc != null && refExpressionErrors.shorthandAssignLoc.index >= startIndex) {
              refExpressionErrors.shorthandAssignLoc = null;
            }
            if (refExpressionErrors.privateKeyLoc != null && refExpressionErrors.privateKeyLoc.index >= startIndex) {
              this.checkDestructuringPrivate(refExpressionErrors);
              refExpressionErrors.privateKeyLoc = null;
            }
          } else {
            _node2.left = left;
          }
          this.next();
          _node2.right = this.parseMaybeAssign();
          this.checkLVal(left, {
            "in": this.finishNode(_node2, "AssignmentExpression")
          });
          return _node2;
        } else if (ownExpressionErrors) {
          this.checkExpressionErrors(refExpressionErrors, true);
        }
        return left;
      };
      _proto.parseMaybeConditional = function parseMaybeConditional(refExpressionErrors) {
        var startLoc = this.state.startLoc;
        var potentialArrowAt = this.state.potentialArrowAt;
        var expr = this.parseExprOps(refExpressionErrors);
        if (this.shouldExitDescending(expr, potentialArrowAt)) {
          return expr;
        }
        return this.parseConditional(expr, startLoc, refExpressionErrors);
      };
      _proto.parseConditional = function parseConditional(expr, startLoc, refExpressionErrors) {
        if (this.eat(17)) {
          var _node3 = this.startNodeAt(startLoc);
          _node3.test = expr;
          _node3.consequent = this.parseMaybeAssignAllowIn();
          this.expect(14);
          _node3.alternate = this.parseMaybeAssign();
          return this.finishNode(_node3, "ConditionalExpression");
        }
        return expr;
      };
      _proto.parseMaybeUnaryOrPrivate = function parseMaybeUnaryOrPrivate(refExpressionErrors) {
        return this.match(136) ? this.parsePrivateName() : this.parseMaybeUnary(refExpressionErrors);
      };
      _proto.parseExprOps = function parseExprOps(refExpressionErrors) {
        var startLoc = this.state.startLoc;
        var potentialArrowAt = this.state.potentialArrowAt;
        var expr = this.parseMaybeUnaryOrPrivate(refExpressionErrors);
        if (this.shouldExitDescending(expr, potentialArrowAt)) {
          return expr;
        }
        return this.parseExprOp(expr, startLoc, -1);
      };
      _proto.parseExprOp = function parseExprOp(left, leftStartLoc, minPrec) {
        if (this.isPrivateName(left)) {
          var value = this.getPrivateNameSV(left);
          if (minPrec >= tokenOperatorPrecedence(58) || !this.prodParam.hasIn || !this.match(58)) {
            this.raise(Errors.PrivateInExpectedIn, {
              at: left,
              identifierName: value
            });
          }
          this.classScope.usePrivateName(value, left.loc.start);
        }
        var op = this.state.type;
        if (tokenIsOperator(op) && (this.prodParam.hasIn || !this.match(58))) {
          var prec = tokenOperatorPrecedence(op);
          if (prec > minPrec) {
            if (op === 39) {
              this.expectPlugin("pipelineOperator");
              if (this.state.inFSharpPipelineDirectBody) {
                return left;
              }
              this.checkPipelineAtInfixOperator(left, leftStartLoc);
            }
            var _node4 = this.startNodeAt(leftStartLoc);
            _node4.left = left;
            _node4.operator = this.state.value;
            var logical = op === 41 || op === 42;
            var coalesce = op === 40;
            if (coalesce) {
              prec = tokenOperatorPrecedence(42);
            }
            this.next();
            if (op === 39 && this.hasPlugin(["pipelineOperator", {
              proposal: "minimal"
            }])) {
              if (this.state.type === 96 && this.prodParam.hasAwait) {
                throw this.raise(Errors.UnexpectedAwaitAfterPipelineBody, {
                  at: this.state.startLoc
                });
              }
            }
            _node4.right = this.parseExprOpRightExpr(op, prec);
            var finishedNode = this.finishNode(_node4, logical || coalesce ? "LogicalExpression" : "BinaryExpression");
            var nextOp = this.state.type;
            if (coalesce && (nextOp === 41 || nextOp === 42) || logical && nextOp === 40) {
              throw this.raise(Errors.MixingCoalesceWithLogical, {
                at: this.state.startLoc
              });
            }
            return this.parseExprOp(finishedNode, leftStartLoc, minPrec);
          }
        }
        return left;
      };
      _proto.parseExprOpRightExpr = function parseExprOpRightExpr(op, prec) {
        var _this4 = this;
        var startLoc = this.state.startLoc;
        switch (op) {
          case 39:
            switch (this.getPluginOption("pipelineOperator", "proposal")) {
              case "hack":
                return this.withTopicBindingContext(function () {
                  return _this4.parseHackPipeBody();
                });
              case "smart":
                return this.withTopicBindingContext(function () {
                  if (_this4.prodParam.hasYield && _this4.isContextual(106)) {
                    throw _this4.raise(Errors.PipeBodyIsTighter, {
                      at: _this4.state.startLoc
                    });
                  }
                  return _this4.parseSmartPipelineBodyInStyle(_this4.parseExprOpBaseRightExpr(op, prec), startLoc);
                });
              case "fsharp":
                return this.withSoloAwaitPermittingContext(function () {
                  return _this4.parseFSharpPipelineBody(prec);
                });
            }
          default:
            return this.parseExprOpBaseRightExpr(op, prec);
        }
      };
      _proto.parseExprOpBaseRightExpr = function parseExprOpBaseRightExpr(op, prec) {
        var startLoc = this.state.startLoc;
        return this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, tokenIsRightAssociative(op) ? prec - 1 : prec);
      };
      _proto.parseHackPipeBody = function parseHackPipeBody() {
        var _body$extra;
        var startLoc = this.state.startLoc;
        var body = this.parseMaybeAssign();
        var requiredParentheses = UnparenthesizedPipeBodyDescriptions.has(body.type);
        if (requiredParentheses && !((_body$extra = body.extra) != null && _body$extra.parenthesized)) {
          this.raise(Errors.PipeUnparenthesizedBody, {
            at: startLoc,
            type: body.type
          });
        }
        if (!this.topicReferenceWasUsedInCurrentContext()) {
          this.raise(Errors.PipeTopicUnused, {
            at: startLoc
          });
        }
        return body;
      };
      _proto.checkExponentialAfterUnary = function checkExponentialAfterUnary(node) {
        if (this.match(57)) {
          this.raise(Errors.UnexpectedTokenUnaryExponentiation, {
            at: node.argument
          });
        }
      };
      _proto.parseMaybeUnary = function parseMaybeUnary(refExpressionErrors, sawUnary) {
        var startLoc = this.state.startLoc;
        var isAwait = this.isContextual(96);
        if (isAwait && this.isAwaitAllowed()) {
          this.next();
          var _expr = this.parseAwait(startLoc);
          if (!sawUnary) this.checkExponentialAfterUnary(_expr);
          return _expr;
        }
        var update = this.match(34);
        var node = this.startNode();
        if (tokenIsPrefix(this.state.type)) {
          node.operator = this.state.value;
          node.prefix = true;
          if (this.match(72)) {
            this.expectPlugin("throwExpressions");
          }
          var isDelete = this.match(89);
          this.next();
          node.argument = this.parseMaybeUnary(null, true);
          this.checkExpressionErrors(refExpressionErrors, true);
          if (this.state.strict && isDelete) {
            var arg = node.argument;
            if (arg.type === "Identifier") {
              this.raise(Errors.StrictDelete, {
                at: node
              });
            } else if (this.hasPropertyAsPrivateName(arg)) {
              this.raise(Errors.DeletePrivateField, {
                at: node
              });
            }
          }
          if (!update) {
            if (!sawUnary) {
              this.checkExponentialAfterUnary(node);
            }
            return this.finishNode(node, "UnaryExpression");
          }
        }
        var expr = this.parseUpdate(node, update, refExpressionErrors);
        if (isAwait) {
          var type = this.state.type;
          var startsExpr = this.hasPlugin("v8intrinsic") ? tokenCanStartExpression(type) : tokenCanStartExpression(type) && !this.match(54);
          if (startsExpr && !this.isAmbiguousAwait()) {
            this.raiseOverwrite(Errors.AwaitNotInAsyncContext, {
              at: startLoc
            });
            return this.parseAwait(startLoc);
          }
        }
        return expr;
      };
      _proto.parseUpdate = function parseUpdate(node, update, refExpressionErrors) {
        if (update) {
          var updateExpressionNode = node;
          this.checkLVal(updateExpressionNode.argument, {
            "in": this.finishNode(updateExpressionNode, "UpdateExpression")
          });
          return node;
        }
        var startLoc = this.state.startLoc;
        var expr = this.parseExprSubscripts(refExpressionErrors);
        if (this.checkExpressionErrors(refExpressionErrors, false)) return expr;
        while (tokenIsPostfix(this.state.type) && !this.canInsertSemicolon()) {
          var _node5 = this.startNodeAt(startLoc);
          _node5.operator = this.state.value;
          _node5.prefix = false;
          _node5.argument = expr;
          this.next();
          this.checkLVal(expr, {
            "in": expr = this.finishNode(_node5, "UpdateExpression")
          });
        }
        return expr;
      };
      _proto.parseExprSubscripts = function parseExprSubscripts(refExpressionErrors) {
        var startLoc = this.state.startLoc;
        var potentialArrowAt = this.state.potentialArrowAt;
        var expr = this.parseExprAtom(refExpressionErrors);
        if (this.shouldExitDescending(expr, potentialArrowAt)) {
          return expr;
        }
        return this.parseSubscripts(expr, startLoc);
      };
      _proto.parseSubscripts = function parseSubscripts(base, startLoc, noCalls) {
        var state = {
          optionalChainMember: false,
          maybeAsyncArrow: this.atPossibleAsyncArrow(base),
          stop: false
        };
        do {
          base = this.parseSubscript(base, startLoc, noCalls, state);
          state.maybeAsyncArrow = false;
        } while (!state.stop);
        return base;
      };
      _proto.parseSubscript = function parseSubscript(base, startLoc, noCalls, state) {
        var type = this.state.type;
        if (!noCalls && type === 15) {
          return this.parseBind(base, startLoc, noCalls, state);
        } else if (tokenIsTemplate(type)) {
          return this.parseTaggedTemplateExpression(base, startLoc, state);
        }
        var optional = false;
        if (type === 18) {
          if (noCalls) {
            this.raise(Errors.OptionalChainingNoNew, {
              at: this.state.startLoc
            });
            if (this.lookaheadCharCode() === 40) {
              state.stop = true;
              return base;
            }
          }
          state.optionalChainMember = optional = true;
          this.next();
        }
        if (!noCalls && this.match(10)) {
          return this.parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional);
        } else {
          var computed = this.eat(0);
          if (computed || optional || this.eat(16)) {
            return this.parseMember(base, startLoc, state, computed, optional);
          } else {
            state.stop = true;
            return base;
          }
        }
      };
      _proto.parseMember = function parseMember(base, startLoc, state, computed, optional) {
        var node = this.startNodeAt(startLoc);
        node.object = base;
        node.computed = computed;
        if (computed) {
          node.property = this.parseExpression();
          this.expect(3);
        } else if (this.match(136)) {
          if (base.type === "Super") {
            this.raise(Errors.SuperPrivateField, {
              at: startLoc
            });
          }
          this.classScope.usePrivateName(this.state.value, this.state.startLoc);
          node.property = this.parsePrivateName();
        } else {
          node.property = this.parseIdentifier(true);
        }
        if (state.optionalChainMember) {
          node.optional = optional;
          return this.finishNode(node, "OptionalMemberExpression");
        } else {
          return this.finishNode(node, "MemberExpression");
        }
      };
      _proto.parseBind = function parseBind(base, startLoc, noCalls, state) {
        var node = this.startNodeAt(startLoc);
        node.object = base;
        this.next();
        node.callee = this.parseNoCallExpr();
        state.stop = true;
        return this.parseSubscripts(this.finishNode(node, "BindExpression"), startLoc, noCalls);
      };
      _proto.parseCoverCallAndAsyncArrowHead = function parseCoverCallAndAsyncArrowHead(base, startLoc, state, optional) {
        var oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
        var refExpressionErrors = null;
        this.state.maybeInArrowParameters = true;
        this.next();
        var node = this.startNodeAt(startLoc);
        node.callee = base;
        var maybeAsyncArrow = state.maybeAsyncArrow,
          optionalChainMember = state.optionalChainMember;
        if (maybeAsyncArrow) {
          this.expressionScope.enter(newAsyncArrowScope());
          refExpressionErrors = new ExpressionErrors();
        }
        if (optionalChainMember) {
          node.optional = optional;
        }
        if (optional) {
          node.arguments = this.parseCallExpressionArguments(11);
        } else {
          node.arguments = this.parseCallExpressionArguments(11, base.type === "Import", base.type !== "Super", node, refExpressionErrors);
        }
        var finishedNode = this.finishCallExpression(node, optionalChainMember);
        if (maybeAsyncArrow && this.shouldParseAsyncArrow() && !optional) {
          state.stop = true;
          this.checkDestructuringPrivate(refExpressionErrors);
          this.expressionScope.validateAsPattern();
          this.expressionScope.exit();
          finishedNode = this.parseAsyncArrowFromCallExpression(this.startNodeAt(startLoc), finishedNode);
        } else {
          if (maybeAsyncArrow) {
            this.checkExpressionErrors(refExpressionErrors, true);
            this.expressionScope.exit();
          }
          this.toReferencedArguments(finishedNode);
        }
        this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
        return finishedNode;
      };
      _proto.toReferencedArguments = function toReferencedArguments(node, isParenthesizedExpr) {
        this.toReferencedListDeep(node.arguments, isParenthesizedExpr);
      };
      _proto.parseTaggedTemplateExpression = function parseTaggedTemplateExpression(base, startLoc, state) {
        var node = this.startNodeAt(startLoc);
        node.tag = base;
        node.quasi = this.parseTemplate(true);
        if (state.optionalChainMember) {
          this.raise(Errors.OptionalChainingNoTemplate, {
            at: startLoc
          });
        }
        return this.finishNode(node, "TaggedTemplateExpression");
      };
      _proto.atPossibleAsyncArrow = function atPossibleAsyncArrow(base) {
        return base.type === "Identifier" && base.name === "async" && this.state.lastTokEndLoc.index === base.end && !this.canInsertSemicolon() && base.end - base.start === 5 && base.start === this.state.potentialArrowAt;
      };
      _proto.finishCallExpression = function finishCallExpression(node, optional) {
        if (node.callee.type === "Import") {
          if (node.arguments.length === 2) {
            {
              if (!this.hasPlugin("moduleAttributes")) {
                this.expectPlugin("importAssertions");
              }
            }
          }
          if (node.arguments.length === 0 || node.arguments.length > 2) {
            this.raise(Errors.ImportCallArity, {
              at: node,
              maxArgumentCount: this.hasPlugin("importAssertions") || this.hasPlugin("moduleAttributes") ? 2 : 1
            });
          } else {
            for (var _i2 = 0, _node$arguments2 = node.arguments; _i2 < _node$arguments2.length; _i2++) {
              var arg = _node$arguments2[_i2];
              if (arg.type === "SpreadElement") {
                this.raise(Errors.ImportCallSpreadArgument, {
                  at: arg
                });
              }
            }
          }
        }
        return this.finishNode(node, optional ? "OptionalCallExpression" : "CallExpression");
      };
      _proto.parseCallExpressionArguments = function parseCallExpressionArguments(close, dynamicImport, allowPlaceholder, nodeForExtra, refExpressionErrors) {
        var elts = [];
        var first = true;
        var oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
        this.state.inFSharpPipelineDirectBody = false;
        while (!this.eat(close)) {
          if (first) {
            first = false;
          } else {
            this.expect(12);
            if (this.match(close)) {
              if (dynamicImport && !this.hasPlugin("importAssertions") && !this.hasPlugin("moduleAttributes")) {
                this.raise(Errors.ImportCallArgumentTrailingComma, {
                  at: this.state.lastTokStartLoc
                });
              }
              if (nodeForExtra) {
                this.addTrailingCommaExtraToNode(nodeForExtra);
              }
              this.next();
              break;
            }
          }
          elts.push(this.parseExprListItem(false, refExpressionErrors, allowPlaceholder));
        }
        this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
        return elts;
      };
      _proto.shouldParseAsyncArrow = function shouldParseAsyncArrow() {
        return this.match(19) && !this.canInsertSemicolon();
      };
      _proto.parseAsyncArrowFromCallExpression = function parseAsyncArrowFromCallExpression(node, call) {
        var _call$extra;
        this.resetPreviousNodeTrailingComments(call);
        this.expect(19);
        this.parseArrowExpression(node, call.arguments, true, (_call$extra = call.extra) == null ? void 0 : _call$extra.trailingCommaLoc);
        if (call.innerComments) {
          setInnerComments(node, call.innerComments);
        }
        if (call.callee.trailingComments) {
          setInnerComments(node, call.callee.trailingComments);
        }
        return node;
      };
      _proto.parseNoCallExpr = function parseNoCallExpr() {
        var startLoc = this.state.startLoc;
        return this.parseSubscripts(this.parseExprAtom(), startLoc, true);
      };
      _proto.parseExprAtom = function parseExprAtom(refExpressionErrors) {
        var node;
        var decorators = null;
        var type = this.state.type;
        switch (type) {
          case 79:
            return this.parseSuper();
          case 83:
            node = this.startNode();
            this.next();
            if (this.match(16)) {
              return this.parseImportMetaProperty(node);
            }
            if (!this.match(10)) {
              this.raise(Errors.UnsupportedImport, {
                at: this.state.lastTokStartLoc
              });
            }
            return this.finishNode(node, "Import");
          case 78:
            node = this.startNode();
            this.next();
            return this.finishNode(node, "ThisExpression");
          case 90:
            {
              return this.parseDo(this.startNode(), false);
            }
          case 56:
          case 31:
            {
              this.readRegexp();
              return this.parseRegExpLiteral(this.state.value);
            }
          case 132:
            return this.parseNumericLiteral(this.state.value);
          case 133:
            return this.parseBigIntLiteral(this.state.value);
          case 134:
            return this.parseDecimalLiteral(this.state.value);
          case 131:
            return this.parseStringLiteral(this.state.value);
          case 84:
            return this.parseNullLiteral();
          case 85:
            return this.parseBooleanLiteral(true);
          case 86:
            return this.parseBooleanLiteral(false);
          case 10:
            {
              var canBeArrow = this.state.potentialArrowAt === this.state.start;
              return this.parseParenAndDistinguishExpression(canBeArrow);
            }
          case 2:
          case 1:
            {
              return this.parseArrayLike(this.state.type === 2 ? 4 : 3, false, true);
            }
          case 0:
            {
              return this.parseArrayLike(3, true, false, refExpressionErrors);
            }
          case 6:
          case 7:
            {
              return this.parseObjectLike(this.state.type === 6 ? 9 : 8, false, true);
            }
          case 5:
            {
              return this.parseObjectLike(8, false, false, refExpressionErrors);
            }
          case 68:
            return this.parseFunctionOrFunctionSent();
          case 26:
            decorators = this.parseDecorators();
          case 80:
            return this.parseClass(this.maybeTakeDecorators(decorators, this.startNode()), false);
          case 77:
            return this.parseNewOrNewTarget();
          case 25:
          case 24:
            return this.parseTemplate(false);
          case 15:
            {
              node = this.startNode();
              this.next();
              node.object = null;
              var callee = node.callee = this.parseNoCallExpr();
              if (callee.type === "MemberExpression") {
                return this.finishNode(node, "BindExpression");
              } else {
                throw this.raise(Errors.UnsupportedBind, {
                  at: callee
                });
              }
            }
          case 136:
            {
              this.raise(Errors.PrivateInExpectedIn, {
                at: this.state.startLoc,
                identifierName: this.state.value
              });
              return this.parsePrivateName();
            }
          case 33:
            {
              return this.parseTopicReferenceThenEqualsSign(54, "%");
            }
          case 32:
            {
              return this.parseTopicReferenceThenEqualsSign(44, "^");
            }
          case 37:
          case 38:
            {
              return this.parseTopicReference("hack");
            }
          case 44:
          case 54:
          case 27:
            {
              var pipeProposal = this.getPluginOption("pipelineOperator", "proposal");
              if (pipeProposal) {
                return this.parseTopicReference(pipeProposal);
              }
              this.unexpected();
              break;
            }
          case 47:
            {
              var lookaheadCh = this.input.codePointAt(this.nextTokenStart());
              if (isIdentifierStart(lookaheadCh) || lookaheadCh === 62) {
                this.expectOnePlugin(["jsx", "flow", "typescript"]);
              } else {
                this.unexpected();
              }
              break;
            }
          default:
            if (tokenIsIdentifier(type)) {
              if (this.isContextual(125) && this.lookaheadInLineCharCode() === 123) {
                return this.parseModuleExpression();
              }
              var _canBeArrow = this.state.potentialArrowAt === this.state.start;
              var containsEsc = this.state.containsEsc;
              var id = this.parseIdentifier();
              if (!containsEsc && id.name === "async" && !this.canInsertSemicolon()) {
                var _type = this.state.type;
                if (_type === 68) {
                  this.resetPreviousNodeTrailingComments(id);
                  this.next();
                  return this.parseAsyncFunctionExpression(this.startNodeAtNode(id));
                } else if (tokenIsIdentifier(_type)) {
                  if (this.lookaheadCharCode() === 61) {
                    return this.parseAsyncArrowUnaryFunction(this.startNodeAtNode(id));
                  } else {
                    return id;
                  }
                } else if (_type === 90) {
                  this.resetPreviousNodeTrailingComments(id);
                  return this.parseDo(this.startNodeAtNode(id), true);
                }
              }
              if (_canBeArrow && this.match(19) && !this.canInsertSemicolon()) {
                this.next();
                return this.parseArrowExpression(this.startNodeAtNode(id), [id], false);
              }
              return id;
            } else {
              this.unexpected();
            }
        }
      };
      _proto.parseTopicReferenceThenEqualsSign = function parseTopicReferenceThenEqualsSign(topicTokenType, topicTokenValue) {
        var pipeProposal = this.getPluginOption("pipelineOperator", "proposal");
        if (pipeProposal) {
          this.state.type = topicTokenType;
          this.state.value = topicTokenValue;
          this.state.pos--;
          this.state.end--;
          this.state.endLoc = createPositionWithColumnOffset(this.state.endLoc, -1);
          return this.parseTopicReference(pipeProposal);
        } else {
          this.unexpected();
        }
      };
      _proto.parseTopicReference = function parseTopicReference(pipeProposal) {
        var node = this.startNode();
        var startLoc = this.state.startLoc;
        var tokenType = this.state.type;
        this.next();
        return this.finishTopicReference(node, startLoc, pipeProposal, tokenType);
      };
      _proto.finishTopicReference = function finishTopicReference(node, startLoc, pipeProposal, tokenType) {
        if (this.testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType)) {
          var nodeType = pipeProposal === "smart" ? "PipelinePrimaryTopicReference" : "TopicReference";
          if (!this.topicReferenceIsAllowedInCurrentContext()) {
            this.raise(pipeProposal === "smart" ? Errors.PrimaryTopicNotAllowed : Errors.PipeTopicUnbound, {
              at: startLoc
            });
          }
          this.registerTopicReference();
          return this.finishNode(node, nodeType);
        } else {
          throw this.raise(Errors.PipeTopicUnconfiguredToken, {
            at: startLoc,
            token: tokenLabelName(tokenType)
          });
        }
      };
      _proto.testTopicReferenceConfiguration = function testTopicReferenceConfiguration(pipeProposal, startLoc, tokenType) {
        switch (pipeProposal) {
          case "hack":
            {
              return this.hasPlugin(["pipelineOperator", {
                topicToken: tokenLabelName(tokenType)
              }]);
            }
          case "smart":
            return tokenType === 27;
          default:
            throw this.raise(Errors.PipeTopicRequiresHackPipes, {
              at: startLoc
            });
        }
      };
      _proto.parseAsyncArrowUnaryFunction = function parseAsyncArrowUnaryFunction(node) {
        this.prodParam.enter(functionFlags(true, this.prodParam.hasYield));
        var params = [this.parseIdentifier()];
        this.prodParam.exit();
        if (this.hasPrecedingLineBreak()) {
          this.raise(Errors.LineTerminatorBeforeArrow, {
            at: this.state.curPosition()
          });
        }
        this.expect(19);
        return this.parseArrowExpression(node, params, true);
      };
      _proto.parseDo = function parseDo(node, isAsync) {
        this.expectPlugin("doExpressions");
        if (isAsync) {
          this.expectPlugin("asyncDoExpressions");
        }
        node.async = isAsync;
        this.next();
        var oldLabels = this.state.labels;
        this.state.labels = [];
        if (isAsync) {
          this.prodParam.enter(PARAM_AWAIT);
          node.body = this.parseBlock();
          this.prodParam.exit();
        } else {
          node.body = this.parseBlock();
        }
        this.state.labels = oldLabels;
        return this.finishNode(node, "DoExpression");
      };
      _proto.parseSuper = function parseSuper() {
        var node = this.startNode();
        this.next();
        if (this.match(10) && !this.scope.allowDirectSuper && !this.options.allowSuperOutsideMethod) {
          this.raise(Errors.SuperNotAllowed, {
            at: node
          });
        } else if (!this.scope.allowSuper && !this.options.allowSuperOutsideMethod) {
          this.raise(Errors.UnexpectedSuper, {
            at: node
          });
        }
        if (!this.match(10) && !this.match(0) && !this.match(16)) {
          this.raise(Errors.UnsupportedSuper, {
            at: node
          });
        }
        return this.finishNode(node, "Super");
      };
      _proto.parsePrivateName = function parsePrivateName() {
        var node = this.startNode();
        var id = this.startNodeAt(createPositionWithColumnOffset(this.state.startLoc, 1));
        var name = this.state.value;
        this.next();
        node.id = this.createIdentifier(id, name);
        return this.finishNode(node, "PrivateName");
      };
      _proto.parseFunctionOrFunctionSent = function parseFunctionOrFunctionSent() {
        var node = this.startNode();
        this.next();
        if (this.prodParam.hasYield && this.match(16)) {
          var meta = this.createIdentifier(this.startNodeAtNode(node), "function");
          this.next();
          if (this.match(102)) {
            this.expectPlugin("functionSent");
          } else if (!this.hasPlugin("functionSent")) {
            this.unexpected();
          }
          return this.parseMetaProperty(node, meta, "sent");
        }
        return this.parseFunction(node);
      };
      _proto.parseMetaProperty = function parseMetaProperty(node, meta, propertyName) {
        node.meta = meta;
        var containsEsc = this.state.containsEsc;
        node.property = this.parseIdentifier(true);
        if (node.property.name !== propertyName || containsEsc) {
          this.raise(Errors.UnsupportedMetaProperty, {
            at: node.property,
            target: meta.name,
            onlyValidPropertyName: propertyName
          });
        }
        return this.finishNode(node, "MetaProperty");
      };
      _proto.parseImportMetaProperty = function parseImportMetaProperty(node) {
        var id = this.createIdentifier(this.startNodeAtNode(node), "import");
        this.next();
        if (this.isContextual(100)) {
          if (!this.inModule) {
            this.raise(Errors.ImportMetaOutsideModule, {
              at: id
            });
          }
          this.sawUnambiguousESM = true;
        }
        return this.parseMetaProperty(node, id, "meta");
      };
      _proto.parseLiteralAtNode = function parseLiteralAtNode(value, type, node) {
        this.addExtra(node, "rawValue", value);
        this.addExtra(node, "raw", this.input.slice(node.start, this.state.end));
        node.value = value;
        this.next();
        return this.finishNode(node, type);
      };
      _proto.parseLiteral = function parseLiteral(value, type) {
        var node = this.startNode();
        return this.parseLiteralAtNode(value, type, node);
      };
      _proto.parseStringLiteral = function parseStringLiteral(value) {
        return this.parseLiteral(value, "StringLiteral");
      };
      _proto.parseNumericLiteral = function parseNumericLiteral(value) {
        return this.parseLiteral(value, "NumericLiteral");
      };
      _proto.parseBigIntLiteral = function parseBigIntLiteral(value) {
        return this.parseLiteral(value, "BigIntLiteral");
      };
      _proto.parseDecimalLiteral = function parseDecimalLiteral(value) {
        return this.parseLiteral(value, "DecimalLiteral");
      };
      _proto.parseRegExpLiteral = function parseRegExpLiteral(value) {
        var node = this.parseLiteral(value.value, "RegExpLiteral");
        node.pattern = value.pattern;
        node.flags = value.flags;
        return node;
      };
      _proto.parseBooleanLiteral = function parseBooleanLiteral(value) {
        var node = this.startNode();
        node.value = value;
        this.next();
        return this.finishNode(node, "BooleanLiteral");
      };
      _proto.parseNullLiteral = function parseNullLiteral() {
        var node = this.startNode();
        this.next();
        return this.finishNode(node, "NullLiteral");
      };
      _proto.parseParenAndDistinguishExpression = function parseParenAndDistinguishExpression(canBeArrow) {
        var startLoc = this.state.startLoc;
        var val;
        this.next();
        this.expressionScope.enter(newArrowHeadScope());
        var oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
        var oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
        this.state.maybeInArrowParameters = true;
        this.state.inFSharpPipelineDirectBody = false;
        var innerStartLoc = this.state.startLoc;
        var exprList = [];
        var refExpressionErrors = new ExpressionErrors();
        var first = true;
        var spreadStartLoc;
        var optionalCommaStartLoc;
        while (!this.match(11)) {
          if (first) {
            first = false;
          } else {
            this.expect(12, refExpressionErrors.optionalParametersLoc === null ? null : refExpressionErrors.optionalParametersLoc);
            if (this.match(11)) {
              optionalCommaStartLoc = this.state.startLoc;
              break;
            }
          }
          if (this.match(21)) {
            var spreadNodeStartLoc = this.state.startLoc;
            spreadStartLoc = this.state.startLoc;
            exprList.push(this.parseParenItem(this.parseRestBinding(), spreadNodeStartLoc));
            if (!this.checkCommaAfterRest(41)) {
              break;
            }
          } else {
            exprList.push(this.parseMaybeAssignAllowIn(refExpressionErrors, this.parseParenItem));
          }
        }
        var innerEndLoc = this.state.lastTokEndLoc;
        this.expect(11);
        this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
        this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
        var arrowNode = this.startNodeAt(startLoc);
        if (canBeArrow && this.shouldParseArrow(exprList) && (arrowNode = this.parseArrow(arrowNode))) {
          this.checkDestructuringPrivate(refExpressionErrors);
          this.expressionScope.validateAsPattern();
          this.expressionScope.exit();
          this.parseArrowExpression(arrowNode, exprList, false);
          return arrowNode;
        }
        this.expressionScope.exit();
        if (!exprList.length) {
          this.unexpected(this.state.lastTokStartLoc);
        }
        if (optionalCommaStartLoc) this.unexpected(optionalCommaStartLoc);
        if (spreadStartLoc) this.unexpected(spreadStartLoc);
        this.checkExpressionErrors(refExpressionErrors, true);
        this.toReferencedListDeep(exprList, true);
        if (exprList.length > 1) {
          val = this.startNodeAt(innerStartLoc);
          val.expressions = exprList;
          this.finishNode(val, "SequenceExpression");
          this.resetEndLocation(val, innerEndLoc);
        } else {
          val = exprList[0];
        }
        return this.wrapParenthesis(startLoc, val);
      };
      _proto.wrapParenthesis = function wrapParenthesis(startLoc, expression) {
        if (!this.options.createParenthesizedExpressions) {
          this.addExtra(expression, "parenthesized", true);
          this.addExtra(expression, "parenStart", startLoc.index);
          this.takeSurroundingComments(expression, startLoc.index, this.state.lastTokEndLoc.index);
          return expression;
        }
        var parenExpression = this.startNodeAt(startLoc);
        parenExpression.expression = expression;
        return this.finishNode(parenExpression, "ParenthesizedExpression");
      };
      _proto.shouldParseArrow = function shouldParseArrow(params) {
        return !this.canInsertSemicolon();
      };
      _proto.parseArrow = function parseArrow(node) {
        if (this.eat(19)) {
          return node;
        }
      };
      _proto.parseParenItem = function parseParenItem(node, startLoc) {
        return node;
      };
      _proto.parseNewOrNewTarget = function parseNewOrNewTarget() {
        var node = this.startNode();
        this.next();
        if (this.match(16)) {
          var meta = this.createIdentifier(this.startNodeAtNode(node), "new");
          this.next();
          var metaProp = this.parseMetaProperty(node, meta, "target");
          if (!this.scope.inNonArrowFunction && !this.scope.inClass && !this.options.allowNewTargetOutsideFunction) {
            this.raise(Errors.UnexpectedNewTarget, {
              at: metaProp
            });
          }
          return metaProp;
        }
        return this.parseNew(node);
      };
      _proto.parseNew = function parseNew(node) {
        this.parseNewCallee(node);
        if (this.eat(10)) {
          var args = this.parseExprList(11);
          this.toReferencedList(args);
          node.arguments = args;
        } else {
          node.arguments = [];
        }
        return this.finishNode(node, "NewExpression");
      };
      _proto.parseNewCallee = function parseNewCallee(node) {
        node.callee = this.parseNoCallExpr();
        if (node.callee.type === "Import") {
          this.raise(Errors.ImportCallNotNewExpression, {
            at: node.callee
          });
        }
      };
      _proto.parseTemplateElement = function parseTemplateElement(isTagged) {
        var _this$state = this.state,
          start = _this$state.start,
          startLoc = _this$state.startLoc,
          end = _this$state.end,
          value = _this$state.value;
        var elemStart = start + 1;
        var elem = this.startNodeAt(createPositionWithColumnOffset(startLoc, 1));
        if (value === null) {
          if (!isTagged) {
            this.raise(Errors.InvalidEscapeSequenceTemplate, {
              at: createPositionWithColumnOffset(this.state.firstInvalidTemplateEscapePos, 1)
            });
          }
        }
        var isTail = this.match(24);
        var endOffset = isTail ? -1 : -2;
        var elemEnd = end + endOffset;
        elem.value = {
          raw: this.input.slice(elemStart, elemEnd).replace(/\r\n?/g, "\n"),
          cooked: value === null ? null : value.slice(1, endOffset)
        };
        elem.tail = isTail;
        this.next();
        var finishedNode = this.finishNode(elem, "TemplateElement");
        this.resetEndLocation(finishedNode, createPositionWithColumnOffset(this.state.lastTokEndLoc, endOffset));
        return finishedNode;
      };
      _proto.parseTemplate = function parseTemplate(isTagged) {
        var node = this.startNode();
        node.expressions = [];
        var curElt = this.parseTemplateElement(isTagged);
        node.quasis = [curElt];
        while (!curElt.tail) {
          node.expressions.push(this.parseTemplateSubstitution());
          this.readTemplateContinuation();
          node.quasis.push(curElt = this.parseTemplateElement(isTagged));
        }
        return this.finishNode(node, "TemplateLiteral");
      };
      _proto.parseTemplateSubstitution = function parseTemplateSubstitution() {
        return this.parseExpression();
      };
      _proto.parseObjectLike = function parseObjectLike(close, isPattern, isRecord, refExpressionErrors) {
        if (isRecord) {
          this.expectPlugin("recordAndTuple");
        }
        var oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
        this.state.inFSharpPipelineDirectBody = false;
        var propHash = Object.create(null);
        var first = true;
        var node = this.startNode();
        node.properties = [];
        this.next();
        while (!this.match(close)) {
          if (first) {
            first = false;
          } else {
            this.expect(12);
            if (this.match(close)) {
              this.addTrailingCommaExtraToNode(node);
              break;
            }
          }
          var prop = void 0;
          if (isPattern) {
            prop = this.parseBindingProperty();
          } else {
            prop = this.parsePropertyDefinition(refExpressionErrors);
            this.checkProto(prop, isRecord, propHash, refExpressionErrors);
          }
          if (isRecord && !this.isObjectProperty(prop) && prop.type !== "SpreadElement") {
            this.raise(Errors.InvalidRecordProperty, {
              at: prop
            });
          }
          if (prop.shorthand) {
            this.addExtra(prop, "shorthand", true);
          }
          node.properties.push(prop);
        }
        this.next();
        this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
        var type = "ObjectExpression";
        if (isPattern) {
          type = "ObjectPattern";
        } else if (isRecord) {
          type = "RecordExpression";
        }
        return this.finishNode(node, type);
      };
      _proto.addTrailingCommaExtraToNode = function addTrailingCommaExtraToNode(node) {
        this.addExtra(node, "trailingComma", this.state.lastTokStart);
        this.addExtra(node, "trailingCommaLoc", this.state.lastTokStartLoc, false);
      };
      _proto.maybeAsyncOrAccessorProp = function maybeAsyncOrAccessorProp(prop) {
        return !prop.computed && prop.key.type === "Identifier" && (this.isLiteralPropertyName() || this.match(0) || this.match(55));
      };
      _proto.parsePropertyDefinition = function parsePropertyDefinition(refExpressionErrors) {
        var decorators = [];
        if (this.match(26)) {
          if (this.hasPlugin("decorators")) {
            this.raise(Errors.UnsupportedPropertyDecorator, {
              at: this.state.startLoc
            });
          }
          while (this.match(26)) {
            decorators.push(this.parseDecorator());
          }
        }
        var prop = this.startNode();
        var isAsync = false;
        var isAccessor = false;
        var startLoc;
        if (this.match(21)) {
          if (decorators.length) this.unexpected();
          return this.parseSpread();
        }
        if (decorators.length) {
          prop.decorators = decorators;
          decorators = [];
        }
        prop.method = false;
        if (refExpressionErrors) {
          startLoc = this.state.startLoc;
        }
        var isGenerator = this.eat(55);
        this.parsePropertyNamePrefixOperator(prop);
        var containsEsc = this.state.containsEsc;
        var key = this.parsePropertyName(prop, refExpressionErrors);
        if (!isGenerator && !containsEsc && this.maybeAsyncOrAccessorProp(prop)) {
          var keyName = key.name;
          if (keyName === "async" && !this.hasPrecedingLineBreak()) {
            isAsync = true;
            this.resetPreviousNodeTrailingComments(key);
            isGenerator = this.eat(55);
            this.parsePropertyName(prop);
          }
          if (keyName === "get" || keyName === "set") {
            isAccessor = true;
            this.resetPreviousNodeTrailingComments(key);
            prop.kind = keyName;
            if (this.match(55)) {
              isGenerator = true;
              this.raise(Errors.AccessorIsGenerator, {
                at: this.state.curPosition(),
                kind: keyName
              });
              this.next();
            }
            this.parsePropertyName(prop);
          }
        }
        return this.parseObjPropValue(prop, startLoc, isGenerator, isAsync, false, isAccessor, refExpressionErrors);
      };
      _proto.getGetterSetterExpectedParamCount = function getGetterSetterExpectedParamCount(method) {
        return method.kind === "get" ? 0 : 1;
      };
      _proto.getObjectOrClassMethodParams = function getObjectOrClassMethodParams(method) {
        return method.params;
      };
      _proto.checkGetterSetterParams = function checkGetterSetterParams(method) {
        var _params;
        var paramCount = this.getGetterSetterExpectedParamCount(method);
        var params = this.getObjectOrClassMethodParams(method);
        if (params.length !== paramCount) {
          this.raise(method.kind === "get" ? Errors.BadGetterArity : Errors.BadSetterArity, {
            at: method
          });
        }
        if (method.kind === "set" && ((_params = params[params.length - 1]) == null ? void 0 : _params.type) === "RestElement") {
          this.raise(Errors.BadSetterRestParameter, {
            at: method
          });
        }
      };
      _proto.parseObjectMethod = function parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) {
        if (isAccessor) {
          var finishedProp = this.parseMethod(prop, isGenerator, false, false, false, "ObjectMethod");
          this.checkGetterSetterParams(finishedProp);
          return finishedProp;
        }
        if (isAsync || isGenerator || this.match(10)) {
          if (isPattern) this.unexpected();
          prop.kind = "method";
          prop.method = true;
          return this.parseMethod(prop, isGenerator, isAsync, false, false, "ObjectMethod");
        }
      };
      _proto.parseObjectProperty = function parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors) {
        prop.shorthand = false;
        if (this.eat(14)) {
          prop.value = isPattern ? this.parseMaybeDefault(this.state.startLoc) : this.parseMaybeAssignAllowIn(refExpressionErrors);
          return this.finishNode(prop, "ObjectProperty");
        }
        if (!prop.computed && prop.key.type === "Identifier") {
          this.checkReservedWord(prop.key.name, prop.key.loc.start, true, false);
          if (isPattern) {
            prop.value = this.parseMaybeDefault(startLoc, cloneIdentifier(prop.key));
          } else if (this.match(29)) {
            var shorthandAssignLoc = this.state.startLoc;
            if (refExpressionErrors != null) {
              if (refExpressionErrors.shorthandAssignLoc === null) {
                refExpressionErrors.shorthandAssignLoc = shorthandAssignLoc;
              }
            } else {
              this.raise(Errors.InvalidCoverInitializedName, {
                at: shorthandAssignLoc
              });
            }
            prop.value = this.parseMaybeDefault(startLoc, cloneIdentifier(prop.key));
          } else {
            prop.value = cloneIdentifier(prop.key);
          }
          prop.shorthand = true;
          return this.finishNode(prop, "ObjectProperty");
        }
      };
      _proto.parseObjPropValue = function parseObjPropValue(prop, startLoc, isGenerator, isAsync, isPattern, isAccessor, refExpressionErrors) {
        var node = this.parseObjectMethod(prop, isGenerator, isAsync, isPattern, isAccessor) || this.parseObjectProperty(prop, startLoc, isPattern, refExpressionErrors);
        if (!node) this.unexpected();
        return node;
      };
      _proto.parsePropertyName = function parsePropertyName(prop, refExpressionErrors) {
        if (this.eat(0)) {
          prop.computed = true;
          prop.key = this.parseMaybeAssignAllowIn();
          this.expect(3);
        } else {
          var _this$state2 = this.state,
            type = _this$state2.type,
            value = _this$state2.value;
          var key;
          if (tokenIsKeywordOrIdentifier(type)) {
            key = this.parseIdentifier(true);
          } else {
            switch (type) {
              case 132:
                key = this.parseNumericLiteral(value);
                break;
              case 131:
                key = this.parseStringLiteral(value);
                break;
              case 133:
                key = this.parseBigIntLiteral(value);
                break;
              case 134:
                key = this.parseDecimalLiteral(value);
                break;
              case 136:
                {
                  var privateKeyLoc = this.state.startLoc;
                  if (refExpressionErrors != null) {
                    if (refExpressionErrors.privateKeyLoc === null) {
                      refExpressionErrors.privateKeyLoc = privateKeyLoc;
                    }
                  } else {
                    this.raise(Errors.UnexpectedPrivateField, {
                      at: privateKeyLoc
                    });
                  }
                  key = this.parsePrivateName();
                  break;
                }
              default:
                this.unexpected();
            }
          }
          prop.key = key;
          if (type !== 136) {
            prop.computed = false;
          }
        }
        return prop.key;
      };
      _proto.initFunction = function initFunction(node, isAsync) {
        node.id = null;
        node.generator = false;
        node.async = isAsync;
      };
      _proto.parseMethod = function parseMethod(node, isGenerator, isAsync, isConstructor, allowDirectSuper, type, inClassScope) {
        if (inClassScope === void 0) {
          inClassScope = false;
        }
        this.initFunction(node, isAsync);
        node.generator = isGenerator;
        this.scope.enter(SCOPE_FUNCTION | SCOPE_SUPER | (inClassScope ? SCOPE_CLASS : 0) | (allowDirectSuper ? SCOPE_DIRECT_SUPER : 0));
        this.prodParam.enter(functionFlags(isAsync, node.generator));
        this.parseFunctionParams(node, isConstructor);
        var finishedNode = this.parseFunctionBodyAndFinish(node, type, true);
        this.prodParam.exit();
        this.scope.exit();
        return finishedNode;
      };
      _proto.parseArrayLike = function parseArrayLike(close, canBePattern, isTuple, refExpressionErrors) {
        if (isTuple) {
          this.expectPlugin("recordAndTuple");
        }
        var oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
        this.state.inFSharpPipelineDirectBody = false;
        var node = this.startNode();
        this.next();
        node.elements = this.parseExprList(close, !isTuple, refExpressionErrors, node);
        this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
        return this.finishNode(node, isTuple ? "TupleExpression" : "ArrayExpression");
      };
      _proto.parseArrowExpression = function parseArrowExpression(node, params, isAsync, trailingCommaLoc) {
        this.scope.enter(SCOPE_FUNCTION | SCOPE_ARROW);
        var flags = functionFlags(isAsync, false);
        if (!this.match(5) && this.prodParam.hasIn) {
          flags |= PARAM_IN;
        }
        this.prodParam.enter(flags);
        this.initFunction(node, isAsync);
        var oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
        if (params) {
          this.state.maybeInArrowParameters = true;
          this.setArrowFunctionParameters(node, params, trailingCommaLoc);
        }
        this.state.maybeInArrowParameters = false;
        this.parseFunctionBody(node, true);
        this.prodParam.exit();
        this.scope.exit();
        this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
        return this.finishNode(node, "ArrowFunctionExpression");
      };
      _proto.setArrowFunctionParameters = function setArrowFunctionParameters(node, params, trailingCommaLoc) {
        this.toAssignableList(params, trailingCommaLoc, false);
        node.params = params;
      };
      _proto.parseFunctionBodyAndFinish = function parseFunctionBodyAndFinish(node, type, isMethod) {
        if (isMethod === void 0) {
          isMethod = false;
        }
        this.parseFunctionBody(node, false, isMethod);
        return this.finishNode(node, type);
      };
      _proto.parseFunctionBody = function parseFunctionBody(node, allowExpression, isMethod) {
        var _this5 = this;
        if (isMethod === void 0) {
          isMethod = false;
        }
        var isExpression = allowExpression && !this.match(5);
        this.expressionScope.enter(newExpressionScope());
        if (isExpression) {
          node.body = this.parseMaybeAssign();
          this.checkParams(node, false, allowExpression, false);
        } else {
          var oldStrict = this.state.strict;
          var oldLabels = this.state.labels;
          this.state.labels = [];
          this.prodParam.enter(this.prodParam.currentFlags() | PARAM_RETURN);
          node.body = this.parseBlock(true, false, function (hasStrictModeDirective) {
            var nonSimple = !_this5.isSimpleParamList(node.params);
            if (hasStrictModeDirective && nonSimple) {
              _this5.raise(Errors.IllegalLanguageModeDirective, {
                at: (node.kind === "method" || node.kind === "constructor") && !!node.key ? node.key.loc.end : node
              });
            }
            var strictModeChanged = !oldStrict && _this5.state.strict;
            _this5.checkParams(node, !_this5.state.strict && !allowExpression && !isMethod && !nonSimple, allowExpression, strictModeChanged);
            if (_this5.state.strict && node.id) {
              _this5.checkIdentifier(node.id, BIND_OUTSIDE, strictModeChanged);
            }
          });
          this.prodParam.exit();
          this.state.labels = oldLabels;
        }
        this.expressionScope.exit();
      };
      _proto.isSimpleParameter = function isSimpleParameter(node) {
        return node.type === "Identifier";
      };
      _proto.isSimpleParamList = function isSimpleParamList(params) {
        for (var i = 0, len = params.length; i < len; i++) {
          if (!this.isSimpleParameter(params[i])) return false;
        }
        return true;
      };
      _proto.checkParams = function checkParams(node, allowDuplicates, isArrowFunction, strictModeChanged) {
        if (strictModeChanged === void 0) {
          strictModeChanged = true;
        }
        var checkClashes = !allowDuplicates && new Set();
        var formalParameters = {
          type: "FormalParameters"
        };
        for (var _i4 = 0, _node$params2 = node.params; _i4 < _node$params2.length; _i4++) {
          var param = _node$params2[_i4];
          this.checkLVal(param, {
            "in": formalParameters,
            binding: BIND_VAR,
            checkClashes: checkClashes,
            strictModeChanged: strictModeChanged
          });
        }
      };
      _proto.parseExprList = function parseExprList(close, allowEmpty, refExpressionErrors, nodeForExtra) {
        var elts = [];
        var first = true;
        while (!this.eat(close)) {
          if (first) {
            first = false;
          } else {
            this.expect(12);
            if (this.match(close)) {
              if (nodeForExtra) {
                this.addTrailingCommaExtraToNode(nodeForExtra);
              }
              this.next();
              break;
            }
          }
          elts.push(this.parseExprListItem(allowEmpty, refExpressionErrors));
        }
        return elts;
      };
      _proto.parseExprListItem = function parseExprListItem(allowEmpty, refExpressionErrors, allowPlaceholder) {
        var elt;
        if (this.match(12)) {
          if (!allowEmpty) {
            this.raise(Errors.UnexpectedToken, {
              at: this.state.curPosition(),
              unexpected: ","
            });
          }
          elt = null;
        } else if (this.match(21)) {
          var spreadNodeStartLoc = this.state.startLoc;
          elt = this.parseParenItem(this.parseSpread(refExpressionErrors), spreadNodeStartLoc);
        } else if (this.match(17)) {
          this.expectPlugin("partialApplication");
          if (!allowPlaceholder) {
            this.raise(Errors.UnexpectedArgumentPlaceholder, {
              at: this.state.startLoc
            });
          }
          var _node6 = this.startNode();
          this.next();
          elt = this.finishNode(_node6, "ArgumentPlaceholder");
        } else {
          elt = this.parseMaybeAssignAllowIn(refExpressionErrors, this.parseParenItem);
        }
        return elt;
      };
      _proto.parseIdentifier = function parseIdentifier(liberal) {
        var node = this.startNode();
        var name = this.parseIdentifierName(liberal);
        return this.createIdentifier(node, name);
      };
      _proto.createIdentifier = function createIdentifier(node, name) {
        node.name = name;
        node.loc.identifierName = name;
        return this.finishNode(node, "Identifier");
      };
      _proto.parseIdentifierName = function parseIdentifierName(liberal) {
        var name;
        var _this$state3 = this.state,
          startLoc = _this$state3.startLoc,
          type = _this$state3.type;
        if (tokenIsKeywordOrIdentifier(type)) {
          name = this.state.value;
        } else {
          this.unexpected();
        }
        var tokenIsKeyword = tokenKeywordOrIdentifierIsKeyword(type);
        if (liberal) {
          if (tokenIsKeyword) {
            this.replaceToken(130);
          }
        } else {
          this.checkReservedWord(name, startLoc, tokenIsKeyword, false);
        }
        this.next();
        return name;
      };
      _proto.checkReservedWord = function checkReservedWord(word, startLoc, checkKeywords, isBinding) {
        if (word.length > 10) {
          return;
        }
        if (!canBeReservedWord(word)) {
          return;
        }
        if (checkKeywords && isKeyword(word)) {
          this.raise(Errors.UnexpectedKeyword, {
            at: startLoc,
            keyword: word
          });
          return;
        }
        var reservedTest = !this.state.strict ? isReservedWord : isBinding ? isStrictBindReservedWord : isStrictReservedWord;
        if (reservedTest(word, this.inModule)) {
          this.raise(Errors.UnexpectedReservedWord, {
            at: startLoc,
            reservedWord: word
          });
          return;
        } else if (word === "yield") {
          if (this.prodParam.hasYield) {
            this.raise(Errors.YieldBindingIdentifier, {
              at: startLoc
            });
            return;
          }
        } else if (word === "await") {
          if (this.prodParam.hasAwait) {
            this.raise(Errors.AwaitBindingIdentifier, {
              at: startLoc
            });
            return;
          }
          if (this.scope.inStaticBlock) {
            this.raise(Errors.AwaitBindingIdentifierInStaticBlock, {
              at: startLoc
            });
            return;
          }
          this.expressionScope.recordAsyncArrowParametersError({
            at: startLoc
          });
        } else if (word === "arguments") {
          if (this.scope.inClassAndNotInNonArrowFunction) {
            this.raise(Errors.ArgumentsInClass, {
              at: startLoc
            });
            return;
          }
        }
      };
      _proto.isAwaitAllowed = function isAwaitAllowed() {
        if (this.prodParam.hasAwait) return true;
        if (this.options.allowAwaitOutsideFunction && !this.scope.inFunction) {
          return true;
        }
        return false;
      };
      _proto.parseAwait = function parseAwait(startLoc) {
        var node = this.startNodeAt(startLoc);
        this.expressionScope.recordParameterInitializerError(Errors.AwaitExpressionFormalParameter, {
          at: node
        });
        if (this.eat(55)) {
          this.raise(Errors.ObsoleteAwaitStar, {
            at: node
          });
        }
        if (!this.scope.inFunction && !this.options.allowAwaitOutsideFunction) {
          if (this.isAmbiguousAwait()) {
            this.ambiguousScriptDifferentAst = true;
          } else {
            this.sawUnambiguousESM = true;
          }
        }
        if (!this.state.soloAwait) {
          node.argument = this.parseMaybeUnary(null, true);
        }
        return this.finishNode(node, "AwaitExpression");
      };
      _proto.isAmbiguousAwait = function isAmbiguousAwait() {
        if (this.hasPrecedingLineBreak()) return true;
        var type = this.state.type;
        return type === 53 || type === 10 || type === 0 || tokenIsTemplate(type) || type === 101 && !this.state.containsEsc || type === 135 || type === 56 || this.hasPlugin("v8intrinsic") && type === 54;
      };
      _proto.parseYield = function parseYield() {
        var node = this.startNode();
        this.expressionScope.recordParameterInitializerError(Errors.YieldInParameter, {
          at: node
        });
        this.next();
        var delegating = false;
        var argument = null;
        if (!this.hasPrecedingLineBreak()) {
          delegating = this.eat(55);
          switch (this.state.type) {
            case 13:
            case 137:
            case 8:
            case 11:
            case 3:
            case 9:
            case 14:
            case 12:
              if (!delegating) break;
            default:
              argument = this.parseMaybeAssign();
          }
        }
        node.delegate = delegating;
        node.argument = argument;
        return this.finishNode(node, "YieldExpression");
      };
      _proto.checkPipelineAtInfixOperator = function checkPipelineAtInfixOperator(left, leftStartLoc) {
        if (this.hasPlugin(["pipelineOperator", {
          proposal: "smart"
        }])) {
          if (left.type === "SequenceExpression") {
            this.raise(Errors.PipelineHeadSequenceExpression, {
              at: leftStartLoc
            });
          }
        }
      };
      _proto.parseSmartPipelineBodyInStyle = function parseSmartPipelineBodyInStyle(childExpr, startLoc) {
        if (this.isSimpleReference(childExpr)) {
          var bodyNode = this.startNodeAt(startLoc);
          bodyNode.callee = childExpr;
          return this.finishNode(bodyNode, "PipelineBareFunction");
        } else {
          var _bodyNode = this.startNodeAt(startLoc);
          this.checkSmartPipeTopicBodyEarlyErrors(startLoc);
          _bodyNode.expression = childExpr;
          return this.finishNode(_bodyNode, "PipelineTopicExpression");
        }
      };
      _proto.isSimpleReference = function isSimpleReference(expression) {
        switch (expression.type) {
          case "MemberExpression":
            return !expression.computed && this.isSimpleReference(expression.object);
          case "Identifier":
            return true;
          default:
            return false;
        }
      };
      _proto.checkSmartPipeTopicBodyEarlyErrors = function checkSmartPipeTopicBodyEarlyErrors(startLoc) {
        if (this.match(19)) {
          throw this.raise(Errors.PipelineBodyNoArrow, {
            at: this.state.startLoc
          });
        }
        if (!this.topicReferenceWasUsedInCurrentContext()) {
          this.raise(Errors.PipelineTopicUnused, {
            at: startLoc
          });
        }
      };
      _proto.withTopicBindingContext = function withTopicBindingContext(callback) {
        var outerContextTopicState = this.state.topicContext;
        this.state.topicContext = {
          maxNumOfResolvableTopics: 1,
          maxTopicIndex: null
        };
        try {
          return callback();
        } finally {
          this.state.topicContext = outerContextTopicState;
        }
      };
      _proto.withSmartMixTopicForbiddingContext = function withSmartMixTopicForbiddingContext(callback) {
        if (this.hasPlugin(["pipelineOperator", {
          proposal: "smart"
        }])) {
          var outerContextTopicState = this.state.topicContext;
          this.state.topicContext = {
            maxNumOfResolvableTopics: 0,
            maxTopicIndex: null
          };
          try {
            return callback();
          } finally {
            this.state.topicContext = outerContextTopicState;
          }
        } else {
          return callback();
        }
      };
      _proto.withSoloAwaitPermittingContext = function withSoloAwaitPermittingContext(callback) {
        var outerContextSoloAwaitState = this.state.soloAwait;
        this.state.soloAwait = true;
        try {
          return callback();
        } finally {
          this.state.soloAwait = outerContextSoloAwaitState;
        }
      };
      _proto.allowInAnd = function allowInAnd(callback) {
        var flags = this.prodParam.currentFlags();
        var prodParamToSet = PARAM_IN & ~flags;
        if (prodParamToSet) {
          this.prodParam.enter(flags | PARAM_IN);
          try {
            return callback();
          } finally {
            this.prodParam.exit();
          }
        }
        return callback();
      };
      _proto.disallowInAnd = function disallowInAnd(callback) {
        var flags = this.prodParam.currentFlags();
        var prodParamToClear = PARAM_IN & flags;
        if (prodParamToClear) {
          this.prodParam.enter(flags & ~PARAM_IN);
          try {
            return callback();
          } finally {
            this.prodParam.exit();
          }
        }
        return callback();
      };
      _proto.registerTopicReference = function registerTopicReference() {
        this.state.topicContext.maxTopicIndex = 0;
      };
      _proto.topicReferenceIsAllowedInCurrentContext = function topicReferenceIsAllowedInCurrentContext() {
        return this.state.topicContext.maxNumOfResolvableTopics >= 1;
      };
      _proto.topicReferenceWasUsedInCurrentContext = function topicReferenceWasUsedInCurrentContext() {
        return this.state.topicContext.maxTopicIndex != null && this.state.topicContext.maxTopicIndex >= 0;
      };
      _proto.parseFSharpPipelineBody = function parseFSharpPipelineBody(prec) {
        var startLoc = this.state.startLoc;
        this.state.potentialArrowAt = this.state.start;
        var oldInFSharpPipelineDirectBody = this.state.inFSharpPipelineDirectBody;
        this.state.inFSharpPipelineDirectBody = true;
        var ret = this.parseExprOp(this.parseMaybeUnaryOrPrivate(), startLoc, prec);
        this.state.inFSharpPipelineDirectBody = oldInFSharpPipelineDirectBody;
        return ret;
      };
      _proto.parseModuleExpression = function parseModuleExpression() {
        this.expectPlugin("moduleBlocks");
        var node = this.startNode();
        this.next();
        if (!this.match(5)) {
          this.unexpected(null, 5);
        }
        var program = this.startNodeAt(this.state.endLoc);
        this.next();
        var revertScopes = this.initializeScopes(true);
        this.enterInitialScopes();
        try {
          node.body = this.parseProgram(program, 8, "module");
        } finally {
          revertScopes();
        }
        return this.finishNode(node, "ModuleExpression");
      };
      _proto.parsePropertyNamePrefixOperator = function parsePropertyNamePrefixOperator(prop) {};
      return _createClass(ExpressionParser);
    }(LValParser);
  
    var loopLabel = {
        kind: "loop"
      },
      switchLabel = {
        kind: "switch"
      };
    var ParseFunctionFlag = {
      Expression: 0,
      Declaration: 1,
      HangingDeclaration: 2,
      NullableId: 4,
      Async: 8
    };
    var ParseStatementFlag = {
      StatementOnly: 0,
      AllowImportExport: 1,
      AllowDeclaration: 2,
      AllowFunctionDeclaration: 4,
      AllowLabeledFunction: 8
    };
    var loneSurrogate = /(?:[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/;
    var keywordRelationalOperator = new RegExp("in(?:stanceof)?", "y");
    function babel7CompatTokens(tokens, input) {
      for (var i = 0; i < tokens.length; i++) {
        var token = tokens[i];
        var type = token.type;
        if (typeof type === "number") {
          {
            if (type === 136) {
              var loc = token.loc,
                start = token.start,
                value = token.value,
                end = token.end;
              var hashEndPos = start + 1;
              var hashEndLoc = createPositionWithColumnOffset(loc.start, 1);
              tokens.splice(i, 1, new Token({
                type: getExportedToken(27),
                value: "#",
                start: start,
                end: hashEndPos,
                startLoc: loc.start,
                endLoc: hashEndLoc
              }), new Token({
                type: getExportedToken(130),
                value: value,
                start: hashEndPos,
                end: end,
                startLoc: hashEndLoc,
                endLoc: loc.end
              }));
              i++;
              continue;
            }
            if (tokenIsTemplate(type)) {
              var _loc = token.loc,
                _start = token.start,
                _value = token.value,
                _end = token.end;
              var backquoteEnd = _start + 1;
              var backquoteEndLoc = createPositionWithColumnOffset(_loc.start, 1);
              var startToken = void 0;
              if (input.charCodeAt(_start) === 96) {
                startToken = new Token({
                  type: getExportedToken(22),
                  value: "`",
                  start: _start,
                  end: backquoteEnd,
                  startLoc: _loc.start,
                  endLoc: backquoteEndLoc
                });
              } else {
                startToken = new Token({
                  type: getExportedToken(8),
                  value: "}",
                  start: _start,
                  end: backquoteEnd,
                  startLoc: _loc.start,
                  endLoc: backquoteEndLoc
                });
              }
              var templateValue = void 0,
                templateElementEnd = void 0,
                templateElementEndLoc = void 0,
                endToken = void 0;
              if (type === 24) {
                templateElementEnd = _end - 1;
                templateElementEndLoc = createPositionWithColumnOffset(_loc.end, -1);
                templateValue = _value === null ? null : _value.slice(1, -1);
                endToken = new Token({
                  type: getExportedToken(22),
                  value: "`",
                  start: templateElementEnd,
                  end: _end,
                  startLoc: templateElementEndLoc,
                  endLoc: _loc.end
                });
              } else {
                templateElementEnd = _end - 2;
                templateElementEndLoc = createPositionWithColumnOffset(_loc.end, -2);
                templateValue = _value === null ? null : _value.slice(1, -2);
                endToken = new Token({
                  type: getExportedToken(23),
                  value: "${",
                  start: templateElementEnd,
                  end: _end,
                  startLoc: templateElementEndLoc,
                  endLoc: _loc.end
                });
              }
              tokens.splice(i, 1, startToken, new Token({
                type: getExportedToken(20),
                value: templateValue,
                start: backquoteEnd,
                end: templateElementEnd,
                startLoc: backquoteEndLoc,
                endLoc: templateElementEndLoc
              }), endToken);
              i += 2;
              continue;
            }
          }
          token.type = getExportedToken(type);
        }
      }
      return tokens;
    }
    var StatementParser = function (_ExpressionParser) {
      _inherits(StatementParser, _ExpressionParser);
      function StatementParser() {
        return _ExpressionParser.apply(this, arguments) || this;
      }
      var _proto = StatementParser.prototype;
      _proto.parseTopLevel = function parseTopLevel(file, program) {
        file.program = this.parseProgram(program);
        file.comments = this.state.comments;
        if (this.options.tokens) {
          file.tokens = babel7CompatTokens(this.tokens, this.input);
        }
        return this.finishNode(file, "File");
      };
      _proto.parseProgram = function parseProgram(program, end, sourceType) {
        if (end === void 0) {
          end = 137;
        }
        if (sourceType === void 0) {
          sourceType = this.options.sourceType;
        }
        program.sourceType = sourceType;
        program.interpreter = this.parseInterpreterDirective();
        this.parseBlockBody(program, true, true, end);
        if (this.inModule && !this.options.allowUndeclaredExports && this.scope.undefinedExports.size > 0) {
          for (var _i2 = 0, _Array$from2 = Array.from(this.scope.undefinedExports); _i2 < _Array$from2.length; _i2++) {
            var _Array$from2$_i = _Array$from2[_i2],
              localName = _Array$from2$_i[0],
              at = _Array$from2$_i[1];
            this.raise(Errors.ModuleExportUndefined, {
              at: at,
              localName: localName
            });
          }
        }
        var finishedProgram;
        if (end === 137) {
          finishedProgram = this.finishNode(program, "Program");
        } else {
          finishedProgram = this.finishNodeAt(program, "Program", createPositionWithColumnOffset(this.state.startLoc, -1));
        }
        return finishedProgram;
      };
      _proto.stmtToDirective = function stmtToDirective(stmt) {
        var directive = stmt;
        directive.type = "Directive";
        directive.value = directive.expression;
        delete directive.expression;
        var directiveLiteral = directive.value;
        var expressionValue = directiveLiteral.value;
        var raw = this.input.slice(directiveLiteral.start, directiveLiteral.end);
        var val = directiveLiteral.value = raw.slice(1, -1);
        this.addExtra(directiveLiteral, "raw", raw);
        this.addExtra(directiveLiteral, "rawValue", val);
        this.addExtra(directiveLiteral, "expressionValue", expressionValue);
        directiveLiteral.type = "DirectiveLiteral";
        return directive;
      };
      _proto.parseInterpreterDirective = function parseInterpreterDirective() {
        if (!this.match(28)) {
          return null;
        }
        var node = this.startNode();
        node.value = this.state.value;
        this.next();
        return this.finishNode(node, "InterpreterDirective");
      };
      _proto.isLet = function isLet() {
        if (!this.isContextual(99)) {
          return false;
        }
        return this.hasFollowingBindingAtom();
      };
      _proto.chStartsBindingIdentifier = function chStartsBindingIdentifier(ch, pos) {
        if (isIdentifierStart(ch)) {
          keywordRelationalOperator.lastIndex = pos;
          if (keywordRelationalOperator.test(this.input)) {
            var endCh = this.codePointAtPos(keywordRelationalOperator.lastIndex);
            if (!isIdentifierChar(endCh) && endCh !== 92) {
              return false;
            }
          }
          return true;
        } else if (ch === 92) {
          return true;
        } else {
          return false;
        }
      };
      _proto.chStartsBindingPattern = function chStartsBindingPattern(ch) {
        return ch === 91 || ch === 123;
      };
      _proto.hasFollowingBindingAtom = function hasFollowingBindingAtom() {
        var next = this.nextTokenStart();
        var nextCh = this.codePointAtPos(next);
        return this.chStartsBindingPattern(nextCh) || this.chStartsBindingIdentifier(nextCh, next);
      };
      _proto.hasInLineFollowingBindingIdentifier = function hasInLineFollowingBindingIdentifier() {
        var next = this.nextTokenInLineStart();
        var nextCh = this.codePointAtPos(next);
        return this.chStartsBindingIdentifier(nextCh, next);
      };
      _proto.startsUsingForOf = function startsUsingForOf() {
        var _this$lookahead = this.lookahead(),
          type = _this$lookahead.type,
          containsEsc = _this$lookahead.containsEsc;
        if (type === 101 && !containsEsc) {
          return false;
        } else if (tokenIsIdentifier(type) && !this.hasFollowingLineBreak()) {
          this.expectPlugin("explicitResourceManagement");
          return true;
        }
      };
      _proto.parseModuleItem = function parseModuleItem() {
        return this.parseStatementLike(ParseStatementFlag.AllowImportExport | ParseStatementFlag.AllowDeclaration | ParseStatementFlag.AllowFunctionDeclaration | ParseStatementFlag.AllowLabeledFunction);
      };
      _proto.parseStatementListItem = function parseStatementListItem() {
        return this.parseStatementLike(ParseStatementFlag.AllowDeclaration | ParseStatementFlag.AllowFunctionDeclaration | (!this.options.annexB || this.state.strict ? 0 : ParseStatementFlag.AllowLabeledFunction));
      };
      _proto.parseStatementOrSloppyAnnexBFunctionDeclaration = function parseStatementOrSloppyAnnexBFunctionDeclaration(allowLabeledFunction) {
        if (allowLabeledFunction === void 0) {
          allowLabeledFunction = false;
        }
        var flags = ParseStatementFlag.StatementOnly;
        if (this.options.annexB && !this.state.strict) {
          flags |= ParseStatementFlag.AllowFunctionDeclaration;
          if (allowLabeledFunction) {
            flags |= ParseStatementFlag.AllowLabeledFunction;
          }
        }
        return this.parseStatementLike(flags);
      };
      _proto.parseStatement = function parseStatement() {
        return this.parseStatementLike(ParseStatementFlag.StatementOnly);
      };
      _proto.parseStatementLike = function parseStatementLike(flags) {
        var decorators = null;
        if (this.match(26)) {
          decorators = this.parseDecorators(true);
        }
        return this.parseStatementContent(flags, decorators);
      };
      _proto.parseStatementContent = function parseStatementContent(flags, decorators) {
        var starttype = this.state.type;
        var node = this.startNode();
        var allowDeclaration = !!(flags & ParseStatementFlag.AllowDeclaration);
        var allowFunctionDeclaration = !!(flags & ParseStatementFlag.AllowFunctionDeclaration);
        var topLevel = flags & ParseStatementFlag.AllowImportExport;
        switch (starttype) {
          case 60:
            return this.parseBreakContinueStatement(node, true);
          case 63:
            return this.parseBreakContinueStatement(node, false);
          case 64:
            return this.parseDebuggerStatement(node);
          case 90:
            return this.parseDoWhileStatement(node);
          case 91:
            return this.parseForStatement(node);
          case 68:
            if (this.lookaheadCharCode() === 46) break;
            if (!allowFunctionDeclaration) {
              this.raise(this.state.strict ? Errors.StrictFunction : this.options.annexB ? Errors.SloppyFunctionAnnexB : Errors.SloppyFunction, {
                at: this.state.startLoc
              });
            }
            return this.parseFunctionStatement(node, false, !allowDeclaration && allowFunctionDeclaration);
          case 80:
            if (!allowDeclaration) this.unexpected();
            return this.parseClass(this.maybeTakeDecorators(decorators, node), true);
          case 69:
            return this.parseIfStatement(node);
          case 70:
            return this.parseReturnStatement(node);
          case 71:
            return this.parseSwitchStatement(node);
          case 72:
            return this.parseThrowStatement(node);
          case 73:
            return this.parseTryStatement(node);
          case 105:
            if (this.state.containsEsc || !this.hasInLineFollowingBindingIdentifier()) {
              break;
            }
            this.expectPlugin("explicitResourceManagement");
            if (!this.scope.inModule && this.scope.inTopLevel) {
              this.raise(Errors.UnexpectedUsingDeclaration, {
                at: this.state.startLoc
              });
            } else if (!allowDeclaration) {
              this.raise(Errors.UnexpectedLexicalDeclaration, {
                at: this.state.startLoc
              });
            }
            return this.parseVarStatement(node, "using");
          case 99:
            {
              if (this.state.containsEsc) {
                break;
              }
              var next = this.nextTokenStart();
              var nextCh = this.codePointAtPos(next);
              if (nextCh !== 91) {
                if (!allowDeclaration && this.hasFollowingLineBreak()) break;
                if (!this.chStartsBindingIdentifier(nextCh, next) && nextCh !== 123) {
                  break;
                }
              }
            }
          case 75:
            {
              if (!allowDeclaration) {
                this.raise(Errors.UnexpectedLexicalDeclaration, {
                  at: this.state.startLoc
                });
              }
            }
          case 74:
            {
              var kind = this.state.value;
              return this.parseVarStatement(node, kind);
            }
          case 92:
            return this.parseWhileStatement(node);
          case 76:
            return this.parseWithStatement(node);
          case 5:
            return this.parseBlock();
          case 13:
            return this.parseEmptyStatement(node);
          case 83:
            {
              var nextTokenCharCode = this.lookaheadCharCode();
              if (nextTokenCharCode === 40 || nextTokenCharCode === 46) {
                break;
              }
            }
          case 82:
            {
              if (!this.options.allowImportExportEverywhere && !topLevel) {
                this.raise(Errors.UnexpectedImportExport, {
                  at: this.state.startLoc
                });
              }
              this.next();
              var result;
              if (starttype === 83) {
                result = this.parseImport(node);
                if (result.type === "ImportDeclaration" && (!result.importKind || result.importKind === "value")) {
                  this.sawUnambiguousESM = true;
                }
              } else {
                result = this.parseExport(node, decorators);
                if (result.type === "ExportNamedDeclaration" && (!result.exportKind || result.exportKind === "value") || result.type === "ExportAllDeclaration" && (!result.exportKind || result.exportKind === "value") || result.type === "ExportDefaultDeclaration") {
                  this.sawUnambiguousESM = true;
                }
              }
              this.assertModuleNodeAllowed(result);
              return result;
            }
          default:
            {
              if (this.isAsyncFunction()) {
                if (!allowDeclaration) {
                  this.raise(Errors.AsyncFunctionInSingleStatementContext, {
                    at: this.state.startLoc
                  });
                }
                this.next();
                return this.parseFunctionStatement(node, true, !allowDeclaration && allowFunctionDeclaration);
              }
            }
        }
        var maybeName = this.state.value;
        var expr = this.parseExpression();
        if (tokenIsIdentifier(starttype) && expr.type === "Identifier" && this.eat(14)) {
          return this.parseLabeledStatement(node, maybeName, expr, flags);
        } else {
          return this.parseExpressionStatement(node, expr, decorators);
        }
      };
      _proto.assertModuleNodeAllowed = function assertModuleNodeAllowed(node) {
        if (!this.options.allowImportExportEverywhere && !this.inModule) {
          this.raise(Errors.ImportOutsideModule, {
            at: node
          });
        }
      };
      _proto.decoratorsEnabledBeforeExport = function decoratorsEnabledBeforeExport() {
        if (this.hasPlugin("decorators-legacy")) return true;
        return this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport") !== false;
      };
      _proto.maybeTakeDecorators = function maybeTakeDecorators(maybeDecorators, classNode, exportNode) {
        if (maybeDecorators) {
          if (classNode.decorators && classNode.decorators.length > 0) {
            var _classNode$decorators;
            if (typeof this.getPluginOption("decorators", "decoratorsBeforeExport") !== "boolean") {
              this.raise(Errors.DecoratorsBeforeAfterExport, {
                at: classNode.decorators[0]
              });
            }
            (_classNode$decorators = classNode.decorators).unshift.apply(_classNode$decorators, maybeDecorators);
          } else {
            classNode.decorators = maybeDecorators;
          }
          this.resetStartLocationFromNode(classNode, maybeDecorators[0]);
          if (exportNode) this.resetStartLocationFromNode(exportNode, classNode);
        }
        return classNode;
      };
      _proto.canHaveLeadingDecorator = function canHaveLeadingDecorator() {
        return this.match(80);
      };
      _proto.parseDecorators = function parseDecorators(allowExport) {
        var decorators = [];
        do {
          decorators.push(this.parseDecorator());
        } while (this.match(26));
        if (this.match(82)) {
          if (!allowExport) {
            this.unexpected();
          }
          if (!this.decoratorsEnabledBeforeExport()) {
            this.raise(Errors.DecoratorExportClass, {
              at: this.state.startLoc
            });
          }
        } else if (!this.canHaveLeadingDecorator()) {
          throw this.raise(Errors.UnexpectedLeadingDecorator, {
            at: this.state.startLoc
          });
        }
        return decorators;
      };
      _proto.parseDecorator = function parseDecorator() {
        this.expectOnePlugin(["decorators", "decorators-legacy"]);
        var node = this.startNode();
        this.next();
        if (this.hasPlugin("decorators")) {
          var startLoc = this.state.startLoc;
          var expr;
          if (this.match(10)) {
            var _startLoc = this.state.startLoc;
            this.next();
            expr = this.parseExpression();
            this.expect(11);
            expr = this.wrapParenthesis(_startLoc, expr);
            var paramsStartLoc = this.state.startLoc;
            node.expression = this.parseMaybeDecoratorArguments(expr);
            if (this.getPluginOption("decorators", "allowCallParenthesized") === false && node.expression !== expr) {
              this.raise(Errors.DecoratorArgumentsOutsideParentheses, {
                at: paramsStartLoc
              });
            }
          } else {
            expr = this.parseIdentifier(false);
            while (this.eat(16)) {
              var _node = this.startNodeAt(startLoc);
              _node.object = expr;
              if (this.match(136)) {
                this.classScope.usePrivateName(this.state.value, this.state.startLoc);
                _node.property = this.parsePrivateName();
              } else {
                _node.property = this.parseIdentifier(true);
              }
              _node.computed = false;
              expr = this.finishNode(_node, "MemberExpression");
            }
            node.expression = this.parseMaybeDecoratorArguments(expr);
          }
        } else {
          node.expression = this.parseExprSubscripts();
        }
        return this.finishNode(node, "Decorator");
      };
      _proto.parseMaybeDecoratorArguments = function parseMaybeDecoratorArguments(expr) {
        if (this.eat(10)) {
          var _node2 = this.startNodeAtNode(expr);
          _node2.callee = expr;
          _node2.arguments = this.parseCallExpressionArguments(11, false);
          this.toReferencedList(_node2.arguments);
          return this.finishNode(_node2, "CallExpression");
        }
        return expr;
      };
      _proto.parseBreakContinueStatement = function parseBreakContinueStatement(node, isBreak) {
        this.next();
        if (this.isLineTerminator()) {
          node.label = null;
        } else {
          node.label = this.parseIdentifier();
          this.semicolon();
        }
        this.verifyBreakContinue(node, isBreak);
        return this.finishNode(node, isBreak ? "BreakStatement" : "ContinueStatement");
      };
      _proto.verifyBreakContinue = function verifyBreakContinue(node, isBreak) {
        var i;
        for (i = 0; i < this.state.labels.length; ++i) {
          var lab = this.state.labels[i];
          if (node.label == null || lab.name === node.label.name) {
            if (lab.kind != null && (isBreak || lab.kind === "loop")) break;
            if (node.label && isBreak) break;
          }
        }
        if (i === this.state.labels.length) {
          var type = isBreak ? "BreakStatement" : "ContinueStatement";
          this.raise(Errors.IllegalBreakContinue, {
            at: node,
            type: type
          });
        }
      };
      _proto.parseDebuggerStatement = function parseDebuggerStatement(node) {
        this.next();
        this.semicolon();
        return this.finishNode(node, "DebuggerStatement");
      };
      _proto.parseHeaderExpression = function parseHeaderExpression() {
        this.expect(10);
        var val = this.parseExpression();
        this.expect(11);
        return val;
      };
      _proto.parseDoWhileStatement = function parseDoWhileStatement(node) {
        var _this = this;
        this.next();
        this.state.labels.push(loopLabel);
        node.body = this.withSmartMixTopicForbiddingContext(function () {
          return _this.parseStatement();
        });
        this.state.labels.pop();
        this.expect(92);
        node.test = this.parseHeaderExpression();
        this.eat(13);
        return this.finishNode(node, "DoWhileStatement");
      };
      _proto.parseForStatement = function parseForStatement(node) {
        this.next();
        this.state.labels.push(loopLabel);
        var awaitAt = null;
        if (this.isAwaitAllowed() && this.eatContextual(96)) {
          awaitAt = this.state.lastTokStartLoc;
        }
        this.scope.enter(SCOPE_OTHER);
        this.expect(10);
        if (this.match(13)) {
          if (awaitAt !== null) {
            this.unexpected(awaitAt);
          }
          return this.parseFor(node, null);
        }
        var startsWithLet = this.isContextual(99);
        var startsWithUsing = this.isContextual(105);
        var isLetOrUsing = startsWithLet && this.hasFollowingBindingAtom() || startsWithUsing && this.startsUsingForOf();
        if (this.match(74) || this.match(75) || isLetOrUsing) {
          var initNode = this.startNode();
          var kind = this.state.value;
          this.next();
          this.parseVar(initNode, true, kind);
          var _init = this.finishNode(initNode, "VariableDeclaration");
          var isForIn = this.match(58);
          if (isForIn && startsWithUsing) {
            this.raise(Errors.ForInUsing, {
              at: _init
            });
          }
          if ((isForIn || this.isContextual(101)) && _init.declarations.length === 1) {
            return this.parseForIn(node, _init, awaitAt);
          }
          if (awaitAt !== null) {
            this.unexpected(awaitAt);
          }
          return this.parseFor(node, _init);
        }
        var startsWithAsync = this.isContextual(95);
        var refExpressionErrors = new ExpressionErrors();
        var init = this.parseExpression(true, refExpressionErrors);
        var isForOf = this.isContextual(101);
        if (isForOf) {
          if (startsWithLet) {
            this.raise(Errors.ForOfLet, {
              at: init
            });
          }
          if (awaitAt === null && startsWithAsync && init.type === "Identifier") {
            this.raise(Errors.ForOfAsync, {
              at: init
            });
          }
        }
        if (isForOf || this.match(58)) {
          this.checkDestructuringPrivate(refExpressionErrors);
          this.toAssignable(init, true);
          var type = isForOf ? "ForOfStatement" : "ForInStatement";
          this.checkLVal(init, {
            "in": {
              type: type
            }
          });
          return this.parseForIn(node, init, awaitAt);
        } else {
          this.checkExpressionErrors(refExpressionErrors, true);
        }
        if (awaitAt !== null) {
          this.unexpected(awaitAt);
        }
        return this.parseFor(node, init);
      };
      _proto.parseFunctionStatement = function parseFunctionStatement(node, isAsync, isHangingDeclaration) {
        this.next();
        return this.parseFunction(node, ParseFunctionFlag.Declaration | (isHangingDeclaration ? ParseFunctionFlag.HangingDeclaration : 0) | (isAsync ? ParseFunctionFlag.Async : 0));
      };
      _proto.parseIfStatement = function parseIfStatement(node) {
        this.next();
        node.test = this.parseHeaderExpression();
        node.consequent = this.parseStatementOrSloppyAnnexBFunctionDeclaration();
        node.alternate = this.eat(66) ? this.parseStatementOrSloppyAnnexBFunctionDeclaration() : null;
        return this.finishNode(node, "IfStatement");
      };
      _proto.parseReturnStatement = function parseReturnStatement(node) {
        if (!this.prodParam.hasReturn && !this.options.allowReturnOutsideFunction) {
          this.raise(Errors.IllegalReturn, {
            at: this.state.startLoc
          });
        }
        this.next();
        if (this.isLineTerminator()) {
          node.argument = null;
        } else {
          node.argument = this.parseExpression();
          this.semicolon();
        }
        return this.finishNode(node, "ReturnStatement");
      };
      _proto.parseSwitchStatement = function parseSwitchStatement(node) {
        this.next();
        node.discriminant = this.parseHeaderExpression();
        var cases = node.cases = [];
        this.expect(5);
        this.state.labels.push(switchLabel);
        this.scope.enter(SCOPE_OTHER);
        var cur;
        for (var sawDefault; !this.match(8);) {
          if (this.match(61) || this.match(65)) {
            var isCase = this.match(61);
            if (cur) this.finishNode(cur, "SwitchCase");
            cases.push(cur = this.startNode());
            cur.consequent = [];
            this.next();
            if (isCase) {
              cur.test = this.parseExpression();
            } else {
              if (sawDefault) {
                this.raise(Errors.MultipleDefaultsInSwitch, {
                  at: this.state.lastTokStartLoc
                });
              }
              sawDefault = true;
              cur.test = null;
            }
            this.expect(14);
          } else {
            if (cur) {
              cur.consequent.push(this.parseStatementListItem());
            } else {
              this.unexpected();
            }
          }
        }
        this.scope.exit();
        if (cur) this.finishNode(cur, "SwitchCase");
        this.next();
        this.state.labels.pop();
        return this.finishNode(node, "SwitchStatement");
      };
      _proto.parseThrowStatement = function parseThrowStatement(node) {
        this.next();
        if (this.hasPrecedingLineBreak()) {
          this.raise(Errors.NewlineAfterThrow, {
            at: this.state.lastTokEndLoc
          });
        }
        node.argument = this.parseExpression();
        this.semicolon();
        return this.finishNode(node, "ThrowStatement");
      };
      _proto.parseCatchClauseParam = function parseCatchClauseParam() {
        var param = this.parseBindingAtom();
        this.scope.enter(this.options.annexB && param.type === "Identifier" ? SCOPE_SIMPLE_CATCH : 0);
        this.checkLVal(param, {
          "in": {
            type: "CatchClause"
          },
          binding: BIND_CATCH_PARAM
        });
        return param;
      };
      _proto.parseTryStatement = function parseTryStatement(node) {
        var _this2 = this;
        this.next();
        node.block = this.parseBlock();
        node.handler = null;
        if (this.match(62)) {
          var clause = this.startNode();
          this.next();
          if (this.match(10)) {
            this.expect(10);
            clause.param = this.parseCatchClauseParam();
            this.expect(11);
          } else {
            clause.param = null;
            this.scope.enter(SCOPE_OTHER);
          }
          clause.body = this.withSmartMixTopicForbiddingContext(function () {
            return _this2.parseBlock(false, false);
          });
          this.scope.exit();
          node.handler = this.finishNode(clause, "CatchClause");
        }
        node.finalizer = this.eat(67) ? this.parseBlock() : null;
        if (!node.handler && !node.finalizer) {
          this.raise(Errors.NoCatchOrFinally, {
            at: node
          });
        }
        return this.finishNode(node, "TryStatement");
      };
      _proto.parseVarStatement = function parseVarStatement(node, kind, allowMissingInitializer) {
        if (allowMissingInitializer === void 0) {
          allowMissingInitializer = false;
        }
        this.next();
        this.parseVar(node, false, kind, allowMissingInitializer);
        this.semicolon();
        return this.finishNode(node, "VariableDeclaration");
      };
      _proto.parseWhileStatement = function parseWhileStatement(node) {
        var _this3 = this;
        this.next();
        node.test = this.parseHeaderExpression();
        this.state.labels.push(loopLabel);
        node.body = this.withSmartMixTopicForbiddingContext(function () {
          return _this3.parseStatement();
        });
        this.state.labels.pop();
        return this.finishNode(node, "WhileStatement");
      };
      _proto.parseWithStatement = function parseWithStatement(node) {
        var _this4 = this;
        if (this.state.strict) {
          this.raise(Errors.StrictWith, {
            at: this.state.startLoc
          });
        }
        this.next();
        node.object = this.parseHeaderExpression();
        node.body = this.withSmartMixTopicForbiddingContext(function () {
          return _this4.parseStatement();
        });
        return this.finishNode(node, "WithStatement");
      };
      _proto.parseEmptyStatement = function parseEmptyStatement(node) {
        this.next();
        return this.finishNode(node, "EmptyStatement");
      };
      _proto.parseLabeledStatement = function parseLabeledStatement(node, maybeName, expr, flags) {
        for (var _i4 = 0, _this$state$labels2 = this.state.labels; _i4 < _this$state$labels2.length; _i4++) {
          var label = _this$state$labels2[_i4];
          if (label.name === maybeName) {
            this.raise(Errors.LabelRedeclaration, {
              at: expr,
              labelName: maybeName
            });
          }
        }
        var kind = tokenIsLoop(this.state.type) ? "loop" : this.match(71) ? "switch" : null;
        for (var i = this.state.labels.length - 1; i >= 0; i--) {
          var _label = this.state.labels[i];
          if (_label.statementStart === node.start) {
            _label.statementStart = this.state.start;
            _label.kind = kind;
          } else {
            break;
          }
        }
        this.state.labels.push({
          name: maybeName,
          kind: kind,
          statementStart: this.state.start
        });
        node.body = flags & ParseStatementFlag.AllowLabeledFunction ? this.parseStatementOrSloppyAnnexBFunctionDeclaration(true) : this.parseStatement();
        this.state.labels.pop();
        node.label = expr;
        return this.finishNode(node, "LabeledStatement");
      };
      _proto.parseExpressionStatement = function parseExpressionStatement(node, expr, decorators) {
        node.expression = expr;
        this.semicolon();
        return this.finishNode(node, "ExpressionStatement");
      };
      _proto.parseBlock = function parseBlock(allowDirectives, createNewLexicalScope, afterBlockParse) {
        if (allowDirectives === void 0) {
          allowDirectives = false;
        }
        if (createNewLexicalScope === void 0) {
          createNewLexicalScope = true;
        }
        var node = this.startNode();
        if (allowDirectives) {
          this.state.strictErrors.clear();
        }
        this.expect(5);
        if (createNewLexicalScope) {
          this.scope.enter(SCOPE_OTHER);
        }
        this.parseBlockBody(node, allowDirectives, false, 8, afterBlockParse);
        if (createNewLexicalScope) {
          this.scope.exit();
        }
        return this.finishNode(node, "BlockStatement");
      };
      _proto.isValidDirective = function isValidDirective(stmt) {
        return stmt.type === "ExpressionStatement" && stmt.expression.type === "StringLiteral" && !stmt.expression.extra.parenthesized;
      };
      _proto.parseBlockBody = function parseBlockBody(node, allowDirectives, topLevel, end, afterBlockParse) {
        var body = node.body = [];
        var directives = node.directives = [];
        this.parseBlockOrModuleBlockBody(body, allowDirectives ? directives : undefined, topLevel, end, afterBlockParse);
      };
      _proto.parseBlockOrModuleBlockBody = function parseBlockOrModuleBlockBody(body, directives, topLevel, end, afterBlockParse) {
        var oldStrict = this.state.strict;
        var hasStrictModeDirective = false;
        var parsedNonDirective = false;
        while (!this.match(end)) {
          var stmt = topLevel ? this.parseModuleItem() : this.parseStatementListItem();
          if (directives && !parsedNonDirective) {
            if (this.isValidDirective(stmt)) {
              var directive = this.stmtToDirective(stmt);
              directives.push(directive);
              if (!hasStrictModeDirective && directive.value.value === "use strict") {
                hasStrictModeDirective = true;
                this.setStrict(true);
              }
              continue;
            }
            parsedNonDirective = true;
            this.state.strictErrors.clear();
          }
          body.push(stmt);
        }
        if (afterBlockParse) {
          afterBlockParse.call(this, hasStrictModeDirective);
        }
        if (!oldStrict) {
          this.setStrict(false);
        }
        this.next();
      };
      _proto.parseFor = function parseFor(node, init) {
        var _this5 = this;
        node.init = init;
        this.semicolon(false);
        node.test = this.match(13) ? null : this.parseExpression();
        this.semicolon(false);
        node.update = this.match(11) ? null : this.parseExpression();
        this.expect(11);
        node.body = this.withSmartMixTopicForbiddingContext(function () {
          return _this5.parseStatement();
        });
        this.scope.exit();
        this.state.labels.pop();
        return this.finishNode(node, "ForStatement");
      };
      _proto.parseForIn = function parseForIn(node, init, awaitAt) {
        var _this6 = this;
        var isForIn = this.match(58);
        this.next();
        if (isForIn) {
          if (awaitAt !== null) this.unexpected(awaitAt);
        } else {
          node["await"] = awaitAt !== null;
        }
        if (init.type === "VariableDeclaration" && init.declarations[0].init != null && (!isForIn || !this.options.annexB || this.state.strict || init.kind !== "var" || init.declarations[0].id.type !== "Identifier")) {
          this.raise(Errors.ForInOfLoopInitializer, {
            at: init,
            type: isForIn ? "ForInStatement" : "ForOfStatement"
          });
        }
        if (init.type === "AssignmentPattern") {
          this.raise(Errors.InvalidLhs, {
            at: init,
            ancestor: {
              type: "ForStatement"
            }
          });
        }
        node.left = init;
        node.right = isForIn ? this.parseExpression() : this.parseMaybeAssignAllowIn();
        this.expect(11);
        node.body = this.withSmartMixTopicForbiddingContext(function () {
          return _this6.parseStatement();
        });
        this.scope.exit();
        this.state.labels.pop();
        return this.finishNode(node, isForIn ? "ForInStatement" : "ForOfStatement");
      };
      _proto.parseVar = function parseVar(node, isFor, kind, allowMissingInitializer) {
        if (allowMissingInitializer === void 0) {
          allowMissingInitializer = false;
        }
        var declarations = node.declarations = [];
        node.kind = kind;
        for (;;) {
          var decl = this.startNode();
          this.parseVarId(decl, kind);
          decl.init = !this.eat(29) ? null : isFor ? this.parseMaybeAssignDisallowIn() : this.parseMaybeAssignAllowIn();
          if (decl.init === null && !allowMissingInitializer) {
            if (decl.id.type !== "Identifier" && !(isFor && (this.match(58) || this.isContextual(101)))) {
              this.raise(Errors.DeclarationMissingInitializer, {
                at: this.state.lastTokEndLoc,
                kind: "destructuring"
              });
            } else if (kind === "const" && !(this.match(58) || this.isContextual(101))) {
              this.raise(Errors.DeclarationMissingInitializer, {
                at: this.state.lastTokEndLoc,
                kind: "const"
              });
            }
          }
          declarations.push(this.finishNode(decl, "VariableDeclarator"));
          if (!this.eat(12)) break;
        }
        return node;
      };
      _proto.parseVarId = function parseVarId(decl, kind) {
        var id = this.parseBindingAtom();
        this.checkLVal(id, {
          "in": {
            type: "VariableDeclarator"
          },
          binding: kind === "var" ? BIND_VAR : BIND_LEXICAL
        });
        decl.id = id;
      };
      _proto.parseAsyncFunctionExpression = function parseAsyncFunctionExpression(node) {
        return this.parseFunction(node, ParseFunctionFlag.Async);
      };
      _proto.parseFunction = function parseFunction(node, flags) {
        var _this7 = this;
        if (flags === void 0) {
          flags = ParseFunctionFlag.Expression;
        }
        var hangingDeclaration = flags & ParseFunctionFlag.HangingDeclaration;
        var isDeclaration = !!(flags & ParseFunctionFlag.Declaration);
        var requireId = isDeclaration && !(flags & ParseFunctionFlag.NullableId);
        var isAsync = !!(flags & ParseFunctionFlag.Async);
        this.initFunction(node, isAsync);
        if (this.match(55)) {
          if (hangingDeclaration) {
            this.raise(Errors.GeneratorInSingleStatementContext, {
              at: this.state.startLoc
            });
          }
          this.next();
          node.generator = true;
        }
        if (isDeclaration) {
          node.id = this.parseFunctionId(requireId);
        }
        var oldMaybeInArrowParameters = this.state.maybeInArrowParameters;
        this.state.maybeInArrowParameters = false;
        this.scope.enter(SCOPE_FUNCTION);
        this.prodParam.enter(functionFlags(isAsync, node.generator));
        if (!isDeclaration) {
          node.id = this.parseFunctionId();
        }
        this.parseFunctionParams(node, false);
        this.withSmartMixTopicForbiddingContext(function () {
          _this7.parseFunctionBodyAndFinish(node, isDeclaration ? "FunctionDeclaration" : "FunctionExpression");
        });
        this.prodParam.exit();
        this.scope.exit();
        if (isDeclaration && !hangingDeclaration) {
          this.registerFunctionStatementId(node);
        }
        this.state.maybeInArrowParameters = oldMaybeInArrowParameters;
        return node;
      };
      _proto.parseFunctionId = function parseFunctionId(requireId) {
        return requireId || tokenIsIdentifier(this.state.type) ? this.parseIdentifier() : null;
      };
      _proto.parseFunctionParams = function parseFunctionParams(node, isConstructor) {
        this.expect(10);
        this.expressionScope.enter(newParameterDeclarationScope());
        node.params = this.parseBindingList(11, 41, ParseBindingListFlags.IS_FUNCTION_PARAMS | (isConstructor ? ParseBindingListFlags.IS_CONSTRUCTOR_PARAMS : 0));
        this.expressionScope.exit();
      };
      _proto.registerFunctionStatementId = function registerFunctionStatementId(node) {
        if (!node.id) return;
        this.scope.declareName(node.id.name, !this.options.annexB || this.state.strict || node.generator || node.async ? this.scope.treatFunctionsAsVar ? BIND_VAR : BIND_LEXICAL : BIND_FUNCTION, node.id.loc.start);
      };
      _proto.parseClass = function parseClass(node, isStatement, optionalId) {
        this.next();
        var oldStrict = this.state.strict;
        this.state.strict = true;
        this.parseClassId(node, isStatement, optionalId);
        this.parseClassSuper(node);
        node.body = this.parseClassBody(!!node.superClass, oldStrict);
        return this.finishNode(node, isStatement ? "ClassDeclaration" : "ClassExpression");
      };
      _proto.isClassProperty = function isClassProperty() {
        return this.match(29) || this.match(13) || this.match(8);
      };
      _proto.isClassMethod = function isClassMethod() {
        return this.match(10);
      };
      _proto.isNonstaticConstructor = function isNonstaticConstructor(method) {
        return !method.computed && !method["static"] && (method.key.name === "constructor" || method.key.value === "constructor");
      };
      _proto.parseClassBody = function parseClassBody(hadSuperClass, oldStrict) {
        var _this8 = this;
        this.classScope.enter();
        var state = {
          hadConstructor: false,
          hadSuperClass: hadSuperClass
        };
        var decorators = [];
        var classBody = this.startNode();
        classBody.body = [];
        this.expect(5);
        this.withSmartMixTopicForbiddingContext(function () {
          while (!_this8.match(8)) {
            if (_this8.eat(13)) {
              if (decorators.length > 0) {
                throw _this8.raise(Errors.DecoratorSemicolon, {
                  at: _this8.state.lastTokEndLoc
                });
              }
              continue;
            }
            if (_this8.match(26)) {
              decorators.push(_this8.parseDecorator());
              continue;
            }
            var member = _this8.startNode();
            if (decorators.length) {
              member.decorators = decorators;
              _this8.resetStartLocationFromNode(member, decorators[0]);
              decorators = [];
            }
            _this8.parseClassMember(classBody, member, state);
            if (member.kind === "constructor" && member.decorators && member.decorators.length > 0) {
              _this8.raise(Errors.DecoratorConstructor, {
                at: member
              });
            }
          }
        });
        this.state.strict = oldStrict;
        this.next();
        if (decorators.length) {
          throw this.raise(Errors.TrailingDecorator, {
            at: this.state.startLoc
          });
        }
        this.classScope.exit();
        return this.finishNode(classBody, "ClassBody");
      };
      _proto.parseClassMemberFromModifier = function parseClassMemberFromModifier(classBody, member) {
        var key = this.parseIdentifier(true);
        if (this.isClassMethod()) {
          var method = member;
          method.kind = "method";
          method.computed = false;
          method.key = key;
          method["static"] = false;
          this.pushClassMethod(classBody, method, false, false, false, false);
          return true;
        } else if (this.isClassProperty()) {
          var prop = member;
          prop.computed = false;
          prop.key = key;
          prop["static"] = false;
          classBody.body.push(this.parseClassProperty(prop));
          return true;
        }
        this.resetPreviousNodeTrailingComments(key);
        return false;
      };
      _proto.parseClassMember = function parseClassMember(classBody, member, state) {
        var isStatic = this.isContextual(104);
        if (isStatic) {
          if (this.parseClassMemberFromModifier(classBody, member)) {
            return;
          }
          if (this.eat(5)) {
            this.parseClassStaticBlock(classBody, member);
            return;
          }
        }
        this.parseClassMemberWithIsStatic(classBody, member, state, isStatic);
      };
      _proto.parseClassMemberWithIsStatic = function parseClassMemberWithIsStatic(classBody, member, state, isStatic) {
        var publicMethod = member;
        var privateMethod = member;
        var publicProp = member;
        var privateProp = member;
        var accessorProp = member;
        var method = publicMethod;
        var publicMember = publicMethod;
        member["static"] = isStatic;
        this.parsePropertyNamePrefixOperator(member);
        if (this.eat(55)) {
          method.kind = "method";
          var isPrivateName = this.match(136);
          this.parseClassElementName(method);
          if (isPrivateName) {
            this.pushClassPrivateMethod(classBody, privateMethod, true, false);
            return;
          }
          if (this.isNonstaticConstructor(publicMethod)) {
            this.raise(Errors.ConstructorIsGenerator, {
              at: publicMethod.key
            });
          }
          this.pushClassMethod(classBody, publicMethod, true, false, false, false);
          return;
        }
        var isContextual = tokenIsIdentifier(this.state.type) && !this.state.containsEsc;
        var isPrivate = this.match(136);
        var key = this.parseClassElementName(member);
        var maybeQuestionTokenStartLoc = this.state.startLoc;
        this.parsePostMemberNameModifiers(publicMember);
        if (this.isClassMethod()) {
          method.kind = "method";
          if (isPrivate) {
            this.pushClassPrivateMethod(classBody, privateMethod, false, false);
            return;
          }
          var isConstructor = this.isNonstaticConstructor(publicMethod);
          var allowsDirectSuper = false;
          if (isConstructor) {
            publicMethod.kind = "constructor";
            if (state.hadConstructor && !this.hasPlugin("typescript")) {
              this.raise(Errors.DuplicateConstructor, {
                at: key
              });
            }
            if (isConstructor && this.hasPlugin("typescript") && member.override) {
              this.raise(Errors.OverrideOnConstructor, {
                at: key
              });
            }
            state.hadConstructor = true;
            allowsDirectSuper = state.hadSuperClass;
          }
          this.pushClassMethod(classBody, publicMethod, false, false, isConstructor, allowsDirectSuper);
        } else if (this.isClassProperty()) {
          if (isPrivate) {
            this.pushClassPrivateProperty(classBody, privateProp);
          } else {
            this.pushClassProperty(classBody, publicProp);
          }
        } else if (isContextual && key.name === "async" && !this.isLineTerminator()) {
          this.resetPreviousNodeTrailingComments(key);
          var isGenerator = this.eat(55);
          if (publicMember.optional) {
            this.unexpected(maybeQuestionTokenStartLoc);
          }
          method.kind = "method";
          var _isPrivate = this.match(136);
          this.parseClassElementName(method);
          this.parsePostMemberNameModifiers(publicMember);
          if (_isPrivate) {
            this.pushClassPrivateMethod(classBody, privateMethod, isGenerator, true);
          } else {
            if (this.isNonstaticConstructor(publicMethod)) {
              this.raise(Errors.ConstructorIsAsync, {
                at: publicMethod.key
              });
            }
            this.pushClassMethod(classBody, publicMethod, isGenerator, true, false, false);
          }
        } else if (isContextual && (key.name === "get" || key.name === "set") && !(this.match(55) && this.isLineTerminator())) {
          this.resetPreviousNodeTrailingComments(key);
          method.kind = key.name;
          var _isPrivate2 = this.match(136);
          this.parseClassElementName(publicMethod);
          if (_isPrivate2) {
            this.pushClassPrivateMethod(classBody, privateMethod, false, false);
          } else {
            if (this.isNonstaticConstructor(publicMethod)) {
              this.raise(Errors.ConstructorIsAccessor, {
                at: publicMethod.key
              });
            }
            this.pushClassMethod(classBody, publicMethod, false, false, false, false);
          }
          this.checkGetterSetterParams(publicMethod);
        } else if (isContextual && key.name === "accessor" && !this.isLineTerminator()) {
          this.expectPlugin("decoratorAutoAccessors");
          this.resetPreviousNodeTrailingComments(key);
          var _isPrivate3 = this.match(136);
          this.parseClassElementName(publicProp);
          this.pushClassAccessorProperty(classBody, accessorProp, _isPrivate3);
        } else if (this.isLineTerminator()) {
          if (isPrivate) {
            this.pushClassPrivateProperty(classBody, privateProp);
          } else {
            this.pushClassProperty(classBody, publicProp);
          }
        } else {
          this.unexpected();
        }
      };
      _proto.parseClassElementName = function parseClassElementName(member) {
        var _this$state = this.state,
          type = _this$state.type,
          value = _this$state.value;
        if ((type === 130 || type === 131) && member["static"] && value === "prototype") {
          this.raise(Errors.StaticPrototype, {
            at: this.state.startLoc
          });
        }
        if (type === 136) {
          if (value === "constructor") {
            this.raise(Errors.ConstructorClassPrivateField, {
              at: this.state.startLoc
            });
          }
          var key = this.parsePrivateName();
          member.key = key;
          return key;
        }
        return this.parsePropertyName(member);
      };
      _proto.parseClassStaticBlock = function parseClassStaticBlock(classBody, member) {
        var _member$decorators;
        this.scope.enter(SCOPE_CLASS | SCOPE_STATIC_BLOCK | SCOPE_SUPER);
        var oldLabels = this.state.labels;
        this.state.labels = [];
        this.prodParam.enter(PARAM);
        var body = member.body = [];
        this.parseBlockOrModuleBlockBody(body, undefined, false, 8);
        this.prodParam.exit();
        this.scope.exit();
        this.state.labels = oldLabels;
        classBody.body.push(this.finishNode(member, "StaticBlock"));
        if ((_member$decorators = member.decorators) != null && _member$decorators.length) {
          this.raise(Errors.DecoratorStaticBlock, {
            at: member
          });
        }
      };
      _proto.pushClassProperty = function pushClassProperty(classBody, prop) {
        if (!prop.computed && (prop.key.name === "constructor" || prop.key.value === "constructor")) {
          this.raise(Errors.ConstructorClassField, {
            at: prop.key
          });
        }
        classBody.body.push(this.parseClassProperty(prop));
      };
      _proto.pushClassPrivateProperty = function pushClassPrivateProperty(classBody, prop) {
        var node = this.parseClassPrivateProperty(prop);
        classBody.body.push(node);
        this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), CLASS_ELEMENT_OTHER, node.key.loc.start);
      };
      _proto.pushClassAccessorProperty = function pushClassAccessorProperty(classBody, prop, isPrivate) {
        if (!isPrivate && !prop.computed) {
          var key = prop.key;
          if (key.name === "constructor" || key.value === "constructor") {
            this.raise(Errors.ConstructorClassField, {
              at: key
            });
          }
        }
        var node = this.parseClassAccessorProperty(prop);
        classBody.body.push(node);
        if (isPrivate) {
          this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), CLASS_ELEMENT_OTHER, node.key.loc.start);
        }
      };
      _proto.pushClassMethod = function pushClassMethod(classBody, method, isGenerator, isAsync, isConstructor, allowsDirectSuper) {
        classBody.body.push(this.parseMethod(method, isGenerator, isAsync, isConstructor, allowsDirectSuper, "ClassMethod", true));
      };
      _proto.pushClassPrivateMethod = function pushClassPrivateMethod(classBody, method, isGenerator, isAsync) {
        var node = this.parseMethod(method, isGenerator, isAsync, false, false, "ClassPrivateMethod", true);
        classBody.body.push(node);
        var kind = node.kind === "get" ? node["static"] ? CLASS_ELEMENT_STATIC_GETTER : CLASS_ELEMENT_INSTANCE_GETTER : node.kind === "set" ? node["static"] ? CLASS_ELEMENT_STATIC_SETTER : CLASS_ELEMENT_INSTANCE_SETTER : CLASS_ELEMENT_OTHER;
        this.declareClassPrivateMethodInScope(node, kind);
      };
      _proto.declareClassPrivateMethodInScope = function declareClassPrivateMethodInScope(node, kind) {
        this.classScope.declarePrivateName(this.getPrivateNameSV(node.key), kind, node.key.loc.start);
      };
      _proto.parsePostMemberNameModifiers = function parsePostMemberNameModifiers(methodOrProp) {};
      _proto.parseClassPrivateProperty = function parseClassPrivateProperty(node) {
        this.parseInitializer(node);
        this.semicolon();
        return this.finishNode(node, "ClassPrivateProperty");
      };
      _proto.parseClassProperty = function parseClassProperty(node) {
        this.parseInitializer(node);
        this.semicolon();
        return this.finishNode(node, "ClassProperty");
      };
      _proto.parseClassAccessorProperty = function parseClassAccessorProperty(node) {
        this.parseInitializer(node);
        this.semicolon();
        return this.finishNode(node, "ClassAccessorProperty");
      };
      _proto.parseInitializer = function parseInitializer(node) {
        this.scope.enter(SCOPE_CLASS | SCOPE_SUPER);
        this.expressionScope.enter(newExpressionScope());
        this.prodParam.enter(PARAM);
        node.value = this.eat(29) ? this.parseMaybeAssignAllowIn() : null;
        this.expressionScope.exit();
        this.prodParam.exit();
        this.scope.exit();
      };
      _proto.parseClassId = function parseClassId(node, isStatement, optionalId, bindingType) {
        if (bindingType === void 0) {
          bindingType = BIND_CLASS;
        }
        if (tokenIsIdentifier(this.state.type)) {
          node.id = this.parseIdentifier();
          if (isStatement) {
            this.declareNameFromIdentifier(node.id, bindingType);
          }
        } else {
          if (optionalId || !isStatement) {
            node.id = null;
          } else {
            throw this.raise(Errors.MissingClassName, {
              at: this.state.startLoc
            });
          }
        }
      };
      _proto.parseClassSuper = function parseClassSuper(node) {
        node.superClass = this.eat(81) ? this.parseExprSubscripts() : null;
      };
      _proto.parseExport = function parseExport(node, decorators) {
        var hasDefault = this.maybeParseExportDefaultSpecifier(node);
        var parseAfterDefault = !hasDefault || this.eat(12);
        var hasStar = parseAfterDefault && this.eatExportStar(node);
        var hasNamespace = hasStar && this.maybeParseExportNamespaceSpecifier(node);
        var parseAfterNamespace = parseAfterDefault && (!hasNamespace || this.eat(12));
        var isFromRequired = hasDefault || hasStar;
        if (hasStar && !hasNamespace) {
          if (hasDefault) this.unexpected();
          if (decorators) {
            throw this.raise(Errors.UnsupportedDecoratorExport, {
              at: node
            });
          }
          this.parseExportFrom(node, true);
          return this.finishNode(node, "ExportAllDeclaration");
        }
        var hasSpecifiers = this.maybeParseExportNamedSpecifiers(node);
        if (hasDefault && parseAfterDefault && !hasStar && !hasSpecifiers) {
          this.unexpected(null, 5);
        }
        if (hasNamespace && parseAfterNamespace) {
          this.unexpected(null, 97);
        }
        var hasDeclaration;
        if (isFromRequired || hasSpecifiers) {
          hasDeclaration = false;
          if (decorators) {
            throw this.raise(Errors.UnsupportedDecoratorExport, {
              at: node
            });
          }
          this.parseExportFrom(node, isFromRequired);
        } else {
          hasDeclaration = this.maybeParseExportDeclaration(node);
        }
        if (isFromRequired || hasSpecifiers || hasDeclaration) {
          var _node2$declaration;
          var node2 = node;
          this.checkExport(node2, true, false, !!node2.source);
          if (((_node2$declaration = node2.declaration) == null ? void 0 : _node2$declaration.type) === "ClassDeclaration") {
            this.maybeTakeDecorators(decorators, node2.declaration, node2);
          } else if (decorators) {
            throw this.raise(Errors.UnsupportedDecoratorExport, {
              at: node
            });
          }
          return this.finishNode(node2, "ExportNamedDeclaration");
        }
        if (this.eat(65)) {
          var _node3 = node;
          var decl = this.parseExportDefaultExpression();
          _node3.declaration = decl;
          if (decl.type === "ClassDeclaration") {
            this.maybeTakeDecorators(decorators, decl, _node3);
          } else if (decorators) {
            throw this.raise(Errors.UnsupportedDecoratorExport, {
              at: node
            });
          }
          this.checkExport(_node3, true, true);
          return this.finishNode(_node3, "ExportDefaultDeclaration");
        }
        this.unexpected(null, 5);
      };
      _proto.eatExportStar = function eatExportStar(node) {
        return this.eat(55);
      };
      _proto.maybeParseExportDefaultSpecifier = function maybeParseExportDefaultSpecifier(node) {
        if (this.isExportDefaultSpecifier()) {
          this.expectPlugin("exportDefaultFrom");
          var specifier = this.startNode();
          specifier.exported = this.parseIdentifier(true);
          node.specifiers = [this.finishNode(specifier, "ExportDefaultSpecifier")];
          return true;
        }
        return false;
      };
      _proto.maybeParseExportNamespaceSpecifier = function maybeParseExportNamespaceSpecifier(node) {
        if (this.isContextual(93)) {
          if (!node.specifiers) node.specifiers = [];
          var specifier = this.startNodeAt(this.state.lastTokStartLoc);
          this.next();
          specifier.exported = this.parseModuleExportName();
          node.specifiers.push(this.finishNode(specifier, "ExportNamespaceSpecifier"));
          return true;
        }
        return false;
      };
      _proto.maybeParseExportNamedSpecifiers = function maybeParseExportNamedSpecifiers(node) {
        if (this.match(5)) {
          var _node$specifiers;
          if (!node.specifiers) node.specifiers = [];
          var isTypeExport = node.exportKind === "type";
          (_node$specifiers = node.specifiers).push.apply(_node$specifiers, this.parseExportSpecifiers(isTypeExport));
          node.source = null;
          node.declaration = null;
          if (this.hasPlugin("importAssertions")) {
            node.assertions = [];
          }
          return true;
        }
        return false;
      };
      _proto.maybeParseExportDeclaration = function maybeParseExportDeclaration(node) {
        if (this.shouldParseExportDeclaration()) {
          node.specifiers = [];
          node.source = null;
          if (this.hasPlugin("importAssertions")) {
            node.assertions = [];
          }
          node.declaration = this.parseExportDeclaration(node);
          return true;
        }
        return false;
      };
      _proto.isAsyncFunction = function isAsyncFunction() {
        if (!this.isContextual(95)) return false;
        var next = this.nextTokenStart();
        return !lineBreak.test(this.input.slice(this.state.pos, next)) && this.isUnparsedContextual(next, "function");
      };
      _proto.parseExportDefaultExpression = function parseExportDefaultExpression() {
        var expr = this.startNode();
        if (this.match(68)) {
          this.next();
          return this.parseFunction(expr, ParseFunctionFlag.Declaration | ParseFunctionFlag.NullableId);
        } else if (this.isAsyncFunction()) {
          this.next();
          this.next();
          return this.parseFunction(expr, ParseFunctionFlag.Declaration | ParseFunctionFlag.NullableId | ParseFunctionFlag.Async);
        }
        if (this.match(80)) {
          return this.parseClass(expr, true, true);
        }
        if (this.match(26)) {
          if (this.hasPlugin("decorators") && this.getPluginOption("decorators", "decoratorsBeforeExport") === true) {
            this.raise(Errors.DecoratorBeforeExport, {
              at: this.state.startLoc
            });
          }
          return this.parseClass(this.maybeTakeDecorators(this.parseDecorators(false), this.startNode()), true, true);
        }
        if (this.match(75) || this.match(74) || this.isLet()) {
          throw this.raise(Errors.UnsupportedDefaultExport, {
            at: this.state.startLoc
          });
        }
        var res = this.parseMaybeAssignAllowIn();
        this.semicolon();
        return res;
      };
      _proto.parseExportDeclaration = function parseExportDeclaration(node) {
        if (this.match(80)) {
          var _node4 = this.parseClass(this.startNode(), true, false);
          return _node4;
        }
        return this.parseStatementListItem();
      };
      _proto.isExportDefaultSpecifier = function isExportDefaultSpecifier() {
        var type = this.state.type;
        if (tokenIsIdentifier(type)) {
          if (type === 95 && !this.state.containsEsc || type === 99) {
            return false;
          }
          if ((type === 128 || type === 127) && !this.state.containsEsc) {
            var _this$lookahead2 = this.lookahead(),
              nextType = _this$lookahead2.type;
            if (tokenIsIdentifier(nextType) && nextType !== 97 || nextType === 5) {
              this.expectOnePlugin(["flow", "typescript"]);
              return false;
            }
          }
        } else if (!this.match(65)) {
          return false;
        }
        var next = this.nextTokenStart();
        var hasFrom = this.isUnparsedContextual(next, "from");
        if (this.input.charCodeAt(next) === 44 || tokenIsIdentifier(this.state.type) && hasFrom) {
          return true;
        }
        if (this.match(65) && hasFrom) {
          var nextAfterFrom = this.input.charCodeAt(this.nextTokenStartSince(next + 4));
          return nextAfterFrom === 34 || nextAfterFrom === 39;
        }
        return false;
      };
      _proto.parseExportFrom = function parseExportFrom(node, expect) {
        if (this.eatContextual(97)) {
          node.source = this.parseImportSource();
          this.checkExport(node);
          var assertions = this.maybeParseImportAssertions();
          if (assertions) {
            node.assertions = assertions;
            this.checkJSONModuleImport(node);
          }
        } else if (expect) {
          this.unexpected();
        }
        this.semicolon();
      };
      _proto.shouldParseExportDeclaration = function shouldParseExportDeclaration() {
        var type = this.state.type;
        if (type === 26) {
          this.expectOnePlugin(["decorators", "decorators-legacy"]);
          if (this.hasPlugin("decorators")) {
            if (this.getPluginOption("decorators", "decoratorsBeforeExport") === true) {
              this.raise(Errors.DecoratorBeforeExport, {
                at: this.state.startLoc
              });
            }
            return true;
          }
        }
        return type === 74 || type === 75 || type === 68 || type === 80 || this.isLet() || this.isAsyncFunction();
      };
      _proto.checkExport = function checkExport(node, checkNames, isDefault, isFrom) {
        if (checkNames) {
          if (isDefault) {
            this.checkDuplicateExports(node, "default");
            if (this.hasPlugin("exportDefaultFrom")) {
              var _declaration$extra;
              var declaration = node.declaration;
              if (declaration.type === "Identifier" && declaration.name === "from" && declaration.end - declaration.start === 4 && !((_declaration$extra = declaration.extra) != null && _declaration$extra.parenthesized)) {
                this.raise(Errors.ExportDefaultFromAsIdentifier, {
                  at: declaration
                });
              }
            }
          } else if (node.specifiers && node.specifiers.length) {
            for (var _i6 = 0, _node$specifiers3 = node.specifiers; _i6 < _node$specifiers3.length; _i6++) {
              var specifier = _node$specifiers3[_i6];
              var exported = specifier.exported;
              var exportName = exported.type === "Identifier" ? exported.name : exported.value;
              this.checkDuplicateExports(specifier, exportName);
              if (!isFrom && specifier.local) {
                var local = specifier.local;
                if (local.type !== "Identifier") {
                  this.raise(Errors.ExportBindingIsString, {
                    at: specifier,
                    localName: local.value,
                    exportName: exportName
                  });
                } else {
                  this.checkReservedWord(local.name, local.loc.start, true, false);
                  this.scope.checkLocalExport(local);
                }
              }
            }
          } else if (node.declaration) {
            if (node.declaration.type === "FunctionDeclaration" || node.declaration.type === "ClassDeclaration") {
              var id = node.declaration.id;
              if (!id) throw new Error("Assertion failure");
              this.checkDuplicateExports(node, id.name);
            } else if (node.declaration.type === "VariableDeclaration") {
              for (var _i8 = 0, _node$declaration$dec2 = node.declaration.declarations; _i8 < _node$declaration$dec2.length; _i8++) {
                var _declaration = _node$declaration$dec2[_i8];
                this.checkDeclaration(_declaration.id);
              }
            }
          }
        }
      };
      _proto.checkDeclaration = function checkDeclaration(node) {
        if (node.type === "Identifier") {
          this.checkDuplicateExports(node, node.name);
        } else if (node.type === "ObjectPattern") {
          for (var _i10 = 0, _node$properties2 = node.properties; _i10 < _node$properties2.length; _i10++) {
            var prop = _node$properties2[_i10];
            this.checkDeclaration(prop);
          }
        } else if (node.type === "ArrayPattern") {
          for (var _i12 = 0, _node$elements2 = node.elements; _i12 < _node$elements2.length; _i12++) {
            var elem = _node$elements2[_i12];
            if (elem) {
              this.checkDeclaration(elem);
            }
          }
        } else if (node.type === "ObjectProperty") {
          this.checkDeclaration(node.value);
        } else if (node.type === "RestElement") {
          this.checkDeclaration(node.argument);
        } else if (node.type === "AssignmentPattern") {
          this.checkDeclaration(node.left);
        }
      };
      _proto.checkDuplicateExports = function checkDuplicateExports(node, exportName) {
        if (this.exportedIdentifiers.has(exportName)) {
          if (exportName === "default") {
            this.raise(Errors.DuplicateDefaultExport, {
              at: node
            });
          } else {
            this.raise(Errors.DuplicateExport, {
              at: node,
              exportName: exportName
            });
          }
        }
        this.exportedIdentifiers.add(exportName);
      };
      _proto.parseExportSpecifiers = function parseExportSpecifiers(isInTypeExport) {
        var nodes = [];
        var first = true;
        this.expect(5);
        while (!this.eat(8)) {
          if (first) {
            first = false;
          } else {
            this.expect(12);
            if (this.eat(8)) break;
          }
          var isMaybeTypeOnly = this.isContextual(128);
          var isString = this.match(131);
          var _node5 = this.startNode();
          _node5.local = this.parseModuleExportName();
          nodes.push(this.parseExportSpecifier(_node5, isString, isInTypeExport, isMaybeTypeOnly));
        }
        return nodes;
      };
      _proto.parseExportSpecifier = function parseExportSpecifier(node, isString, isInTypeExport, isMaybeTypeOnly) {
        if (this.eatContextual(93)) {
          node.exported = this.parseModuleExportName();
        } else if (isString) {
          node.exported = cloneStringLiteral(node.local);
        } else if (!node.exported) {
          node.exported = cloneIdentifier(node.local);
        }
        return this.finishNode(node, "ExportSpecifier");
      };
      _proto.parseModuleExportName = function parseModuleExportName() {
        if (this.match(131)) {
          var result = this.parseStringLiteral(this.state.value);
          var surrogate = result.value.match(loneSurrogate);
          if (surrogate) {
            this.raise(Errors.ModuleExportNameHasLoneSurrogate, {
              at: result,
              surrogateCharCode: surrogate[0].charCodeAt(0)
            });
          }
          return result;
        }
        return this.parseIdentifier(true);
      };
      _proto.isJSONModuleImport = function isJSONModuleImport(node) {
        if (node.assertions != null) {
          return node.assertions.some(function (_ref) {
            var key = _ref.key,
              value = _ref.value;
            return value.value === "json" && (key.type === "Identifier" ? key.name === "type" : key.value === "type");
          });
        }
        return false;
      };
      _proto.checkImportReflection = function checkImportReflection(node) {
        if (node.module) {
          var _node$assertions;
          if (node.specifiers.length !== 1 || node.specifiers[0].type !== "ImportDefaultSpecifier") {
            this.raise(Errors.ImportReflectionNotBinding, {
              at: node.specifiers[0].loc.start
            });
          }
          if (((_node$assertions = node.assertions) == null ? void 0 : _node$assertions.length) > 0) {
            this.raise(Errors.ImportReflectionHasAssertion, {
              at: node.specifiers[0].loc.start
            });
          }
        }
      };
      _proto.checkJSONModuleImport = function checkJSONModuleImport(node) {
        if (this.isJSONModuleImport(node) && node.type !== "ExportAllDeclaration") {
          var specifiers = node.specifiers;
          if (specifiers != null) {
            var nonDefaultNamedSpecifier = specifiers.find(function (specifier) {
              var imported;
              if (specifier.type === "ExportSpecifier") {
                imported = specifier.local;
              } else if (specifier.type === "ImportSpecifier") {
                imported = specifier.imported;
              }
              if (imported !== undefined) {
                return imported.type === "Identifier" ? imported.name !== "default" : imported.value !== "default";
              }
            });
            if (nonDefaultNamedSpecifier !== undefined) {
              this.raise(Errors.ImportJSONBindingNotDefault, {
                at: nonDefaultNamedSpecifier.loc.start
              });
            }
          }
        }
      };
      _proto.parseMaybeImportReflection = function parseMaybeImportReflection(node) {
        var isImportReflection = false;
        if (this.isContextual(125)) {
          var lookahead = this.lookahead();
          var nextType = lookahead.type;
          if (tokenIsIdentifier(nextType)) {
            if (nextType !== 97) {
              isImportReflection = true;
            } else {
              var nextNextTokenFirstChar = this.input.charCodeAt(this.nextTokenStartSince(lookahead.end));
              if (nextNextTokenFirstChar === 102) {
                isImportReflection = true;
              }
            }
          } else if (nextType !== 12) {
            isImportReflection = true;
          }
        }
        if (isImportReflection) {
          this.expectPlugin("importReflection");
          this.next();
          node.module = true;
        } else if (this.hasPlugin("importReflection")) {
          node.module = false;
        }
      };
      _proto.parseImport = function parseImport(node) {
        node.specifiers = [];
        if (!this.match(131)) {
          this.parseMaybeImportReflection(node);
          var hasDefault = this.maybeParseDefaultImportSpecifier(node);
          var parseNext = !hasDefault || this.eat(12);
          var hasStar = parseNext && this.maybeParseStarImportSpecifier(node);
          if (parseNext && !hasStar) this.parseNamedImportSpecifiers(node);
          this.expectContextual(97);
        }
        node.source = this.parseImportSource();
        var assertions = this.maybeParseImportAssertions();
        if (assertions) {
          node.assertions = assertions;
        } else {
          var attributes = this.maybeParseModuleAttributes();
          if (attributes) {
            node.attributes = attributes;
          }
        }
        this.checkImportReflection(node);
        this.checkJSONModuleImport(node);
        this.semicolon();
        return this.finishNode(node, "ImportDeclaration");
      };
      _proto.parseImportSource = function parseImportSource() {
        if (!this.match(131)) this.unexpected();
        return this.parseExprAtom();
      };
      _proto.shouldParseDefaultImport = function shouldParseDefaultImport(node) {
        return tokenIsIdentifier(this.state.type);
      };
      _proto.parseImportSpecifierLocal = function parseImportSpecifierLocal(node, specifier, type) {
        specifier.local = this.parseIdentifier();
        node.specifiers.push(this.finishImportSpecifier(specifier, type));
      };
      _proto.finishImportSpecifier = function finishImportSpecifier(specifier, type, bindingType) {
        if (bindingType === void 0) {
          bindingType = BIND_LEXICAL;
        }
        this.checkLVal(specifier.local, {
          "in": {
            type: type
          },
          binding: bindingType
        });
        return this.finishNode(specifier, type);
      };
      _proto.parseAssertEntries = function parseAssertEntries() {
        var attrs = [];
        var attrNames = new Set();
        do {
          if (this.match(8)) {
            break;
          }
          var _node6 = this.startNode();
          var keyName = this.state.value;
          if (attrNames.has(keyName)) {
            this.raise(Errors.ModuleAttributesWithDuplicateKeys, {
              at: this.state.startLoc,
              key: keyName
            });
          }
          attrNames.add(keyName);
          if (this.match(131)) {
            _node6.key = this.parseStringLiteral(keyName);
          } else {
            _node6.key = this.parseIdentifier(true);
          }
          this.expect(14);
          if (!this.match(131)) {
            throw this.raise(Errors.ModuleAttributeInvalidValue, {
              at: this.state.startLoc
            });
          }
          _node6.value = this.parseStringLiteral(this.state.value);
          attrs.push(this.finishNode(_node6, "ImportAttribute"));
        } while (this.eat(12));
        return attrs;
      };
      _proto.maybeParseModuleAttributes = function maybeParseModuleAttributes() {
        if (this.match(76) && !this.hasPrecedingLineBreak()) {
          this.expectPlugin("moduleAttributes");
          this.next();
        } else {
          if (this.hasPlugin("moduleAttributes")) return [];
          return null;
        }
        var attrs = [];
        var attributes = new Set();
        do {
          var _node7 = this.startNode();
          _node7.key = this.parseIdentifier(true);
          if (_node7.key.name !== "type") {
            this.raise(Errors.ModuleAttributeDifferentFromType, {
              at: _node7.key
            });
          }
          if (attributes.has(_node7.key.name)) {
            this.raise(Errors.ModuleAttributesWithDuplicateKeys, {
              at: _node7.key,
              key: _node7.key.name
            });
          }
          attributes.add(_node7.key.name);
          this.expect(14);
          if (!this.match(131)) {
            throw this.raise(Errors.ModuleAttributeInvalidValue, {
              at: this.state.startLoc
            });
          }
          _node7.value = this.parseStringLiteral(this.state.value);
          this.finishNode(_node7, "ImportAttribute");
          attrs.push(_node7);
        } while (this.eat(12));
        return attrs;
      };
      _proto.maybeParseImportAssertions = function maybeParseImportAssertions() {
        if (this.isContextual(94) && !this.hasPrecedingLineBreak()) {
          this.expectPlugin("importAssertions");
          this.next();
        } else {
          if (this.hasPlugin("importAssertions")) return [];
          return null;
        }
        this.eat(5);
        var attrs = this.parseAssertEntries();
        this.eat(8);
        return attrs;
      };
      _proto.maybeParseDefaultImportSpecifier = function maybeParseDefaultImportSpecifier(node) {
        if (this.shouldParseDefaultImport(node)) {
          this.parseImportSpecifierLocal(node, this.startNode(), "ImportDefaultSpecifier");
          return true;
        }
        return false;
      };
      _proto.maybeParseStarImportSpecifier = function maybeParseStarImportSpecifier(node) {
        if (this.match(55)) {
          var specifier = this.startNode();
          this.next();
          this.expectContextual(93);
          this.parseImportSpecifierLocal(node, specifier, "ImportNamespaceSpecifier");
          return true;
        }
        return false;
      };
      _proto.parseNamedImportSpecifiers = function parseNamedImportSpecifiers(node) {
        var first = true;
        this.expect(5);
        while (!this.eat(8)) {
          if (first) {
            first = false;
          } else {
            if (this.eat(14)) {
              throw this.raise(Errors.DestructureNamedImport, {
                at: this.state.startLoc
              });
            }
            this.expect(12);
            if (this.eat(8)) break;
          }
          var specifier = this.startNode();
          var importedIsString = this.match(131);
          var isMaybeTypeOnly = this.isContextual(128);
          specifier.imported = this.parseModuleExportName();
          var importSpecifier = this.parseImportSpecifier(specifier, importedIsString, node.importKind === "type" || node.importKind === "typeof", isMaybeTypeOnly, undefined);
          node.specifiers.push(importSpecifier);
        }
      };
      _proto.parseImportSpecifier = function parseImportSpecifier(specifier, importedIsString, isInTypeOnlyImport, isMaybeTypeOnly, bindingType) {
        if (this.eatContextual(93)) {
          specifier.local = this.parseIdentifier();
        } else {
          var imported = specifier.imported;
          if (importedIsString) {
            throw this.raise(Errors.ImportBindingIsString, {
              at: specifier,
              importName: imported.value
            });
          }
          this.checkReservedWord(imported.name, specifier.loc.start, true, true);
          if (!specifier.local) {
            specifier.local = cloneIdentifier(imported);
          }
        }
        return this.finishImportSpecifier(specifier, "ImportSpecifier", bindingType);
      };
      _proto.isThisParam = function isThisParam(param) {
        return param.type === "Identifier" && param.name === "this";
      };
      return _createClass(StatementParser);
    }(ExpressionParser);
  
    var Parser = function (_StatementParser) {
      _inherits(Parser, _StatementParser);
      function Parser(options, input) {
        var _this;
        options = getOptions(options);
        _this = _StatementParser.call(this, options, input) || this;
        _this.options = options;
        _this.initializeScopes();
        _this.plugins = pluginsMap(_this.options.plugins);
        _this.filename = options.sourceFilename;
        return _this;
      }
      var _proto = Parser.prototype;
      _proto.getScopeHandler = function getScopeHandler() {
        return ScopeHandler;
      };
      _proto.parse = function parse() {
        this.enterInitialScopes();
        var file = this.startNode();
        var program = this.startNode();
        this.nextToken();
        file.errors = null;
        this.parseTopLevel(file, program);
        file.errors = this.state.errors;
        return file;
      };
      return _createClass(Parser);
    }(StatementParser);
    function pluginsMap(plugins) {
      var pluginMap = new Map();
      for (var _i2 = 0; _i2 < plugins.length; _i2++) {
        var plugin = plugins[_i2];
        var _ref = Array.isArray(plugin) ? plugin : [plugin, {}],
          name = _ref[0],
          options = _ref[1];
        if (!pluginMap.has(name)) pluginMap.set(name, options || {});
      }
      return pluginMap;
    }
  
    function parse$4(input, options) {
      var _options;
      if (((_options = options) == null ? void 0 : _options.sourceType) === "unambiguous") {
        options = Object.assign({}, options);
        try {
          options.sourceType = "module";
          var parser = getParser(options, input);
          var ast = parser.parse();
          if (parser.sawUnambiguousESM) {
            return ast;
          }
          if (parser.ambiguousScriptDifferentAst) {
            try {
              options.sourceType = "script";
              return getParser(options, input).parse();
            } catch (_unused) {}
          } else {
            ast.program.sourceType = "script";
          }
          return ast;
        } catch (moduleError) {
          try {
            options.sourceType = "script";
            return getParser(options, input).parse();
          } catch (_unused2) {}
          throw moduleError;
        }
      } else {
        return getParser(options, input).parse();
      }
    }
    function generateExportedTokenTypes(internalTokenTypes) {
      var tokenTypes = {};
      for (var _i2 = 0, _ref2 = Object.keys(internalTokenTypes); _i2 < _ref2.length; _i2++) {
        var typeName = _ref2[_i2];
        tokenTypes[typeName] = getExportedToken(internalTokenTypes[typeName]);
      }
      return tokenTypes;
    }
    var tokTypes = generateExportedTokenTypes(tt);
    function getParser(options, input) {
      var cls = Parser;
      if (options != null && options.plugins) {
        validatePlugins(options.plugins);
        cls = getParserClass(options.plugins);
      }
      return new cls(options, input);
    }
    var parserClassCache = {};
    function getParserClass(pluginsFromOptions) {
      var pluginList = mixinPluginNames.filter(function (name) {
        return hasPlugin(pluginsFromOptions, name);
      });
      var key = pluginList.join("/");
      var cls = parserClassCache[key];
      if (!cls) {
        cls = Parser;
        for (var _i4 = 0; _i4 < pluginList.length; _i4++) {
          var plugin = pluginList[_i4];
          cls = mixinPlugins[plugin](cls);
        }
        parserClassCache[key] = cls;
      }
      return cls;
    }
  
    var assignmentExpression$c = assignmentExpression$d,
      expressionStatement$9 = expressionStatement$a,
      identifier$e = identifier$i;
    var visitor$4 = {
      Scope: function Scope(path, state) {
        if (state.kind === "let") path.skip();
      },
      FunctionParent: function FunctionParent(path) {
        path.skip();
      },
      VariableDeclaration: function (_VariableDeclaration) {
        function VariableDeclaration(_x, _x2) {
          return _VariableDeclaration.apply(this, arguments);
        }
        VariableDeclaration.toString = function () {
          return _VariableDeclaration.toString();
        };
        return VariableDeclaration;
      }(function (path, state) {
        if (state.kind && path.node.kind !== state.kind) return;
        var nodes = [];
        var declarations = path.get("declarations");
        var firstId;
        for (var _iterator = _createForOfIteratorHelperLoose(declarations), _step; !(_step = _iterator()).done;) {
          var declar = _step.value;
          firstId = declar.node.id;
          if (declar.node.init) {
            nodes.push(expressionStatement$9(assignmentExpression$c("=", declar.node.id, declar.node.init)));
          }
          for (var _i = 0, _Object$keys = Object.keys(declar.getBindingIdentifiers()); _i < _Object$keys.length; _i++) {
            var name = _Object$keys[_i];
            state.emit(identifier$e(name), name, declar.node.init !== null);
          }
        }
        if (path.parentPath.isFor({
          left: path.node
        })) {
          path.replaceWith(firstId);
        } else {
          path.replaceWithMultiple(nodes);
        }
      })
    };
    function hoistVariables(path, emit, kind) {
      if (kind === void 0) {
        kind = "var";
      }
      path.traverse(visitor$4, {
        kind: kind,
        emit: emit
      });
    }
  
    var FUNCTION_TYPES = FUNCTION_TYPES$1,
      arrowFunctionExpression$3 = arrowFunctionExpression$4,
      assignmentExpression$b = assignmentExpression$d,
      awaitExpression = awaitExpression$1,
      blockStatement$5 = blockStatement$6,
      callExpression$c = callExpression$e,
      cloneNode$g = cloneNode$j,
      expressionStatement$8 = expressionStatement$a,
      identifier$d = identifier$i,
      inheritLeadingComments = inheritLeadingComments$1,
      inheritTrailingComments = inheritTrailingComments$1,
      inheritsComments = inheritsComments$1,
      isExpression$3 = isExpression$4,
      isProgram = isProgram$1,
      isStatement$3 = isStatement$8,
      removeComments = removeComments$1,
      returnStatement$2 = returnStatement$3,
      toSequenceExpression = toSequenceExpression$1,
      validate$4 = validate$5,
      yieldExpression$1 = yieldExpression$2;
    function replaceWithMultiple(nodes) {
      var _pathCache$get;
      this.resync();
      nodes = this._verifyNodeList(nodes);
      inheritLeadingComments(nodes[0], this.node);
      inheritTrailingComments(nodes[nodes.length - 1], this.node);
      (_pathCache$get = path$2.get(this.parent)) == null ? void 0 : _pathCache$get["delete"](this.node);
      this.node = this.container[this.key] = null;
      var paths = this.insertAfter(nodes);
      if (this.node) {
        this.requeue();
      } else {
        this.remove();
      }
      return paths;
    }
    function replaceWithSourceString(replacement) {
      this.resync();
      var ast;
      try {
        replacement = "(" + replacement + ")";
        ast = parse$4(replacement);
      } catch (err) {
        var loc = err.loc;
        if (loc) {
          err.message += " - make sure this is an expression.\n" + codeFrameColumns(replacement, {
            start: {
              line: loc.line,
              column: loc.column + 1
            }
          });
          err.code = "BABEL_REPLACE_SOURCE_ERROR";
        }
        throw err;
      }
      var expressionAST = ast.program.body[0].expression;
      traverse.removeProperties(expressionAST);
      return this.replaceWith(expressionAST);
    }
    function replaceWith(replacementPath) {
      this.resync();
      if (this.removed) {
        throw new Error("You can't replace this node, we've already removed it");
      }
      var replacement = replacementPath instanceof NodePath ? replacementPath.node : replacementPath;
      if (!replacement) {
        throw new Error("You passed `path.replaceWith()` a falsy node, use `path.remove()` instead");
      }
      if (this.node === replacement) {
        return [this];
      }
      if (this.isProgram() && !isProgram(replacement)) {
        throw new Error("You can only replace a Program root node with another Program node");
      }
      if (Array.isArray(replacement)) {
        throw new Error("Don't use `path.replaceWith()` with an array of nodes, use `path.replaceWithMultiple()`");
      }
      if (typeof replacement === "string") {
        throw new Error("Don't use `path.replaceWith()` with a source string, use `path.replaceWithSourceString()`");
      }
      var nodePath = "";
      if (this.isNodeType("Statement") && isExpression$3(replacement)) {
        if (!this.canHaveVariableDeclarationOrExpression() && !this.canSwapBetweenExpressionAndStatement(replacement) && !this.parentPath.isExportDefaultDeclaration()) {
          replacement = expressionStatement$8(replacement);
          nodePath = "expression";
        }
      }
      if (this.isNodeType("Expression") && isStatement$3(replacement)) {
        if (!this.canHaveVariableDeclarationOrExpression() && !this.canSwapBetweenExpressionAndStatement(replacement)) {
          return this.replaceExpressionWithStatements([replacement]);
        }
      }
      var oldNode = this.node;
      if (oldNode) {
        inheritsComments(replacement, oldNode);
        removeComments(oldNode);
      }
      this._replaceWith(replacement);
      this.type = replacement.type;
      this.setScope();
      this.requeue();
      return [nodePath ? this.get(nodePath) : this];
    }
    function _replaceWith(node) {
      var _pathCache$get2;
      if (!this.container) {
        throw new ReferenceError("Container is falsy");
      }
      if (this.inList) {
        validate$4(this.parent, this.key, [node]);
      } else {
        validate$4(this.parent, this.key, node);
      }
      this.debug("Replace with " + (node == null ? void 0 : node.type));
      (_pathCache$get2 = path$2.get(this.parent)) == null ? void 0 : _pathCache$get2.set(node, this)["delete"](this.node);
      this.node = this.container[this.key] = node;
    }
    function replaceExpressionWithStatements(nodes) {
      var _this = this;
      this.resync();
      var nodesAsSequenceExpression = toSequenceExpression(nodes, this.scope);
      if (nodesAsSequenceExpression) {
        return this.replaceWith(nodesAsSequenceExpression)[0].get("expressions");
      }
      var functionParent = this.getFunctionParent();
      var isParentAsync = functionParent == null ? void 0 : functionParent.is("async");
      var isParentGenerator = functionParent == null ? void 0 : functionParent.is("generator");
      var container = arrowFunctionExpression$3([], blockStatement$5(nodes));
      this.replaceWith(callExpression$c(container, []));
      var callee = this.get("callee");
      hoistVariables(callee.get("body"), function (id) {
        _this.scope.push({
          id: id
        });
      }, "var");
      var completionRecords = this.get("callee").getCompletionRecords();
      for (var _iterator = _createForOfIteratorHelperLoose(completionRecords), _step; !(_step = _iterator()).done;) {
        var path = _step.value;
        if (!path.isExpressionStatement()) continue;
        var loop = path.findParent(function (path) {
          return path.isLoop();
        });
        if (loop) {
          var uid = loop.getData("expressionReplacementReturnUid");
          if (!uid) {
            uid = callee.scope.generateDeclaredUidIdentifier("ret");
            callee.get("body").pushContainer("body", returnStatement$2(cloneNode$g(uid)));
            loop.setData("expressionReplacementReturnUid", uid);
          } else {
            uid = identifier$d(uid.name);
          }
          path.get("expression").replaceWith(assignmentExpression$b("=", cloneNode$g(uid), path.node.expression));
        } else {
          path.replaceWith(returnStatement$2(path.node.expression));
        }
      }
      callee.arrowFunctionToExpression();
      var newCallee = callee;
      var needToAwaitFunction = isParentAsync && traverse.hasType(this.get("callee.body").node, "AwaitExpression", FUNCTION_TYPES);
      var needToYieldFunction = isParentGenerator && traverse.hasType(this.get("callee.body").node, "YieldExpression", FUNCTION_TYPES);
      if (needToAwaitFunction) {
        newCallee.set("async", true);
        if (!needToYieldFunction) {
          this.replaceWith(awaitExpression(this.node));
        }
      }
      if (needToYieldFunction) {
        newCallee.set("generator", true);
        this.replaceWith(yieldExpression$1(this.node, true));
      }
      return newCallee.get("body.body");
    }
    function replaceInline(nodes) {
      this.resync();
      if (Array.isArray(nodes)) {
        if (Array.isArray(this.container)) {
          nodes = this._verifyNodeList(nodes);
          var paths = this._containerInsertAfter(nodes);
          this.remove();
          return paths;
        } else {
          return this.replaceWithMultiple(nodes);
        }
      } else {
        return this.replaceWith(nodes);
      }
    }
  
    var NodePath_replacement = /*#__PURE__*/Object.freeze({
      __proto__: null,
      replaceWithMultiple: replaceWithMultiple,
      replaceWithSourceString: replaceWithSourceString,
      replaceWith: replaceWith,
      _replaceWith: _replaceWith,
      replaceExpressionWithStatements: replaceExpressionWithStatements,
      replaceInline: replaceInline
    });
  
    var VALID_CALLEES = ["String", "Number", "Math"];
    var INVALID_METHODS = ["random"];
    function isValidCallee(val) {
      return VALID_CALLEES.includes(val);
    }
    function isInvalidMethod(val) {
      return INVALID_METHODS.includes(val);
    }
    function evaluateTruthy() {
      var res = this.evaluate();
      if (res.confident) return !!res.value;
    }
    function deopt(path, state) {
      if (!state.confident) return;
      state.deoptPath = path;
      state.confident = false;
    }
    var Globals = new Map([["undefined", undefined], ["Infinity", Infinity], ["NaN", NaN]]);
    function evaluateCached(path, state) {
      var node = path.node;
      var seen = state.seen;
      if (seen.has(node)) {
        var existing = seen.get(node);
        if (existing.resolved) {
          return existing.value;
        } else {
          deopt(path, state);
          return;
        }
      } else {
        var item = {
          resolved: false
        };
        seen.set(node, item);
        var val = _evaluate(path, state);
        if (state.confident) {
          item.resolved = true;
          item.value = val;
        }
        return val;
      }
    }
    function _evaluate(path, state) {
      if (!state.confident) return;
      if (path.isSequenceExpression()) {
        var exprs = path.get("expressions");
        return evaluateCached(exprs[exprs.length - 1], state);
      }
      if (path.isStringLiteral() || path.isNumericLiteral() || path.isBooleanLiteral()) {
        return path.node.value;
      }
      if (path.isNullLiteral()) {
        return null;
      }
      if (path.isTemplateLiteral()) {
        return evaluateQuasis(path, path.node.quasis, state);
      }
      if (path.isTaggedTemplateExpression() && path.get("tag").isMemberExpression()) {
        var object = path.get("tag.object");
        var name = object.node.name;
        var property = path.get("tag.property");
        if (object.isIdentifier() && name === "String" && !path.scope.getBinding(name) && property.isIdentifier() && property.node.name === "raw") {
          return evaluateQuasis(path, path.node.quasi.quasis, state, true);
        }
      }
      if (path.isConditionalExpression()) {
        var testResult = evaluateCached(path.get("test"), state);
        if (!state.confident) return;
        if (testResult) {
          return evaluateCached(path.get("consequent"), state);
        } else {
          return evaluateCached(path.get("alternate"), state);
        }
      }
      if (path.isExpressionWrapper()) {
        return evaluateCached(path.get("expression"), state);
      }
      if (path.isMemberExpression() && !path.parentPath.isCallExpression({
        callee: path.node
      })) {
        var _property = path.get("property");
        var _object = path.get("object");
        if (_object.isLiteral()) {
          var value = _object.node.value;
          var type = typeof value;
          var key = null;
          if (path.node.computed) {
            key = evaluateCached(_property, state);
            if (!state.confident) return;
          } else if (_property.isIdentifier()) {
            key = _property.node.name;
          }
          if ((type === "number" || type === "string") && key != null && (typeof key === "number" || typeof key === "string")) {
            return value[key];
          }
        }
      }
      if (path.isReferencedIdentifier()) {
        var binding = path.scope.getBinding(path.node.name);
        if (binding) {
          if (binding.constantViolations.length > 0 || path.node.start < binding.path.node.end) {
            deopt(binding.path, state);
            return;
          }
          if (binding.hasValue) {
            return binding.value;
          }
        }
        var _name = path.node.name;
        if (Globals.has(_name)) {
          if (!binding) {
            return Globals.get(_name);
          }
          deopt(binding.path, state);
          return;
        }
        var resolved = path.resolve();
        if (resolved === path) {
          deopt(path, state);
          return;
        } else {
          return evaluateCached(resolved, state);
        }
      }
      if (path.isUnaryExpression({
        prefix: true
      })) {
        if (path.node.operator === "void") {
          return undefined;
        }
        var argument = path.get("argument");
        if (path.node.operator === "typeof" && (argument.isFunction() || argument.isClass())) {
          return "function";
        }
        var arg = evaluateCached(argument, state);
        if (!state.confident) return;
        switch (path.node.operator) {
          case "!":
            return !arg;
          case "+":
            return +arg;
          case "-":
            return -arg;
          case "~":
            return ~arg;
          case "typeof":
            return typeof arg;
        }
      }
      if (path.isArrayExpression()) {
        var arr = [];
        var elems = path.get("elements");
        for (var _iterator = _createForOfIteratorHelperLoose(elems), _step; !(_step = _iterator()).done;) {
          var elem = _step.value;
          var elemValue = elem.evaluate();
          if (elemValue.confident) {
            arr.push(elemValue.value);
          } else {
            deopt(elemValue.deopt, state);
            return;
          }
        }
        return arr;
      }
      if (path.isObjectExpression()) {
        var obj = {};
        var props = path.get("properties");
        for (var _iterator2 = _createForOfIteratorHelperLoose(props), _step2; !(_step2 = _iterator2()).done;) {
          var prop = _step2.value;
          if (prop.isObjectMethod() || prop.isSpreadElement()) {
            deopt(prop, state);
            return;
          }
          var keyPath = prop.get("key");
          var _key = void 0;
          if (prop.node.computed) {
            _key = keyPath.evaluate();
            if (!_key.confident) {
              deopt(_key.deopt, state);
              return;
            }
            _key = _key.value;
          } else if (keyPath.isIdentifier()) {
            _key = keyPath.node.name;
          } else {
            _key = keyPath.node.value;
          }
          var valuePath = prop.get("value");
          var _value = valuePath.evaluate();
          if (!_value.confident) {
            deopt(_value.deopt, state);
            return;
          }
          _value = _value.value;
          obj[_key] = _value;
        }
        return obj;
      }
      if (path.isLogicalExpression()) {
        var wasConfident = state.confident;
        var left = evaluateCached(path.get("left"), state);
        var leftConfident = state.confident;
        state.confident = wasConfident;
        var right = evaluateCached(path.get("right"), state);
        var rightConfident = state.confident;
        switch (path.node.operator) {
          case "||":
            state.confident = leftConfident && (!!left || rightConfident);
            if (!state.confident) return;
            return left || right;
          case "&&":
            state.confident = leftConfident && (!left || rightConfident);
            if (!state.confident) return;
            return left && right;
          case "??":
            state.confident = leftConfident && (left != null || rightConfident);
            if (!state.confident) return;
            return left != null ? left : right;
        }
      }
      if (path.isBinaryExpression()) {
        var _left = evaluateCached(path.get("left"), state);
        if (!state.confident) return;
        var _right = evaluateCached(path.get("right"), state);
        if (!state.confident) return;
        switch (path.node.operator) {
          case "-":
            return _left - _right;
          case "+":
            return _left + _right;
          case "/":
            return _left / _right;
          case "*":
            return _left * _right;
          case "%":
            return _left % _right;
          case "**":
            return Math.pow(_left, _right);
          case "<":
            return _left < _right;
          case ">":
            return _left > _right;
          case "<=":
            return _left <= _right;
          case ">=":
            return _left >= _right;
          case "==":
            return _left == _right;
          case "!=":
            return _left != _right;
          case "===":
            return _left === _right;
          case "!==":
            return _left !== _right;
          case "|":
            return _left | _right;
          case "&":
            return _left & _right;
          case "^":
            return _left ^ _right;
          case "<<":
            return _left << _right;
          case ">>":
            return _left >> _right;
          case ">>>":
            return _left >>> _right;
        }
      }
      if (path.isCallExpression()) {
        var callee = path.get("callee");
        var context;
        var func;
        if (callee.isIdentifier() && !path.scope.getBinding(callee.node.name) && isValidCallee(callee.node.name)) {
          func = global$1[callee.node.name];
        }
        if (callee.isMemberExpression()) {
          var _object2 = callee.get("object");
          var _property2 = callee.get("property");
          if (_object2.isIdentifier() && _property2.isIdentifier() && isValidCallee(_object2.node.name) && !isInvalidMethod(_property2.node.name)) {
            context = global$1[_object2.node.name];
            func = context[_property2.node.name];
          }
          if (_object2.isLiteral() && _property2.isIdentifier()) {
            var _type = typeof _object2.node.value;
            if (_type === "string" || _type === "number") {
              context = _object2.node.value;
              func = context[_property2.node.name];
            }
          }
        }
        if (func) {
          var args = path.get("arguments").map(function (arg) {
            return evaluateCached(arg, state);
          });
          if (!state.confident) return;
          return func.apply(context, args);
        }
      }
      deopt(path, state);
    }
    function evaluateQuasis(path, quasis, state, raw) {
      if (raw === void 0) {
        raw = false;
      }
      var str = "";
      var i = 0;
      var exprs = path.isTemplateLiteral() ? path.get("expressions") : path.get("quasi.expressions");
      for (var _iterator3 = _createForOfIteratorHelperLoose(quasis), _step3; !(_step3 = _iterator3()).done;) {
        var elem = _step3.value;
        if (!state.confident) break;
        str += raw ? elem.value.raw : elem.value.cooked;
        var expr = exprs[i++];
        if (expr) str += String(evaluateCached(expr, state));
      }
      if (!state.confident) return;
      return str;
    }
    function evaluate() {
      var state = {
        confident: true,
        deoptPath: null,
        seen: new Map()
      };
      var value = evaluateCached(this, state);
      if (!state.confident) value = undefined;
      return {
        confident: state.confident,
        deopt: state.deoptPath,
        value: value
      };
    }
  
    var NodePath_evaluation = /*#__PURE__*/Object.freeze({
      __proto__: null,
      evaluateTruthy: evaluateTruthy,
      evaluate: evaluate
    });
  
    var assertExpressionStatement = assertExpressionStatement$1;
    function makeStatementFormatter(fn) {
      return {
        code: function code(str) {
          return "/* @babel/template */;\n" + str;
        },
        validate: function validate() {},
        unwrap: function unwrap(ast) {
          return fn(ast.program.body.slice(1));
        }
      };
    }
    var smart$1 = makeStatementFormatter(function (body) {
      if (body.length > 1) {
        return body;
      } else {
        return body[0];
      }
    });
    var statements$1 = makeStatementFormatter(function (body) {
      return body;
    });
    var statement$1 = makeStatementFormatter(function (body) {
      if (body.length === 0) {
        throw new Error("Found nothing to return.");
      }
      if (body.length > 1) {
        throw new Error("Found multiple statements but wanted one");
      }
      return body[0];
    });
    var expression$1 = {
      code: function code(str) {
        return "(\n" + str + "\n)";
      },
      validate: function validate(ast) {
        if (ast.program.body.length > 1) {
          throw new Error("Found multiple statements but wanted one");
        }
        if (expression$1.unwrap(ast).start === 0) {
          throw new Error("Parse result included parens.");
        }
      },
      unwrap: function unwrap(_ref) {
        var program = _ref.program;
        var _program$body = _slicedToArray(program.body, 1),
          stmt = _program$body[0];
        assertExpressionStatement(stmt);
        return stmt.expression;
      }
    };
    var program$2 = {
      code: function code(str) {
        return str;
      },
      validate: function validate() {},
      unwrap: function unwrap(ast) {
        return ast.program;
      }
    };
  
    var _excluded$3 = ["placeholderWhitelist", "placeholderPattern", "preserveComments", "syntacticPlaceholders"];
    function merge(a, b) {
      var _b$placeholderWhiteli = b.placeholderWhitelist,
        placeholderWhitelist = _b$placeholderWhiteli === void 0 ? a.placeholderWhitelist : _b$placeholderWhiteli,
        _b$placeholderPattern = b.placeholderPattern,
        placeholderPattern = _b$placeholderPattern === void 0 ? a.placeholderPattern : _b$placeholderPattern,
        _b$preserveComments = b.preserveComments,
        preserveComments = _b$preserveComments === void 0 ? a.preserveComments : _b$preserveComments,
        _b$syntacticPlacehold = b.syntacticPlaceholders,
        syntacticPlaceholders = _b$syntacticPlacehold === void 0 ? a.syntacticPlaceholders : _b$syntacticPlacehold;
      return {
        parser: Object.assign({}, a.parser, b.parser),
        placeholderWhitelist: placeholderWhitelist,
        placeholderPattern: placeholderPattern,
        preserveComments: preserveComments,
        syntacticPlaceholders: syntacticPlaceholders
      };
    }
    function validate$3(opts) {
      if (opts != null && typeof opts !== "object") {
        throw new Error("Unknown template options.");
      }
      var _ref = opts || {},
        placeholderWhitelist = _ref.placeholderWhitelist,
        placeholderPattern = _ref.placeholderPattern,
        preserveComments = _ref.preserveComments,
        syntacticPlaceholders = _ref.syntacticPlaceholders,
        parser = _objectWithoutPropertiesLoose(_ref, _excluded$3);
      if (placeholderWhitelist != null && !(placeholderWhitelist instanceof Set)) {
        throw new Error("'.placeholderWhitelist' must be a Set, null, or undefined");
      }
      if (placeholderPattern != null && !(placeholderPattern instanceof RegExp) && placeholderPattern !== false) {
        throw new Error("'.placeholderPattern' must be a RegExp, false, null, or undefined");
      }
      if (preserveComments != null && typeof preserveComments !== "boolean") {
        throw new Error("'.preserveComments' must be a boolean, null, or undefined");
      }
      if (syntacticPlaceholders != null && typeof syntacticPlaceholders !== "boolean") {
        throw new Error("'.syntacticPlaceholders' must be a boolean, null, or undefined");
      }
      if (syntacticPlaceholders === true && (placeholderWhitelist != null || placeholderPattern != null)) {
        throw new Error("'.placeholderWhitelist' and '.placeholderPattern' aren't compatible" + " with '.syntacticPlaceholders: true'");
      }
      return {
        parser: parser,
        placeholderWhitelist: placeholderWhitelist || undefined,
        placeholderPattern: placeholderPattern == null ? undefined : placeholderPattern,
        preserveComments: preserveComments == null ? undefined : preserveComments,
        syntacticPlaceholders: syntacticPlaceholders == null ? undefined : syntacticPlaceholders
      };
    }
    function normalizeReplacements(replacements) {
      if (Array.isArray(replacements)) {
        return replacements.reduce(function (acc, replacement, i) {
          acc["$" + i] = replacement;
          return acc;
        }, {});
      } else if (typeof replacements === "object" || replacements == null) {
        return replacements || undefined;
      }
      throw new Error("Template replacements must be an array, object, null, or undefined");
    }
  
    var isCallExpression$3 = isCallExpression$8,
      isExpressionStatement$1 = isExpressionStatement$3,
      isFunction$1 = isFunction$4,
      isIdentifier$c = isIdentifier$j,
      isJSXIdentifier$2 = isJSXIdentifier$3,
      isNewExpression = isNewExpression$4,
      isPlaceholder = isPlaceholder$1,
      isStatement$2 = isStatement$8,
      isStringLiteral$4 = isStringLiteral$6,
      removePropertiesDeep = removePropertiesDeep$1,
      traverse$1 = traverse$2;
    var PATTERN = /^[_$A-Z0-9]+$/;
    function parseAndBuildMetadata(formatter, code, opts) {
      var placeholderWhitelist = opts.placeholderWhitelist,
        placeholderPattern = opts.placeholderPattern,
        preserveComments = opts.preserveComments,
        syntacticPlaceholders = opts.syntacticPlaceholders;
      var ast = parseWithCodeFrame(code, opts.parser, syntacticPlaceholders);
      removePropertiesDeep(ast, {
        preserveComments: preserveComments
      });
      formatter.validate(ast);
      var syntactic = {
        placeholders: [],
        placeholderNames: new Set()
      };
      var legacy = {
        placeholders: [],
        placeholderNames: new Set()
      };
      var isLegacyRef = {
        value: undefined
      };
      traverse$1(ast, placeholderVisitorHandler, {
        syntactic: syntactic,
        legacy: legacy,
        isLegacyRef: isLegacyRef,
        placeholderWhitelist: placeholderWhitelist,
        placeholderPattern: placeholderPattern,
        syntacticPlaceholders: syntacticPlaceholders
      });
      return Object.assign({
        ast: ast
      }, isLegacyRef.value ? legacy : syntactic);
    }
    function placeholderVisitorHandler(node, ancestors, state) {
      var _state$placeholderWhi;
      var name;
      if (isPlaceholder(node)) {
        if (state.syntacticPlaceholders === false) {
          throw new Error("%%foo%%-style placeholders can't be used when " + "'.syntacticPlaceholders' is false.");
        } else {
          name = node.name.name;
          state.isLegacyRef.value = false;
        }
      } else if (state.isLegacyRef.value === false || state.syntacticPlaceholders) {
        return;
      } else if (isIdentifier$c(node) || isJSXIdentifier$2(node)) {
        name = node.name;
        state.isLegacyRef.value = true;
      } else if (isStringLiteral$4(node)) {
        name = node.value;
        state.isLegacyRef.value = true;
      } else {
        return;
      }
      if (!state.isLegacyRef.value && (state.placeholderPattern != null || state.placeholderWhitelist != null)) {
        throw new Error("'.placeholderWhitelist' and '.placeholderPattern' aren't compatible" + " with '.syntacticPlaceholders: true'");
      }
      if (state.isLegacyRef.value && (state.placeholderPattern === false || !(state.placeholderPattern || PATTERN).test(name)) && !((_state$placeholderWhi = state.placeholderWhitelist) != null && _state$placeholderWhi.has(name))) {
        return;
      }
      ancestors = ancestors.slice();
      var _ancestors = ancestors[ancestors.length - 1],
        parent = _ancestors.node,
        key = _ancestors.key;
      var type;
      if (isStringLiteral$4(node) || isPlaceholder(node, {
        expectedNode: "StringLiteral"
      })) {
        type = "string";
      } else if (isNewExpression(parent) && key === "arguments" || isCallExpression$3(parent) && key === "arguments" || isFunction$1(parent) && key === "params") {
        type = "param";
      } else if (isExpressionStatement$1(parent) && !isPlaceholder(node)) {
        type = "statement";
        ancestors = ancestors.slice(0, -1);
      } else if (isStatement$2(node) && isPlaceholder(node)) {
        type = "statement";
      } else {
        type = "other";
      }
      var _ref = state.isLegacyRef.value ? state.legacy : state.syntactic,
        placeholders = _ref.placeholders,
        placeholderNames = _ref.placeholderNames;
      placeholders.push({
        name: name,
        type: type,
        resolve: function resolve(ast) {
          return resolveAncestors(ast, ancestors);
        },
        isDuplicate: placeholderNames.has(name)
      });
      placeholderNames.add(name);
    }
    function resolveAncestors(ast, ancestors) {
      var parent = ast;
      for (var i = 0; i < ancestors.length - 1; i++) {
        var _ancestors$i = ancestors[i],
          _key = _ancestors$i.key,
          _index = _ancestors$i.index;
        if (_index === undefined) {
          parent = parent[_key];
        } else {
          parent = parent[_key][_index];
        }
      }
      var _ancestors2 = ancestors[ancestors.length - 1],
        key = _ancestors2.key,
        index = _ancestors2.index;
      return {
        parent: parent,
        key: key,
        index: index
      };
    }
    function parseWithCodeFrame(code, parserOpts, syntacticPlaceholders) {
      var plugins = (parserOpts.plugins || []).slice();
      if (syntacticPlaceholders !== false) {
        plugins.push("placeholders");
      }
      parserOpts = Object.assign({
        allowReturnOutsideFunction: true,
        allowSuperOutsideMethod: true,
        sourceType: "module"
      }, parserOpts, {
        plugins: plugins
      });
      try {
        return parse$4(code, parserOpts);
      } catch (err) {
        var loc = err.loc;
        if (loc) {
          err.message += "\n" + codeFrameColumns(code, {
            start: loc
          });
          err.code = "BABEL_TEMPLATE_PARSE_ERROR";
        }
        throw err;
      }
    }
  
    var blockStatement$4 = blockStatement$6,
      cloneNode$f = cloneNode$j,
      emptyStatement = emptyStatement$1,
      expressionStatement$7 = expressionStatement$a,
      identifier$c = identifier$i,
      isStatement$1 = isStatement$8,
      isStringLiteral$3 = isStringLiteral$6,
      stringLiteral$7 = stringLiteral$8,
      validate$2 = validate$5;
    function populatePlaceholders(metadata, replacements) {
      var ast = cloneNode$f(metadata.ast);
      if (replacements) {
        metadata.placeholders.forEach(function (placeholder) {
          if (!Object.prototype.hasOwnProperty.call(replacements, placeholder.name)) {
            var placeholderName = placeholder.name;
            throw new Error("Error: No substitution given for \"" + placeholderName + "\". If this is not meant to be a\n            placeholder you may want to consider passing one of the following options to @babel/template:\n            - { placeholderPattern: false, placeholderWhitelist: new Set(['" + placeholderName + "'])}\n            - { placeholderPattern: /^" + placeholderName + "$/ }");
          }
        });
        Object.keys(replacements).forEach(function (key) {
          if (!metadata.placeholderNames.has(key)) {
            throw new Error("Unknown substitution \"" + key + "\" given");
          }
        });
      }
      metadata.placeholders.slice().reverse().forEach(function (placeholder) {
        try {
          applyReplacement(placeholder, ast, replacements && replacements[placeholder.name] || null);
        } catch (e) {
          e.message = "@babel/template placeholder \"" + placeholder.name + "\": " + e.message;
          throw e;
        }
      });
      return ast;
    }
    function applyReplacement(placeholder, ast, replacement) {
      if (placeholder.isDuplicate) {
        if (Array.isArray(replacement)) {
          replacement = replacement.map(function (node) {
            return cloneNode$f(node);
          });
        } else if (typeof replacement === "object") {
          replacement = cloneNode$f(replacement);
        }
      }
      var _placeholder$resolve = placeholder.resolve(ast),
        parent = _placeholder$resolve.parent,
        key = _placeholder$resolve.key,
        index = _placeholder$resolve.index;
      if (placeholder.type === "string") {
        if (typeof replacement === "string") {
          replacement = stringLiteral$7(replacement);
        }
        if (!replacement || !isStringLiteral$3(replacement)) {
          throw new Error("Expected string substitution");
        }
      } else if (placeholder.type === "statement") {
        if (index === undefined) {
          if (!replacement) {
            replacement = emptyStatement();
          } else if (Array.isArray(replacement)) {
            replacement = blockStatement$4(replacement);
          } else if (typeof replacement === "string") {
            replacement = expressionStatement$7(identifier$c(replacement));
          } else if (!isStatement$1(replacement)) {
            replacement = expressionStatement$7(replacement);
          }
        } else {
          if (replacement && !Array.isArray(replacement)) {
            if (typeof replacement === "string") {
              replacement = identifier$c(replacement);
            }
            if (!isStatement$1(replacement)) {
              replacement = expressionStatement$7(replacement);
            }
          }
        }
      } else if (placeholder.type === "param") {
        if (typeof replacement === "string") {
          replacement = identifier$c(replacement);
        }
        if (index === undefined) throw new Error("Assertion failure.");
      } else {
        if (typeof replacement === "string") {
          replacement = identifier$c(replacement);
        }
        if (Array.isArray(replacement)) {
          throw new Error("Cannot replace single expression with an array.");
        }
      }
      if (index === undefined) {
        validate$2(parent, key, replacement);
        parent[key] = replacement;
      } else {
        var items = parent[key].slice();
        if (placeholder.type === "statement" || placeholder.type === "param") {
          if (replacement == null) {
            items.splice(index, 1);
          } else if (Array.isArray(replacement)) {
            items.splice.apply(items, [index, 1].concat(_toConsumableArray(replacement)));
          } else {
            items[index] = replacement;
          }
        } else {
          items[index] = replacement;
        }
        validate$2(parent, key, items);
        parent[key] = items;
      }
    }
  
    function stringTemplate(formatter, code, opts) {
      code = formatter.code(code);
      var metadata;
      return function (arg) {
        var replacements = normalizeReplacements(arg);
        if (!metadata) metadata = parseAndBuildMetadata(formatter, code, opts);
        return formatter.unwrap(populatePlaceholders(metadata, replacements));
      };
    }
  
    function literalTemplate(formatter, tpl, opts) {
      var _buildLiteralData = buildLiteralData(formatter, tpl, opts),
        metadata = _buildLiteralData.metadata,
        names = _buildLiteralData.names;
      return function (arg) {
        var defaultReplacements = {};
        arg.forEach(function (replacement, i) {
          defaultReplacements[names[i]] = replacement;
        });
        return function (arg) {
          var replacements = normalizeReplacements(arg);
          if (replacements) {
            Object.keys(replacements).forEach(function (key) {
              if (Object.prototype.hasOwnProperty.call(defaultReplacements, key)) {
                throw new Error("Unexpected replacement overlap.");
              }
            });
          }
          return formatter.unwrap(populatePlaceholders(metadata, replacements ? Object.assign(replacements, defaultReplacements) : defaultReplacements));
        };
      };
    }
    function buildLiteralData(formatter, tpl, opts) {
      var names;
      var nameSet;
      var metadata;
      var prefix = "";
      do {
        prefix += "$";
        var result = buildTemplateCode(tpl, prefix);
        names = result.names;
        nameSet = new Set(names);
        metadata = parseAndBuildMetadata(formatter, formatter.code(result.code), {
          parser: opts.parser,
          placeholderWhitelist: new Set(result.names.concat(opts.placeholderWhitelist ? Array.from(opts.placeholderWhitelist) : [])),
          placeholderPattern: opts.placeholderPattern,
          preserveComments: opts.preserveComments,
          syntacticPlaceholders: opts.syntacticPlaceholders
        });
      } while (metadata.placeholders.some(function (placeholder) {
        return placeholder.isDuplicate && nameSet.has(placeholder.name);
      }));
      return {
        metadata: metadata,
        names: names
      };
    }
    function buildTemplateCode(tpl, prefix) {
      var names = [];
      var code = tpl[0];
      for (var i = 1; i < tpl.length; i++) {
        var value = "" + prefix + (i - 1);
        names.push(value);
        code += value + tpl[i];
      }
      return {
        names: names,
        code: code
      };
    }
  
    var NO_PLACEHOLDER = validate$3({
      placeholderPattern: false
    });
    function createTemplateBuilder(formatter, defaultOpts) {
      var templateFnCache = new WeakMap();
      var templateAstCache = new WeakMap();
      var cachedOpts = defaultOpts || validate$3(null);
      return Object.assign(function (tpl) {
        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
          args[_key - 1] = arguments[_key];
        }
        if (typeof tpl === "string") {
          if (args.length > 1) throw new Error("Unexpected extra params.");
          return extendedTrace(stringTemplate(formatter, tpl, merge(cachedOpts, validate$3(args[0]))));
        } else if (Array.isArray(tpl)) {
          var builder = templateFnCache.get(tpl);
          if (!builder) {
            builder = literalTemplate(formatter, tpl, cachedOpts);
            templateFnCache.set(tpl, builder);
          }
          return extendedTrace(builder(args));
        } else if (typeof tpl === "object" && tpl) {
          if (args.length > 0) throw new Error("Unexpected extra params.");
          return createTemplateBuilder(formatter, merge(cachedOpts, validate$3(tpl)));
        }
        throw new Error("Unexpected template param " + typeof tpl);
      }, {
        ast: function ast(tpl) {
          for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
            args[_key2 - 1] = arguments[_key2];
          }
          if (typeof tpl === "string") {
            if (args.length > 1) throw new Error("Unexpected extra params.");
            return stringTemplate(formatter, tpl, merge(merge(cachedOpts, validate$3(args[0])), NO_PLACEHOLDER))();
          } else if (Array.isArray(tpl)) {
            var builder = templateAstCache.get(tpl);
            if (!builder) {
              builder = literalTemplate(formatter, tpl, merge(cachedOpts, NO_PLACEHOLDER));
              templateAstCache.set(tpl, builder);
            }
            return builder(args)();
          }
          throw new Error("Unexpected template param " + typeof tpl);
        }
      });
    }
    function extendedTrace(fn) {
      var rootStack = "";
      try {
        throw new Error();
      } catch (error) {
        if (error.stack) {
          rootStack = error.stack.split("\n").slice(3).join("\n");
        }
      }
      return function (arg) {
        try {
          return fn(arg);
        } catch (err) {
          err.stack += "\n    =============\n" + rootStack;
          throw err;
        }
      };
    }
  
    var smart = createTemplateBuilder(smart$1);
    var statement = createTemplateBuilder(statement$1);
    var statements = createTemplateBuilder(statements$1);
    var expression = createTemplateBuilder(expression$1);
    var program$1 = createTemplateBuilder(program$2);
    var template$2 = Object.assign(smart.bind(undefined), {
      smart: smart,
      statement: statement,
      statements: statements,
      expression: expression,
      program: program$1,
      ast: smart.ast
    });
  
    var NOT_LOCAL_BINDING = NOT_LOCAL_BINDING$2,
      cloneNode$e = cloneNode$j,
      identifier$b = identifier$i,
      isAssignmentExpression$1 = isAssignmentExpression$4,
      isAssignmentPattern$3 = isAssignmentPattern$5,
      isFunction = isFunction$4,
      isIdentifier$b = isIdentifier$j,
      isLiteral$2 = isLiteral$6,
      isNullLiteral = isNullLiteral$2,
      isObjectMethod = isObjectMethod$1,
      isObjectProperty$3 = isObjectProperty$5,
      isRegExpLiteral = isRegExpLiteral$2,
      isRestElement$2 = isRestElement$3,
      isTemplateLiteral = isTemplateLiteral$2,
      isVariableDeclarator = isVariableDeclarator$2,
      toBindingIdentifierName = toBindingIdentifierName$1;
    function getFunctionArity(node) {
      var count = node.params.findIndex(function (param) {
        return isAssignmentPattern$3(param) || isRestElement$2(param);
      });
      return count === -1 ? node.params.length : count;
    }
    var buildPropertyMethodAssignmentWrapper = template$2.statement("\n  (function (FUNCTION_KEY) {\n    function FUNCTION_ID() {\n      return FUNCTION_KEY.apply(this, arguments);\n    }\n\n    FUNCTION_ID.toString = function () {\n      return FUNCTION_KEY.toString();\n    }\n\n    return FUNCTION_ID;\n  })(FUNCTION)\n");
    var buildGeneratorPropertyMethodAssignmentWrapper = template$2.statement("\n  (function (FUNCTION_KEY) {\n    function* FUNCTION_ID() {\n      return yield* FUNCTION_KEY.apply(this, arguments);\n    }\n\n    FUNCTION_ID.toString = function () {\n      return FUNCTION_KEY.toString();\n    };\n\n    return FUNCTION_ID;\n  })(FUNCTION)\n");
    var visitor$3 = {
      "ReferencedIdentifier|BindingIdentifier": function ReferencedIdentifierBindingIdentifier(path, state) {
        if (path.node.name !== state.name) return;
        var localDeclar = path.scope.getBindingIdentifier(state.name);
        if (localDeclar !== state.outerDeclar) return;
        state.selfReference = true;
        path.stop();
      }
    };
    function getNameFromLiteralId(id) {
      if (isNullLiteral(id)) {
        return "null";
      }
      if (isRegExpLiteral(id)) {
        return "_" + id.pattern + "_" + id.flags;
      }
      if (isTemplateLiteral(id)) {
        return id.quasis.map(function (quasi) {
          return quasi.value.raw;
        }).join("");
      }
      if (id.value !== undefined) {
        return id.value + "";
      }
      return "";
    }
    function wrap$1(state, method, id, scope) {
      if (state.selfReference) {
        if (scope.hasBinding(id.name) && !scope.hasGlobal(id.name)) {
          scope.rename(id.name);
        } else {
          if (!isFunction(method)) return;
          var build = buildPropertyMethodAssignmentWrapper;
          if (method.generator) {
            build = buildGeneratorPropertyMethodAssignmentWrapper;
          }
          var _template = build({
            FUNCTION: method,
            FUNCTION_ID: id,
            FUNCTION_KEY: scope.generateUidIdentifier(id.name)
          }).expression;
          var params = _template.callee.body.body[0].params;
          for (var i = 0, len = getFunctionArity(method); i < len; i++) {
            params.push(scope.generateUidIdentifier("x"));
          }
          return _template;
        }
      }
      method.id = id;
      scope.getProgramParent().references[id.name] = true;
    }
    function visit$2(node, name, scope) {
      var state = {
        selfAssignment: false,
        selfReference: false,
        outerDeclar: scope.getBindingIdentifier(name),
        name: name
      };
      var binding = scope.getOwnBinding(name);
      if (binding) {
        if (binding.kind === "param") {
          state.selfReference = true;
        }
      } else if (state.outerDeclar || scope.hasGlobal(name)) {
        scope.traverse(node, visitor$3, state);
      }
      return state;
    }
    function nameFunction (_ref, localBinding, supportUnicodeId) {
      var node = _ref.node,
        parent = _ref.parent,
        scope = _ref.scope,
        id = _ref.id;
      if (localBinding === void 0) {
        localBinding = false;
      }
      if (supportUnicodeId === void 0) {
        supportUnicodeId = false;
      }
      if (node.id) return;
      if ((isObjectProperty$3(parent) || isObjectMethod(parent, {
        kind: "method"
      })) && (!parent.computed || isLiteral$2(parent.key))) {
        id = parent.key;
      } else if (isVariableDeclarator(parent)) {
        id = parent.id;
        if (isIdentifier$b(id) && !localBinding) {
          var binding = scope.parent.getBinding(id.name);
          if (binding && binding.constant && scope.getBinding(id.name) === binding) {
            node.id = cloneNode$e(id);
            node.id[NOT_LOCAL_BINDING] = true;
            return;
          }
        }
      } else if (isAssignmentExpression$1(parent, {
        operator: "="
      })) {
        id = parent.left;
      } else if (!id) {
        return;
      }
      var name;
      if (id && isLiteral$2(id)) {
        name = getNameFromLiteralId(id);
      } else if (id && isIdentifier$b(id)) {
        name = id.name;
      }
      if (name === undefined) {
        return;
      }
      if (!supportUnicodeId && isFunction(node) && /[\uD800-\uDFFF]/.test(name)) {
        return;
      }
      name = toBindingIdentifierName(name);
      var newId = identifier$b(name);
      newId[NOT_LOCAL_BINDING] = true;
      var state = visit$2(node, name, scope);
      return wrap$1(state, node, newId, scope) || node;
    }
  
    var arrowFunctionExpression$2 = arrowFunctionExpression$4,
      assignmentExpression$a = assignmentExpression$d,
      binaryExpression$4 = binaryExpression$5,
      blockStatement$3 = blockStatement$6,
      callExpression$b = callExpression$e,
      conditionalExpression$3 = conditionalExpression$4,
      expressionStatement$6 = expressionStatement$a,
      identifier$a = identifier$i,
      isIdentifier$a = isIdentifier$j,
      jsxIdentifier$1 = jsxIdentifier$2,
      logicalExpression$2 = logicalExpression$3,
      LOGICAL_OPERATORS$2 = LOGICAL_OPERATORS$3,
      memberExpression$a = memberExpression$c,
      metaProperty = metaProperty$1,
      numericLiteral$6 = numericLiteral$8,
      objectExpression$2 = objectExpression$3,
      restElement$1 = restElement$2,
      returnStatement$1 = returnStatement$3,
      sequenceExpression$6 = sequenceExpression$7,
      spreadElement$1 = spreadElement$2,
      stringLiteral$6 = stringLiteral$8,
      _super = _super$1,
      thisExpression$3 = thisExpression$4,
      toExpression = toExpression$1,
      unaryExpression$5 = unaryExpression$7;
    function toComputedKey$1() {
      var key;
      if (this.isMemberExpression()) {
        key = this.node.property;
      } else if (this.isProperty() || this.isMethod()) {
        key = this.node.key;
      } else {
        throw new ReferenceError("todo");
      }
      if (!this.node.computed) {
        if (isIdentifier$a(key)) key = stringLiteral$6(key.name);
      }
      return key;
    }
    function ensureBlock() {
      var body = this.get("body");
      var bodyNode = body.node;
      if (Array.isArray(body)) {
        throw new Error("Can't convert array path to a block statement");
      }
      if (!bodyNode) {
        throw new Error("Can't convert node without a body");
      }
      if (body.isBlockStatement()) {
        return bodyNode;
      }
      var statements = [];
      var stringPath = "body";
      var key;
      var listKey;
      if (body.isStatement()) {
        listKey = "body";
        key = 0;
        statements.push(body.node);
      } else {
        stringPath += ".body.0";
        if (this.isFunction()) {
          key = "argument";
          statements.push(returnStatement$1(body.node));
        } else {
          key = "expression";
          statements.push(expressionStatement$6(body.node));
        }
      }
      this.node.body = blockStatement$3(statements);
      var parentPath = this.get(stringPath);
      body.setup(parentPath, listKey ? parentPath.node[listKey] : parentPath.node, listKey, key);
      return this.node;
    }
    {
      {
        exports.arrowFunctionToShadowed = function () {
          if (!this.isArrowFunctionExpression()) return;
          this.arrowFunctionToExpression();
        };
      }
    }
    function unwrapFunctionEnvironment() {
      if (!this.isArrowFunctionExpression() && !this.isFunctionExpression() && !this.isFunctionDeclaration()) {
        throw this.buildCodeFrameError("Can only unwrap the environment of a function.");
      }
      hoistFunctionEnvironment(this);
    }
    function setType(path, type) {
      path.node.type = type;
    }
    function arrowFunctionToExpression(_temp) {
      var _arguments$;
      var _ref = _temp === void 0 ? {} : _temp,
        _ref$allowInsertArrow = _ref.allowInsertArrow,
        allowInsertArrow = _ref$allowInsertArrow === void 0 ? true : _ref$allowInsertArrow,
        _ref$allowInsertArrow2 = _ref.allowInsertArrowWithRest,
        allowInsertArrowWithRest = _ref$allowInsertArrow2 === void 0 ? allowInsertArrow : _ref$allowInsertArrow2,
        _ref$noNewArrows = _ref.noNewArrows,
        noNewArrows = _ref$noNewArrows === void 0 ? !((_arguments$ = arguments[0]) != null && _arguments$.specCompliant) : _ref$noNewArrows;
      if (!this.isArrowFunctionExpression()) {
        throw this.buildCodeFrameError("Cannot convert non-arrow function to a function expression.");
      }
      var _hoistFunctionEnviron = hoistFunctionEnvironment(this, noNewArrows, allowInsertArrow, allowInsertArrowWithRest),
        thisBinding = _hoistFunctionEnviron.thisBinding,
        fn = _hoistFunctionEnviron.fnPath;
      fn.ensureBlock();
      setType(fn, "FunctionExpression");
      if (!noNewArrows) {
        var checkBinding = thisBinding ? null : fn.scope.generateUidIdentifier("arrowCheckId");
        if (checkBinding) {
          fn.parentPath.scope.push({
            id: checkBinding,
            init: objectExpression$2([])
          });
        }
        fn.get("body").unshiftContainer("body", expressionStatement$6(callExpression$b(this.hub.addHelper("newArrowCheck"), [thisExpression$3(), checkBinding ? identifier$a(checkBinding.name) : identifier$a(thisBinding)])));
        fn.replaceWith(callExpression$b(memberExpression$a(nameFunction(this, true) || fn.node, identifier$a("bind")), [checkBinding ? identifier$a(checkBinding.name) : thisExpression$3()]));
        return fn.get("callee.object");
      }
      return fn;
    }
    var getSuperCallsVisitor = merge$1([{
      CallExpression: function CallExpression(child, _ref2) {
        var allSuperCalls = _ref2.allSuperCalls;
        if (!child.get("callee").isSuper()) return;
        allSuperCalls.push(child);
      }
    }, visitor$5]);
    function hoistFunctionEnvironment(fnPath, noNewArrows, allowInsertArrow, allowInsertArrowWithRest) {
      if (noNewArrows === void 0) {
        noNewArrows = true;
      }
      if (allowInsertArrow === void 0) {
        allowInsertArrow = true;
      }
      if (allowInsertArrowWithRest === void 0) {
        allowInsertArrowWithRest = true;
      }
      var arrowParent;
      var thisEnvFn = fnPath.findParent(function (p) {
        if (p.isArrowFunctionExpression()) {
          var _arrowParent;
          (_arrowParent = arrowParent) != null ? _arrowParent : arrowParent = p;
          return false;
        }
        return p.isFunction() || p.isProgram() || p.isClassProperty({
          "static": false
        }) || p.isClassPrivateProperty({
          "static": false
        });
      });
      var inConstructor = thisEnvFn.isClassMethod({
        kind: "constructor"
      });
      if (thisEnvFn.isClassProperty() || thisEnvFn.isClassPrivateProperty()) {
        if (arrowParent) {
          thisEnvFn = arrowParent;
        } else if (allowInsertArrow) {
          fnPath.replaceWith(callExpression$b(arrowFunctionExpression$2([], toExpression(fnPath.node)), []));
          thisEnvFn = fnPath.get("callee");
          fnPath = thisEnvFn.get("body");
        } else {
          throw fnPath.buildCodeFrameError("Unable to transform arrow inside class property");
        }
      }
      var _getScopeInformation = getScopeInformation(fnPath),
        thisPaths = _getScopeInformation.thisPaths,
        argumentsPaths = _getScopeInformation.argumentsPaths,
        newTargetPaths = _getScopeInformation.newTargetPaths,
        superProps = _getScopeInformation.superProps,
        superCalls = _getScopeInformation.superCalls;
      if (inConstructor && superCalls.length > 0) {
        if (!allowInsertArrow) {
          throw superCalls[0].buildCodeFrameError("When using '@babel/plugin-transform-arrow-functions', " + "it's not possible to compile `super()` in an arrow function without compiling classes.\n" + "Please add '@babel/plugin-transform-classes' to your Babel configuration.");
        }
        if (!allowInsertArrowWithRest) {
          throw superCalls[0].buildCodeFrameError("When using '@babel/plugin-transform-parameters', " + "it's not possible to compile `super()` in an arrow function with default or rest parameters without compiling classes.\n" + "Please add '@babel/plugin-transform-classes' to your Babel configuration.");
        }
        var allSuperCalls = [];
        thisEnvFn.traverse(getSuperCallsVisitor, {
          allSuperCalls: allSuperCalls
        });
        var superBinding = getSuperBinding(thisEnvFn);
        allSuperCalls.forEach(function (superCall) {
          var callee = identifier$a(superBinding);
          callee.loc = superCall.node.callee.loc;
          superCall.get("callee").replaceWith(callee);
        });
      }
      if (argumentsPaths.length > 0) {
        var argumentsBinding = getBinding(thisEnvFn, "arguments", function () {
          var args = function args() {
            return identifier$a("arguments");
          };
          if (thisEnvFn.scope.path.isProgram()) {
            return conditionalExpression$3(binaryExpression$4("===", unaryExpression$5("typeof", args()), stringLiteral$6("undefined")), thisEnvFn.scope.buildUndefinedNode(), args());
          } else {
            return args();
          }
        });
        argumentsPaths.forEach(function (argumentsChild) {
          var argsRef = identifier$a(argumentsBinding);
          argsRef.loc = argumentsChild.node.loc;
          argumentsChild.replaceWith(argsRef);
        });
      }
      if (newTargetPaths.length > 0) {
        var newTargetBinding = getBinding(thisEnvFn, "newtarget", function () {
          return metaProperty(identifier$a("new"), identifier$a("target"));
        });
        newTargetPaths.forEach(function (targetChild) {
          var targetRef = identifier$a(newTargetBinding);
          targetRef.loc = targetChild.node.loc;
          targetChild.replaceWith(targetRef);
        });
      }
      if (superProps.length > 0) {
        if (!allowInsertArrow) {
          throw superProps[0].buildCodeFrameError("When using '@babel/plugin-transform-arrow-functions', " + "it's not possible to compile `super.prop` in an arrow function without compiling classes.\n" + "Please add '@babel/plugin-transform-classes' to your Babel configuration.");
        }
        var flatSuperProps = superProps.reduce(function (acc, superProp) {
          return acc.concat(standardizeSuperProperty(superProp));
        }, []);
        flatSuperProps.forEach(function (superProp) {
          var key = superProp.node.computed ? "" : superProp.get("property").node.name;
          var superParentPath = superProp.parentPath;
          var isAssignment = superParentPath.isAssignmentExpression({
            left: superProp.node
          });
          var isCall = superParentPath.isCallExpression({
            callee: superProp.node
          });
          var isTaggedTemplate = superParentPath.isTaggedTemplateExpression({
            tag: superProp.node
          });
          var superBinding = getSuperPropBinding(thisEnvFn, isAssignment, key);
          var args = [];
          if (superProp.node.computed) {
            args.push(superProp.get("property").node);
          }
          if (isAssignment) {
            var value = superParentPath.node.right;
            args.push(value);
          }
          var call = callExpression$b(identifier$a(superBinding), args);
          if (isCall) {
            superParentPath.unshiftContainer("arguments", thisExpression$3());
            superProp.replaceWith(memberExpression$a(call, identifier$a("call")));
            thisPaths.push(superParentPath.get("arguments.0"));
          } else if (isAssignment) {
            superParentPath.replaceWith(call);
          } else if (isTaggedTemplate) {
            superProp.replaceWith(callExpression$b(memberExpression$a(call, identifier$a("bind"), false), [thisExpression$3()]));
            thisPaths.push(superProp.get("arguments.0"));
          } else {
            superProp.replaceWith(call);
          }
        });
      }
      var thisBinding;
      if (thisPaths.length > 0 || !noNewArrows) {
        thisBinding = getThisBinding(thisEnvFn, inConstructor);
        if (noNewArrows || inConstructor && hasSuperClass(thisEnvFn)) {
          thisPaths.forEach(function (thisChild) {
            var thisRef = thisChild.isJSX() ? jsxIdentifier$1(thisBinding) : identifier$a(thisBinding);
            thisRef.loc = thisChild.node.loc;
            thisChild.replaceWith(thisRef);
          });
          if (!noNewArrows) thisBinding = null;
        }
      }
      return {
        thisBinding: thisBinding,
        fnPath: fnPath
      };
    }
    function isLogicalOp(op) {
      return LOGICAL_OPERATORS$2.includes(op);
    }
    function standardizeSuperProperty(superProp) {
      if (superProp.parentPath.isAssignmentExpression() && superProp.parentPath.node.operator !== "=") {
        var assignmentPath = superProp.parentPath;
        var op = assignmentPath.node.operator.slice(0, -1);
        var value = assignmentPath.node.right;
        var isLogicalAssignment = isLogicalOp(op);
        if (superProp.node.computed) {
          var tmp = superProp.scope.generateDeclaredUidIdentifier("tmp");
          var object = superProp.node.object;
          var property = superProp.node.property;
          assignmentPath.get("left").replaceWith(memberExpression$a(object, assignmentExpression$a("=", tmp, property), true));
          assignmentPath.get("right").replaceWith(rightExpression(isLogicalAssignment ? "=" : op, memberExpression$a(object, identifier$a(tmp.name), true), value));
        } else {
          var _object = superProp.node.object;
          var _property = superProp.node.property;
          assignmentPath.get("left").replaceWith(memberExpression$a(_object, _property));
          assignmentPath.get("right").replaceWith(rightExpression(isLogicalAssignment ? "=" : op, memberExpression$a(_object, identifier$a(_property.name)), value));
        }
        if (isLogicalAssignment) {
          assignmentPath.replaceWith(logicalExpression$2(op, assignmentPath.node.left, assignmentPath.node.right));
        } else {
          assignmentPath.node.operator = "=";
        }
        return [assignmentPath.get("left"), assignmentPath.get("right").get("left")];
      } else if (superProp.parentPath.isUpdateExpression()) {
        var updateExpr = superProp.parentPath;
        var _tmp = superProp.scope.generateDeclaredUidIdentifier("tmp");
        var computedKey = superProp.node.computed ? superProp.scope.generateDeclaredUidIdentifier("prop") : null;
        var parts = [assignmentExpression$a("=", _tmp, memberExpression$a(superProp.node.object, computedKey ? assignmentExpression$a("=", computedKey, superProp.node.property) : superProp.node.property, superProp.node.computed)), assignmentExpression$a("=", memberExpression$a(superProp.node.object, computedKey ? identifier$a(computedKey.name) : superProp.node.property, superProp.node.computed), binaryExpression$4(superProp.parentPath.node.operator[0], identifier$a(_tmp.name), numericLiteral$6(1)))];
        if (!superProp.parentPath.node.prefix) {
          parts.push(identifier$a(_tmp.name));
        }
        updateExpr.replaceWith(sequenceExpression$6(parts));
        var left = updateExpr.get("expressions.0.right");
        var right = updateExpr.get("expressions.1.left");
        return [left, right];
      }
      return [superProp];
      function rightExpression(op, left, right) {
        if (op === "=") {
          return assignmentExpression$a("=", left, right);
        } else {
          return binaryExpression$4(op, left, right);
        }
      }
    }
    function hasSuperClass(thisEnvFn) {
      return thisEnvFn.isClassMethod() && !!thisEnvFn.parentPath.parentPath.node.superClass;
    }
    var assignSuperThisVisitor = merge$1([{
      CallExpression: function CallExpression(child, _ref3) {
        var supers = _ref3.supers,
          thisBinding = _ref3.thisBinding;
        if (!child.get("callee").isSuper()) return;
        if (supers.has(child.node)) return;
        supers.add(child.node);
        child.replaceWithMultiple([child.node, assignmentExpression$a("=", identifier$a(thisBinding), identifier$a("this"))]);
      }
    }, visitor$5]);
    function getThisBinding(thisEnvFn, inConstructor) {
      return getBinding(thisEnvFn, "this", function (thisBinding) {
        if (!inConstructor || !hasSuperClass(thisEnvFn)) return thisExpression$3();
        thisEnvFn.traverse(assignSuperThisVisitor, {
          supers: new WeakSet(),
          thisBinding: thisBinding
        });
      });
    }
    function getSuperBinding(thisEnvFn) {
      return getBinding(thisEnvFn, "supercall", function () {
        var argsBinding = thisEnvFn.scope.generateUidIdentifier("args");
        return arrowFunctionExpression$2([restElement$1(argsBinding)], callExpression$b(_super(), [spreadElement$1(identifier$a(argsBinding.name))]));
      });
    }
    function getSuperPropBinding(thisEnvFn, isAssignment, propName) {
      var op = isAssignment ? "set" : "get";
      return getBinding(thisEnvFn, "superprop_" + op + ":" + (propName || ""), function () {
        var argsList = [];
        var fnBody;
        if (propName) {
          fnBody = memberExpression$a(_super(), identifier$a(propName));
        } else {
          var method = thisEnvFn.scope.generateUidIdentifier("prop");
          argsList.unshift(method);
          fnBody = memberExpression$a(_super(), identifier$a(method.name), true);
        }
        if (isAssignment) {
          var valueIdent = thisEnvFn.scope.generateUidIdentifier("value");
          argsList.push(valueIdent);
          fnBody = assignmentExpression$a("=", fnBody, identifier$a(valueIdent.name));
        }
        return arrowFunctionExpression$2(argsList, fnBody);
      });
    }
    function getBinding(thisEnvFn, key, init) {
      var cacheKey = "binding:" + key;
      var data = thisEnvFn.getData(cacheKey);
      if (!data) {
        var id = thisEnvFn.scope.generateUidIdentifier(key);
        data = id.name;
        thisEnvFn.setData(cacheKey, data);
        thisEnvFn.scope.push({
          id: id,
          init: init(data)
        });
      }
      return data;
    }
    var getScopeInformationVisitor = merge$1([{
      ThisExpression: function ThisExpression(child, _ref4) {
        var thisPaths = _ref4.thisPaths;
        thisPaths.push(child);
      },
      JSXIdentifier: function JSXIdentifier(child, _ref5) {
        var thisPaths = _ref5.thisPaths;
        if (child.node.name !== "this") return;
        if (!child.parentPath.isJSXMemberExpression({
          object: child.node
        }) && !child.parentPath.isJSXOpeningElement({
          name: child.node
        })) {
          return;
        }
        thisPaths.push(child);
      },
      CallExpression: function CallExpression(child, _ref6) {
        var superCalls = _ref6.superCalls;
        if (child.get("callee").isSuper()) superCalls.push(child);
      },
      MemberExpression: function MemberExpression(child, _ref7) {
        var superProps = _ref7.superProps;
        if (child.get("object").isSuper()) superProps.push(child);
      },
      Identifier: function Identifier(child, _ref8) {
        var argumentsPaths = _ref8.argumentsPaths;
        if (!child.isReferencedIdentifier({
          name: "arguments"
        })) return;
        var curr = child.scope;
        do {
          if (curr.hasOwnBinding("arguments")) {
            curr.rename("arguments");
            return;
          }
          if (curr.path.isFunction() && !curr.path.isArrowFunctionExpression()) {
            break;
          }
        } while (curr = curr.parent);
        argumentsPaths.push(child);
      },
      MetaProperty: function MetaProperty(child, _ref9) {
        var newTargetPaths = _ref9.newTargetPaths;
        if (!child.get("meta").isIdentifier({
          name: "new"
        })) return;
        if (!child.get("property").isIdentifier({
          name: "target"
        })) return;
        newTargetPaths.push(child);
      }
    }, visitor$5]);
    function getScopeInformation(fnPath) {
      var thisPaths = [];
      var argumentsPaths = [];
      var newTargetPaths = [];
      var superProps = [];
      var superCalls = [];
      fnPath.traverse(getScopeInformationVisitor, {
        thisPaths: thisPaths,
        argumentsPaths: argumentsPaths,
        newTargetPaths: newTargetPaths,
        superProps: superProps,
        superCalls: superCalls
      });
      return {
        thisPaths: thisPaths,
        argumentsPaths: argumentsPaths,
        newTargetPaths: newTargetPaths,
        superProps: superProps,
        superCalls: superCalls
      };
    }
  
    var NodePath_conversion = /*#__PURE__*/Object.freeze({
      __proto__: null,
      toComputedKey: toComputedKey$1,
      ensureBlock: ensureBlock,
      unwrapFunctionEnvironment: unwrapFunctionEnvironment,
      arrowFunctionToExpression: arrowFunctionToExpression
    });
  
    var STATEMENT_OR_BLOCK_KEYS = STATEMENT_OR_BLOCK_KEYS$1,
      VISITOR_KEYS$3 = VISITOR_KEYS$5,
      isBlockStatement = isBlockStatement$2,
      isExpression$2 = isExpression$4,
      isIdentifier$9 = isIdentifier$j,
      isLiteral$1 = isLiteral$6,
      isStringLiteral$2 = isStringLiteral$6,
      isType = isType$2,
      _matchesPattern = matchesPattern$2;
    function matchesPattern(pattern, allowPartial) {
      return _matchesPattern(this.node, pattern, allowPartial);
    }
    function has$8(key) {
      var val = this.node && this.node[key];
      if (val && Array.isArray(val)) {
        return !!val.length;
      } else {
        return !!val;
      }
    }
    function isStatic() {
      return this.scope.isStatic(this.node);
    }
    var is = has$8;
    function isnt(key) {
      return !this.has(key);
    }
    function equals(key, value) {
      return this.node[key] === value;
    }
    function isNodeType(type) {
      return isType(this.type, type);
    }
    function canHaveVariableDeclarationOrExpression() {
      return (this.key === "init" || this.key === "left") && this.parentPath.isFor();
    }
    function canSwapBetweenExpressionAndStatement(replacement) {
      if (this.key !== "body" || !this.parentPath.isArrowFunctionExpression()) {
        return false;
      }
      if (this.isExpression()) {
        return isBlockStatement(replacement);
      } else if (this.isBlockStatement()) {
        return isExpression$2(replacement);
      }
      return false;
    }
    function isCompletionRecord(allowInsideFunction) {
      var path = this;
      var first = true;
      do {
        var _path = path,
          type = _path.type,
          container = _path.container;
        if (!first && (path.isFunction() || type === "StaticBlock")) {
          return !!allowInsideFunction;
        }
        first = false;
        if (Array.isArray(container) && path.key !== container.length - 1) {
          return false;
        }
      } while ((path = path.parentPath) && !path.isProgram() && !path.isDoExpression());
      return true;
    }
    function isStatementOrBlock() {
      if (this.parentPath.isLabeledStatement() || isBlockStatement(this.container)) {
        return false;
      } else {
        return STATEMENT_OR_BLOCK_KEYS.includes(this.key);
      }
    }
    function referencesImport(moduleSource, importName) {
      if (!this.isReferencedIdentifier()) {
        if (this.isJSXMemberExpression() && this.node.property.name === importName || (this.isMemberExpression() || this.isOptionalMemberExpression()) && (this.node.computed ? isStringLiteral$2(this.node.property, {
          value: importName
        }) : this.node.property.name === importName)) {
          var object = this.get("object");
          return object.isReferencedIdentifier() && object.referencesImport(moduleSource, "*");
        }
        return false;
      }
      var binding = this.scope.getBinding(this.node.name);
      if (!binding || binding.kind !== "module") return false;
      var path = binding.path;
      var parent = path.parentPath;
      if (!parent.isImportDeclaration()) return false;
      if (parent.node.source.value === moduleSource) {
        if (!importName) return true;
      } else {
        return false;
      }
      if (path.isImportDefaultSpecifier() && importName === "default") {
        return true;
      }
      if (path.isImportNamespaceSpecifier() && importName === "*") {
        return true;
      }
      if (path.isImportSpecifier() && isIdentifier$9(path.node.imported, {
        name: importName
      })) {
        return true;
      }
      return false;
    }
    function getSource$1() {
      var node = this.node;
      if (node.end) {
        var code = this.hub.getCode();
        if (code) return code.slice(node.start, node.end);
      }
      return "";
    }
    function willIMaybeExecuteBefore(target) {
      return this._guessExecutionStatusRelativeTo(target) !== "after";
    }
    function getOuterFunction(path) {
      return path.isProgram() ? path : (path.parentPath.scope.getFunctionParent() || path.parentPath.scope.getProgramParent()).path;
    }
    function isExecutionUncertain(type, key) {
      switch (type) {
        case "LogicalExpression":
          return key === "right";
        case "ConditionalExpression":
        case "IfStatement":
          return key === "consequent" || key === "alternate";
        case "WhileStatement":
        case "DoWhileStatement":
        case "ForInStatement":
        case "ForOfStatement":
          return key === "body";
        case "ForStatement":
          return key === "body" || key === "update";
        case "SwitchStatement":
          return key === "cases";
        case "TryStatement":
          return key === "handler";
        case "AssignmentPattern":
          return key === "right";
        case "OptionalMemberExpression":
          return key === "property";
        case "OptionalCallExpression":
          return key === "arguments";
        default:
          return false;
      }
    }
    function isExecutionUncertainInList(paths, maxIndex) {
      for (var i = 0; i < maxIndex; i++) {
        var path = paths[i];
        if (isExecutionUncertain(path.parent.type, path.parentKey)) {
          return true;
        }
      }
      return false;
    }
    var SYMBOL_CHECKING = Symbol();
    function _guessExecutionStatusRelativeTo(target) {
      return _guessExecutionStatusRelativeToCached(this, target, new Map());
    }
    function _guessExecutionStatusRelativeToCached(base, target, cache) {
      var funcParent = {
        "this": getOuterFunction(base),
        target: getOuterFunction(target)
      };
      if (funcParent.target.node !== funcParent["this"].node) {
        return _guessExecutionStatusRelativeToDifferentFunctionsCached(base, funcParent.target, cache);
      }
      var paths = {
        target: target.getAncestry(),
        "this": base.getAncestry()
      };
      if (paths.target.indexOf(base) >= 0) return "after";
      if (paths["this"].indexOf(target) >= 0) return "before";
      var commonPath;
      var commonIndex = {
        target: 0,
        "this": 0
      };
      while (!commonPath && commonIndex["this"] < paths["this"].length) {
        var path = paths["this"][commonIndex["this"]];
        commonIndex.target = paths.target.indexOf(path);
        if (commonIndex.target >= 0) {
          commonPath = path;
        } else {
          commonIndex["this"]++;
        }
      }
      if (!commonPath) {
        throw new Error("Internal Babel error - The two compared nodes" + " don't appear to belong to the same program.");
      }
      if (isExecutionUncertainInList(paths["this"], commonIndex["this"] - 1) || isExecutionUncertainInList(paths.target, commonIndex.target - 1)) {
        return "unknown";
      }
      var divergence = {
        "this": paths["this"][commonIndex["this"] - 1],
        target: paths.target[commonIndex.target - 1]
      };
      if (divergence.target.listKey && divergence["this"].listKey && divergence.target.container === divergence["this"].container) {
        return divergence.target.key > divergence["this"].key ? "before" : "after";
      }
      var keys = VISITOR_KEYS$3[commonPath.type];
      var keyPosition = {
        "this": keys.indexOf(divergence["this"].parentKey),
        target: keys.indexOf(divergence.target.parentKey)
      };
      return keyPosition.target > keyPosition["this"] ? "before" : "after";
    }
    function _guessExecutionStatusRelativeToDifferentFunctionsInternal(base, target, cache) {
      if (!target.isFunctionDeclaration()) {
        if (_guessExecutionStatusRelativeToCached(base, target, cache) === "before") {
          return "before";
        }
        return "unknown";
      } else if (target.parentPath.isExportDeclaration()) {
        return "unknown";
      }
      var binding = target.scope.getBinding(target.node.id.name);
      if (!binding.references) return "before";
      var referencePaths = binding.referencePaths;
      var allStatus;
      for (var _iterator = _createForOfIteratorHelperLoose(referencePaths), _step; !(_step = _iterator()).done;) {
        var path = _step.value;
        var childOfFunction = !!path.find(function (path) {
          return path.node === target.node;
        });
        if (childOfFunction) continue;
        if (path.key !== "callee" || !path.parentPath.isCallExpression()) {
          return "unknown";
        }
        var status = _guessExecutionStatusRelativeToCached(base, path, cache);
        if (allStatus && allStatus !== status) {
          return "unknown";
        } else {
          allStatus = status;
        }
      }
      return allStatus;
    }
    function _guessExecutionStatusRelativeToDifferentFunctionsCached(base, target, cache) {
      var nodeMap = cache.get(base.node);
      var cached;
      if (!nodeMap) {
        cache.set(base.node, nodeMap = new Map());
      } else if (cached = nodeMap.get(target.node)) {
        if (cached === SYMBOL_CHECKING) {
          return "unknown";
        }
        return cached;
      }
      nodeMap.set(target.node, SYMBOL_CHECKING);
      var result = _guessExecutionStatusRelativeToDifferentFunctionsInternal(base, target, cache);
      nodeMap.set(target.node, result);
      return result;
    }
    function resolve$4(dangerous, resolved) {
      return this._resolve(dangerous, resolved) || this;
    }
    function _resolve(dangerous, resolved) {
      if (resolved && resolved.indexOf(this) >= 0) return;
      resolved = resolved || [];
      resolved.push(this);
      if (this.isVariableDeclarator()) {
        if (this.get("id").isIdentifier()) {
          return this.get("init").resolve(dangerous, resolved);
        }
      } else if (this.isReferencedIdentifier()) {
        var binding = this.scope.getBinding(this.node.name);
        if (!binding) return;
        if (!binding.constant) return;
        if (binding.kind === "module") return;
        if (binding.path !== this) {
          var ret = binding.path.resolve(dangerous, resolved);
          if (this.find(function (parent) {
            return parent.node === ret.node;
          })) return;
          return ret;
        }
      } else if (this.isTypeCastExpression()) {
        return this.get("expression").resolve(dangerous, resolved);
      } else if (dangerous && this.isMemberExpression()) {
        var targetKey = this.toComputedKey();
        if (!isLiteral$1(targetKey)) return;
        var targetName = targetKey.value;
        var target = this.get("object").resolve(dangerous, resolved);
        if (target.isObjectExpression()) {
          var props = target.get("properties");
          for (var _i = 0, _arr = props; _i < _arr.length; _i++) {
            var prop = _arr[_i];
            if (!prop.isProperty()) continue;
            var key = prop.get("key");
            var match = prop.isnt("computed") && key.isIdentifier({
              name: targetName
            });
            match = match || key.isLiteral({
              value: targetName
            });
            if (match) return prop.get("value").resolve(dangerous, resolved);
          }
        } else if (target.isArrayExpression() && !isNaN(+targetName)) {
          var elems = target.get("elements");
          var elem = elems[targetName];
          if (elem) return elem.resolve(dangerous, resolved);
        }
      }
    }
    function isConstantExpression() {
      if (this.isIdentifier()) {
        var binding = this.scope.getBinding(this.node.name);
        if (!binding) return false;
        return binding.constant;
      }
      if (this.isLiteral()) {
        if (this.isRegExpLiteral()) {
          return false;
        }
        if (this.isTemplateLiteral()) {
          return this.get("expressions").every(function (expression) {
            return expression.isConstantExpression();
          });
        }
        return true;
      }
      if (this.isUnaryExpression()) {
        if (this.node.operator !== "void") {
          return false;
        }
        return this.get("argument").isConstantExpression();
      }
      if (this.isBinaryExpression()) {
        var operator = this.node.operator;
        return operator !== "in" && operator !== "instanceof" && this.get("left").isConstantExpression() && this.get("right").isConstantExpression();
      }
      return false;
    }
    function isInStrictMode() {
      var start = this.isProgram() ? this : this.parentPath;
      var strictParent = start.find(function (path) {
        if (path.isProgram({
          sourceType: "module"
        })) return true;
        if (path.isClass()) return true;
        if (path.isArrowFunctionExpression() && !path.get("body").isBlockStatement()) {
          return false;
        }
        var body;
        if (path.isFunction()) {
          body = path.node.body;
        } else if (path.isProgram()) {
          body = path.node;
        } else {
          return false;
        }
        for (var _iterator2 = _createForOfIteratorHelperLoose(body.directives), _step2; !(_step2 = _iterator2()).done;) {
          var directive = _step2.value;
          if (directive.value.value === "use strict") {
            return true;
          }
        }
      });
      return !!strictParent;
    }
  
    var NodePath_introspection = /*#__PURE__*/Object.freeze({
      __proto__: null,
      matchesPattern: matchesPattern,
      has: has$8,
      isStatic: isStatic,
      is: is,
      isnt: isnt,
      equals: equals,
      isNodeType: isNodeType,
      canHaveVariableDeclarationOrExpression: canHaveVariableDeclarationOrExpression,
      canSwapBetweenExpressionAndStatement: canSwapBetweenExpressionAndStatement,
      isCompletionRecord: isCompletionRecord,
      isStatementOrBlock: isStatementOrBlock,
      referencesImport: referencesImport,
      getSource: getSource$1,
      willIMaybeExecuteBefore: willIMaybeExecuteBefore,
      _guessExecutionStatusRelativeTo: _guessExecutionStatusRelativeTo,
      resolve: resolve$4,
      _resolve: _resolve,
      isConstantExpression: isConstantExpression,
      isInStrictMode: isInStrictMode
    });
  
    function call(key) {
      var opts = this.opts;
      this.debug(key);
      if (this.node) {
        if (this._call(opts[key])) return true;
      }
      if (this.node) {
        return this._call(opts[this.node.type] && opts[this.node.type][key]);
      }
      return false;
    }
    function _call(fns) {
      if (!fns) return false;
      for (var _iterator = _createForOfIteratorHelperLoose(fns), _step; !(_step = _iterator()).done;) {
        var fn = _step.value;
        if (!fn) continue;
        var node = this.node;
        if (!node) return true;
        var ret = fn.call(this.state, this, this.state);
        if (ret && typeof ret === "object" && typeof ret.then === "function") {
          throw new Error("You appear to be using a plugin with an async traversal visitor, " + "which your current version of Babel does not support. " + "If you're using a published plugin, you may need to upgrade " + "your @babel/core version.");
        }
        if (ret) {
          throw new Error("Unexpected return value from visitor method " + fn);
        }
        if (this.node !== node) return true;
        if (this._traverseFlags > 0) return true;
      }
      return false;
    }
    function isDenylisted() {
      var _this$opts$denylist;
      var denylist = (_this$opts$denylist = this.opts.denylist) != null ? _this$opts$denylist : this.opts.blacklist;
      return denylist && denylist.indexOf(this.node.type) > -1;
    }
    function restoreContext(path, context) {
      if (path.context !== context) {
        path.context = context;
        path.state = context.state;
        path.opts = context.opts;
      }
    }
    function visit$1() {
      var _this$opts$shouldSkip, _this$opts;
      if (!this.node) {
        return false;
      }
      if (this.isDenylisted()) {
        return false;
      }
      if ((_this$opts$shouldSkip = (_this$opts = this.opts).shouldSkip) != null && _this$opts$shouldSkip.call(_this$opts, this)) {
        return false;
      }
      var currentContext = this.context;
      if (this.shouldSkip || this.call("enter")) {
        this.debug("Skip...");
        return this.shouldStop;
      }
      restoreContext(this, currentContext);
      this.debug("Recursing into...");
      this.shouldStop = traverseNode(this.node, this.opts, this.scope, this.state, this, this.skipKeys);
      restoreContext(this, currentContext);
      this.call("exit");
      return this.shouldStop;
    }
    function skip() {
      this.shouldSkip = true;
    }
    function skipKey(key) {
      if (this.skipKeys == null) {
        this.skipKeys = {};
      }
      this.skipKeys[key] = true;
    }
    function stop() {
      this._traverseFlags |= SHOULD_SKIP | SHOULD_STOP;
    }
    function setScope() {
      var _this$opts2, _this$scope;
      if ((_this$opts2 = this.opts) != null && _this$opts2.noScope) return;
      var path = this.parentPath;
      if ((this.key === "key" || this.listKey === "decorators") && path.isMethod() || this.key === "discriminant" && path.isSwitchStatement()) {
        path = path.parentPath;
      }
      var target;
      while (path && !target) {
        var _path$opts;
        if ((_path$opts = path.opts) != null && _path$opts.noScope) return;
        target = path.scope;
        path = path.parentPath;
      }
      this.scope = this.getScope(target);
      (_this$scope = this.scope) == null ? void 0 : _this$scope.init();
    }
    function setContext(context) {
      if (this.skipKeys != null) {
        this.skipKeys = {};
      }
      this._traverseFlags = 0;
      if (context) {
        this.context = context;
        this.state = context.state;
        this.opts = context.opts;
      }
      this.setScope();
      return this;
    }
    function resync() {
      if (this.removed) return;
      this._resyncParent();
      this._resyncList();
      this._resyncKey();
    }
    function _resyncParent() {
      if (this.parentPath) {
        this.parent = this.parentPath.node;
      }
    }
    function _resyncKey() {
      if (!this.container) return;
      if (this.node === this.container[this.key]) {
        return;
      }
      if (Array.isArray(this.container)) {
        for (var i = 0; i < this.container.length; i++) {
          if (this.container[i] === this.node) {
            this.setKey(i);
            return;
          }
        }
      } else {
        for (var _i = 0, _Object$keys = Object.keys(this.container); _i < _Object$keys.length; _i++) {
          var key = _Object$keys[_i];
          if (this.container[key] === this.node) {
            this.setKey(key);
            return;
          }
        }
      }
      this.key = null;
    }
    function _resyncList() {
      if (!this.parent || !this.inList) return;
      var newContainer = this.parent[this.listKey];
      if (this.container === newContainer) return;
      this.container = newContainer || null;
    }
    function _resyncRemoved() {
      if (this.key == null || !this.container || this.container[this.key] !== this.node) {
        this._markRemoved();
      }
    }
    function popContext() {
      this.contexts.pop();
      if (this.contexts.length > 0) {
        this.setContext(this.contexts[this.contexts.length - 1]);
      } else {
        this.setContext(undefined);
      }
    }
    function pushContext(context) {
      this.contexts.push(context);
      this.setContext(context);
    }
    function setup(parentPath, container, listKey, key) {
      this.listKey = listKey;
      this.container = container;
      this.parentPath = parentPath || this.parentPath;
      this.setKey(key);
    }
    function setKey(key) {
      var _this$node;
      this.key = key;
      this.node = this.container[this.key];
      this.type = (_this$node = this.node) == null ? void 0 : _this$node.type;
    }
    function requeue(pathToQueue) {
      if (pathToQueue === void 0) {
        pathToQueue = this;
      }
      if (pathToQueue.removed) return;
      var contexts = this.contexts;
      for (var _iterator2 = _createForOfIteratorHelperLoose(contexts), _step2; !(_step2 = _iterator2()).done;) {
        var context = _step2.value;
        context.maybeQueue(pathToQueue);
      }
    }
    function _getQueueContexts() {
      var path = this;
      var contexts = this.contexts;
      while (!contexts.length) {
        path = path.parentPath;
        if (!path) break;
        contexts = path.contexts;
      }
      return contexts;
    }
  
    var NodePath_context = /*#__PURE__*/Object.freeze({
      __proto__: null,
      call: call,
      _call: _call,
      isDenylisted: isDenylisted,
      isBlacklisted: isDenylisted,
      visit: visit$1,
      skip: skip,
      skipKey: skipKey,
      stop: stop,
      setScope: setScope,
      setContext: setContext,
      resync: resync,
      _resyncParent: _resyncParent,
      _resyncKey: _resyncKey,
      _resyncList: _resyncList,
      _resyncRemoved: _resyncRemoved,
      popContext: popContext,
      pushContext: pushContext,
      setup: setup,
      setKey: setKey,
      requeue: requeue,
      _getQueueContexts: _getQueueContexts
    });
  
    var hooks = [function (self, parent) {
      var removeParent = self.key === "test" && (parent.isWhile() || parent.isSwitchCase()) || self.key === "declaration" && parent.isExportDeclaration() || self.key === "body" && parent.isLabeledStatement() || self.listKey === "declarations" && parent.isVariableDeclaration() && parent.node.declarations.length === 1 || self.key === "expression" && parent.isExpressionStatement();
      if (removeParent) {
        parent.remove();
        return true;
      }
    }, function (self, parent) {
      if (parent.isSequenceExpression() && parent.node.expressions.length === 1) {
        parent.replaceWith(parent.node.expressions[0]);
        return true;
      }
    }, function (self, parent) {
      if (parent.isBinary()) {
        if (self.key === "left") {
          parent.replaceWith(parent.node.right);
        } else {
          parent.replaceWith(parent.node.left);
        }
        return true;
      }
    }, function (self, parent) {
      if (parent.isIfStatement() && self.key === "consequent" || self.key === "body" && (parent.isLoop() || parent.isArrowFunctionExpression())) {
        self.replaceWith({
          type: "BlockStatement",
          body: []
        });
        return true;
      }
    }];
  
    function remove() {
      var _this$opts;
      this._assertUnremoved();
      this.resync();
      if (!((_this$opts = this.opts) != null && _this$opts.noScope)) {
        this._removeFromScope();
      }
      if (this._callRemovalHooks()) {
        this._markRemoved();
        return;
      }
      this.shareCommentsWithSiblings();
      this._remove();
      this._markRemoved();
    }
    function _removeFromScope() {
      var _this = this;
      var bindings = this.getBindingIdentifiers();
      Object.keys(bindings).forEach(function (name) {
        return _this.scope.removeBinding(name);
      });
    }
    function _callRemovalHooks() {
      for (var _iterator = _createForOfIteratorHelperLoose(hooks), _step; !(_step = _iterator()).done;) {
        var fn = _step.value;
        if (fn(this, this.parentPath)) return true;
      }
    }
    function _remove() {
      if (Array.isArray(this.container)) {
        this.container.splice(this.key, 1);
        this.updateSiblingKeys(this.key, -1);
      } else {
        this._replaceWith(null);
      }
    }
    function _markRemoved() {
      this._traverseFlags |= SHOULD_SKIP | REMOVED;
      if (this.parent) path$2.get(this.parent)["delete"](this.node);
      this.node = null;
    }
    function _assertUnremoved() {
      if (this.removed) {
        throw this.buildCodeFrameError("NodePath has been removed so is read-only.");
      }
    }
  
    var NodePath_removal = /*#__PURE__*/Object.freeze({
      __proto__: null,
      remove: remove,
      _removeFromScope: _removeFromScope,
      _callRemovalHooks: _callRemovalHooks,
      _remove: _remove,
      _markRemoved: _markRemoved,
      _assertUnremoved: _assertUnremoved
    });
  
    var react$2 = react$3;
    var cloneNode$d = cloneNode$j,
      jsxExpressionContainer = jsxExpressionContainer$1,
      variableDeclaration$5 = variableDeclaration$8,
      variableDeclarator$5 = variableDeclarator$8;
    var referenceVisitor$1 = {
      ReferencedIdentifier: function ReferencedIdentifier(path, state) {
        if (path.isJSXIdentifier() && react$2.isCompatTag(path.node.name) && !path.parentPath.isJSXMemberExpression()) {
          return;
        }
        if (path.node.name === "this") {
          var scope = path.scope;
          do {
            if (scope.path.isFunction() && !scope.path.isArrowFunctionExpression()) {
              break;
            }
          } while (scope = scope.parent);
          if (scope) state.breakOnScopePaths.push(scope.path);
        }
        var binding = path.scope.getBinding(path.node.name);
        if (!binding) return;
        for (var _iterator = _createForOfIteratorHelperLoose(binding.constantViolations), _step; !(_step = _iterator()).done;) {
          var violation = _step.value;
          if (violation.scope !== binding.path.scope) {
            state.mutableBinding = true;
            path.stop();
            return;
          }
        }
        if (binding !== state.scope.getBinding(path.node.name)) return;
        state.bindings[path.node.name] = binding;
      }
    };
    var PathHoister = function () {
      function PathHoister(path, scope) {
        this.breakOnScopePaths = void 0;
        this.bindings = void 0;
        this.mutableBinding = void 0;
        this.scopes = void 0;
        this.scope = void 0;
        this.path = void 0;
        this.attachAfter = void 0;
        this.breakOnScopePaths = [];
        this.bindings = {};
        this.mutableBinding = false;
        this.scopes = [];
        this.scope = scope;
        this.path = path;
        this.attachAfter = false;
      }
      var _proto = PathHoister.prototype;
      _proto.isCompatibleScope = function isCompatibleScope(scope) {
        for (var _i = 0, _Object$keys = Object.keys(this.bindings); _i < _Object$keys.length; _i++) {
          var key = _Object$keys[_i];
          var binding = this.bindings[key];
          if (!scope.bindingIdentifierEquals(key, binding.identifier)) {
            return false;
          }
        }
        return true;
      };
      _proto.getCompatibleScopes = function getCompatibleScopes() {
        var scope = this.path.scope;
        do {
          if (this.isCompatibleScope(scope)) {
            this.scopes.push(scope);
          } else {
            break;
          }
          if (this.breakOnScopePaths.indexOf(scope.path) >= 0) {
            break;
          }
        } while (scope = scope.parent);
      };
      _proto.getAttachmentPath = function getAttachmentPath() {
        var path = this._getAttachmentPath();
        if (!path) return;
        var targetScope = path.scope;
        if (targetScope.path === path) {
          targetScope = path.scope.parent;
        }
        if (targetScope.path.isProgram() || targetScope.path.isFunction()) {
          for (var _i2 = 0, _Object$keys2 = Object.keys(this.bindings); _i2 < _Object$keys2.length; _i2++) {
            var name = _Object$keys2[_i2];
            if (!targetScope.hasOwnBinding(name)) continue;
            var binding = this.bindings[name];
            if (binding.kind === "param" || binding.path.parentKey === "params") {
              continue;
            }
            var bindingParentPath = this.getAttachmentParentForPath(binding.path);
            if (bindingParentPath.key >= path.key) {
              this.attachAfter = true;
              path = binding.path;
              for (var _iterator2 = _createForOfIteratorHelperLoose(binding.constantViolations), _step2; !(_step2 = _iterator2()).done;) {
                var violationPath = _step2.value;
                if (this.getAttachmentParentForPath(violationPath).key > path.key) {
                  path = violationPath;
                }
              }
            }
          }
        }
        return path;
      };
      _proto._getAttachmentPath = function _getAttachmentPath() {
        var scopes = this.scopes;
        var scope = scopes.pop();
        if (!scope) return;
        if (scope.path.isFunction()) {
          if (this.hasOwnParamBindings(scope)) {
            if (this.scope === scope) return;
            var bodies = scope.path.get("body").get("body");
            for (var i = 0; i < bodies.length; i++) {
              if (bodies[i].node._blockHoist) continue;
              return bodies[i];
            }
          } else {
            return this.getNextScopeAttachmentParent();
          }
        } else if (scope.path.isProgram()) {
          return this.getNextScopeAttachmentParent();
        }
      };
      _proto.getNextScopeAttachmentParent = function getNextScopeAttachmentParent() {
        var scope = this.scopes.pop();
        if (scope) return this.getAttachmentParentForPath(scope.path);
      };
      _proto.getAttachmentParentForPath = function getAttachmentParentForPath(path) {
        do {
          if (!path.parentPath || Array.isArray(path.container) && path.isStatement()) {
            return path;
          }
        } while (path = path.parentPath);
      };
      _proto.hasOwnParamBindings = function hasOwnParamBindings(scope) {
        for (var _i3 = 0, _Object$keys3 = Object.keys(this.bindings); _i3 < _Object$keys3.length; _i3++) {
          var name = _Object$keys3[_i3];
          if (!scope.hasOwnBinding(name)) continue;
          var binding = this.bindings[name];
          if (binding.kind === "param" && binding.constant) return true;
        }
        return false;
      };
      _proto.run = function run() {
        this.path.traverse(referenceVisitor$1, this);
        if (this.mutableBinding) return;
        this.getCompatibleScopes();
        var attachTo = this.getAttachmentPath();
        if (!attachTo) return;
        if (attachTo.getFunctionParent() === this.path.getFunctionParent()) return;
        var uid = attachTo.scope.generateUidIdentifier("ref");
        var declarator = variableDeclarator$5(uid, this.path.node);
        var insertFn = this.attachAfter ? "insertAfter" : "insertBefore";
        var _attachTo$insertFn = attachTo[insertFn]([attachTo.isVariableDeclarator() ? declarator : variableDeclaration$5("var", [declarator])]),
          _attachTo$insertFn2 = _slicedToArray(_attachTo$insertFn, 1),
          attached = _attachTo$insertFn2[0];
        var parent = this.path.parentPath;
        if (parent.isJSXElement() && this.path.container === parent.node.children) {
          uid = jsxExpressionContainer(uid);
        }
        this.path.replaceWith(cloneNode$d(uid));
        return attachTo.isVariableDeclarator() ? attached.get("init") : attached.get("declarations.0.init");
      };
      return _createClass(PathHoister);
    }();
  
    var arrowFunctionExpression$1 = arrowFunctionExpression$4,
      assertExpression = assertExpression$1,
      assignmentExpression$9 = assignmentExpression$d,
      blockStatement$2 = blockStatement$6,
      callExpression$a = callExpression$e,
      cloneNode$c = cloneNode$j,
      expressionStatement$5 = expressionStatement$a,
      isAssignmentExpression = isAssignmentExpression$4,
      isCallExpression$2 = isCallExpression$8,
      isExportNamedDeclaration = isExportNamedDeclaration$3,
      isExpression$1 = isExpression$4,
      isIdentifier$8 = isIdentifier$j,
      isSequenceExpression = isSequenceExpression$2,
      isSuper$1 = isSuper$3,
      thisExpression$2 = thisExpression$4;
    function insertBefore(nodes_) {
      this._assertUnremoved();
      var nodes = this._verifyNodeList(nodes_);
      var parentPath = this.parentPath,
        parent = this.parent;
      if (parentPath.isExpressionStatement() || parentPath.isLabeledStatement() || isExportNamedDeclaration(parent) || parentPath.isExportDefaultDeclaration() && this.isDeclaration()) {
        return parentPath.insertBefore(nodes);
      } else if (this.isNodeType("Expression") && !this.isJSXElement() || parentPath.isForStatement() && this.key === "init") {
        if (this.node) nodes.push(this.node);
        return this.replaceExpressionWithStatements(nodes);
      } else if (Array.isArray(this.container)) {
        return this._containerInsertBefore(nodes);
      } else if (this.isStatementOrBlock()) {
        var node = this.node;
        var shouldInsertCurrentNode = node && (!this.isExpressionStatement() || node.expression != null);
        this.replaceWith(blockStatement$2(shouldInsertCurrentNode ? [node] : []));
        return this.unshiftContainer("body", nodes);
      } else {
        throw new Error("We don't know what to do with this node type. " + "We were previously a Statement but we can't fit in here?");
      }
    }
    function _containerInsert(from, nodes) {
      var _this$container;
      this.updateSiblingKeys(from, nodes.length);
      var paths = [];
      (_this$container = this.container).splice.apply(_this$container, [from, 0].concat(_toConsumableArray(nodes)));
      for (var i = 0; i < nodes.length; i++) {
        var to = from + i;
        var path = this.getSibling(to);
        paths.push(path);
        if (this.context && this.context.queue) {
          path.pushContext(this.context);
        }
      }
      var contexts = this._getQueueContexts();
      for (var _i = 0, _paths = paths; _i < _paths.length; _i++) {
        var _path = _paths[_i];
        _path.setScope();
        _path.debug("Inserted.");
        for (var _iterator = _createForOfIteratorHelperLoose(contexts), _step; !(_step = _iterator()).done;) {
          var context = _step.value;
          context.maybeQueue(_path, true);
        }
      }
      return paths;
    }
    function _containerInsertBefore(nodes) {
      return this._containerInsert(this.key, nodes);
    }
    function _containerInsertAfter(nodes) {
      return this._containerInsert(this.key + 1, nodes);
    }
    var last = function last(arr) {
      return arr[arr.length - 1];
    };
    function isHiddenInSequenceExpression(path) {
      return isSequenceExpression(path.parent) && (last(path.parent.expressions) !== path.node || isHiddenInSequenceExpression(path.parentPath));
    }
    function isAlmostConstantAssignment(node, scope) {
      if (!isAssignmentExpression(node) || !isIdentifier$8(node.left)) {
        return false;
      }
      var blockScope = scope.getBlockParent();
      return blockScope.hasOwnBinding(node.left.name) && blockScope.getOwnBinding(node.left.name).constantViolations.length <= 1;
    }
    function insertAfter(nodes_) {
      this._assertUnremoved();
      if (this.isSequenceExpression()) {
        return last(this.get("expressions")).insertAfter(nodes_);
      }
      var nodes = this._verifyNodeList(nodes_);
      var parentPath = this.parentPath,
        parent = this.parent;
      if (parentPath.isExpressionStatement() || parentPath.isLabeledStatement() || isExportNamedDeclaration(parent) || parentPath.isExportDefaultDeclaration() && this.isDeclaration()) {
        return parentPath.insertAfter(nodes.map(function (node) {
          return isExpression$1(node) ? expressionStatement$5(node) : node;
        }));
      } else if (this.isNodeType("Expression") && !this.isJSXElement() && !parentPath.isJSXElement() || parentPath.isForStatement() && this.key === "init") {
        if (this.node) {
          var node = this.node;
          var scope = this.scope;
          if (scope.path.isPattern()) {
            assertExpression(node);
            this.replaceWith(callExpression$a(arrowFunctionExpression$1([], node), []));
            this.get("callee.body").insertAfter(nodes);
            return [this];
          }
          if (isHiddenInSequenceExpression(this)) {
            nodes.unshift(node);
          } else if (isCallExpression$2(node) && isSuper$1(node.callee)) {
            nodes.unshift(node);
            nodes.push(thisExpression$2());
          } else if (isAlmostConstantAssignment(node, scope)) {
            nodes.unshift(node);
            nodes.push(cloneNode$c(node.left));
          } else if (scope.isPure(node, true)) {
            nodes.push(node);
          } else {
            if (parentPath.isMethod({
              computed: true,
              key: node
            })) {
              scope = scope.parent;
            }
            var temp = scope.generateDeclaredUidIdentifier();
            nodes.unshift(expressionStatement$5(assignmentExpression$9("=", cloneNode$c(temp), node)));
            nodes.push(expressionStatement$5(cloneNode$c(temp)));
          }
        }
        return this.replaceExpressionWithStatements(nodes);
      } else if (Array.isArray(this.container)) {
        return this._containerInsertAfter(nodes);
      } else if (this.isStatementOrBlock()) {
        var _node = this.node;
        var shouldInsertCurrentNode = _node && (!this.isExpressionStatement() || _node.expression != null);
        this.replaceWith(blockStatement$2(shouldInsertCurrentNode ? [_node] : []));
        return this.pushContainer("body", nodes);
      } else {
        throw new Error("We don't know what to do with this node type. " + "We were previously a Statement but we can't fit in here?");
      }
    }
    function updateSiblingKeys(fromIndex, incrementBy) {
      if (!this.parent) return;
      var paths = path$2.get(this.parent);
      for (var _iterator2 = _createForOfIteratorHelperLoose(paths), _step2; !(_step2 = _iterator2()).done;) {
        var _step2$value = _slicedToArray(_step2.value, 2),
          path = _step2$value[1];
        if (path.key >= fromIndex) {
          path.key += incrementBy;
        }
      }
    }
    function _verifyNodeList(nodes) {
      if (!nodes) {
        return [];
      }
      if (!Array.isArray(nodes)) {
        nodes = [nodes];
      }
      for (var i = 0; i < nodes.length; i++) {
        var node = nodes[i];
        var msg = void 0;
        if (!node) {
          msg = "has falsy node";
        } else if (typeof node !== "object") {
          msg = "contains a non-object node";
        } else if (!node.type) {
          msg = "without a type";
        } else if (node instanceof NodePath) {
          msg = "has a NodePath when it expected a raw object";
        }
        if (msg) {
          var type = Array.isArray(node) ? "array" : typeof node;
          throw new Error("Node list " + msg + " with the index of " + i + " and type of " + type);
        }
      }
      return nodes;
    }
    function unshiftContainer(listKey, nodes) {
      this._assertUnremoved();
      nodes = this._verifyNodeList(nodes);
      var path = NodePath.get({
        parentPath: this,
        parent: this.node,
        container: this.node[listKey],
        listKey: listKey,
        key: 0
      }).setContext(this.context);
      return path._containerInsertBefore(nodes);
    }
    function pushContainer(listKey, nodes) {
      this._assertUnremoved();
      var verifiedNodes = this._verifyNodeList(nodes);
      var container = this.node[listKey];
      var path = NodePath.get({
        parentPath: this,
        parent: this.node,
        container: container,
        listKey: listKey,
        key: container.length
      }).setContext(this.context);
      return path.replaceWithMultiple(verifiedNodes);
    }
    function hoist$3(scope) {
      if (scope === void 0) {
        scope = this.scope;
      }
      var hoister = new PathHoister(this, scope);
      return hoister.run();
    }
  
    var NodePath_modification = /*#__PURE__*/Object.freeze({
      __proto__: null,
      insertBefore: insertBefore,
      _containerInsert: _containerInsert,
      _containerInsertBefore: _containerInsertBefore,
      _containerInsertAfter: _containerInsertAfter,
      insertAfter: insertAfter,
      updateSiblingKeys: updateSiblingKeys,
      _verifyNodeList: _verifyNodeList,
      unshiftContainer: unshiftContainer,
      pushContainer: pushContainer,
      hoist: hoist$3
    });
  
    var _getBindingIdentifiers = getBindingIdentifiers$2,
      _getOuterBindingIdentifiers = getOuterBindingIdentifiers$2,
      isDeclaration = isDeclaration$1,
      numericLiteral$5 = numericLiteral$8,
      unaryExpression$4 = unaryExpression$7;
    var NORMAL_COMPLETION = 0;
    var BREAK_COMPLETION = 1;
    function NormalCompletion(path) {
      return {
        type: NORMAL_COMPLETION,
        path: path
      };
    }
    function BreakCompletion(path) {
      return {
        type: BREAK_COMPLETION,
        path: path
      };
    }
    function getOpposite() {
      if (this.key === "left") {
        return this.getSibling("right");
      } else if (this.key === "right") {
        return this.getSibling("left");
      }
      return null;
    }
    function addCompletionRecords(path, records, context) {
      if (path) {
        records.push.apply(records, _toConsumableArray(_getCompletionRecords(path, context)));
      }
      return records;
    }
    function completionRecordForSwitch(cases, records, context) {
      var lastNormalCompletions = [];
      for (var i = 0; i < cases.length; i++) {
        var casePath = cases[i];
        var caseCompletions = _getCompletionRecords(casePath, context);
        var normalCompletions = [];
        var breakCompletions = [];
        for (var _i = 0, _caseCompletions = caseCompletions; _i < _caseCompletions.length; _i++) {
          var c = _caseCompletions[_i];
          if (c.type === NORMAL_COMPLETION) {
            normalCompletions.push(c);
          }
          if (c.type === BREAK_COMPLETION) {
            breakCompletions.push(c);
          }
        }
        if (normalCompletions.length) {
          lastNormalCompletions = normalCompletions;
        }
        records.push.apply(records, breakCompletions);
      }
      records.push.apply(records, _toConsumableArray(lastNormalCompletions));
      return records;
    }
    function normalCompletionToBreak(completions) {
      completions.forEach(function (c) {
        c.type = BREAK_COMPLETION;
      });
    }
    function replaceBreakStatementInBreakCompletion(completions, reachable) {
      completions.forEach(function (c) {
        if (c.path.isBreakStatement({
          label: null
        })) {
          if (reachable) {
            c.path.replaceWith(unaryExpression$4("void", numericLiteral$5(0)));
          } else {
            c.path.remove();
          }
        }
      });
    }
    function getStatementListCompletion(paths, context) {
      var completions = [];
      if (context.canHaveBreak) {
        var lastNormalCompletions = [];
        for (var i = 0; i < paths.length; i++) {
          var path = paths[i];
          var newContext = Object.assign({}, context, {
            inCaseClause: false
          });
          if (path.isBlockStatement() && (context.inCaseClause || context.shouldPopulateBreak)) {
            newContext.shouldPopulateBreak = true;
          } else {
            newContext.shouldPopulateBreak = false;
          }
          var statementCompletions = _getCompletionRecords(path, newContext);
          if (statementCompletions.length > 0 && statementCompletions.every(function (c) {
            return c.type === BREAK_COMPLETION;
          })) {
            if (lastNormalCompletions.length > 0 && statementCompletions.every(function (c) {
              return c.path.isBreakStatement({
                label: null
              });
            })) {
              normalCompletionToBreak(lastNormalCompletions);
              completions.push.apply(completions, _toConsumableArray(lastNormalCompletions));
              if (lastNormalCompletions.some(function (c) {
                return c.path.isDeclaration();
              })) {
                completions.push.apply(completions, statementCompletions);
                replaceBreakStatementInBreakCompletion(statementCompletions, true);
              }
              replaceBreakStatementInBreakCompletion(statementCompletions, false);
            } else {
              completions.push.apply(completions, statementCompletions);
              if (!context.shouldPopulateBreak) {
                replaceBreakStatementInBreakCompletion(statementCompletions, true);
              }
            }
            break;
          }
          if (i === paths.length - 1) {
            completions.push.apply(completions, statementCompletions);
          } else {
            lastNormalCompletions = [];
            for (var _i2 = 0; _i2 < statementCompletions.length; _i2++) {
              var c = statementCompletions[_i2];
              if (c.type === BREAK_COMPLETION) {
                completions.push(c);
              }
              if (c.type === NORMAL_COMPLETION) {
                lastNormalCompletions.push(c);
              }
            }
          }
        }
      } else if (paths.length) {
        for (var _i3 = paths.length - 1; _i3 >= 0; _i3--) {
          var pathCompletions = _getCompletionRecords(paths[_i3], context);
          if (pathCompletions.length > 1 || pathCompletions.length === 1 && !pathCompletions[0].path.isVariableDeclaration()) {
            completions.push.apply(completions, pathCompletions);
            break;
          }
        }
      }
      return completions;
    }
    function _getCompletionRecords(path, context) {
      var records = [];
      if (path.isIfStatement()) {
        records = addCompletionRecords(path.get("consequent"), records, context);
        records = addCompletionRecords(path.get("alternate"), records, context);
      } else if (path.isDoExpression() || path.isFor() || path.isWhile() || path.isLabeledStatement()) {
        return addCompletionRecords(path.get("body"), records, context);
      } else if (path.isProgram() || path.isBlockStatement()) {
        return getStatementListCompletion(path.get("body"), context);
      } else if (path.isFunction()) {
        return _getCompletionRecords(path.get("body"), context);
      } else if (path.isTryStatement()) {
        records = addCompletionRecords(path.get("block"), records, context);
        records = addCompletionRecords(path.get("handler"), records, context);
      } else if (path.isCatchClause()) {
        return addCompletionRecords(path.get("body"), records, context);
      } else if (path.isSwitchStatement()) {
        return completionRecordForSwitch(path.get("cases"), records, context);
      } else if (path.isSwitchCase()) {
        return getStatementListCompletion(path.get("consequent"), {
          canHaveBreak: true,
          shouldPopulateBreak: false,
          inCaseClause: true
        });
      } else if (path.isBreakStatement()) {
        records.push(BreakCompletion(path));
      } else {
        records.push(NormalCompletion(path));
      }
      return records;
    }
    function getCompletionRecords() {
      var records = _getCompletionRecords(this, {
        canHaveBreak: false,
        shouldPopulateBreak: false,
        inCaseClause: false
      });
      return records.map(function (r) {
        return r.path;
      });
    }
    function getSibling(key) {
      return NodePath.get({
        parentPath: this.parentPath,
        parent: this.parent,
        container: this.container,
        listKey: this.listKey,
        key: key
      }).setContext(this.context);
    }
    function getPrevSibling() {
      return this.getSibling(this.key - 1);
    }
    function getNextSibling() {
      return this.getSibling(this.key + 1);
    }
    function getAllNextSiblings() {
      var _key = this.key;
      var sibling = this.getSibling(++_key);
      var siblings = [];
      while (sibling.node) {
        siblings.push(sibling);
        sibling = this.getSibling(++_key);
      }
      return siblings;
    }
    function getAllPrevSiblings() {
      var _key = this.key;
      var sibling = this.getSibling(--_key);
      var siblings = [];
      while (sibling.node) {
        siblings.push(sibling);
        sibling = this.getSibling(--_key);
      }
      return siblings;
    }
    function get$2(key, context) {
      if (context === void 0) {
        context = true;
      }
      if (context === true) context = this.context;
      var parts = key.split(".");
      if (parts.length === 1) {
        return this._getKey(key, context);
      } else {
        return this._getPattern(parts, context);
      }
    }
    function _getKey(key, context) {
      var _this = this;
      var node = this.node;
      var container = node[key];
      if (Array.isArray(container)) {
        return container.map(function (_, i) {
          return NodePath.get({
            listKey: key,
            parentPath: _this,
            parent: node,
            container: container,
            key: i
          }).setContext(context);
        });
      } else {
        return NodePath.get({
          parentPath: this,
          parent: node,
          container: node,
          key: key
        }).setContext(context);
      }
    }
    function _getPattern(parts, context) {
      var path = this;
      for (var _iterator = _createForOfIteratorHelperLoose(parts), _step; !(_step = _iterator()).done;) {
        var part = _step.value;
        if (part === ".") {
          path = path.parentPath;
        } else {
          if (Array.isArray(path)) {
            path = path[part];
          } else {
            path = path.get(part, context);
          }
        }
      }
      return path;
    }
    function getBindingIdentifiers(duplicates) {
      return _getBindingIdentifiers(this.node, duplicates);
    }
    function getOuterBindingIdentifiers$1(duplicates) {
      return _getOuterBindingIdentifiers(this.node, duplicates);
    }
    function getBindingIdentifierPaths(duplicates, outerOnly) {
      if (duplicates === void 0) {
        duplicates = false;
      }
      if (outerOnly === void 0) {
        outerOnly = false;
      }
      var path = this;
      var search = [path];
      var ids = Object.create(null);
      while (search.length) {
        var id = search.shift();
        if (!id) continue;
        if (!id.node) continue;
        var keys = _getBindingIdentifiers.keys[id.node.type];
        if (id.isIdentifier()) {
          if (duplicates) {
            var _ids = ids[id.node.name] = ids[id.node.name] || [];
            _ids.push(id);
          } else {
            ids[id.node.name] = id;
          }
          continue;
        }
        if (id.isExportDeclaration()) {
          var declaration = id.get("declaration");
          if (isDeclaration(declaration)) {
            search.push(declaration);
          }
          continue;
        }
        if (outerOnly) {
          if (id.isFunctionDeclaration()) {
            search.push(id.get("id"));
            continue;
          }
          if (id.isFunctionExpression()) {
            continue;
          }
        }
        if (keys) {
          for (var i = 0; i < keys.length; i++) {
            var _key2 = keys[i];
            var child = id.get(_key2);
            if (Array.isArray(child)) {
              search.push.apply(search, _toConsumableArray(child));
            } else if (child.node) {
              search.push(child);
            }
          }
        }
      }
      return ids;
    }
    function getOuterBindingIdentifierPaths(duplicates) {
      if (duplicates === void 0) {
        duplicates = false;
      }
      return this.getBindingIdentifierPaths(duplicates, true);
    }
  
    var NodePath_family = /*#__PURE__*/Object.freeze({
      __proto__: null,
      getOpposite: getOpposite,
      getCompletionRecords: getCompletionRecords,
      getSibling: getSibling,
      getPrevSibling: getPrevSibling,
      getNextSibling: getNextSibling,
      getAllNextSiblings: getAllNextSiblings,
      getAllPrevSiblings: getAllPrevSiblings,
      get: get$2,
      _getKey: _getKey,
      _getPattern: _getPattern,
      getBindingIdentifiers: getBindingIdentifiers,
      getOuterBindingIdentifiers: getOuterBindingIdentifiers$1,
      getBindingIdentifierPaths: getBindingIdentifierPaths,
      getOuterBindingIdentifierPaths: getOuterBindingIdentifierPaths
    });
  
    var _addComment = addComment$2,
      _addComments = addComments$1;
    function shareCommentsWithSiblings() {
      if (typeof this.key === "string") return;
      var node = this.node;
      if (!node) return;
      var trailing = node.trailingComments;
      var leading = node.leadingComments;
      if (!trailing && !leading) return;
      var prev = this.getSibling(this.key - 1);
      var next = this.getSibling(this.key + 1);
      var hasPrev = Boolean(prev.node);
      var hasNext = Boolean(next.node);
      if (hasPrev) {
        if (leading) {
          prev.addComments("trailing", removeIfExisting(leading, prev.node.trailingComments));
        }
        if (trailing && !hasNext) prev.addComments("trailing", trailing);
      }
      if (hasNext) {
        if (trailing) {
          next.addComments("leading", removeIfExisting(trailing, next.node.leadingComments));
        }
        if (leading && !hasPrev) next.addComments("leading", leading);
      }
    }
    function removeIfExisting(list, toRemove) {
      if (!toRemove) return list;
      var lastFoundIndex = -1;
      return list.filter(function (el) {
        var i = toRemove.indexOf(el, lastFoundIndex);
        if (i === -1) return true;
        lastFoundIndex = i;
      });
    }
    function addComment$1(type, content, line) {
      _addComment(this.node, type, content, line);
    }
    function addComments(type, comments) {
      _addComments(this.node, type, comments);
    }
  
    var NodePath_comments = /*#__PURE__*/Object.freeze({
      __proto__: null,
      shareCommentsWithSiblings: shareCommentsWithSiblings,
      addComment: addComment$1,
      addComments: addComments
    });
  
    var isBinding = isBinding$1,
      nodeIsBlockScoped = isBlockScoped$2,
      isExportDeclaration = isExportDeclaration$3,
      nodeIsExpression = isExpression$4,
      nodeIsFlow = isFlow$1,
      isForStatement = isForStatement$3,
      isForXStatement = isForXStatement$1,
      isIdentifier$7 = isIdentifier$j,
      isImportDeclaration = isImportDeclaration$2,
      isImportSpecifier = isImportSpecifier$1,
      isJSXIdentifier$1 = isJSXIdentifier$3,
      isJSXMemberExpression$1 = isJSXMemberExpression$2,
      isMemberExpression$3 = isMemberExpression$8,
      nodeIsRestElement = isRestElement$3,
      nodeIsReferenced = isReferenced$2,
      nodeIsScope = isScope$1,
      nodeIsStatement = isStatement$8,
      nodeIsVar = isVar$1,
      isVariableDeclaration$1 = isVariableDeclaration$3,
      react$1 = react$3,
      isForOfStatement = isForOfStatement$2;
    var isCompatTag = react$1.isCompatTag;
    function isReferencedIdentifier(opts) {
      var node = this.node,
        parent = this.parent;
      if (!isIdentifier$7(node, opts) && !isJSXMemberExpression$1(parent, opts)) {
        if (isJSXIdentifier$1(node, opts)) {
          if (isCompatTag(node.name)) return false;
        } else {
          return false;
        }
      }
      return nodeIsReferenced(node, parent, this.parentPath.parent);
    }
    function isReferencedMemberExpression() {
      var node = this.node,
        parent = this.parent;
      return isMemberExpression$3(node) && nodeIsReferenced(node, parent);
    }
    function isBindingIdentifier() {
      var node = this.node,
        parent = this.parent;
      var grandparent = this.parentPath.parent;
      return isIdentifier$7(node) && isBinding(node, parent, grandparent);
    }
    function isStatement() {
      var node = this.node,
        parent = this.parent;
      if (nodeIsStatement(node)) {
        if (isVariableDeclaration$1(node)) {
          if (isForXStatement(parent, {
            left: node
          })) return false;
          if (isForStatement(parent, {
            init: node
          })) return false;
        }
        return true;
      } else {
        return false;
      }
    }
    function isExpression() {
      if (this.isIdentifier()) {
        return this.isReferencedIdentifier();
      } else {
        return nodeIsExpression(this.node);
      }
    }
    function isScope() {
      return nodeIsScope(this.node, this.parent);
    }
    function isReferenced$1() {
      return nodeIsReferenced(this.node, this.parent);
    }
    function isBlockScoped$1() {
      return nodeIsBlockScoped(this.node);
    }
    function isVar() {
      return nodeIsVar(this.node);
    }
    function isUser() {
      return this.node && !!this.node.loc;
    }
    function isGenerated() {
      return !this.isUser();
    }
    function isPure(constantsOnly) {
      return this.scope.isPure(this.node, constantsOnly);
    }
    function isFlow() {
      var node = this.node;
      if (nodeIsFlow(node)) {
        return true;
      } else if (isImportDeclaration(node)) {
        return node.importKind === "type" || node.importKind === "typeof";
      } else if (isExportDeclaration(node)) {
        return node.exportKind === "type";
      } else if (isImportSpecifier(node)) {
        return node.importKind === "type" || node.importKind === "typeof";
      } else {
        return false;
      }
    }
    function isRestProperty() {
      return nodeIsRestElement(this.node) && this.parentPath && this.parentPath.isObjectPattern();
    }
    function isSpreadProperty() {
      return nodeIsRestElement(this.node) && this.parentPath && this.parentPath.isObjectExpression();
    }
    function isForAwaitStatement() {
      return isForOfStatement(this.node, {
        "await": true
      });
    }
    function isExistentialTypeParam() {
      throw new Error("`path.isExistentialTypeParam` has been renamed to `path.isExistsTypeAnnotation()` in Babel 7.");
    }
    function isNumericLiteralTypeAnnotation() {
      throw new Error("`path.isNumericLiteralTypeAnnotation()` has been renamed to `path.isNumberLiteralTypeAnnotation()` in Babel 7.");
    }
  
    var NodePath_virtual_types_validator = /*#__PURE__*/Object.freeze({
      __proto__: null,
      isReferencedIdentifier: isReferencedIdentifier,
      isReferencedMemberExpression: isReferencedMemberExpression,
      isBindingIdentifier: isBindingIdentifier,
      isStatement: isStatement,
      isExpression: isExpression,
      isScope: isScope,
      isReferenced: isReferenced$1,
      isBlockScoped: isBlockScoped$1,
      isVar: isVar,
      isUser: isUser,
      isGenerated: isGenerated,
      isPure: isPure,
      isFlow: isFlow,
      isRestProperty: isRestProperty,
      isSpreadProperty: isSpreadProperty,
      isForAwaitStatement: isForAwaitStatement,
      isExistentialTypeParam: isExistentialTypeParam,
      isNumericLiteralTypeAnnotation: isNumericLiteralTypeAnnotation
    });
  
    var validate$1 = validate$5;
    var _debug = buildDebug("babel");
    var REMOVED = 1 << 0;
    var SHOULD_STOP = 1 << 1;
    var SHOULD_SKIP = 1 << 2;
    var NodePath = function () {
      function NodePath(hub, parent) {
        this.contexts = [];
        this.state = null;
        this.opts = null;
        this._traverseFlags = 0;
        this.skipKeys = null;
        this.parentPath = null;
        this.container = null;
        this.listKey = null;
        this.key = null;
        this.node = null;
        this.type = null;
        this.parent = parent;
        this.hub = hub;
        this.data = null;
        this.context = null;
        this.scope = null;
      }
      NodePath.get = function get(_ref) {
        var hub = _ref.hub,
          parentPath = _ref.parentPath,
          parent = _ref.parent,
          container = _ref.container,
          listKey = _ref.listKey,
          key = _ref.key;
        if (!hub && parentPath) {
          hub = parentPath.hub;
        }
        if (!parent) {
          throw new Error("To get a node path the parent needs to exist");
        }
        var targetNode = container[key];
        var paths = path$2.get(parent);
        if (!paths) {
          paths = new Map();
          path$2.set(parent, paths);
        }
        var path = paths.get(targetNode);
        if (!path) {
          path = new NodePath(hub, parent);
          if (targetNode) paths.set(targetNode, path);
        }
        path.setup(parentPath, container, listKey, key);
        return path;
      };
      var _proto = NodePath.prototype;
      _proto.getScope = function getScope(scope) {
        return this.isScope() ? new Scope$1(this) : scope;
      };
      _proto.setData = function setData(key, val) {
        if (this.data == null) {
          this.data = Object.create(null);
        }
        return this.data[key] = val;
      };
      _proto.getData = function getData(key, def) {
        if (this.data == null) {
          this.data = Object.create(null);
        }
        var val = this.data[key];
        if (val === undefined && def !== undefined) val = this.data[key] = def;
        return val;
      };
      _proto.hasNode = function hasNode() {
        return this.node != null;
      };
      _proto.buildCodeFrameError = function buildCodeFrameError(msg, Error) {
        if (Error === void 0) {
          Error = SyntaxError;
        }
        return this.hub.buildError(this.node, msg, Error);
      };
      _proto.traverse = function traverse$1(visitor, state) {
        traverse(this.node, visitor, this.scope, state, this);
      };
      _proto.set = function set(key, node) {
        validate$1(this.node, key, node);
        this.node[key] = node;
      };
      _proto.getPathLocation = function getPathLocation() {
        var parts = [];
        var path = this;
        do {
          var key = path.key;
          if (path.inList) key = path.listKey + "[" + key + "]";
          parts.unshift(key);
        } while (path = path.parentPath);
        return parts.join(".");
      };
      _proto.debug = function debug(message) {
        if (!_debug.enabled) return;
        _debug(this.getPathLocation() + " " + this.type + ": " + message);
      };
      _proto.toString = function toString() {
        return generate$1(this.node).code;
      };
      _createClass(NodePath, [{
        key: "inList",
        get: function get() {
          return !!this.listKey;
        },
        set: function set(inList) {
          if (!inList) {
            this.listKey = null;
          }
        }
      }, {
        key: "parentKey",
        get: function get() {
          return this.listKey || this.key;
        }
      }, {
        key: "shouldSkip",
        get: function get() {
          return !!(this._traverseFlags & SHOULD_SKIP);
        },
        set: function set(v) {
          if (v) {
            this._traverseFlags |= SHOULD_SKIP;
          } else {
            this._traverseFlags &= ~SHOULD_SKIP;
          }
        }
      }, {
        key: "shouldStop",
        get: function get() {
          return !!(this._traverseFlags & SHOULD_STOP);
        },
        set: function set(v) {
          if (v) {
            this._traverseFlags |= SHOULD_STOP;
          } else {
            this._traverseFlags &= ~SHOULD_STOP;
          }
        }
      }, {
        key: "removed",
        get: function get() {
          return !!(this._traverseFlags & REMOVED);
        },
        set: function set(v) {
          if (v) {
            this._traverseFlags |= REMOVED;
          } else {
            this._traverseFlags &= ~REMOVED;
          }
        }
      }]);
      return NodePath;
    }();
    Object.assign(NodePath.prototype, NodePath_ancestry, NodePath_inference, NodePath_replacement, NodePath_evaluation, NodePath_conversion, NodePath_introspection, NodePath_context, NodePath_removal, NodePath_modification, NodePath_family, NodePath_comments);
    {
      NodePath.prototype._guessExecutionStatusRelativeToDifferentFunctions = _guessExecutionStatusRelativeTo;
    }
    var _loop = function _loop() {
      var type = _step.value;
      var typeKey = "is" + type;
      var fn = t$8[typeKey];
      NodePath.prototype[typeKey] = function (opts) {
        return fn(this.node, opts);
      };
      NodePath.prototype["assert" + type] = function (opts) {
        if (!fn(this.node, opts)) {
          throw new TypeError("Expected node path of type " + type);
        }
      };
    };
    for (var _iterator = _createForOfIteratorHelperLoose(TYPES$1), _step; !(_step = _iterator()).done;) {
      _loop();
    }
    Object.assign(NodePath.prototype, NodePath_virtual_types_validator);
    for (var _i = 0, _arr = Object.keys(virtualTypes); _i < _arr.length; _i++) {
      var type = _arr[_i];
      if (type[0] === "_") continue;
      if (!TYPES$1.includes(type)) TYPES$1.push(type);
    }
  
    var VISITOR_KEYS$2 = VISITOR_KEYS$5;
    var TraversalContext = function () {
      function TraversalContext(scope, opts, state, parentPath) {
        this.queue = null;
        this.priorityQueue = null;
        this.parentPath = parentPath;
        this.scope = scope;
        this.state = state;
        this.opts = opts;
      }
      var _proto = TraversalContext.prototype;
      _proto.shouldVisit = function shouldVisit(node) {
        var opts = this.opts;
        if (opts.enter || opts.exit) return true;
        if (opts[node.type]) return true;
        var keys = VISITOR_KEYS$2[node.type];
        if (!(keys != null && keys.length)) return false;
        for (var _iterator = _createForOfIteratorHelperLoose(keys), _step; !(_step = _iterator()).done;) {
          var key = _step.value;
          if (node[key]) {
            return true;
          }
        }
        return false;
      };
      _proto.create = function create(node, container, key, listKey) {
        return NodePath.get({
          parentPath: this.parentPath,
          parent: node,
          container: container,
          key: key,
          listKey: listKey
        });
      };
      _proto.maybeQueue = function maybeQueue(path, notPriority) {
        if (this.queue) {
          if (notPriority) {
            this.queue.push(path);
          } else {
            this.priorityQueue.push(path);
          }
        }
      };
      _proto.visitMultiple = function visitMultiple(container, parent, listKey) {
        if (container.length === 0) return false;
        var queue = [];
        for (var key = 0; key < container.length; key++) {
          var node = container[key];
          if (node && this.shouldVisit(node)) {
            queue.push(this.create(parent, container, key, listKey));
          }
        }
        return this.visitQueue(queue);
      };
      _proto.visitSingle = function visitSingle(node, key) {
        if (this.shouldVisit(node[key])) {
          return this.visitQueue([this.create(node, node, key)]);
        } else {
          return false;
        }
      };
      _proto.visitQueue = function visitQueue(queue) {
        this.queue = queue;
        this.priorityQueue = [];
        var visited = new WeakSet();
        var stop = false;
        for (var _iterator2 = _createForOfIteratorHelperLoose(queue), _step2; !(_step2 = _iterator2()).done;) {
          var path = _step2.value;
          path.resync();
          if (path.contexts.length === 0 || path.contexts[path.contexts.length - 1] !== this) {
            path.pushContext(this);
          }
          if (path.key === null) continue;
          var node = path.node;
          if (visited.has(node)) continue;
          if (node) visited.add(node);
          if (path.visit()) {
            stop = true;
            break;
          }
          if (this.priorityQueue.length) {
            stop = this.visitQueue(this.priorityQueue);
            this.priorityQueue = [];
            this.queue = queue;
            if (stop) break;
          }
        }
        for (var _iterator3 = _createForOfIteratorHelperLoose(queue), _step3; !(_step3 = _iterator3()).done;) {
          var _path = _step3.value;
          _path.popContext();
        }
        this.queue = null;
        return stop;
      };
      _proto.visit = function visit(node, key) {
        var nodes = node[key];
        if (!nodes) return false;
        if (Array.isArray(nodes)) {
          return this.visitMultiple(nodes, node, key);
        } else {
          return this.visitSingle(node, key);
        }
      };
      return _createClass(TraversalContext);
    }();
  
    var VISITOR_KEYS$1 = VISITOR_KEYS$5;
    function traverseNode(node, opts, scope, state, path, skipKeys) {
      var keys = VISITOR_KEYS$1[node.type];
      if (!keys) return false;
      var context = new TraversalContext(scope, opts, state, path);
      for (var _iterator = _createForOfIteratorHelperLoose(keys), _step; !(_step = _iterator()).done;) {
        var key = _step.value;
        if (skipKeys && skipKeys[key]) continue;
        if (context.visit(node, key)) {
          return true;
        }
      }
      return false;
    }
  
    (function () {
      function Hub() {}
      var _proto = Hub.prototype;
      _proto.getCode = function getCode() {};
      _proto.getScope = function getScope() {};
      _proto.addHelper = function addHelper() {
        throw new Error("Helpers are not supported by the default hub.");
      };
      _proto.buildError = function buildError(node, msg, Error) {
        if (Error === void 0) {
          Error = TypeError;
        }
        return new Error(msg);
      };
      return _createClass(Hub);
    })();
  
    var VISITOR_KEYS = VISITOR_KEYS$5,
      removeProperties = removeProperties$1,
      traverseFast$1 = traverseFast$2;
    function traverse(parent, opts, scope, state, parentPath) {
      if (opts === void 0) {
        opts = {};
      }
      if (!parent) return;
      if (!opts.noScope && !scope) {
        if (parent.type !== "Program" && parent.type !== "File") {
          throw new Error("You must pass a scope and parentPath unless traversing a Program/File. " + ("Instead of that you tried to traverse a " + parent.type + " node without ") + "passing scope and parentPath.");
        }
      }
      if (!VISITOR_KEYS[parent.type]) {
        return;
      }
      explode$1(opts);
      traverseNode(parent, opts, scope, state, parentPath);
    }
    traverse.visitors = visitors;
    traverse.verify = verify;
    traverse.explode = explode$1;
    traverse.cheap = function (node, enter) {
      traverseFast$1(node, enter);
      return;
    };
    traverse.node = function (node, opts, scope, state, path, skipKeys) {
      traverseNode(node, opts, scope, state, path, skipKeys);
    };
    traverse.clearNode = function (node, opts) {
      removeProperties(node, opts);
      path$2["delete"](node);
    };
    traverse.removeProperties = function (tree, opts) {
      traverseFast$1(tree, traverse.clearNode, opts);
      return tree;
    };
    function hasDenylistedType(path, state) {
      if (path.node.type === state.type) {
        state.has = true;
        path.stop();
      }
    }
    traverse.hasType = function (tree, type, denylistTypes) {
      if (denylistTypes != null && denylistTypes.includes(tree.type)) return false;
      if (tree.type === type) return true;
      var state = {
        has: false,
        type: type
      };
      traverse(tree, {
        noScope: true,
        denylist: denylistTypes,
        enter: hasDenylistedType
      }, null, state);
      return state.has;
    };
    traverse.cache = cache$1;
  
    function helper$3(minVersion, source) {
      return Object.freeze({
        minVersion: minVersion,
        ast: function ast() {
          return template$2.program.ast(source, {
            preserveComments: true
          });
        }
      });
    }
    var generated = Object.freeze({
      AsyncGenerator: helper$3("7.0.0-beta.0", 'import OverloadYield from"OverloadYield";export default function AsyncGenerator(gen){var front,back;function resume(key,arg){try{var result=gen[key](arg),value=result.value,overloaded=value instanceof OverloadYield;Promise.resolve(overloaded?value.v:value).then((function(arg){if(overloaded){var nextKey="return"===key?"return":"next";if(!value.k||arg.done)return resume(nextKey,arg);arg=gen[nextKey](arg).value}settle(result.done?"return":"normal",arg)}),(function(err){resume("throw",err)}))}catch(err){settle("throw",err)}}function settle(type,value){switch(type){case"return":front.resolve({value:value,done:!0});break;case"throw":front.reject(value);break;default:front.resolve({value:value,done:!1})}(front=front.next)?resume(front.key,front.arg):back=null}this._invoke=function(key,arg){return new Promise((function(resolve,reject){var request={key:key,arg:arg,resolve:resolve,reject:reject,next:null};back?back=back.next=request:(front=back=request,resume(key,arg))}))},"function"!=typeof gen.return&&(this.return=void 0)}AsyncGenerator.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},AsyncGenerator.prototype.next=function(arg){return this._invoke("next",arg)},AsyncGenerator.prototype.throw=function(arg){return this._invoke("throw",arg)},AsyncGenerator.prototype.return=function(arg){return this._invoke("return",arg)};'),
      OverloadYield: helper$3("7.18.14", "export default function _OverloadYield(value,kind){this.v=value,this.k=kind}"),
      applyDecs: helper$3("7.17.8", 'function old_createMetadataMethodsForProperty(metadataMap,kind,property,decoratorFinishedRef){return{getMetadata:function(key){old_assertNotFinished(decoratorFinishedRef,"getMetadata"),old_assertMetadataKey(key);var metadataForKey=metadataMap[key];if(void 0!==metadataForKey)if(1===kind){var pub=metadataForKey.public;if(void 0!==pub)return pub[property]}else if(2===kind){var priv=metadataForKey.private;if(void 0!==priv)return priv.get(property)}else if(Object.hasOwnProperty.call(metadataForKey,"constructor"))return metadataForKey.constructor},setMetadata:function(key,value){old_assertNotFinished(decoratorFinishedRef,"setMetadata"),old_assertMetadataKey(key);var metadataForKey=metadataMap[key];if(void 0===metadataForKey&&(metadataForKey=metadataMap[key]={}),1===kind){var pub=metadataForKey.public;void 0===pub&&(pub=metadataForKey.public={}),pub[property]=value}else if(2===kind){var priv=metadataForKey.priv;void 0===priv&&(priv=metadataForKey.private=new Map),priv.set(property,value)}else metadataForKey.constructor=value}}}function old_convertMetadataMapToFinal(obj,metadataMap){var parentMetadataMap=obj[Symbol.metadata||Symbol.for("Symbol.metadata")],metadataKeys=Object.getOwnPropertySymbols(metadataMap);if(0!==metadataKeys.length){for(var i=0;i<metadataKeys.length;i++){var key=metadataKeys[i],metaForKey=metadataMap[key],parentMetaForKey=parentMetadataMap?parentMetadataMap[key]:null,pub=metaForKey.public,parentPub=parentMetaForKey?parentMetaForKey.public:null;pub&&parentPub&&Object.setPrototypeOf(pub,parentPub);var priv=metaForKey.private;if(priv){var privArr=Array.from(priv.values()),parentPriv=parentMetaForKey?parentMetaForKey.private:null;parentPriv&&(privArr=privArr.concat(parentPriv)),metaForKey.private=privArr}parentMetaForKey&&Object.setPrototypeOf(metaForKey,parentMetaForKey)}parentMetadataMap&&Object.setPrototypeOf(metadataMap,parentMetadataMap),obj[Symbol.metadata||Symbol.for("Symbol.metadata")]=metadataMap}}function old_createAddInitializerMethod(initializers,decoratorFinishedRef){return function(initializer){old_assertNotFinished(decoratorFinishedRef,"addInitializer"),old_assertCallable(initializer,"An initializer"),initializers.push(initializer)}}function old_memberDec(dec,name,desc,metadataMap,initializers,kind,isStatic,isPrivate,value){var kindStr;switch(kind){case 1:kindStr="accessor";break;case 2:kindStr="method";break;case 3:kindStr="getter";break;case 4:kindStr="setter";break;default:kindStr="field"}var metadataKind,metadataName,ctx={kind:kindStr,name:isPrivate?"#"+name:name,isStatic:isStatic,isPrivate:isPrivate},decoratorFinishedRef={v:!1};if(0!==kind&&(ctx.addInitializer=old_createAddInitializerMethod(initializers,decoratorFinishedRef)),isPrivate){metadataKind=2,metadataName=Symbol(name);var access={};0===kind?(access.get=desc.get,access.set=desc.set):2===kind?access.get=function(){return desc.value}:(1!==kind&&3!==kind||(access.get=function(){return desc.get.call(this)}),1!==kind&&4!==kind||(access.set=function(v){desc.set.call(this,v)})),ctx.access=access}else metadataKind=1,metadataName=name;try{return dec(value,Object.assign(ctx,old_createMetadataMethodsForProperty(metadataMap,metadataKind,metadataName,decoratorFinishedRef)))}finally{decoratorFinishedRef.v=!0}}function old_assertNotFinished(decoratorFinishedRef,fnName){if(decoratorFinishedRef.v)throw new Error("attempted to call "+fnName+" after decoration was finished")}function old_assertMetadataKey(key){if("symbol"!=typeof key)throw new TypeError("Metadata keys must be symbols, received: "+key)}function old_assertCallable(fn,hint){if("function"!=typeof fn)throw new TypeError(hint+" must be a function")}function old_assertValidReturnValue(kind,value){var type=typeof value;if(1===kind){if("object"!==type||null===value)throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");void 0!==value.get&&old_assertCallable(value.get,"accessor.get"),void 0!==value.set&&old_assertCallable(value.set,"accessor.set"),void 0!==value.init&&old_assertCallable(value.init,"accessor.init"),void 0!==value.initializer&&old_assertCallable(value.initializer,"accessor.initializer")}else if("function"!==type){var hint;throw hint=0===kind?"field":10===kind?"class":"method",new TypeError(hint+" decorators must return a function or void 0")}}function old_getInit(desc){var initializer;return null==(initializer=desc.init)&&(initializer=desc.initializer)&&"undefined"!=typeof console&&console.warn(".initializer has been renamed to .init as of March 2022"),initializer}function old_applyMemberDec(ret,base,decInfo,name,kind,isStatic,isPrivate,metadataMap,initializers){var desc,initializer,value,newValue,get,set,decs=decInfo[0];if(isPrivate?desc=0===kind||1===kind?{get:decInfo[3],set:decInfo[4]}:3===kind?{get:decInfo[3]}:4===kind?{set:decInfo[3]}:{value:decInfo[3]}:0!==kind&&(desc=Object.getOwnPropertyDescriptor(base,name)),1===kind?value={get:desc.get,set:desc.set}:2===kind?value=desc.value:3===kind?value=desc.get:4===kind&&(value=desc.set),"function"==typeof decs)void 0!==(newValue=old_memberDec(decs,name,desc,metadataMap,initializers,kind,isStatic,isPrivate,value))&&(old_assertValidReturnValue(kind,newValue),0===kind?initializer=newValue:1===kind?(initializer=old_getInit(newValue),get=newValue.get||value.get,set=newValue.set||value.set,value={get:get,set:set}):value=newValue);else for(var i=decs.length-1;i>=0;i--){var newInit;if(void 0!==(newValue=old_memberDec(decs[i],name,desc,metadataMap,initializers,kind,isStatic,isPrivate,value)))old_assertValidReturnValue(kind,newValue),0===kind?newInit=newValue:1===kind?(newInit=old_getInit(newValue),get=newValue.get||value.get,set=newValue.set||value.set,value={get:get,set:set}):value=newValue,void 0!==newInit&&(void 0===initializer?initializer=newInit:"function"==typeof initializer?initializer=[initializer,newInit]:initializer.push(newInit))}if(0===kind||1===kind){if(void 0===initializer)initializer=function(instance,init){return init};else if("function"!=typeof initializer){var ownInitializers=initializer;initializer=function(instance,init){for(var value=init,i=0;i<ownInitializers.length;i++)value=ownInitializers[i].call(instance,value);return value}}else{var originalInitializer=initializer;initializer=function(instance,init){return originalInitializer.call(instance,init)}}ret.push(initializer)}0!==kind&&(1===kind?(desc.get=value.get,desc.set=value.set):2===kind?desc.value=value:3===kind?desc.get=value:4===kind&&(desc.set=value),isPrivate?1===kind?(ret.push((function(instance,args){return value.get.call(instance,args)})),ret.push((function(instance,args){return value.set.call(instance,args)}))):2===kind?ret.push(value):ret.push((function(instance,args){return value.call(instance,args)})):Object.defineProperty(base,name,desc))}function old_applyMemberDecs(ret,Class,protoMetadataMap,staticMetadataMap,decInfos){for(var protoInitializers,staticInitializers,existingProtoNonFields=new Map,existingStaticNonFields=new Map,i=0;i<decInfos.length;i++){var decInfo=decInfos[i];if(Array.isArray(decInfo)){var base,metadataMap,initializers,kind=decInfo[1],name=decInfo[2],isPrivate=decInfo.length>3,isStatic=kind>=5;if(isStatic?(base=Class,metadataMap=staticMetadataMap,0!==(kind-=5)&&(initializers=staticInitializers=staticInitializers||[])):(base=Class.prototype,metadataMap=protoMetadataMap,0!==kind&&(initializers=protoInitializers=protoInitializers||[])),0!==kind&&!isPrivate){var existingNonFields=isStatic?existingStaticNonFields:existingProtoNonFields,existingKind=existingNonFields.get(name)||0;if(!0===existingKind||3===existingKind&&4!==kind||4===existingKind&&3!==kind)throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: "+name);!existingKind&&kind>2?existingNonFields.set(name,kind):existingNonFields.set(name,!0)}old_applyMemberDec(ret,base,decInfo,name,kind,isStatic,isPrivate,metadataMap,initializers)}}old_pushInitializers(ret,protoInitializers),old_pushInitializers(ret,staticInitializers)}function old_pushInitializers(ret,initializers){initializers&&ret.push((function(instance){for(var i=0;i<initializers.length;i++)initializers[i].call(instance);return instance}))}function old_applyClassDecs(ret,targetClass,metadataMap,classDecs){if(classDecs.length>0){for(var initializers=[],newClass=targetClass,name=targetClass.name,i=classDecs.length-1;i>=0;i--){var decoratorFinishedRef={v:!1};try{var ctx=Object.assign({kind:"class",name:name,addInitializer:old_createAddInitializerMethod(initializers,decoratorFinishedRef)},old_createMetadataMethodsForProperty(metadataMap,0,name,decoratorFinishedRef)),nextNewClass=classDecs[i](newClass,ctx)}finally{decoratorFinishedRef.v=!0}void 0!==nextNewClass&&(old_assertValidReturnValue(10,nextNewClass),newClass=nextNewClass)}ret.push(newClass,(function(){for(var i=0;i<initializers.length;i++)initializers[i].call(newClass)}))}}export default function applyDecs(targetClass,memberDecs,classDecs){var ret=[],staticMetadataMap={},protoMetadataMap={};return old_applyMemberDecs(ret,targetClass,protoMetadataMap,staticMetadataMap,memberDecs),old_convertMetadataMapToFinal(targetClass.prototype,protoMetadataMap),old_applyClassDecs(ret,targetClass,staticMetadataMap,classDecs),old_convertMetadataMapToFinal(targetClass,staticMetadataMap),ret}'),
      applyDecs2203: helper$3("7.19.0", 'function applyDecs2203Factory(){function createAddInitializerMethod(initializers,decoratorFinishedRef){return function(initializer){!function(decoratorFinishedRef,fnName){if(decoratorFinishedRef.v)throw new Error("attempted to call "+fnName+" after decoration was finished")}(decoratorFinishedRef,"addInitializer"),assertCallable(initializer,"An initializer"),initializers.push(initializer)}}function memberDec(dec,name,desc,initializers,kind,isStatic,isPrivate,value){var kindStr;switch(kind){case 1:kindStr="accessor";break;case 2:kindStr="method";break;case 3:kindStr="getter";break;case 4:kindStr="setter";break;default:kindStr="field"}var get,set,ctx={kind:kindStr,name:isPrivate?"#"+name:name,static:isStatic,private:isPrivate},decoratorFinishedRef={v:!1};0!==kind&&(ctx.addInitializer=createAddInitializerMethod(initializers,decoratorFinishedRef)),0===kind?isPrivate?(get=desc.get,set=desc.set):(get=function(){return this[name]},set=function(v){this[name]=v}):2===kind?get=function(){return desc.value}:(1!==kind&&3!==kind||(get=function(){return desc.get.call(this)}),1!==kind&&4!==kind||(set=function(v){desc.set.call(this,v)})),ctx.access=get&&set?{get:get,set:set}:get?{get:get}:{set:set};try{return dec(value,ctx)}finally{decoratorFinishedRef.v=!0}}function assertCallable(fn,hint){if("function"!=typeof fn)throw new TypeError(hint+" must be a function")}function assertValidReturnValue(kind,value){var type=typeof value;if(1===kind){if("object"!==type||null===value)throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");void 0!==value.get&&assertCallable(value.get,"accessor.get"),void 0!==value.set&&assertCallable(value.set,"accessor.set"),void 0!==value.init&&assertCallable(value.init,"accessor.init")}else if("function"!==type){var hint;throw hint=0===kind?"field":10===kind?"class":"method",new TypeError(hint+" decorators must return a function or void 0")}}function applyMemberDec(ret,base,decInfo,name,kind,isStatic,isPrivate,initializers){var desc,init,value,newValue,get,set,decs=decInfo[0];if(isPrivate?desc=0===kind||1===kind?{get:decInfo[3],set:decInfo[4]}:3===kind?{get:decInfo[3]}:4===kind?{set:decInfo[3]}:{value:decInfo[3]}:0!==kind&&(desc=Object.getOwnPropertyDescriptor(base,name)),1===kind?value={get:desc.get,set:desc.set}:2===kind?value=desc.value:3===kind?value=desc.get:4===kind&&(value=desc.set),"function"==typeof decs)void 0!==(newValue=memberDec(decs,name,desc,initializers,kind,isStatic,isPrivate,value))&&(assertValidReturnValue(kind,newValue),0===kind?init=newValue:1===kind?(init=newValue.init,get=newValue.get||value.get,set=newValue.set||value.set,value={get:get,set:set}):value=newValue);else for(var i=decs.length-1;i>=0;i--){var newInit;if(void 0!==(newValue=memberDec(decs[i],name,desc,initializers,kind,isStatic,isPrivate,value)))assertValidReturnValue(kind,newValue),0===kind?newInit=newValue:1===kind?(newInit=newValue.init,get=newValue.get||value.get,set=newValue.set||value.set,value={get:get,set:set}):value=newValue,void 0!==newInit&&(void 0===init?init=newInit:"function"==typeof init?init=[init,newInit]:init.push(newInit))}if(0===kind||1===kind){if(void 0===init)init=function(instance,init){return init};else if("function"!=typeof init){var ownInitializers=init;init=function(instance,init){for(var value=init,i=0;i<ownInitializers.length;i++)value=ownInitializers[i].call(instance,value);return value}}else{var originalInitializer=init;init=function(instance,init){return originalInitializer.call(instance,init)}}ret.push(init)}0!==kind&&(1===kind?(desc.get=value.get,desc.set=value.set):2===kind?desc.value=value:3===kind?desc.get=value:4===kind&&(desc.set=value),isPrivate?1===kind?(ret.push((function(instance,args){return value.get.call(instance,args)})),ret.push((function(instance,args){return value.set.call(instance,args)}))):2===kind?ret.push(value):ret.push((function(instance,args){return value.call(instance,args)})):Object.defineProperty(base,name,desc))}function pushInitializers(ret,initializers){initializers&&ret.push((function(instance){for(var i=0;i<initializers.length;i++)initializers[i].call(instance);return instance}))}return function(targetClass,memberDecs,classDecs){var ret=[];return function(ret,Class,decInfos){for(var protoInitializers,staticInitializers,existingProtoNonFields=new Map,existingStaticNonFields=new Map,i=0;i<decInfos.length;i++){var decInfo=decInfos[i];if(Array.isArray(decInfo)){var base,initializers,kind=decInfo[1],name=decInfo[2],isPrivate=decInfo.length>3,isStatic=kind>=5;if(isStatic?(base=Class,0!=(kind-=5)&&(initializers=staticInitializers=staticInitializers||[])):(base=Class.prototype,0!==kind&&(initializers=protoInitializers=protoInitializers||[])),0!==kind&&!isPrivate){var existingNonFields=isStatic?existingStaticNonFields:existingProtoNonFields,existingKind=existingNonFields.get(name)||0;if(!0===existingKind||3===existingKind&&4!==kind||4===existingKind&&3!==kind)throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: "+name);!existingKind&&kind>2?existingNonFields.set(name,kind):existingNonFields.set(name,!0)}applyMemberDec(ret,base,decInfo,name,kind,isStatic,isPrivate,initializers)}}pushInitializers(ret,protoInitializers),pushInitializers(ret,staticInitializers)}(ret,targetClass,memberDecs),function(ret,targetClass,classDecs){if(classDecs.length>0){for(var initializers=[],newClass=targetClass,name=targetClass.name,i=classDecs.length-1;i>=0;i--){var decoratorFinishedRef={v:!1};try{var nextNewClass=classDecs[i](newClass,{kind:"class",name:name,addInitializer:createAddInitializerMethod(initializers,decoratorFinishedRef)})}finally{decoratorFinishedRef.v=!0}void 0!==nextNewClass&&(assertValidReturnValue(10,nextNewClass),newClass=nextNewClass)}ret.push(newClass,(function(){for(var i=0;i<initializers.length;i++)initializers[i].call(newClass)}))}}(ret,targetClass,classDecs),ret}}var applyDecs2203Impl;export default function applyDecs2203(targetClass,memberDecs,classDecs){return(applyDecs2203Impl=applyDecs2203Impl||applyDecs2203Factory())(targetClass,memberDecs,classDecs)}'),
      applyDecs2203R: helper$3("7.20.0", 'function applyDecs2203RFactory(){function createAddInitializerMethod(initializers,decoratorFinishedRef){return function(initializer){!function(decoratorFinishedRef,fnName){if(decoratorFinishedRef.v)throw new Error("attempted to call "+fnName+" after decoration was finished")}(decoratorFinishedRef,"addInitializer"),assertCallable(initializer,"An initializer"),initializers.push(initializer)}}function memberDec(dec,name,desc,initializers,kind,isStatic,isPrivate,value){var kindStr;switch(kind){case 1:kindStr="accessor";break;case 2:kindStr="method";break;case 3:kindStr="getter";break;case 4:kindStr="setter";break;default:kindStr="field"}var get,set,ctx={kind:kindStr,name:isPrivate?"#"+name:name,static:isStatic,private:isPrivate},decoratorFinishedRef={v:!1};0!==kind&&(ctx.addInitializer=createAddInitializerMethod(initializers,decoratorFinishedRef)),0===kind?isPrivate?(get=desc.get,set=desc.set):(get=function(){return this[name]},set=function(v){this[name]=v}):2===kind?get=function(){return desc.value}:(1!==kind&&3!==kind||(get=function(){return desc.get.call(this)}),1!==kind&&4!==kind||(set=function(v){desc.set.call(this,v)})),ctx.access=get&&set?{get:get,set:set}:get?{get:get}:{set:set};try{return dec(value,ctx)}finally{decoratorFinishedRef.v=!0}}function assertCallable(fn,hint){if("function"!=typeof fn)throw new TypeError(hint+" must be a function")}function assertValidReturnValue(kind,value){var type=typeof value;if(1===kind){if("object"!==type||null===value)throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");void 0!==value.get&&assertCallable(value.get,"accessor.get"),void 0!==value.set&&assertCallable(value.set,"accessor.set"),void 0!==value.init&&assertCallable(value.init,"accessor.init")}else if("function"!==type){var hint;throw hint=0===kind?"field":10===kind?"class":"method",new TypeError(hint+" decorators must return a function or void 0")}}function applyMemberDec(ret,base,decInfo,name,kind,isStatic,isPrivate,initializers){var desc,init,value,newValue,get,set,decs=decInfo[0];if(isPrivate?desc=0===kind||1===kind?{get:decInfo[3],set:decInfo[4]}:3===kind?{get:decInfo[3]}:4===kind?{set:decInfo[3]}:{value:decInfo[3]}:0!==kind&&(desc=Object.getOwnPropertyDescriptor(base,name)),1===kind?value={get:desc.get,set:desc.set}:2===kind?value=desc.value:3===kind?value=desc.get:4===kind&&(value=desc.set),"function"==typeof decs)void 0!==(newValue=memberDec(decs,name,desc,initializers,kind,isStatic,isPrivate,value))&&(assertValidReturnValue(kind,newValue),0===kind?init=newValue:1===kind?(init=newValue.init,get=newValue.get||value.get,set=newValue.set||value.set,value={get:get,set:set}):value=newValue);else for(var i=decs.length-1;i>=0;i--){var newInit;if(void 0!==(newValue=memberDec(decs[i],name,desc,initializers,kind,isStatic,isPrivate,value)))assertValidReturnValue(kind,newValue),0===kind?newInit=newValue:1===kind?(newInit=newValue.init,get=newValue.get||value.get,set=newValue.set||value.set,value={get:get,set:set}):value=newValue,void 0!==newInit&&(void 0===init?init=newInit:"function"==typeof init?init=[init,newInit]:init.push(newInit))}if(0===kind||1===kind){if(void 0===init)init=function(instance,init){return init};else if("function"!=typeof init){var ownInitializers=init;init=function(instance,init){for(var value=init,i=0;i<ownInitializers.length;i++)value=ownInitializers[i].call(instance,value);return value}}else{var originalInitializer=init;init=function(instance,init){return originalInitializer.call(instance,init)}}ret.push(init)}0!==kind&&(1===kind?(desc.get=value.get,desc.set=value.set):2===kind?desc.value=value:3===kind?desc.get=value:4===kind&&(desc.set=value),isPrivate?1===kind?(ret.push((function(instance,args){return value.get.call(instance,args)})),ret.push((function(instance,args){return value.set.call(instance,args)}))):2===kind?ret.push(value):ret.push((function(instance,args){return value.call(instance,args)})):Object.defineProperty(base,name,desc))}function applyMemberDecs(Class,decInfos){for(var protoInitializers,staticInitializers,ret=[],existingProtoNonFields=new Map,existingStaticNonFields=new Map,i=0;i<decInfos.length;i++){var decInfo=decInfos[i];if(Array.isArray(decInfo)){var base,initializers,kind=decInfo[1],name=decInfo[2],isPrivate=decInfo.length>3,isStatic=kind>=5;if(isStatic?(base=Class,0!==(kind-=5)&&(initializers=staticInitializers=staticInitializers||[])):(base=Class.prototype,0!==kind&&(initializers=protoInitializers=protoInitializers||[])),0!==kind&&!isPrivate){var existingNonFields=isStatic?existingStaticNonFields:existingProtoNonFields,existingKind=existingNonFields.get(name)||0;if(!0===existingKind||3===existingKind&&4!==kind||4===existingKind&&3!==kind)throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: "+name);!existingKind&&kind>2?existingNonFields.set(name,kind):existingNonFields.set(name,!0)}applyMemberDec(ret,base,decInfo,name,kind,isStatic,isPrivate,initializers)}}return pushInitializers(ret,protoInitializers),pushInitializers(ret,staticInitializers),ret}function pushInitializers(ret,initializers){initializers&&ret.push((function(instance){for(var i=0;i<initializers.length;i++)initializers[i].call(instance);return instance}))}return function(targetClass,memberDecs,classDecs){return{e:applyMemberDecs(targetClass,memberDecs),get c(){return function(targetClass,classDecs){if(classDecs.length>0){for(var initializers=[],newClass=targetClass,name=targetClass.name,i=classDecs.length-1;i>=0;i--){var decoratorFinishedRef={v:!1};try{var nextNewClass=classDecs[i](newClass,{kind:"class",name:name,addInitializer:createAddInitializerMethod(initializers,decoratorFinishedRef)})}finally{decoratorFinishedRef.v=!0}void 0!==nextNewClass&&(assertValidReturnValue(10,nextNewClass),newClass=nextNewClass)}return[newClass,function(){for(var i=0;i<initializers.length;i++)initializers[i].call(newClass)}]}}(targetClass,classDecs)}}}}export default function applyDecs2203R(targetClass,memberDecs,classDecs){return(applyDecs2203R=applyDecs2203RFactory())(targetClass,memberDecs,classDecs)}'),
      applyDecs2301: helper$3("7.21.0", 'import checkInRHS from"checkInRHS";function createAddInitializerMethod(initializers,decoratorFinishedRef){return function(initializer){assertNotFinished(decoratorFinishedRef,"addInitializer"),assertCallable(initializer,"An initializer"),initializers.push(initializer)}}function assertInstanceIfPrivate(has,target){if(!has(target))throw new TypeError("Attempted to access private element on non-instance")}function memberDec(dec,name,desc,initializers,kind,isStatic,isPrivate,value,hasPrivateBrand){var kindStr;switch(kind){case 1:kindStr="accessor";break;case 2:kindStr="method";break;case 3:kindStr="getter";break;case 4:kindStr="setter";break;default:kindStr="field"}var get,set,ctx={kind:kindStr,name:isPrivate?"#"+name:name,static:isStatic,private:isPrivate},decoratorFinishedRef={v:!1};if(0!==kind&&(ctx.addInitializer=createAddInitializerMethod(initializers,decoratorFinishedRef)),isPrivate||0!==kind&&2!==kind)if(2===kind)get=function(target){return assertInstanceIfPrivate(hasPrivateBrand,target),desc.value};else{var t=0===kind||1===kind;(t||3===kind)&&(get=isPrivate?function(target){return assertInstanceIfPrivate(hasPrivateBrand,target),desc.get.call(target)}:function(target){return desc.get.call(target)}),(t||4===kind)&&(set=isPrivate?function(target,value){assertInstanceIfPrivate(hasPrivateBrand,target),desc.set.call(target,value)}:function(target,value){desc.set.call(target,value)})}else get=function(target){return target[name]},0===kind&&(set=function(target,v){target[name]=v});var has=isPrivate?hasPrivateBrand.bind():function(target){return name in target};ctx.access=get&&set?{get:get,set:set,has:has}:get?{get:get,has:has}:{set:set,has:has};try{return dec(value,ctx)}finally{decoratorFinishedRef.v=!0}}function assertNotFinished(decoratorFinishedRef,fnName){if(decoratorFinishedRef.v)throw new Error("attempted to call "+fnName+" after decoration was finished")}function assertCallable(fn,hint){if("function"!=typeof fn)throw new TypeError(hint+" must be a function")}function assertValidReturnValue(kind,value){var type=typeof value;if(1===kind){if("object"!==type||null===value)throw new TypeError("accessor decorators must return an object with get, set, or init properties or void 0");void 0!==value.get&&assertCallable(value.get,"accessor.get"),void 0!==value.set&&assertCallable(value.set,"accessor.set"),void 0!==value.init&&assertCallable(value.init,"accessor.init")}else if("function"!==type){var hint;throw hint=0===kind?"field":10===kind?"class":"method",new TypeError(hint+" decorators must return a function or void 0")}}function curryThis1(fn){return function(){return fn(this)}}function curryThis2(fn){return function(value){fn(this,value)}}function applyMemberDec(ret,base,decInfo,name,kind,isStatic,isPrivate,initializers,hasPrivateBrand){var desc,init,value,newValue,get,set,decs=decInfo[0];if(isPrivate?desc=0===kind||1===kind?{get:curryThis1(decInfo[3]),set:curryThis2(decInfo[4])}:3===kind?{get:decInfo[3]}:4===kind?{set:decInfo[3]}:{value:decInfo[3]}:0!==kind&&(desc=Object.getOwnPropertyDescriptor(base,name)),1===kind?value={get:desc.get,set:desc.set}:2===kind?value=desc.value:3===kind?value=desc.get:4===kind&&(value=desc.set),"function"==typeof decs)void 0!==(newValue=memberDec(decs,name,desc,initializers,kind,isStatic,isPrivate,value,hasPrivateBrand))&&(assertValidReturnValue(kind,newValue),0===kind?init=newValue:1===kind?(init=newValue.init,get=newValue.get||value.get,set=newValue.set||value.set,value={get:get,set:set}):value=newValue);else for(var i=decs.length-1;i>=0;i--){var newInit;if(void 0!==(newValue=memberDec(decs[i],name,desc,initializers,kind,isStatic,isPrivate,value,hasPrivateBrand)))assertValidReturnValue(kind,newValue),0===kind?newInit=newValue:1===kind?(newInit=newValue.init,get=newValue.get||value.get,set=newValue.set||value.set,value={get:get,set:set}):value=newValue,void 0!==newInit&&(void 0===init?init=newInit:"function"==typeof init?init=[init,newInit]:init.push(newInit))}if(0===kind||1===kind){if(void 0===init)init=function(instance,init){return init};else if("function"!=typeof init){var ownInitializers=init;init=function(instance,init){for(var value=init,i=0;i<ownInitializers.length;i++)value=ownInitializers[i].call(instance,value);return value}}else{var originalInitializer=init;init=function(instance,init){return originalInitializer.call(instance,init)}}ret.push(init)}0!==kind&&(1===kind?(desc.get=value.get,desc.set=value.set):2===kind?desc.value=value:3===kind?desc.get=value:4===kind&&(desc.set=value),isPrivate?1===kind?(ret.push((function(instance,args){return value.get.call(instance,args)})),ret.push((function(instance,args){return value.set.call(instance,args)}))):2===kind?ret.push(value):ret.push((function(instance,args){return value.call(instance,args)})):Object.defineProperty(base,name,desc))}function applyMemberDecs(Class,decInfos,instanceBrand){for(var protoInitializers,staticInitializers,staticBrand,ret=[],existingProtoNonFields=new Map,existingStaticNonFields=new Map,i=0;i<decInfos.length;i++){var decInfo=decInfos[i];if(Array.isArray(decInfo)){var base,initializers,kind=decInfo[1],name=decInfo[2],isPrivate=decInfo.length>3,isStatic=kind>=5,hasPrivateBrand=instanceBrand;if(isStatic?(base=Class,0!==(kind-=5)&&(initializers=staticInitializers=staticInitializers||[]),isPrivate&&!staticBrand&&(staticBrand=function(_){return checkInRHS(_)===Class}),hasPrivateBrand=staticBrand):(base=Class.prototype,0!==kind&&(initializers=protoInitializers=protoInitializers||[])),0!==kind&&!isPrivate){var existingNonFields=isStatic?existingStaticNonFields:existingProtoNonFields,existingKind=existingNonFields.get(name)||0;if(!0===existingKind||3===existingKind&&4!==kind||4===existingKind&&3!==kind)throw new Error("Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: "+name);!existingKind&&kind>2?existingNonFields.set(name,kind):existingNonFields.set(name,!0)}applyMemberDec(ret,base,decInfo,name,kind,isStatic,isPrivate,initializers,hasPrivateBrand)}}return pushInitializers(ret,protoInitializers),pushInitializers(ret,staticInitializers),ret}function pushInitializers(ret,initializers){initializers&&ret.push((function(instance){for(var i=0;i<initializers.length;i++)initializers[i].call(instance);return instance}))}function applyClassDecs(targetClass,classDecs){if(classDecs.length>0){for(var initializers=[],newClass=targetClass,name=targetClass.name,i=classDecs.length-1;i>=0;i--){var decoratorFinishedRef={v:!1};try{var nextNewClass=classDecs[i](newClass,{kind:"class",name:name,addInitializer:createAddInitializerMethod(initializers,decoratorFinishedRef)})}finally{decoratorFinishedRef.v=!0}void 0!==nextNewClass&&(assertValidReturnValue(10,nextNewClass),newClass=nextNewClass)}return[newClass,function(){for(var i=0;i<initializers.length;i++)initializers[i].call(newClass)}]}}export default function applyDecs2301(targetClass,memberDecs,classDecs,instanceBrand){return{e:applyMemberDecs(targetClass,memberDecs,instanceBrand),get c(){return applyClassDecs(targetClass,classDecs)}}}'),
      asyncGeneratorDelegate: helper$3("7.0.0-beta.0", 'import OverloadYield from"OverloadYield";export default function _asyncGeneratorDelegate(inner){var iter={},waiting=!1;function pump(key,value){return waiting=!0,value=new Promise((function(resolve){resolve(inner[key](value))})),{done:!1,value:new OverloadYield(value,1)}}return iter["undefined"!=typeof Symbol&&Symbol.iterator||"@@iterator"]=function(){return this},iter.next=function(value){return waiting?(waiting=!1,value):pump("next",value)},"function"==typeof inner.throw&&(iter.throw=function(value){if(waiting)throw waiting=!1,value;return pump("throw",value)}),"function"==typeof inner.return&&(iter.return=function(value){return waiting?(waiting=!1,value):pump("return",value)}),iter}'),
      asyncIterator: helper$3("7.15.9", 'export default function _asyncIterator(iterable){var method,async,sync,retry=2;for("undefined"!=typeof Symbol&&(async=Symbol.asyncIterator,sync=Symbol.iterator);retry--;){if(async&&null!=(method=iterable[async]))return method.call(iterable);if(sync&&null!=(method=iterable[sync]))return new AsyncFromSyncIterator(method.call(iterable));async="@@asyncIterator",sync="@@iterator"}throw new TypeError("Object is not async iterable")}function AsyncFromSyncIterator(s){function AsyncFromSyncIteratorContinuation(r){if(Object(r)!==r)return Promise.reject(new TypeError(r+" is not an object."));var done=r.done;return Promise.resolve(r.value).then((function(value){return{value:value,done:done}}))}return AsyncFromSyncIterator=function(s){this.s=s,this.n=s.next},AsyncFromSyncIterator.prototype={s:null,n:null,next:function(){return AsyncFromSyncIteratorContinuation(this.n.apply(this.s,arguments))},return:function(value){var ret=this.s.return;return void 0===ret?Promise.resolve({value:value,done:!0}):AsyncFromSyncIteratorContinuation(ret.apply(this.s,arguments))},throw:function(value){var thr=this.s.return;return void 0===thr?Promise.reject(value):AsyncFromSyncIteratorContinuation(thr.apply(this.s,arguments))}},new AsyncFromSyncIterator(s)}'),
      awaitAsyncGenerator: helper$3("7.0.0-beta.0", 'import OverloadYield from"OverloadYield";export default function _awaitAsyncGenerator(value){return new OverloadYield(value,0)}'),
      checkInRHS: helper$3("7.20.5", 'export default function _checkInRHS(value){if(Object(value)!==value)throw TypeError("right-hand side of \'in\' should be an object, got "+(null!==value?typeof value:"null"));return value}'),
      defineAccessor: helper$3("7.20.7", "export default function _defineAccessor(type,obj,key,fn){var desc={configurable:!0,enumerable:!0};return desc[type]=fn,Object.defineProperty(obj,key,desc)}"),
      iterableToArrayLimit: helper$3("7.0.0-beta.0", 'export default function _iterableToArrayLimit(arr,i){var _i=null==arr?null:"undefined"!=typeof Symbol&&arr[Symbol.iterator]||arr["@@iterator"];if(null!=_i){var _s,_e,_x,_r,_arr=[],_n=!0,_d=!1;try{if(_x=(_i=_i.call(arr)).next,0===i){if(Object(_i)!==_i)return;_n=!1}else for(;!(_n=(_s=_x.call(_i)).done)&&(_arr.push(_s.value),_arr.length!==i);_n=!0);}catch(err){_d=!0,_e=err}finally{try{if(!_n&&null!=_i.return&&(_r=_i.return(),Object(_r)!==_r))return}finally{if(_d)throw _e}}return _arr}}'),
      iterableToArrayLimitLoose: helper$3("7.0.0-beta.0", 'export default function _iterableToArrayLimitLoose(arr,i){var _i=arr&&("undefined"!=typeof Symbol&&arr[Symbol.iterator]||arr["@@iterator"]);if(null!=_i){var _s,_arr=[];for(_i=_i.call(arr);arr.length<i&&!(_s=_i.next()).done;)_arr.push(_s.value);return _arr}}'),
      jsx: helper$3("7.0.0-beta.0", 'var REACT_ELEMENT_TYPE;export default function _createRawReactElement(type,props,key,children){REACT_ELEMENT_TYPE||(REACT_ELEMENT_TYPE="function"==typeof Symbol&&Symbol.for&&Symbol.for("react.element")||60103);var defaultProps=type&&type.defaultProps,childrenLength=arguments.length-3;if(props||0===childrenLength||(props={children:void 0}),1===childrenLength)props.children=children;else if(childrenLength>1){for(var childArray=new Array(childrenLength),i=0;i<childrenLength;i++)childArray[i]=arguments[i+3];props.children=childArray}if(props&&defaultProps)for(var propName in defaultProps)void 0===props[propName]&&(props[propName]=defaultProps[propName]);else props||(props=defaultProps||{});return{$$typeof:REACT_ELEMENT_TYPE,type:type,key:void 0===key?null:""+key,ref:null,props:props,_owner:null}}'),
      objectSpread2: helper$3("7.5.0", 'import defineProperty from"defineProperty";function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter((function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable}))),keys.push.apply(keys,symbols)}return keys}export default function _objectSpread2(target){for(var i=1;i<arguments.length;i++){var source=null!=arguments[i]?arguments[i]:{};i%2?ownKeys(Object(source),!0).forEach((function(key){defineProperty(target,key,source[key])})):Object.getOwnPropertyDescriptors?Object.defineProperties(target,Object.getOwnPropertyDescriptors(source)):ownKeys(Object(source)).forEach((function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key))}))}return target}'),
      regeneratorRuntime: helper$3("7.18.0", 'export default function _regeneratorRuntime(){"use strict";\n/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */_regeneratorRuntime=function(){return exports};var exports={},Op=Object.prototype,hasOwn=Op.hasOwnProperty,defineProperty=Object.defineProperty||function(obj,key,desc){obj[key]=desc.value},$Symbol="function"==typeof Symbol?Symbol:{},iteratorSymbol=$Symbol.iterator||"@@iterator",asyncIteratorSymbol=$Symbol.asyncIterator||"@@asyncIterator",toStringTagSymbol=$Symbol.toStringTag||"@@toStringTag";function define(obj,key,value){return Object.defineProperty(obj,key,{value:value,enumerable:!0,configurable:!0,writable:!0}),obj[key]}try{define({},"")}catch(err){define=function(obj,key,value){return obj[key]=value}}function wrap(innerFn,outerFn,self,tryLocsList){var protoGenerator=outerFn&&outerFn.prototype instanceof Generator?outerFn:Generator,generator=Object.create(protoGenerator.prototype),context=new Context(tryLocsList||[]);return defineProperty(generator,"_invoke",{value:makeInvokeMethod(innerFn,self,context)}),generator}function tryCatch(fn,obj,arg){try{return{type:"normal",arg:fn.call(obj,arg)}}catch(err){return{type:"throw",arg:err}}}exports.wrap=wrap;var ContinueSentinel={};function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}var IteratorPrototype={};define(IteratorPrototype,iteratorSymbol,(function(){return this}));var getProto=Object.getPrototypeOf,NativeIteratorPrototype=getProto&&getProto(getProto(values([])));NativeIteratorPrototype&&NativeIteratorPrototype!==Op&&hasOwn.call(NativeIteratorPrototype,iteratorSymbol)&&(IteratorPrototype=NativeIteratorPrototype);var Gp=GeneratorFunctionPrototype.prototype=Generator.prototype=Object.create(IteratorPrototype);function defineIteratorMethods(prototype){["next","throw","return"].forEach((function(method){define(prototype,method,(function(arg){return this._invoke(method,arg)}))}))}function AsyncIterator(generator,PromiseImpl){function invoke(method,arg,resolve,reject){var record=tryCatch(generator[method],generator,arg);if("throw"!==record.type){var result=record.arg,value=result.value;return value&&"object"==typeof value&&hasOwn.call(value,"__await")?PromiseImpl.resolve(value.__await).then((function(value){invoke("next",value,resolve,reject)}),(function(err){invoke("throw",err,resolve,reject)})):PromiseImpl.resolve(value).then((function(unwrapped){result.value=unwrapped,resolve(result)}),(function(error){return invoke("throw",error,resolve,reject)}))}reject(record.arg)}var previousPromise;defineProperty(this,"_invoke",{value:function(method,arg){function callInvokeWithMethodAndArg(){return new PromiseImpl((function(resolve,reject){invoke(method,arg,resolve,reject)}))}return previousPromise=previousPromise?previousPromise.then(callInvokeWithMethodAndArg,callInvokeWithMethodAndArg):callInvokeWithMethodAndArg()}})}function makeInvokeMethod(innerFn,self,context){var state="suspendedStart";return function(method,arg){if("executing"===state)throw new Error("Generator is already running");if("completed"===state){if("throw"===method)throw arg;return doneResult()}for(context.method=method,context.arg=arg;;){var delegate=context.delegate;if(delegate){var delegateResult=maybeInvokeDelegate(delegate,context);if(delegateResult){if(delegateResult===ContinueSentinel)continue;return delegateResult}}if("next"===context.method)context.sent=context._sent=context.arg;else if("throw"===context.method){if("suspendedStart"===state)throw state="completed",context.arg;context.dispatchException(context.arg)}else"return"===context.method&&context.abrupt("return",context.arg);state="executing";var record=tryCatch(innerFn,self,context);if("normal"===record.type){if(state=context.done?"completed":"suspendedYield",record.arg===ContinueSentinel)continue;return{value:record.arg,done:context.done}}"throw"===record.type&&(state="completed",context.method="throw",context.arg=record.arg)}}}function maybeInvokeDelegate(delegate,context){var methodName=context.method,method=delegate.iterator[methodName];if(undefined===method)return context.delegate=null,"throw"===methodName&&delegate.iterator.return&&(context.method="return",context.arg=undefined,maybeInvokeDelegate(delegate,context),"throw"===context.method)||"return"!==methodName&&(context.method="throw",context.arg=new TypeError("The iterator does not provide a \'"+methodName+"\' method")),ContinueSentinel;var record=tryCatch(method,delegate.iterator,context.arg);if("throw"===record.type)return context.method="throw",context.arg=record.arg,context.delegate=null,ContinueSentinel;var info=record.arg;return info?info.done?(context[delegate.resultName]=info.value,context.next=delegate.nextLoc,"return"!==context.method&&(context.method="next",context.arg=undefined),context.delegate=null,ContinueSentinel):info:(context.method="throw",context.arg=new TypeError("iterator result is not an object"),context.delegate=null,ContinueSentinel)}function pushTryEntry(locs){var entry={tryLoc:locs[0]};1 in locs&&(entry.catchLoc=locs[1]),2 in locs&&(entry.finallyLoc=locs[2],entry.afterLoc=locs[3]),this.tryEntries.push(entry)}function resetTryEntry(entry){var record=entry.completion||{};record.type="normal",delete record.arg,entry.completion=record}function Context(tryLocsList){this.tryEntries=[{tryLoc:"root"}],tryLocsList.forEach(pushTryEntry,this),this.reset(!0)}function values(iterable){if(iterable){var iteratorMethod=iterable[iteratorSymbol];if(iteratorMethod)return iteratorMethod.call(iterable);if("function"==typeof iterable.next)return iterable;if(!isNaN(iterable.length)){var i=-1,next=function next(){for(;++i<iterable.length;)if(hasOwn.call(iterable,i))return next.value=iterable[i],next.done=!1,next;return next.value=undefined,next.done=!0,next};return next.next=next}}return{next:doneResult}}function doneResult(){return{value:undefined,done:!0}}return GeneratorFunction.prototype=GeneratorFunctionPrototype,defineProperty(Gp,"constructor",{value:GeneratorFunctionPrototype,configurable:!0}),defineProperty(GeneratorFunctionPrototype,"constructor",{value:GeneratorFunction,configurable:!0}),GeneratorFunction.displayName=define(GeneratorFunctionPrototype,toStringTagSymbol,"GeneratorFunction"),exports.isGeneratorFunction=function(genFun){var ctor="function"==typeof genFun&&genFun.constructor;return!!ctor&&(ctor===GeneratorFunction||"GeneratorFunction"===(ctor.displayName||ctor.name))},exports.mark=function(genFun){return Object.setPrototypeOf?Object.setPrototypeOf(genFun,GeneratorFunctionPrototype):(genFun.__proto__=GeneratorFunctionPrototype,define(genFun,toStringTagSymbol,"GeneratorFunction")),genFun.prototype=Object.create(Gp),genFun},exports.awrap=function(arg){return{__await:arg}},defineIteratorMethods(AsyncIterator.prototype),define(AsyncIterator.prototype,asyncIteratorSymbol,(function(){return this})),exports.AsyncIterator=AsyncIterator,exports.async=function(innerFn,outerFn,self,tryLocsList,PromiseImpl){void 0===PromiseImpl&&(PromiseImpl=Promise);var iter=new AsyncIterator(wrap(innerFn,outerFn,self,tryLocsList),PromiseImpl);return exports.isGeneratorFunction(outerFn)?iter:iter.next().then((function(result){return result.done?result.value:iter.next()}))},defineIteratorMethods(Gp),define(Gp,toStringTagSymbol,"Generator"),define(Gp,iteratorSymbol,(function(){return this})),define(Gp,"toString",(function(){return"[object Generator]"})),exports.keys=function(val){var object=Object(val),keys=[];for(var key in object)keys.push(key);return keys.reverse(),function next(){for(;keys.length;){var key=keys.pop();if(key in object)return next.value=key,next.done=!1,next}return next.done=!0,next}},exports.values=values,Context.prototype={constructor:Context,reset:function(skipTempReset){if(this.prev=0,this.next=0,this.sent=this._sent=undefined,this.done=!1,this.delegate=null,this.method="next",this.arg=undefined,this.tryEntries.forEach(resetTryEntry),!skipTempReset)for(var name in this)"t"===name.charAt(0)&&hasOwn.call(this,name)&&!isNaN(+name.slice(1))&&(this[name]=undefined)},stop:function(){this.done=!0;var rootRecord=this.tryEntries[0].completion;if("throw"===rootRecord.type)throw rootRecord.arg;return this.rval},dispatchException:function(exception){if(this.done)throw exception;var context=this;function handle(loc,caught){return record.type="throw",record.arg=exception,context.next=loc,caught&&(context.method="next",context.arg=undefined),!!caught}for(var i=this.tryEntries.length-1;i>=0;--i){var entry=this.tryEntries[i],record=entry.completion;if("root"===entry.tryLoc)return handle("end");if(entry.tryLoc<=this.prev){var hasCatch=hasOwn.call(entry,"catchLoc"),hasFinally=hasOwn.call(entry,"finallyLoc");if(hasCatch&&hasFinally){if(this.prev<entry.catchLoc)return handle(entry.catchLoc,!0);if(this.prev<entry.finallyLoc)return handle(entry.finallyLoc)}else if(hasCatch){if(this.prev<entry.catchLoc)return handle(entry.catchLoc,!0)}else{if(!hasFinally)throw new Error("try statement without catch or finally");if(this.prev<entry.finallyLoc)return handle(entry.finallyLoc)}}}},abrupt:function(type,arg){for(var i=this.tryEntries.length-1;i>=0;--i){var entry=this.tryEntries[i];if(entry.tryLoc<=this.prev&&hasOwn.call(entry,"finallyLoc")&&this.prev<entry.finallyLoc){var finallyEntry=entry;break}}finallyEntry&&("break"===type||"continue"===type)&&finallyEntry.tryLoc<=arg&&arg<=finallyEntry.finallyLoc&&(finallyEntry=null);var record=finallyEntry?finallyEntry.completion:{};return record.type=type,record.arg=arg,finallyEntry?(this.method="next",this.next=finallyEntry.finallyLoc,ContinueSentinel):this.complete(record)},complete:function(record,afterLoc){if("throw"===record.type)throw record.arg;return"break"===record.type||"continue"===record.type?this.next=record.arg:"return"===record.type?(this.rval=this.arg=record.arg,this.method="return",this.next="end"):"normal"===record.type&&afterLoc&&(this.next=afterLoc),ContinueSentinel},finish:function(finallyLoc){for(var i=this.tryEntries.length-1;i>=0;--i){var entry=this.tryEntries[i];if(entry.finallyLoc===finallyLoc)return this.complete(entry.completion,entry.afterLoc),resetTryEntry(entry),ContinueSentinel}},catch:function(tryLoc){for(var i=this.tryEntries.length-1;i>=0;--i){var entry=this.tryEntries[i];if(entry.tryLoc===tryLoc){var record=entry.completion;if("throw"===record.type){var thrown=record.arg;resetTryEntry(entry)}return thrown}}throw new Error("illegal catch attempt")},delegateYield:function(iterable,resultName,nextLoc){return this.delegate={iterator:values(iterable),resultName:resultName,nextLoc:nextLoc},"next"===this.method&&(this.arg=undefined),ContinueSentinel}},exports}'),
      "typeof": helper$3("7.0.0-beta.0", 'export default function _typeof(obj){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(obj){return typeof obj}:function(obj){return obj&&"function"==typeof Symbol&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj},_typeof(obj)}'),
      wrapRegExp: helper$3("7.19.0", 'import setPrototypeOf from"setPrototypeOf";import inherits from"inherits";export default function _wrapRegExp(){_wrapRegExp=function(re,groups){return new BabelRegExp(re,void 0,groups)};var _super=RegExp.prototype,_groups=new WeakMap;function BabelRegExp(re,flags,groups){var _this=new RegExp(re,flags);return _groups.set(_this,groups||_groups.get(re)),setPrototypeOf(_this,BabelRegExp.prototype)}function buildGroups(result,re){var g=_groups.get(re);return Object.keys(g).reduce((function(groups,name){var i=g[name];if("number"==typeof i)groups[name]=result[i];else{for(var k=0;void 0===result[i[k]]&&k+1<i.length;)k++;groups[name]=result[i[k]]}return groups}),Object.create(null))}return inherits(BabelRegExp,RegExp),BabelRegExp.prototype.exec=function(str){var result=_super.exec.call(this,str);if(result){result.groups=buildGroups(result,this);var indices=result.indices;indices&&(indices.groups=buildGroups(indices,this))}return result},BabelRegExp.prototype[Symbol.replace]=function(str,substitution){if("string"==typeof substitution){var groups=_groups.get(this);return _super[Symbol.replace].call(this,str,substitution.replace(/\\$<([^>]+)>/g,(function(_,name){var group=groups[name];return"$"+(Array.isArray(group)?group.join("$"):group)})))}if("function"==typeof substitution){var _this=this;return _super[Symbol.replace].call(this,str,(function(){var args=arguments;return"object"!=typeof args[args.length-1]&&(args=[].slice.call(args)).push(buildGroups(args,_this)),substitution.apply(this,args)}))}return _super[Symbol.replace].call(this,str,substitution)},_wrapRegExp.apply(this,arguments)}')
    });
  
    var _templateObject$v, _templateObject2$f, _templateObject3$d, _templateObject4$8, _templateObject5$5, _templateObject6$5, _templateObject7$3, _templateObject8$2, _templateObject9$2, _templateObject10$2, _templateObject11$2, _templateObject12$2, _templateObject13$2, _templateObject14$1, _templateObject15$1, _templateObject16$1, _templateObject17$1, _templateObject18$1, _templateObject19$1, _templateObject20, _templateObject21, _templateObject22, _templateObject23, _templateObject24, _templateObject25, _templateObject26, _templateObject27, _templateObject28, _templateObject29, _templateObject30, _templateObject31, _templateObject32, _templateObject33, _templateObject34, _templateObject35, _templateObject36, _templateObject37, _templateObject38, _templateObject39, _templateObject40, _templateObject41, _templateObject42, _templateObject43, _templateObject44, _templateObject45, _templateObject46, _templateObject47, _templateObject48, _templateObject49, _templateObject50, _templateObject51, _templateObject52, _templateObject53, _templateObject54, _templateObject55, _templateObject56, _templateObject57, _templateObject58, _templateObject59, _templateObject60, _templateObject61, _templateObject62, _templateObject63, _templateObject64, _templateObject65, _templateObject66, _templateObject67, _templateObject68, _templateObject69, _templateObject70, _templateObject71, _templateObject72, _templateObject73, _templateObject74, _templateObject75, _templateObject76, _templateObject77, _templateObject78, _templateObject79, _templateObject80, _templateObject81, _templateObject82;
    var helpers$1 = Object.assign({
      __proto__: null
    }, generated);
    var helper$2 = function helper(minVersion) {
      return function (tpl) {
        return {
          minVersion: minVersion,
          ast: function ast() {
            return template$2.program.ast(tpl);
          }
        };
      };
    };
    {
      helpers$1.AwaitValue = helper$2("7.0.0-beta.0")(_templateObject$v || (_templateObject$v = _taggedTemplateLiteralLoose(["\n    export default function _AwaitValue(value) {\n      this.wrapped = value;\n    }\n  "])));
    }
    helpers$1.wrapAsyncGenerator = helper$2("7.0.0-beta.0")(_templateObject2$f || (_templateObject2$f = _taggedTemplateLiteralLoose(["\n  import AsyncGenerator from \"AsyncGenerator\";\n\n  export default function _wrapAsyncGenerator(fn) {\n    return function () {\n      return new AsyncGenerator(fn.apply(this, arguments));\n    };\n  }\n"])));
    helpers$1.asyncToGenerator = helper$2("7.0.0-beta.0")(_templateObject3$d || (_templateObject3$d = _taggedTemplateLiteralLoose(["\n  function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n    try {\n      var info = gen[key](arg);\n      var value = info.value;\n    } catch (error) {\n      reject(error);\n      return;\n    }\n\n    if (info.done) {\n      resolve(value);\n    } else {\n      Promise.resolve(value).then(_next, _throw);\n    }\n  }\n\n  export default function _asyncToGenerator(fn) {\n    return function () {\n      var self = this, args = arguments;\n      return new Promise(function (resolve, reject) {\n        var gen = fn.apply(self, args);\n        function _next(value) {\n          asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n        }\n        function _throw(err) {\n          asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n        }\n\n        _next(undefined);\n      });\n    };\n  }\n"])));
    helpers$1.classCallCheck = helper$2("7.0.0-beta.0")(_templateObject4$8 || (_templateObject4$8 = _taggedTemplateLiteralLoose(["\n  export default function _classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) {\n      throw new TypeError(\"Cannot call a class as a function\");\n    }\n  }\n"])));
    helpers$1.createClass = helper$2("7.0.0-beta.0")(_templateObject5$5 || (_templateObject5$5 = _taggedTemplateLiteralLoose(["\n  import toPropertyKey from \"toPropertyKey\";\n  function _defineProperties(target, props) {\n    for (var i = 0; i < props.length; i ++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n    }\n  }\n\n  export default function _createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) _defineProperties(Constructor, staticProps);\n    Object.defineProperty(Constructor, \"prototype\", { writable: false });\n    return Constructor;\n  }\n"])));
    helpers$1.defineEnumerableProperties = helper$2("7.0.0-beta.0")(_templateObject6$5 || (_templateObject6$5 = _taggedTemplateLiteralLoose(["\n  export default function _defineEnumerableProperties(obj, descs) {\n    for (var key in descs) {\n      var desc = descs[key];\n      desc.configurable = desc.enumerable = true;\n      if (\"value\" in desc) desc.writable = true;\n      Object.defineProperty(obj, key, desc);\n    }\n\n    // Symbols are not enumerated over by for-in loops. If native\n    // Symbols are available, fetch all of the descs object's own\n    // symbol properties and define them on our target object too.\n    if (Object.getOwnPropertySymbols) {\n      var objectSymbols = Object.getOwnPropertySymbols(descs);\n      for (var i = 0; i < objectSymbols.length; i++) {\n        var sym = objectSymbols[i];\n        var desc = descs[sym];\n        desc.configurable = desc.enumerable = true;\n        if (\"value\" in desc) desc.writable = true;\n        Object.defineProperty(obj, sym, desc);\n      }\n    }\n    return obj;\n  }\n"])));
    helpers$1.defaults = helper$2("7.0.0-beta.0")(_templateObject7$3 || (_templateObject7$3 = _taggedTemplateLiteralLoose(["\n  export default function _defaults(obj, defaults) {\n    var keys = Object.getOwnPropertyNames(defaults);\n    for (var i = 0; i < keys.length; i++) {\n      var key = keys[i];\n      var value = Object.getOwnPropertyDescriptor(defaults, key);\n      if (value && value.configurable && obj[key] === undefined) {\n        Object.defineProperty(obj, key, value);\n      }\n    }\n    return obj;\n  }\n"])));
    helpers$1.defineProperty = helper$2("7.0.0-beta.0")(_templateObject8$2 || (_templateObject8$2 = _taggedTemplateLiteralLoose(["\n  import toPropertyKey from \"toPropertyKey\";\n  export default function _defineProperty(obj, key, value) {\n    key = toPropertyKey(key);\n    // Shortcircuit the slow defineProperty path when possible.\n    // We are trying to avoid issues where setters defined on the\n    // prototype cause side effects under the fast path of simple\n    // assignment. By checking for existence of the property with\n    // the in operator, we can optimize most of this overhead away.\n    if (key in obj) {\n      Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n      });\n    } else {\n      obj[key] = value;\n    }\n    return obj;\n  }\n"])));
    helpers$1["extends"] = helper$2("7.0.0-beta.0")(_templateObject9$2 || (_templateObject9$2 = _taggedTemplateLiteralLoose(["\n  export default function _extends() {\n    _extends = Object.assign ? Object.assign.bind() : function (target) {\n      for (var i = 1; i < arguments.length; i++) {\n        var source = arguments[i];\n        for (var key in source) {\n          if (Object.prototype.hasOwnProperty.call(source, key)) {\n            target[key] = source[key];\n          }\n        }\n      }\n      return target;\n    };\n\n    return _extends.apply(this, arguments);\n  }\n"])));
    {
      helpers$1.objectSpread = helper$2("7.0.0-beta.0")(_templateObject10$2 || (_templateObject10$2 = _taggedTemplateLiteralLoose(["\n    import defineProperty from \"defineProperty\";\n\n    export default function _objectSpread(target) {\n      for (var i = 1; i < arguments.length; i++) {\n        var source = (arguments[i] != null) ? Object(arguments[i]) : {};\n        var ownKeys = Object.keys(source);\n        if (typeof Object.getOwnPropertySymbols === 'function') {\n          ownKeys.push.apply(ownKeys, Object.getOwnPropertySymbols(source).filter(function(sym) {\n            return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n          }));\n        }\n        ownKeys.forEach(function(key) {\n          defineProperty(target, key, source[key]);\n        });\n      }\n      return target;\n    }\n  "])));
    }
    helpers$1.inherits = helper$2("7.0.0-beta.0")(_templateObject11$2 || (_templateObject11$2 = _taggedTemplateLiteralLoose(["\n  import setPrototypeOf from \"setPrototypeOf\";\n\n  export default function _inherits(subClass, superClass) {\n    if (typeof superClass !== \"function\" && superClass !== null) {\n      throw new TypeError(\"Super expression must either be null or a function\");\n    }\n    // We can't use defineProperty to set the prototype in a single step because it\n    // doesn't work in Chrome <= 36. https://github.com/babel/babel/issues/14056\n    // V8 bug: https://bugs.chromium.org/p/v8/issues/detail?id=3334\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\n      constructor: {\n        value: subClass,\n        writable: true,\n        configurable: true\n      }\n    });\n    Object.defineProperty(subClass, \"prototype\", { writable: false });\n    if (superClass) setPrototypeOf(subClass, superClass);\n  }\n"])));
    helpers$1.inheritsLoose = helper$2("7.0.0-beta.0")(_templateObject12$2 || (_templateObject12$2 = _taggedTemplateLiteralLoose(["\n  import setPrototypeOf from \"setPrototypeOf\";\n\n  export default function _inheritsLoose(subClass, superClass) {\n    subClass.prototype = Object.create(superClass.prototype);\n    subClass.prototype.constructor = subClass;\n    setPrototypeOf(subClass, superClass);\n  }\n"])));
    helpers$1.getPrototypeOf = helper$2("7.0.0-beta.0")(_templateObject13$2 || (_templateObject13$2 = _taggedTemplateLiteralLoose(["\n  export default function _getPrototypeOf(o) {\n    _getPrototypeOf = Object.setPrototypeOf\n      ? Object.getPrototypeOf.bind()\n      : function _getPrototypeOf(o) {\n          return o.__proto__ || Object.getPrototypeOf(o);\n        };\n    return _getPrototypeOf(o);\n  }\n"])));
    helpers$1.setPrototypeOf = helper$2("7.0.0-beta.0")(_templateObject14$1 || (_templateObject14$1 = _taggedTemplateLiteralLoose(["\n  export default function _setPrototypeOf(o, p) {\n    _setPrototypeOf = Object.setPrototypeOf\n      ? Object.setPrototypeOf.bind()\n      : function _setPrototypeOf(o, p) {\n          o.__proto__ = p;\n          return o;\n        };\n    return _setPrototypeOf(o, p);\n  }\n"])));
    helpers$1.isNativeReflectConstruct = helper$2("7.9.0")(_templateObject15$1 || (_templateObject15$1 = _taggedTemplateLiteralLoose(["\n  export default function _isNativeReflectConstruct() {\n    if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n\n    // core-js@3\n    if (Reflect.construct.sham) return false;\n\n    // Proxy can't be polyfilled. Every browser implemented\n    // proxies before or at the same time as Reflect.construct,\n    // so if they support Proxy they also support Reflect.construct.\n    if (typeof Proxy === \"function\") return true;\n\n    // Since Reflect.construct can't be properly polyfilled, some\n    // implementations (e.g. core-js@2) don't set the correct internal slots.\n    // Those polyfills don't allow us to subclass built-ins, so we need to\n    // use our fallback implementation.\n    try {\n      // If the internal slots aren't set, this throws an error similar to\n      //   TypeError: this is not a Boolean object.\n\n      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n      return true;\n    } catch (e) {\n      return false;\n    }\n  }\n"])));
    helpers$1.construct = helper$2("7.0.0-beta.0")(_templateObject16$1 || (_templateObject16$1 = _taggedTemplateLiteralLoose(["\n  import setPrototypeOf from \"setPrototypeOf\";\n  import isNativeReflectConstruct from \"isNativeReflectConstruct\";\n\n  export default function _construct(Parent, args, Class) {\n    if (isNativeReflectConstruct()) {\n      _construct = Reflect.construct.bind();\n    } else {\n      // NOTE: If Parent !== Class, the correct __proto__ is set *after*\n      //       calling the constructor.\n      _construct = function _construct(Parent, args, Class) {\n        var a = [null];\n        a.push.apply(a, args);\n        var Constructor = Function.bind.apply(Parent, a);\n        var instance = new Constructor();\n        if (Class) setPrototypeOf(instance, Class.prototype);\n        return instance;\n      };\n    }\n    // Avoid issues with Class being present but undefined when it wasn't\n    // present in the original call.\n    return _construct.apply(null, arguments);\n  }\n"])));
    helpers$1.isNativeFunction = helper$2("7.0.0-beta.0")(_templateObject17$1 || (_templateObject17$1 = _taggedTemplateLiteralLoose(["\n  export default function _isNativeFunction(fn) {\n    // Note: This function returns \"true\" for core-js functions.\n    return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n  }\n"])));
    helpers$1.wrapNativeSuper = helper$2("7.0.0-beta.0")(_templateObject18$1 || (_templateObject18$1 = _taggedTemplateLiteralLoose(["\n  import getPrototypeOf from \"getPrototypeOf\";\n  import setPrototypeOf from \"setPrototypeOf\";\n  import isNativeFunction from \"isNativeFunction\";\n  import construct from \"construct\";\n\n  export default function _wrapNativeSuper(Class) {\n    var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n    _wrapNativeSuper = function _wrapNativeSuper(Class) {\n      if (Class === null || !isNativeFunction(Class)) return Class;\n      if (typeof Class !== \"function\") {\n        throw new TypeError(\"Super expression must either be null or a function\");\n      }\n      if (typeof _cache !== \"undefined\") {\n        if (_cache.has(Class)) return _cache.get(Class);\n        _cache.set(Class, Wrapper);\n      }\n      function Wrapper() {\n        return construct(Class, arguments, getPrototypeOf(this).constructor)\n      }\n      Wrapper.prototype = Object.create(Class.prototype, {\n        constructor: {\n          value: Wrapper,\n          enumerable: false,\n          writable: true,\n          configurable: true,\n        }\n      });\n\n      return setPrototypeOf(Wrapper, Class);\n    }\n\n    return _wrapNativeSuper(Class)\n  }\n"])));
    helpers$1["instanceof"] = helper$2("7.0.0-beta.0")(_templateObject19$1 || (_templateObject19$1 = _taggedTemplateLiteralLoose(["\n  export default function _instanceof(left, right) {\n    if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n      return !!right[Symbol.hasInstance](left);\n    } else {\n      return left instanceof right;\n    }\n  }\n"])));
    helpers$1.interopRequireDefault = helper$2("7.0.0-beta.0")(_templateObject20 || (_templateObject20 = _taggedTemplateLiteralLoose(["\n  export default function _interopRequireDefault(obj) {\n    return obj && obj.__esModule ? obj : { default: obj };\n  }\n"])));
    helpers$1.interopRequireWildcard = helper$2("7.14.0")(_templateObject21 || (_templateObject21 = _taggedTemplateLiteralLoose(["\n  function _getRequireWildcardCache(nodeInterop) {\n    if (typeof WeakMap !== \"function\") return null;\n\n    var cacheBabelInterop = new WeakMap();\n    var cacheNodeInterop = new WeakMap();\n    return (_getRequireWildcardCache = function (nodeInterop) {\n      return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n    })(nodeInterop);\n  }\n\n  export default function _interopRequireWildcard(obj, nodeInterop) {\n    if (!nodeInterop && obj && obj.__esModule) {\n      return obj;\n    }\n\n    if (obj === null || (typeof obj !== \"object\" && typeof obj !== \"function\")) {\n      return { default: obj }\n    }\n\n    var cache = _getRequireWildcardCache(nodeInterop);\n    if (cache && cache.has(obj)) {\n      return cache.get(obj);\n    }\n\n    var newObj = {};\n    var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n    for (var key in obj) {\n      if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n        var desc = hasPropertyDescriptor\n          ? Object.getOwnPropertyDescriptor(obj, key)\n          : null;\n        if (desc && (desc.get || desc.set)) {\n          Object.defineProperty(newObj, key, desc);\n        } else {\n          newObj[key] = obj[key];\n        }\n      }\n    }\n    newObj.default = obj;\n    if (cache) {\n      cache.set(obj, newObj);\n    }\n    return newObj;\n  }\n"])));
    helpers$1.newArrowCheck = helper$2("7.0.0-beta.0")(_templateObject22 || (_templateObject22 = _taggedTemplateLiteralLoose(["\n  export default function _newArrowCheck(innerThis, boundThis) {\n    if (innerThis !== boundThis) {\n      throw new TypeError(\"Cannot instantiate an arrow function\");\n    }\n  }\n"])));
    helpers$1.objectDestructuringEmpty = helper$2("7.0.0-beta.0")(_templateObject23 || (_templateObject23 = _taggedTemplateLiteralLoose(["\n  export default function _objectDestructuringEmpty(obj) {\n    if (obj == null) throw new TypeError(\"Cannot destructure \" + obj);\n  }\n"])));
    helpers$1.objectWithoutPropertiesLoose = helper$2("7.0.0-beta.0")(_templateObject24 || (_templateObject24 = _taggedTemplateLiteralLoose(["\n  export default function _objectWithoutPropertiesLoose(source, excluded) {\n    if (source == null) return {};\n\n    var target = {};\n    var sourceKeys = Object.keys(source);\n    var key, i;\n\n    for (i = 0; i < sourceKeys.length; i++) {\n      key = sourceKeys[i];\n      if (excluded.indexOf(key) >= 0) continue;\n      target[key] = source[key];\n    }\n\n    return target;\n  }\n"])));
    helpers$1.objectWithoutProperties = helper$2("7.0.0-beta.0")(_templateObject25 || (_templateObject25 = _taggedTemplateLiteralLoose(["\n  import objectWithoutPropertiesLoose from \"objectWithoutPropertiesLoose\";\n\n  export default function _objectWithoutProperties(source, excluded) {\n    if (source == null) return {};\n\n    var target = objectWithoutPropertiesLoose(source, excluded);\n    var key, i;\n\n    if (Object.getOwnPropertySymbols) {\n      var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n      for (i = 0; i < sourceSymbolKeys.length; i++) {\n        key = sourceSymbolKeys[i];\n        if (excluded.indexOf(key) >= 0) continue;\n        if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n        target[key] = source[key];\n      }\n    }\n\n    return target;\n  }\n"])));
    helpers$1.assertThisInitialized = helper$2("7.0.0-beta.0")(_templateObject26 || (_templateObject26 = _taggedTemplateLiteralLoose(["\n  export default function _assertThisInitialized(self) {\n    if (self === void 0) {\n      throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n    }\n    return self;\n  }\n"])));
    helpers$1.possibleConstructorReturn = helper$2("7.0.0-beta.0")(_templateObject27 || (_templateObject27 = _taggedTemplateLiteralLoose(["\n  import assertThisInitialized from \"assertThisInitialized\";\n\n  export default function _possibleConstructorReturn(self, call) {\n    if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n      return call;\n    } else if (call !== void 0) {\n      throw new TypeError(\"Derived constructors may only return object or undefined\");\n    }\n\n    return assertThisInitialized(self);\n  }\n"])));
    helpers$1.createSuper = helper$2("7.9.0")(_templateObject28 || (_templateObject28 = _taggedTemplateLiteralLoose(["\n  import getPrototypeOf from \"getPrototypeOf\";\n  import isNativeReflectConstruct from \"isNativeReflectConstruct\";\n  import possibleConstructorReturn from \"possibleConstructorReturn\";\n\n  export default function _createSuper(Derived) {\n    var hasNativeReflectConstruct = isNativeReflectConstruct();\n\n    return function _createSuperInternal() {\n      var Super = getPrototypeOf(Derived), result;\n      if (hasNativeReflectConstruct) {\n        // NOTE: This doesn't work if this.__proto__.constructor has been modified.\n        var NewTarget = getPrototypeOf(this).constructor;\n        result = Reflect.construct(Super, arguments, NewTarget);\n      } else {\n        result = Super.apply(this, arguments);\n      }\n      return possibleConstructorReturn(this, result);\n    }\n  }\n "])));
    helpers$1.superPropBase = helper$2("7.0.0-beta.0")(_templateObject29 || (_templateObject29 = _taggedTemplateLiteralLoose(["\n  import getPrototypeOf from \"getPrototypeOf\";\n\n  export default function _superPropBase(object, property) {\n    // Yes, this throws if object is null to being with, that's on purpose.\n    while (!Object.prototype.hasOwnProperty.call(object, property)) {\n      object = getPrototypeOf(object);\n      if (object === null) break;\n    }\n    return object;\n  }\n"])));
    helpers$1.get = helper$2("7.0.0-beta.0")(_templateObject30 || (_templateObject30 = _taggedTemplateLiteralLoose(["\n  import superPropBase from \"superPropBase\";\n\n  export default function _get() {\n    if (typeof Reflect !== \"undefined\" && Reflect.get) {\n      _get = Reflect.get.bind();\n    } else {\n      _get = function _get(target, property, receiver) {\n        var base = superPropBase(target, property);\n\n        if (!base) return;\n\n        var desc = Object.getOwnPropertyDescriptor(base, property);\n        if (desc.get) {\n          // STEP 3. If receiver is not present, then set receiver to target.\n          return desc.get.call(arguments.length < 3 ? target : receiver);\n        }\n\n        return desc.value;\n      };\n    }\n    return _get.apply(this, arguments);\n  }\n"])));
    helpers$1.set = helper$2("7.0.0-beta.0")(_templateObject31 || (_templateObject31 = _taggedTemplateLiteralLoose(["\n  import superPropBase from \"superPropBase\";\n  import defineProperty from \"defineProperty\";\n\n  function set(target, property, value, receiver) {\n    if (typeof Reflect !== \"undefined\" && Reflect.set) {\n      set = Reflect.set;\n    } else {\n      set = function set(target, property, value, receiver) {\n        var base = superPropBase(target, property);\n        var desc;\n\n        if (base) {\n          desc = Object.getOwnPropertyDescriptor(base, property);\n          if (desc.set) {\n            desc.set.call(receiver, value);\n            return true;\n          } else if (!desc.writable) {\n            // Both getter and non-writable fall into this.\n            return false;\n          }\n        }\n\n        // Without a super that defines the property, spec boils down to\n        // \"define on receiver\" for some reason.\n        desc = Object.getOwnPropertyDescriptor(receiver, property);\n        if (desc) {\n          if (!desc.writable) {\n            // Setter, getter, and non-writable fall into this.\n            return false;\n          }\n\n          desc.value = value;\n          Object.defineProperty(receiver, property, desc);\n        } else {\n          // Avoid setters that may be defined on Sub's prototype, but not on\n          // the instance.\n          defineProperty(receiver, property, value);\n        }\n\n        return true;\n      };\n    }\n\n    return set(target, property, value, receiver);\n  }\n\n  export default function _set(target, property, value, receiver, isStrict) {\n    var s = set(target, property, value, receiver || target);\n    if (!s && isStrict) {\n      throw new TypeError('failed to set property');\n    }\n\n    return value;\n  }\n"])));
    helpers$1.taggedTemplateLiteral = helper$2("7.0.0-beta.0")(_templateObject32 || (_templateObject32 = _taggedTemplateLiteralLoose(["\n  export default function _taggedTemplateLiteral(strings, raw) {\n    if (!raw) { raw = strings.slice(0); }\n    return Object.freeze(Object.defineProperties(strings, {\n        raw: { value: Object.freeze(raw) }\n    }));\n  }\n"])));
    helpers$1.taggedTemplateLiteralLoose = helper$2("7.0.0-beta.0")(_templateObject33 || (_templateObject33 = _taggedTemplateLiteralLoose(["\n  export default function _taggedTemplateLiteralLoose(strings, raw) {\n    if (!raw) { raw = strings.slice(0); }\n    strings.raw = raw;\n    return strings;\n  }\n"])));
    helpers$1.readOnlyError = helper$2("7.0.0-beta.0")(_templateObject34 || (_templateObject34 = _taggedTemplateLiteralLoose(["\n  export default function _readOnlyError(name) {\n    throw new TypeError(\"\\\"\" + name + \"\\\" is read-only\");\n  }\n"], ["\n  export default function _readOnlyError(name) {\n    throw new TypeError(\"\\\\\"\" + name + \"\\\\\" is read-only\");\n  }\n"])));
    helpers$1.writeOnlyError = helper$2("7.12.13")(_templateObject35 || (_templateObject35 = _taggedTemplateLiteralLoose(["\n  export default function _writeOnlyError(name) {\n    throw new TypeError(\"\\\"\" + name + \"\\\" is write-only\");\n  }\n"], ["\n  export default function _writeOnlyError(name) {\n    throw new TypeError(\"\\\\\"\" + name + \"\\\\\" is write-only\");\n  }\n"])));
    helpers$1.classNameTDZError = helper$2("7.0.0-beta.0")(_templateObject36 || (_templateObject36 = _taggedTemplateLiteralLoose(["\n  export default function _classNameTDZError(name) {\n    throw new ReferenceError(\"Class \\\"\" + name + \"\\\" cannot be referenced in computed property keys.\");\n  }\n"], ["\n  export default function _classNameTDZError(name) {\n    throw new ReferenceError(\"Class \\\\\"\" + name + \"\\\\\" cannot be referenced in computed property keys.\");\n  }\n"])));
    helpers$1.temporalUndefined = helper$2("7.0.0-beta.0")(_templateObject37 || (_templateObject37 = _taggedTemplateLiteralLoose(["\n  // This function isn't mean to be called, but to be used as a reference.\n  // We can't use a normal object because it isn't hoisted.\n  export default function _temporalUndefined() {}\n"])));
    helpers$1.tdz = helper$2("7.5.5")(_templateObject38 || (_templateObject38 = _taggedTemplateLiteralLoose(["\n  export default function _tdzError(name) {\n    throw new ReferenceError(name + \" is not defined - temporal dead zone\");\n  }\n"])));
    helpers$1.temporalRef = helper$2("7.0.0-beta.0")(_templateObject39 || (_templateObject39 = _taggedTemplateLiteralLoose(["\n  import undef from \"temporalUndefined\";\n  import err from \"tdz\";\n\n  export default function _temporalRef(val, name) {\n    return val === undef ? err(name) : val;\n  }\n"])));
    helpers$1.slicedToArray = helper$2("7.0.0-beta.0")(_templateObject40 || (_templateObject40 = _taggedTemplateLiteralLoose(["\n  import arrayWithHoles from \"arrayWithHoles\";\n  import iterableToArrayLimit from \"iterableToArrayLimit\";\n  import unsupportedIterableToArray from \"unsupportedIterableToArray\";\n  import nonIterableRest from \"nonIterableRest\";\n\n  export default function _slicedToArray(arr, i) {\n    return (\n      arrayWithHoles(arr) ||\n      iterableToArrayLimit(arr, i) ||\n      unsupportedIterableToArray(arr, i) ||\n      nonIterableRest()\n    );\n  }\n"])));
    helpers$1.slicedToArrayLoose = helper$2("7.0.0-beta.0")(_templateObject41 || (_templateObject41 = _taggedTemplateLiteralLoose(["\n  import arrayWithHoles from \"arrayWithHoles\";\n  import iterableToArrayLimitLoose from \"iterableToArrayLimitLoose\";\n  import unsupportedIterableToArray from \"unsupportedIterableToArray\";\n  import nonIterableRest from \"nonIterableRest\";\n\n  export default function _slicedToArrayLoose(arr, i) {\n    return (\n      arrayWithHoles(arr) ||\n      iterableToArrayLimitLoose(arr, i) ||\n      unsupportedIterableToArray(arr, i) ||\n      nonIterableRest()\n    );\n  }\n"])));
    helpers$1.toArray = helper$2("7.0.0-beta.0")(_templateObject42 || (_templateObject42 = _taggedTemplateLiteralLoose(["\n  import arrayWithHoles from \"arrayWithHoles\";\n  import iterableToArray from \"iterableToArray\";\n  import unsupportedIterableToArray from \"unsupportedIterableToArray\";\n  import nonIterableRest from \"nonIterableRest\";\n\n  export default function _toArray(arr) {\n    return (\n      arrayWithHoles(arr) ||\n      iterableToArray(arr) ||\n      unsupportedIterableToArray(arr) ||\n      nonIterableRest()\n    );\n  }\n"])));
    helpers$1.toConsumableArray = helper$2("7.0.0-beta.0")(_templateObject43 || (_templateObject43 = _taggedTemplateLiteralLoose(["\n  import arrayWithoutHoles from \"arrayWithoutHoles\";\n  import iterableToArray from \"iterableToArray\";\n  import unsupportedIterableToArray from \"unsupportedIterableToArray\";\n  import nonIterableSpread from \"nonIterableSpread\";\n\n  export default function _toConsumableArray(arr) {\n    return (\n      arrayWithoutHoles(arr) ||\n      iterableToArray(arr) ||\n      unsupportedIterableToArray(arr) ||\n      nonIterableSpread()\n    );\n  }\n"])));
    helpers$1.arrayWithoutHoles = helper$2("7.0.0-beta.0")(_templateObject44 || (_templateObject44 = _taggedTemplateLiteralLoose(["\n  import arrayLikeToArray from \"arrayLikeToArray\";\n\n  export default function _arrayWithoutHoles(arr) {\n    if (Array.isArray(arr)) return arrayLikeToArray(arr);\n  }\n"])));
    helpers$1.arrayWithHoles = helper$2("7.0.0-beta.0")(_templateObject45 || (_templateObject45 = _taggedTemplateLiteralLoose(["\n  export default function _arrayWithHoles(arr) {\n    if (Array.isArray(arr)) return arr;\n  }\n"])));
    helpers$1.maybeArrayLike = helper$2("7.9.0")(_templateObject46 || (_templateObject46 = _taggedTemplateLiteralLoose(["\n  import arrayLikeToArray from \"arrayLikeToArray\";\n\n  export default function _maybeArrayLike(next, arr, i) {\n    if (arr && !Array.isArray(arr) && typeof arr.length === \"number\") {\n      var len = arr.length;\n      return arrayLikeToArray(arr, i !== void 0 && i < len ? i : len);\n    }\n    return next(arr, i);\n  }\n"])));
    helpers$1.iterableToArray = helper$2("7.0.0-beta.0")(_templateObject47 || (_templateObject47 = _taggedTemplateLiteralLoose(["\n  export default function _iterableToArray(iter) {\n    if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n  }\n"])));
    helpers$1.unsupportedIterableToArray = helper$2("7.9.0")(_templateObject48 || (_templateObject48 = _taggedTemplateLiteralLoose(["\n  import arrayLikeToArray from \"arrayLikeToArray\";\n\n  export default function _unsupportedIterableToArray(o, minLen) {\n    if (!o) return;\n    if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n    var n = Object.prototype.toString.call(o).slice(8, -1);\n    if (n === \"Object\" && o.constructor) n = o.constructor.name;\n    if (n === \"Map\" || n === \"Set\") return Array.from(o);\n    if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))\n      return arrayLikeToArray(o, minLen);\n  }\n"])));
    helpers$1.arrayLikeToArray = helper$2("7.9.0")(_templateObject49 || (_templateObject49 = _taggedTemplateLiteralLoose(["\n  export default function _arrayLikeToArray(arr, len) {\n    if (len == null || len > arr.length) len = arr.length;\n    for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n    return arr2;\n  }\n"])));
    helpers$1.nonIterableSpread = helper$2("7.0.0-beta.0")(_templateObject50 || (_templateObject50 = _taggedTemplateLiteralLoose(["\n  export default function _nonIterableSpread() {\n    throw new TypeError(\n      \"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"\n    );\n  }\n"], ["\n  export default function _nonIterableSpread() {\n    throw new TypeError(\n      \"Invalid attempt to spread non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"\n    );\n  }\n"])));
    helpers$1.nonIterableRest = helper$2("7.0.0-beta.0")(_templateObject51 || (_templateObject51 = _taggedTemplateLiteralLoose(["\n  export default function _nonIterableRest() {\n    throw new TypeError(\n      \"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"\n    );\n  }\n"], ["\n  export default function _nonIterableRest() {\n    throw new TypeError(\n      \"Invalid attempt to destructure non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"\n    );\n  }\n"])));
    helpers$1.createForOfIteratorHelper = helper$2("7.9.0")(_templateObject52 || (_templateObject52 = _taggedTemplateLiteralLoose(["\n  import unsupportedIterableToArray from \"unsupportedIterableToArray\";\n\n  // s: start (create the iterator)\n  // n: next\n  // e: error (called whenever something throws)\n  // f: finish (always called at the end)\n\n  export default function _createForOfIteratorHelper(o, allowArrayLike) {\n    var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n    if (!it) {\n      // Fallback for engines without symbol support\n      if (\n        Array.isArray(o) ||\n        (it = unsupportedIterableToArray(o)) ||\n        (allowArrayLike && o && typeof o.length === \"number\")\n      ) {\n        if (it) o = it;\n        var i = 0;\n        var F = function(){};\n        return {\n          s: F,\n          n: function() {\n            if (i >= o.length) return { done: true };\n            return { done: false, value: o[i++] };\n          },\n          e: function(e) { throw e; },\n          f: F,\n        };\n      }\n\n      throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n    }\n\n    var normalCompletion = true, didErr = false, err;\n\n    return {\n      s: function() {\n        it = it.call(o);\n      },\n      n: function() {\n        var step = it.next();\n        normalCompletion = step.done;\n        return step;\n      },\n      e: function(e) {\n        didErr = true;\n        err = e;\n      },\n      f: function() {\n        try {\n          if (!normalCompletion && it.return != null) it.return();\n        } finally {\n          if (didErr) throw err;\n        }\n      }\n    };\n  }\n"], ["\n  import unsupportedIterableToArray from \"unsupportedIterableToArray\";\n\n  // s: start (create the iterator)\n  // n: next\n  // e: error (called whenever something throws)\n  // f: finish (always called at the end)\n\n  export default function _createForOfIteratorHelper(o, allowArrayLike) {\n    var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n    if (!it) {\n      // Fallback for engines without symbol support\n      if (\n        Array.isArray(o) ||\n        (it = unsupportedIterableToArray(o)) ||\n        (allowArrayLike && o && typeof o.length === \"number\")\n      ) {\n        if (it) o = it;\n        var i = 0;\n        var F = function(){};\n        return {\n          s: F,\n          n: function() {\n            if (i >= o.length) return { done: true };\n            return { done: false, value: o[i++] };\n          },\n          e: function(e) { throw e; },\n          f: F,\n        };\n      }\n\n      throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n    }\n\n    var normalCompletion = true, didErr = false, err;\n\n    return {\n      s: function() {\n        it = it.call(o);\n      },\n      n: function() {\n        var step = it.next();\n        normalCompletion = step.done;\n        return step;\n      },\n      e: function(e) {\n        didErr = true;\n        err = e;\n      },\n      f: function() {\n        try {\n          if (!normalCompletion && it.return != null) it.return();\n        } finally {\n          if (didErr) throw err;\n        }\n      }\n    };\n  }\n"])));
    helpers$1.createForOfIteratorHelperLoose = helper$2("7.9.0")(_templateObject53 || (_templateObject53 = _taggedTemplateLiteralLoose(["\n  import unsupportedIterableToArray from \"unsupportedIterableToArray\";\n\n  export default function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n    var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n    if (it) return (it = it.call(o)).next.bind(it);\n\n    // Fallback for engines without symbol support\n    if (\n      Array.isArray(o) ||\n      (it = unsupportedIterableToArray(o)) ||\n      (allowArrayLike && o && typeof o.length === \"number\")\n    ) {\n      if (it) o = it;\n      var i = 0;\n      return function() {\n        if (i >= o.length) return { done: true };\n        return { done: false, value: o[i++] };\n      }\n    }\n\n    throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n"], ["\n  import unsupportedIterableToArray from \"unsupportedIterableToArray\";\n\n  export default function _createForOfIteratorHelperLoose(o, allowArrayLike) {\n    var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n    if (it) return (it = it.call(o)).next.bind(it);\n\n    // Fallback for engines without symbol support\n    if (\n      Array.isArray(o) ||\n      (it = unsupportedIterableToArray(o)) ||\n      (allowArrayLike && o && typeof o.length === \"number\")\n    ) {\n      if (it) o = it;\n      var i = 0;\n      return function() {\n        if (i >= o.length) return { done: true };\n        return { done: false, value: o[i++] };\n      }\n    }\n\n    throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n  }\n"])));
    helpers$1.skipFirstGeneratorNext = helper$2("7.0.0-beta.0")(_templateObject54 || (_templateObject54 = _taggedTemplateLiteralLoose(["\n  export default function _skipFirstGeneratorNext(fn) {\n    return function () {\n      var it = fn.apply(this, arguments);\n      it.next();\n      return it;\n    }\n  }\n"])));
    helpers$1.toPrimitive = helper$2("7.1.5")(_templateObject55 || (_templateObject55 = _taggedTemplateLiteralLoose(["\n  export default function _toPrimitive(\n    input,\n    hint /*: \"default\" | \"string\" | \"number\" | void */\n  ) {\n    if (typeof input !== \"object\" || input === null) return input;\n    var prim = input[Symbol.toPrimitive];\n    if (prim !== undefined) {\n      var res = prim.call(input, hint || \"default\");\n      if (typeof res !== \"object\") return res;\n      throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n    }\n    return (hint === \"string\" ? String : Number)(input);\n  }\n"])));
    helpers$1.toPropertyKey = helper$2("7.1.5")(_templateObject56 || (_templateObject56 = _taggedTemplateLiteralLoose(["\n  import toPrimitive from \"toPrimitive\";\n\n  export default function _toPropertyKey(arg) {\n    var key = toPrimitive(arg, \"string\");\n    return typeof key === \"symbol\" ? key : String(key);\n  }\n"])));
    helpers$1.initializerWarningHelper = helper$2("7.0.0-beta.0")(_templateObject57 || (_templateObject57 = _taggedTemplateLiteralLoose(["\n    export default function _initializerWarningHelper(descriptor, context){\n        throw new Error(\n          'Decorating class property failed. Please ensure that ' +\n          'proposal-class-properties is enabled and runs after the decorators transform.'\n        );\n    }\n"])));
    helpers$1.initializerDefineProperty = helper$2("7.0.0-beta.0")(_templateObject58 || (_templateObject58 = _taggedTemplateLiteralLoose(["\n    export default function _initializerDefineProperty(target, property, descriptor, context){\n        if (!descriptor) return;\n\n        Object.defineProperty(target, property, {\n            enumerable: descriptor.enumerable,\n            configurable: descriptor.configurable,\n            writable: descriptor.writable,\n            value: descriptor.initializer ? descriptor.initializer.call(context) : void 0,\n        });\n    }\n"])));
    helpers$1.applyDecoratedDescriptor = helper$2("7.0.0-beta.0")(_templateObject59 || (_templateObject59 = _taggedTemplateLiteralLoose(["\n    export default function _applyDecoratedDescriptor(target, property, decorators, descriptor, context){\n        var desc = {};\n        Object.keys(descriptor).forEach(function(key){\n            desc[key] = descriptor[key];\n        });\n        desc.enumerable = !!desc.enumerable;\n        desc.configurable = !!desc.configurable;\n        if ('value' in desc || desc.initializer){\n            desc.writable = true;\n        }\n\n        desc = decorators.slice().reverse().reduce(function(desc, decorator){\n            return decorator(target, property, desc) || desc;\n        }, desc);\n\n        if (context && desc.initializer !== void 0){\n            desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n            desc.initializer = undefined;\n        }\n\n        if (desc.initializer === void 0){\n            Object.defineProperty(target, property, desc);\n            desc = null;\n        }\n\n        return desc;\n    }\n"])));
    helpers$1.classPrivateFieldLooseKey = helper$2("7.0.0-beta.0")(_templateObject60 || (_templateObject60 = _taggedTemplateLiteralLoose(["\n  var id = 0;\n  export default function _classPrivateFieldKey(name) {\n    return \"__private_\" + (id++) + \"_\" + name;\n  }\n"])));
    helpers$1.classPrivateFieldLooseBase = helper$2("7.0.0-beta.0")(_templateObject61 || (_templateObject61 = _taggedTemplateLiteralLoose(["\n  export default function _classPrivateFieldBase(receiver, privateKey) {\n    if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {\n      throw new TypeError(\"attempted to use private field on non-instance\");\n    }\n    return receiver;\n  }\n"])));
    helpers$1.classPrivateFieldGet = helper$2("7.0.0-beta.0")(_templateObject62 || (_templateObject62 = _taggedTemplateLiteralLoose(["\n  import classApplyDescriptorGet from \"classApplyDescriptorGet\";\n  import classExtractFieldDescriptor from \"classExtractFieldDescriptor\";\n  export default function _classPrivateFieldGet(receiver, privateMap) {\n    var descriptor = classExtractFieldDescriptor(receiver, privateMap, \"get\");\n    return classApplyDescriptorGet(receiver, descriptor);\n  }\n"])));
    helpers$1.classPrivateFieldSet = helper$2("7.0.0-beta.0")(_templateObject63 || (_templateObject63 = _taggedTemplateLiteralLoose(["\n  import classApplyDescriptorSet from \"classApplyDescriptorSet\";\n  import classExtractFieldDescriptor from \"classExtractFieldDescriptor\";\n  export default function _classPrivateFieldSet(receiver, privateMap, value) {\n    var descriptor = classExtractFieldDescriptor(receiver, privateMap, \"set\");\n    classApplyDescriptorSet(receiver, descriptor, value);\n    return value;\n  }\n"])));
    helpers$1.classPrivateFieldDestructureSet = helper$2("7.4.4")(_templateObject64 || (_templateObject64 = _taggedTemplateLiteralLoose(["\n  import classApplyDescriptorDestructureSet from \"classApplyDescriptorDestructureSet\";\n  import classExtractFieldDescriptor from \"classExtractFieldDescriptor\";\n  export default function _classPrivateFieldDestructureSet(receiver, privateMap) {\n    var descriptor = classExtractFieldDescriptor(receiver, privateMap, \"set\");\n    return classApplyDescriptorDestructureSet(receiver, descriptor);\n  }\n"])));
    helpers$1.classExtractFieldDescriptor = helper$2("7.13.10")(_templateObject65 || (_templateObject65 = _taggedTemplateLiteralLoose(["\n  export default function _classExtractFieldDescriptor(receiver, privateMap, action) {\n    if (!privateMap.has(receiver)) {\n      throw new TypeError(\"attempted to \" + action + \" private field on non-instance\");\n    }\n    return privateMap.get(receiver);\n  }\n"])));
    helpers$1.classStaticPrivateFieldSpecGet = helper$2("7.0.2")(_templateObject66 || (_templateObject66 = _taggedTemplateLiteralLoose(["\n  import classApplyDescriptorGet from \"classApplyDescriptorGet\";\n  import classCheckPrivateStaticAccess from \"classCheckPrivateStaticAccess\";\n  import classCheckPrivateStaticFieldDescriptor from \"classCheckPrivateStaticFieldDescriptor\";\n  export default function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) {\n    classCheckPrivateStaticAccess(receiver, classConstructor);\n    classCheckPrivateStaticFieldDescriptor(descriptor, \"get\");\n    return classApplyDescriptorGet(receiver, descriptor);\n  }\n"])));
    helpers$1.classStaticPrivateFieldSpecSet = helper$2("7.0.2")(_templateObject67 || (_templateObject67 = _taggedTemplateLiteralLoose(["\n  import classApplyDescriptorSet from \"classApplyDescriptorSet\";\n  import classCheckPrivateStaticAccess from \"classCheckPrivateStaticAccess\";\n  import classCheckPrivateStaticFieldDescriptor from \"classCheckPrivateStaticFieldDescriptor\";\n  export default function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) {\n    classCheckPrivateStaticAccess(receiver, classConstructor);\n    classCheckPrivateStaticFieldDescriptor(descriptor, \"set\");\n    classApplyDescriptorSet(receiver, descriptor, value);\n    return value;\n  }\n"])));
    helpers$1.classStaticPrivateMethodGet = helper$2("7.3.2")(_templateObject68 || (_templateObject68 = _taggedTemplateLiteralLoose(["\n  import classCheckPrivateStaticAccess from \"classCheckPrivateStaticAccess\";\n  export default function _classStaticPrivateMethodGet(receiver, classConstructor, method) {\n    classCheckPrivateStaticAccess(receiver, classConstructor);\n    return method;\n  }\n"])));
    helpers$1.classStaticPrivateMethodSet = helper$2("7.3.2")(_templateObject69 || (_templateObject69 = _taggedTemplateLiteralLoose(["\n  export default function _classStaticPrivateMethodSet() {\n    throw new TypeError(\"attempted to set read only static private field\");\n  }\n"])));
    helpers$1.classApplyDescriptorGet = helper$2("7.13.10")(_templateObject70 || (_templateObject70 = _taggedTemplateLiteralLoose(["\n  export default function _classApplyDescriptorGet(receiver, descriptor) {\n    if (descriptor.get) {\n      return descriptor.get.call(receiver);\n    }\n    return descriptor.value;\n  }\n"])));
    helpers$1.classApplyDescriptorSet = helper$2("7.13.10")(_templateObject71 || (_templateObject71 = _taggedTemplateLiteralLoose(["\n  export default function _classApplyDescriptorSet(receiver, descriptor, value) {\n    if (descriptor.set) {\n      descriptor.set.call(receiver, value);\n    } else {\n      if (!descriptor.writable) {\n        // This should only throw in strict mode, but class bodies are\n        // always strict and private fields can only be used inside\n        // class bodies.\n        throw new TypeError(\"attempted to set read only private field\");\n      }\n      descriptor.value = value;\n    }\n  }\n"])));
    helpers$1.classApplyDescriptorDestructureSet = helper$2("7.13.10")(_templateObject72 || (_templateObject72 = _taggedTemplateLiteralLoose(["\n  export default function _classApplyDescriptorDestructureSet(receiver, descriptor) {\n    if (descriptor.set) {\n      if (!(\"__destrObj\" in descriptor)) {\n        descriptor.__destrObj = {\n          set value(v) {\n            descriptor.set.call(receiver, v)\n          },\n        };\n      }\n      return descriptor.__destrObj;\n    } else {\n      if (!descriptor.writable) {\n        // This should only throw in strict mode, but class bodies are\n        // always strict and private fields can only be used inside\n        // class bodies.\n        throw new TypeError(\"attempted to set read only private field\");\n      }\n\n      return descriptor;\n    }\n  }\n"])));
    helpers$1.classStaticPrivateFieldDestructureSet = helper$2("7.13.10")(_templateObject73 || (_templateObject73 = _taggedTemplateLiteralLoose(["\n  import classApplyDescriptorDestructureSet from \"classApplyDescriptorDestructureSet\";\n  import classCheckPrivateStaticAccess from \"classCheckPrivateStaticAccess\";\n  import classCheckPrivateStaticFieldDescriptor from \"classCheckPrivateStaticFieldDescriptor\";\n  export default function _classStaticPrivateFieldDestructureSet(receiver, classConstructor, descriptor) {\n    classCheckPrivateStaticAccess(receiver, classConstructor);\n    classCheckPrivateStaticFieldDescriptor(descriptor, \"set\");\n    return classApplyDescriptorDestructureSet(receiver, descriptor);\n  }\n"])));
    helpers$1.classCheckPrivateStaticAccess = helper$2("7.13.10")(_templateObject74 || (_templateObject74 = _taggedTemplateLiteralLoose(["\n  export default function _classCheckPrivateStaticAccess(receiver, classConstructor) {\n    if (receiver !== classConstructor) {\n      throw new TypeError(\"Private static access of wrong provenance\");\n    }\n  }\n"])));
    helpers$1.classCheckPrivateStaticFieldDescriptor = helper$2("7.13.10")(_templateObject75 || (_templateObject75 = _taggedTemplateLiteralLoose(["\n  export default function _classCheckPrivateStaticFieldDescriptor(descriptor, action) {\n    if (descriptor === undefined) {\n      throw new TypeError(\"attempted to \" + action + \" private static field before its declaration\");\n    }\n  }\n"])));
    helpers$1.decorate = helper$2("7.1.5")(_templateObject76 || (_templateObject76 = _taggedTemplateLiteralLoose(["\n  import toArray from \"toArray\";\n  import toPropertyKey from \"toPropertyKey\";\n\n  // These comments are stripped by @babel/template\n  /*::\n  type PropertyDescriptor =\n    | {\n        value: any,\n        writable: boolean,\n        configurable: boolean,\n        enumerable: boolean,\n      }\n    | {\n        get?: () => any,\n        set?: (v: any) => void,\n        configurable: boolean,\n        enumerable: boolean,\n      };\n\n  type FieldDescriptor ={\n    writable: boolean,\n    configurable: boolean,\n    enumerable: boolean,\n  };\n\n  type Placement = \"static\" | \"prototype\" | \"own\";\n  type Key = string | symbol; // PrivateName is not supported yet.\n\n  type ElementDescriptor =\n    | {\n        kind: \"method\",\n        key: Key,\n        placement: Placement,\n        descriptor: PropertyDescriptor\n      }\n    | {\n        kind: \"field\",\n        key: Key,\n        placement: Placement,\n        descriptor: FieldDescriptor,\n        initializer?: () => any,\n      };\n\n  // This is exposed to the user code\n  type ElementObjectInput = ElementDescriptor & {\n    [@@toStringTag]?: \"Descriptor\"\n  };\n\n  // This is exposed to the user code\n  type ElementObjectOutput = ElementDescriptor & {\n    [@@toStringTag]?: \"Descriptor\"\n    extras?: ElementDescriptor[],\n    finisher?: ClassFinisher,\n  };\n\n  // This is exposed to the user code\n  type ClassObject = {\n    [@@toStringTag]?: \"Descriptor\",\n    kind: \"class\",\n    elements: ElementDescriptor[],\n  };\n\n  type ElementDecorator = (descriptor: ElementObjectInput) => ?ElementObjectOutput;\n  type ClassDecorator = (descriptor: ClassObject) => ?ClassObject;\n  type ClassFinisher = <A, B>(cl: Class<A>) => Class<B>;\n\n  // Only used by Babel in the transform output, not part of the spec.\n  type ElementDefinition =\n    | {\n        kind: \"method\",\n        value: any,\n        key: Key,\n        static?: boolean,\n        decorators?: ElementDecorator[],\n      }\n    | {\n        kind: \"field\",\n        value: () => any,\n        key: Key,\n        static?: boolean,\n        decorators?: ElementDecorator[],\n    };\n\n  declare function ClassFactory<C>(initialize: (instance: C) => void): {\n    F: Class<C>,\n    d: ElementDefinition[]\n  }\n\n  */\n\n  /*::\n  // Various combinations with/without extras and with one or many finishers\n\n  type ElementFinisherExtras = {\n    element: ElementDescriptor,\n    finisher?: ClassFinisher,\n    extras?: ElementDescriptor[],\n  };\n\n  type ElementFinishersExtras = {\n    element: ElementDescriptor,\n    finishers: ClassFinisher[],\n    extras: ElementDescriptor[],\n  };\n\n  type ElementsFinisher = {\n    elements: ElementDescriptor[],\n    finisher?: ClassFinisher,\n  };\n\n  type ElementsFinishers = {\n    elements: ElementDescriptor[],\n    finishers: ClassFinisher[],\n  };\n\n  */\n\n  /*::\n\n  type Placements = {\n    static: Key[],\n    prototype: Key[],\n    own: Key[],\n  };\n\n  */\n\n  // ClassDefinitionEvaluation (Steps 26-*)\n  export default function _decorate(\n    decorators /*: ClassDecorator[] */,\n    factory /*: ClassFactory */,\n    superClass /*: ?Class<*> */,\n    mixins /*: ?Array<Function> */,\n  ) /*: Class<*> */ {\n    var api = _getDecoratorsApi();\n    if (mixins) {\n      for (var i = 0; i < mixins.length; i++) {\n        api = mixins[i](api);\n      }\n    }\n\n    var r = factory(function initialize(O) {\n      api.initializeInstanceElements(O, decorated.elements);\n    }, superClass);\n    var decorated = api.decorateClass(\n      _coalesceClassElements(r.d.map(_createElementDescriptor)),\n      decorators,\n    );\n\n    api.initializeClassElements(r.F, decorated.elements);\n\n    return api.runClassFinishers(r.F, decorated.finishers);\n  }\n\n  function _getDecoratorsApi() {\n    _getDecoratorsApi = function() {\n      return api;\n    };\n\n    var api = {\n      elementsDefinitionOrder: [[\"method\"], [\"field\"]],\n\n      // InitializeInstanceElements\n      initializeInstanceElements: function(\n        /*::<C>*/ O /*: C */,\n        elements /*: ElementDescriptor[] */,\n      ) {\n        [\"method\", \"field\"].forEach(function(kind) {\n          elements.forEach(function(element /*: ElementDescriptor */) {\n            if (element.kind === kind && element.placement === \"own\") {\n              this.defineClassElement(O, element);\n            }\n          }, this);\n        }, this);\n      },\n\n      // InitializeClassElements\n      initializeClassElements: function(\n        /*::<C>*/ F /*: Class<C> */,\n        elements /*: ElementDescriptor[] */,\n      ) {\n        var proto = F.prototype;\n\n        [\"method\", \"field\"].forEach(function(kind) {\n          elements.forEach(function(element /*: ElementDescriptor */) {\n            var placement = element.placement;\n            if (\n              element.kind === kind &&\n              (placement === \"static\" || placement === \"prototype\")\n            ) {\n              var receiver = placement === \"static\" ? F : proto;\n              this.defineClassElement(receiver, element);\n            }\n          }, this);\n        }, this);\n      },\n\n      // DefineClassElement\n      defineClassElement: function(\n        /*::<C>*/ receiver /*: C | Class<C> */,\n        element /*: ElementDescriptor */,\n      ) {\n        var descriptor /*: PropertyDescriptor */ = element.descriptor;\n        if (element.kind === \"field\") {\n          var initializer = element.initializer;\n          descriptor = {\n            enumerable: descriptor.enumerable,\n            writable: descriptor.writable,\n            configurable: descriptor.configurable,\n            value: initializer === void 0 ? void 0 : initializer.call(receiver),\n          };\n        }\n        Object.defineProperty(receiver, element.key, descriptor);\n      },\n\n      // DecorateClass\n      decorateClass: function(\n        elements /*: ElementDescriptor[] */,\n        decorators /*: ClassDecorator[] */,\n      ) /*: ElementsFinishers */ {\n        var newElements /*: ElementDescriptor[] */ = [];\n        var finishers /*: ClassFinisher[] */ = [];\n        var placements /*: Placements */ = {\n          static: [],\n          prototype: [],\n          own: [],\n        };\n\n        elements.forEach(function(element /*: ElementDescriptor */) {\n          this.addElementPlacement(element, placements);\n        }, this);\n\n        elements.forEach(function(element /*: ElementDescriptor */) {\n          if (!_hasDecorators(element)) return newElements.push(element);\n\n          var elementFinishersExtras /*: ElementFinishersExtras */ = this.decorateElement(\n            element,\n            placements,\n          );\n          newElements.push(elementFinishersExtras.element);\n          newElements.push.apply(newElements, elementFinishersExtras.extras);\n          finishers.push.apply(finishers, elementFinishersExtras.finishers);\n        }, this);\n\n        if (!decorators) {\n          return { elements: newElements, finishers: finishers };\n        }\n\n        var result /*: ElementsFinishers */ = this.decorateConstructor(\n          newElements,\n          decorators,\n        );\n        finishers.push.apply(finishers, result.finishers);\n        result.finishers = finishers;\n\n        return result;\n      },\n\n      // AddElementPlacement\n      addElementPlacement: function(\n        element /*: ElementDescriptor */,\n        placements /*: Placements */,\n        silent /*: boolean */,\n      ) {\n        var keys = placements[element.placement];\n        if (!silent && keys.indexOf(element.key) !== -1) {\n          throw new TypeError(\"Duplicated element (\" + element.key + \")\");\n        }\n        keys.push(element.key);\n      },\n\n      // DecorateElement\n      decorateElement: function(\n        element /*: ElementDescriptor */,\n        placements /*: Placements */,\n      ) /*: ElementFinishersExtras */ {\n        var extras /*: ElementDescriptor[] */ = [];\n        var finishers /*: ClassFinisher[] */ = [];\n\n        for (\n          var decorators = element.decorators, i = decorators.length - 1;\n          i >= 0;\n          i--\n        ) {\n          // (inlined) RemoveElementPlacement\n          var keys = placements[element.placement];\n          keys.splice(keys.indexOf(element.key), 1);\n\n          var elementObject /*: ElementObjectInput */ = this.fromElementDescriptor(\n            element,\n          );\n          var elementFinisherExtras /*: ElementFinisherExtras */ = this.toElementFinisherExtras(\n            (0, decorators[i])(elementObject) /*: ElementObjectOutput */ ||\n              elementObject,\n          );\n\n          element = elementFinisherExtras.element;\n          this.addElementPlacement(element, placements);\n\n          if (elementFinisherExtras.finisher) {\n            finishers.push(elementFinisherExtras.finisher);\n          }\n\n          var newExtras /*: ElementDescriptor[] | void */ =\n            elementFinisherExtras.extras;\n          if (newExtras) {\n            for (var j = 0; j < newExtras.length; j++) {\n              this.addElementPlacement(newExtras[j], placements);\n            }\n            extras.push.apply(extras, newExtras);\n          }\n        }\n\n        return { element: element, finishers: finishers, extras: extras };\n      },\n\n      // DecorateConstructor\n      decorateConstructor: function(\n        elements /*: ElementDescriptor[] */,\n        decorators /*: ClassDecorator[] */,\n      ) /*: ElementsFinishers */ {\n        var finishers /*: ClassFinisher[] */ = [];\n\n        for (var i = decorators.length - 1; i >= 0; i--) {\n          var obj /*: ClassObject */ = this.fromClassDescriptor(elements);\n          var elementsAndFinisher /*: ElementsFinisher */ = this.toClassDescriptor(\n            (0, decorators[i])(obj) /*: ClassObject */ || obj,\n          );\n\n          if (elementsAndFinisher.finisher !== undefined) {\n            finishers.push(elementsAndFinisher.finisher);\n          }\n\n          if (elementsAndFinisher.elements !== undefined) {\n            elements = elementsAndFinisher.elements;\n\n            for (var j = 0; j < elements.length - 1; j++) {\n              for (var k = j + 1; k < elements.length; k++) {\n                if (\n                  elements[j].key === elements[k].key &&\n                  elements[j].placement === elements[k].placement\n                ) {\n                  throw new TypeError(\n                    \"Duplicated element (\" + elements[j].key + \")\",\n                  );\n                }\n              }\n            }\n          }\n        }\n\n        return { elements: elements, finishers: finishers };\n      },\n\n      // FromElementDescriptor\n      fromElementDescriptor: function(\n        element /*: ElementDescriptor */,\n      ) /*: ElementObject */ {\n        var obj /*: ElementObject */ = {\n          kind: element.kind,\n          key: element.key,\n          placement: element.placement,\n          descriptor: element.descriptor,\n        };\n\n        var desc = {\n          value: \"Descriptor\",\n          configurable: true,\n        };\n        Object.defineProperty(obj, Symbol.toStringTag, desc);\n\n        if (element.kind === \"field\") obj.initializer = element.initializer;\n\n        return obj;\n      },\n\n      // ToElementDescriptors\n      toElementDescriptors: function(\n        elementObjects /*: ElementObject[] */,\n      ) /*: ElementDescriptor[] */ {\n        if (elementObjects === undefined) return;\n        return toArray(elementObjects).map(function(elementObject) {\n          var element = this.toElementDescriptor(elementObject);\n          this.disallowProperty(elementObject, \"finisher\", \"An element descriptor\");\n          this.disallowProperty(elementObject, \"extras\", \"An element descriptor\");\n          return element;\n        }, this);\n      },\n\n      // ToElementDescriptor\n      toElementDescriptor: function(\n        elementObject /*: ElementObject */,\n      ) /*: ElementDescriptor */ {\n        var kind = String(elementObject.kind);\n        if (kind !== \"method\" && kind !== \"field\") {\n          throw new TypeError(\n            'An element descriptor\\'s .kind property must be either \"method\" or' +\n              ' \"field\", but a decorator created an element descriptor with' +\n              ' .kind \"' +\n              kind +\n              '\"',\n          );\n        }\n\n        var key = toPropertyKey(elementObject.key);\n\n        var placement = String(elementObject.placement);\n        if (\n          placement !== \"static\" &&\n          placement !== \"prototype\" &&\n          placement !== \"own\"\n        ) {\n          throw new TypeError(\n            'An element descriptor\\'s .placement property must be one of \"static\",' +\n              ' \"prototype\" or \"own\", but a decorator created an element descriptor' +\n              ' with .placement \"' +\n              placement +\n              '\"',\n          );\n        }\n\n        var descriptor /*: PropertyDescriptor */ = elementObject.descriptor;\n\n        this.disallowProperty(elementObject, \"elements\", \"An element descriptor\");\n\n        var element /*: ElementDescriptor */ = {\n          kind: kind,\n          key: key,\n          placement: placement,\n          descriptor: Object.assign({}, descriptor),\n        };\n\n        if (kind !== \"field\") {\n          this.disallowProperty(elementObject, \"initializer\", \"A method descriptor\");\n        } else {\n          this.disallowProperty(\n            descriptor,\n            \"get\",\n            \"The property descriptor of a field descriptor\",\n          );\n          this.disallowProperty(\n            descriptor,\n            \"set\",\n            \"The property descriptor of a field descriptor\",\n          );\n          this.disallowProperty(\n            descriptor,\n            \"value\",\n            \"The property descriptor of a field descriptor\",\n          );\n\n          element.initializer = elementObject.initializer;\n        }\n\n        return element;\n      },\n\n      toElementFinisherExtras: function(\n        elementObject /*: ElementObject */,\n      ) /*: ElementFinisherExtras */ {\n        var element /*: ElementDescriptor */ = this.toElementDescriptor(\n          elementObject,\n        );\n        var finisher /*: ClassFinisher */ = _optionalCallableProperty(\n          elementObject,\n          \"finisher\",\n        );\n        var extras /*: ElementDescriptors[] */ = this.toElementDescriptors(\n          elementObject.extras,\n        );\n\n        return { element: element, finisher: finisher, extras: extras };\n      },\n\n      // FromClassDescriptor\n      fromClassDescriptor: function(\n        elements /*: ElementDescriptor[] */,\n      ) /*: ClassObject */ {\n        var obj = {\n          kind: \"class\",\n          elements: elements.map(this.fromElementDescriptor, this),\n        };\n\n        var desc = { value: \"Descriptor\", configurable: true };\n        Object.defineProperty(obj, Symbol.toStringTag, desc);\n\n        return obj;\n      },\n\n      // ToClassDescriptor\n      toClassDescriptor: function(\n        obj /*: ClassObject */,\n      ) /*: ElementsFinisher */ {\n        var kind = String(obj.kind);\n        if (kind !== \"class\") {\n          throw new TypeError(\n            'A class descriptor\\'s .kind property must be \"class\", but a decorator' +\n              ' created a class descriptor with .kind \"' +\n              kind +\n              '\"',\n          );\n        }\n\n        this.disallowProperty(obj, \"key\", \"A class descriptor\");\n        this.disallowProperty(obj, \"placement\", \"A class descriptor\");\n        this.disallowProperty(obj, \"descriptor\", \"A class descriptor\");\n        this.disallowProperty(obj, \"initializer\", \"A class descriptor\");\n        this.disallowProperty(obj, \"extras\", \"A class descriptor\");\n\n        var finisher = _optionalCallableProperty(obj, \"finisher\");\n        var elements = this.toElementDescriptors(obj.elements);\n\n        return { elements: elements, finisher: finisher };\n      },\n\n      // RunClassFinishers\n      runClassFinishers: function(\n        constructor /*: Class<*> */,\n        finishers /*: ClassFinisher[] */,\n      ) /*: Class<*> */ {\n        for (var i = 0; i < finishers.length; i++) {\n          var newConstructor /*: ?Class<*> */ = (0, finishers[i])(constructor);\n          if (newConstructor !== undefined) {\n            // NOTE: This should check if IsConstructor(newConstructor) is false.\n            if (typeof newConstructor !== \"function\") {\n              throw new TypeError(\"Finishers must return a constructor.\");\n            }\n            constructor = newConstructor;\n          }\n        }\n        return constructor;\n      },\n\n      disallowProperty: function(obj, name, objectType) {\n        if (obj[name] !== undefined) {\n          throw new TypeError(objectType + \" can't have a .\" + name + \" property.\");\n        }\n      }\n    };\n\n    return api;\n  }\n\n  // ClassElementEvaluation\n  function _createElementDescriptor(\n    def /*: ElementDefinition */,\n  ) /*: ElementDescriptor */ {\n    var key = toPropertyKey(def.key);\n\n    var descriptor /*: PropertyDescriptor */;\n    if (def.kind === \"method\") {\n      descriptor = {\n        value: def.value,\n        writable: true,\n        configurable: true,\n        enumerable: false,\n      };\n    } else if (def.kind === \"get\") {\n      descriptor = { get: def.value, configurable: true, enumerable: false };\n    } else if (def.kind === \"set\") {\n      descriptor = { set: def.value, configurable: true, enumerable: false };\n    } else if (def.kind === \"field\") {\n      descriptor = { configurable: true, writable: true, enumerable: true };\n    }\n\n    var element /*: ElementDescriptor */ = {\n      kind: def.kind === \"field\" ? \"field\" : \"method\",\n      key: key,\n      placement: def.static\n        ? \"static\"\n        : def.kind === \"field\"\n        ? \"own\"\n        : \"prototype\",\n      descriptor: descriptor,\n    };\n    if (def.decorators) element.decorators = def.decorators;\n    if (def.kind === \"field\") element.initializer = def.value;\n\n    return element;\n  }\n\n  // CoalesceGetterSetter\n  function _coalesceGetterSetter(\n    element /*: ElementDescriptor */,\n    other /*: ElementDescriptor */,\n  ) {\n    if (element.descriptor.get !== undefined) {\n      other.descriptor.get = element.descriptor.get;\n    } else {\n      other.descriptor.set = element.descriptor.set;\n    }\n  }\n\n  // CoalesceClassElements\n  function _coalesceClassElements(\n    elements /*: ElementDescriptor[] */,\n  ) /*: ElementDescriptor[] */ {\n    var newElements /*: ElementDescriptor[] */ = [];\n\n    var isSameElement = function(\n      other /*: ElementDescriptor */,\n    ) /*: boolean */ {\n      return (\n        other.kind === \"method\" &&\n        other.key === element.key &&\n        other.placement === element.placement\n      );\n    };\n\n    for (var i = 0; i < elements.length; i++) {\n      var element /*: ElementDescriptor */ = elements[i];\n      var other /*: ElementDescriptor */;\n\n      if (\n        element.kind === \"method\" &&\n        (other = newElements.find(isSameElement))\n      ) {\n        if (\n          _isDataDescriptor(element.descriptor) ||\n          _isDataDescriptor(other.descriptor)\n        ) {\n          if (_hasDecorators(element) || _hasDecorators(other)) {\n            throw new ReferenceError(\n              \"Duplicated methods (\" + element.key + \") can't be decorated.\",\n            );\n          }\n          other.descriptor = element.descriptor;\n        } else {\n          if (_hasDecorators(element)) {\n            if (_hasDecorators(other)) {\n              throw new ReferenceError(\n                \"Decorators can't be placed on different accessors with for \" +\n                  \"the same property (\" +\n                  element.key +\n                  \").\",\n              );\n            }\n            other.decorators = element.decorators;\n          }\n          _coalesceGetterSetter(element, other);\n        }\n      } else {\n        newElements.push(element);\n      }\n    }\n\n    return newElements;\n  }\n\n  function _hasDecorators(element /*: ElementDescriptor */) /*: boolean */ {\n    return element.decorators && element.decorators.length;\n  }\n\n  function _isDataDescriptor(desc /*: PropertyDescriptor */) /*: boolean */ {\n    return (\n      desc !== undefined &&\n      !(desc.value === undefined && desc.writable === undefined)\n    );\n  }\n\n  function _optionalCallableProperty /*::<T>*/(\n    obj /*: T */,\n    name /*: $Keys<T> */,\n  ) /*: ?Function */ {\n    var value = obj[name];\n    if (value !== undefined && typeof value !== \"function\") {\n      throw new TypeError(\"Expected '\" + name + \"' to be a function\");\n    }\n    return value;\n  }\n\n"], ["\n  import toArray from \"toArray\";\n  import toPropertyKey from \"toPropertyKey\";\n\n  // These comments are stripped by @babel/template\n  /*::\n  type PropertyDescriptor =\n    | {\n        value: any,\n        writable: boolean,\n        configurable: boolean,\n        enumerable: boolean,\n      }\n    | {\n        get?: () => any,\n        set?: (v: any) => void,\n        configurable: boolean,\n        enumerable: boolean,\n      };\n\n  type FieldDescriptor ={\n    writable: boolean,\n    configurable: boolean,\n    enumerable: boolean,\n  };\n\n  type Placement = \"static\" | \"prototype\" | \"own\";\n  type Key = string | symbol; // PrivateName is not supported yet.\n\n  type ElementDescriptor =\n    | {\n        kind: \"method\",\n        key: Key,\n        placement: Placement,\n        descriptor: PropertyDescriptor\n      }\n    | {\n        kind: \"field\",\n        key: Key,\n        placement: Placement,\n        descriptor: FieldDescriptor,\n        initializer?: () => any,\n      };\n\n  // This is exposed to the user code\n  type ElementObjectInput = ElementDescriptor & {\n    [@@toStringTag]?: \"Descriptor\"\n  };\n\n  // This is exposed to the user code\n  type ElementObjectOutput = ElementDescriptor & {\n    [@@toStringTag]?: \"Descriptor\"\n    extras?: ElementDescriptor[],\n    finisher?: ClassFinisher,\n  };\n\n  // This is exposed to the user code\n  type ClassObject = {\n    [@@toStringTag]?: \"Descriptor\",\n    kind: \"class\",\n    elements: ElementDescriptor[],\n  };\n\n  type ElementDecorator = (descriptor: ElementObjectInput) => ?ElementObjectOutput;\n  type ClassDecorator = (descriptor: ClassObject) => ?ClassObject;\n  type ClassFinisher = <A, B>(cl: Class<A>) => Class<B>;\n\n  // Only used by Babel in the transform output, not part of the spec.\n  type ElementDefinition =\n    | {\n        kind: \"method\",\n        value: any,\n        key: Key,\n        static?: boolean,\n        decorators?: ElementDecorator[],\n      }\n    | {\n        kind: \"field\",\n        value: () => any,\n        key: Key,\n        static?: boolean,\n        decorators?: ElementDecorator[],\n    };\n\n  declare function ClassFactory<C>(initialize: (instance: C) => void): {\n    F: Class<C>,\n    d: ElementDefinition[]\n  }\n\n  */\n\n  /*::\n  // Various combinations with/without extras and with one or many finishers\n\n  type ElementFinisherExtras = {\n    element: ElementDescriptor,\n    finisher?: ClassFinisher,\n    extras?: ElementDescriptor[],\n  };\n\n  type ElementFinishersExtras = {\n    element: ElementDescriptor,\n    finishers: ClassFinisher[],\n    extras: ElementDescriptor[],\n  };\n\n  type ElementsFinisher = {\n    elements: ElementDescriptor[],\n    finisher?: ClassFinisher,\n  };\n\n  type ElementsFinishers = {\n    elements: ElementDescriptor[],\n    finishers: ClassFinisher[],\n  };\n\n  */\n\n  /*::\n\n  type Placements = {\n    static: Key[],\n    prototype: Key[],\n    own: Key[],\n  };\n\n  */\n\n  // ClassDefinitionEvaluation (Steps 26-*)\n  export default function _decorate(\n    decorators /*: ClassDecorator[] */,\n    factory /*: ClassFactory */,\n    superClass /*: ?Class<*> */,\n    mixins /*: ?Array<Function> */,\n  ) /*: Class<*> */ {\n    var api = _getDecoratorsApi();\n    if (mixins) {\n      for (var i = 0; i < mixins.length; i++) {\n        api = mixins[i](api);\n      }\n    }\n\n    var r = factory(function initialize(O) {\n      api.initializeInstanceElements(O, decorated.elements);\n    }, superClass);\n    var decorated = api.decorateClass(\n      _coalesceClassElements(r.d.map(_createElementDescriptor)),\n      decorators,\n    );\n\n    api.initializeClassElements(r.F, decorated.elements);\n\n    return api.runClassFinishers(r.F, decorated.finishers);\n  }\n\n  function _getDecoratorsApi() {\n    _getDecoratorsApi = function() {\n      return api;\n    };\n\n    var api = {\n      elementsDefinitionOrder: [[\"method\"], [\"field\"]],\n\n      // InitializeInstanceElements\n      initializeInstanceElements: function(\n        /*::<C>*/ O /*: C */,\n        elements /*: ElementDescriptor[] */,\n      ) {\n        [\"method\", \"field\"].forEach(function(kind) {\n          elements.forEach(function(element /*: ElementDescriptor */) {\n            if (element.kind === kind && element.placement === \"own\") {\n              this.defineClassElement(O, element);\n            }\n          }, this);\n        }, this);\n      },\n\n      // InitializeClassElements\n      initializeClassElements: function(\n        /*::<C>*/ F /*: Class<C> */,\n        elements /*: ElementDescriptor[] */,\n      ) {\n        var proto = F.prototype;\n\n        [\"method\", \"field\"].forEach(function(kind) {\n          elements.forEach(function(element /*: ElementDescriptor */) {\n            var placement = element.placement;\n            if (\n              element.kind === kind &&\n              (placement === \"static\" || placement === \"prototype\")\n            ) {\n              var receiver = placement === \"static\" ? F : proto;\n              this.defineClassElement(receiver, element);\n            }\n          }, this);\n        }, this);\n      },\n\n      // DefineClassElement\n      defineClassElement: function(\n        /*::<C>*/ receiver /*: C | Class<C> */,\n        element /*: ElementDescriptor */,\n      ) {\n        var descriptor /*: PropertyDescriptor */ = element.descriptor;\n        if (element.kind === \"field\") {\n          var initializer = element.initializer;\n          descriptor = {\n            enumerable: descriptor.enumerable,\n            writable: descriptor.writable,\n            configurable: descriptor.configurable,\n            value: initializer === void 0 ? void 0 : initializer.call(receiver),\n          };\n        }\n        Object.defineProperty(receiver, element.key, descriptor);\n      },\n\n      // DecorateClass\n      decorateClass: function(\n        elements /*: ElementDescriptor[] */,\n        decorators /*: ClassDecorator[] */,\n      ) /*: ElementsFinishers */ {\n        var newElements /*: ElementDescriptor[] */ = [];\n        var finishers /*: ClassFinisher[] */ = [];\n        var placements /*: Placements */ = {\n          static: [],\n          prototype: [],\n          own: [],\n        };\n\n        elements.forEach(function(element /*: ElementDescriptor */) {\n          this.addElementPlacement(element, placements);\n        }, this);\n\n        elements.forEach(function(element /*: ElementDescriptor */) {\n          if (!_hasDecorators(element)) return newElements.push(element);\n\n          var elementFinishersExtras /*: ElementFinishersExtras */ = this.decorateElement(\n            element,\n            placements,\n          );\n          newElements.push(elementFinishersExtras.element);\n          newElements.push.apply(newElements, elementFinishersExtras.extras);\n          finishers.push.apply(finishers, elementFinishersExtras.finishers);\n        }, this);\n\n        if (!decorators) {\n          return { elements: newElements, finishers: finishers };\n        }\n\n        var result /*: ElementsFinishers */ = this.decorateConstructor(\n          newElements,\n          decorators,\n        );\n        finishers.push.apply(finishers, result.finishers);\n        result.finishers = finishers;\n\n        return result;\n      },\n\n      // AddElementPlacement\n      addElementPlacement: function(\n        element /*: ElementDescriptor */,\n        placements /*: Placements */,\n        silent /*: boolean */,\n      ) {\n        var keys = placements[element.placement];\n        if (!silent && keys.indexOf(element.key) !== -1) {\n          throw new TypeError(\"Duplicated element (\" + element.key + \")\");\n        }\n        keys.push(element.key);\n      },\n\n      // DecorateElement\n      decorateElement: function(\n        element /*: ElementDescriptor */,\n        placements /*: Placements */,\n      ) /*: ElementFinishersExtras */ {\n        var extras /*: ElementDescriptor[] */ = [];\n        var finishers /*: ClassFinisher[] */ = [];\n\n        for (\n          var decorators = element.decorators, i = decorators.length - 1;\n          i >= 0;\n          i--\n        ) {\n          // (inlined) RemoveElementPlacement\n          var keys = placements[element.placement];\n          keys.splice(keys.indexOf(element.key), 1);\n\n          var elementObject /*: ElementObjectInput */ = this.fromElementDescriptor(\n            element,\n          );\n          var elementFinisherExtras /*: ElementFinisherExtras */ = this.toElementFinisherExtras(\n            (0, decorators[i])(elementObject) /*: ElementObjectOutput */ ||\n              elementObject,\n          );\n\n          element = elementFinisherExtras.element;\n          this.addElementPlacement(element, placements);\n\n          if (elementFinisherExtras.finisher) {\n            finishers.push(elementFinisherExtras.finisher);\n          }\n\n          var newExtras /*: ElementDescriptor[] | void */ =\n            elementFinisherExtras.extras;\n          if (newExtras) {\n            for (var j = 0; j < newExtras.length; j++) {\n              this.addElementPlacement(newExtras[j], placements);\n            }\n            extras.push.apply(extras, newExtras);\n          }\n        }\n\n        return { element: element, finishers: finishers, extras: extras };\n      },\n\n      // DecorateConstructor\n      decorateConstructor: function(\n        elements /*: ElementDescriptor[] */,\n        decorators /*: ClassDecorator[] */,\n      ) /*: ElementsFinishers */ {\n        var finishers /*: ClassFinisher[] */ = [];\n\n        for (var i = decorators.length - 1; i >= 0; i--) {\n          var obj /*: ClassObject */ = this.fromClassDescriptor(elements);\n          var elementsAndFinisher /*: ElementsFinisher */ = this.toClassDescriptor(\n            (0, decorators[i])(obj) /*: ClassObject */ || obj,\n          );\n\n          if (elementsAndFinisher.finisher !== undefined) {\n            finishers.push(elementsAndFinisher.finisher);\n          }\n\n          if (elementsAndFinisher.elements !== undefined) {\n            elements = elementsAndFinisher.elements;\n\n            for (var j = 0; j < elements.length - 1; j++) {\n              for (var k = j + 1; k < elements.length; k++) {\n                if (\n                  elements[j].key === elements[k].key &&\n                  elements[j].placement === elements[k].placement\n                ) {\n                  throw new TypeError(\n                    \"Duplicated element (\" + elements[j].key + \")\",\n                  );\n                }\n              }\n            }\n          }\n        }\n\n        return { elements: elements, finishers: finishers };\n      },\n\n      // FromElementDescriptor\n      fromElementDescriptor: function(\n        element /*: ElementDescriptor */,\n      ) /*: ElementObject */ {\n        var obj /*: ElementObject */ = {\n          kind: element.kind,\n          key: element.key,\n          placement: element.placement,\n          descriptor: element.descriptor,\n        };\n\n        var desc = {\n          value: \"Descriptor\",\n          configurable: true,\n        };\n        Object.defineProperty(obj, Symbol.toStringTag, desc);\n\n        if (element.kind === \"field\") obj.initializer = element.initializer;\n\n        return obj;\n      },\n\n      // ToElementDescriptors\n      toElementDescriptors: function(\n        elementObjects /*: ElementObject[] */,\n      ) /*: ElementDescriptor[] */ {\n        if (elementObjects === undefined) return;\n        return toArray(elementObjects).map(function(elementObject) {\n          var element = this.toElementDescriptor(elementObject);\n          this.disallowProperty(elementObject, \"finisher\", \"An element descriptor\");\n          this.disallowProperty(elementObject, \"extras\", \"An element descriptor\");\n          return element;\n        }, this);\n      },\n\n      // ToElementDescriptor\n      toElementDescriptor: function(\n        elementObject /*: ElementObject */,\n      ) /*: ElementDescriptor */ {\n        var kind = String(elementObject.kind);\n        if (kind !== \"method\" && kind !== \"field\") {\n          throw new TypeError(\n            'An element descriptor\\\\'s .kind property must be either \"method\" or' +\n              ' \"field\", but a decorator created an element descriptor with' +\n              ' .kind \"' +\n              kind +\n              '\"',\n          );\n        }\n\n        var key = toPropertyKey(elementObject.key);\n\n        var placement = String(elementObject.placement);\n        if (\n          placement !== \"static\" &&\n          placement !== \"prototype\" &&\n          placement !== \"own\"\n        ) {\n          throw new TypeError(\n            'An element descriptor\\\\'s .placement property must be one of \"static\",' +\n              ' \"prototype\" or \"own\", but a decorator created an element descriptor' +\n              ' with .placement \"' +\n              placement +\n              '\"',\n          );\n        }\n\n        var descriptor /*: PropertyDescriptor */ = elementObject.descriptor;\n\n        this.disallowProperty(elementObject, \"elements\", \"An element descriptor\");\n\n        var element /*: ElementDescriptor */ = {\n          kind: kind,\n          key: key,\n          placement: placement,\n          descriptor: Object.assign({}, descriptor),\n        };\n\n        if (kind !== \"field\") {\n          this.disallowProperty(elementObject, \"initializer\", \"A method descriptor\");\n        } else {\n          this.disallowProperty(\n            descriptor,\n            \"get\",\n            \"The property descriptor of a field descriptor\",\n          );\n          this.disallowProperty(\n            descriptor,\n            \"set\",\n            \"The property descriptor of a field descriptor\",\n          );\n          this.disallowProperty(\n            descriptor,\n            \"value\",\n            \"The property descriptor of a field descriptor\",\n          );\n\n          element.initializer = elementObject.initializer;\n        }\n\n        return element;\n      },\n\n      toElementFinisherExtras: function(\n        elementObject /*: ElementObject */,\n      ) /*: ElementFinisherExtras */ {\n        var element /*: ElementDescriptor */ = this.toElementDescriptor(\n          elementObject,\n        );\n        var finisher /*: ClassFinisher */ = _optionalCallableProperty(\n          elementObject,\n          \"finisher\",\n        );\n        var extras /*: ElementDescriptors[] */ = this.toElementDescriptors(\n          elementObject.extras,\n        );\n\n        return { element: element, finisher: finisher, extras: extras };\n      },\n\n      // FromClassDescriptor\n      fromClassDescriptor: function(\n        elements /*: ElementDescriptor[] */,\n      ) /*: ClassObject */ {\n        var obj = {\n          kind: \"class\",\n          elements: elements.map(this.fromElementDescriptor, this),\n        };\n\n        var desc = { value: \"Descriptor\", configurable: true };\n        Object.defineProperty(obj, Symbol.toStringTag, desc);\n\n        return obj;\n      },\n\n      // ToClassDescriptor\n      toClassDescriptor: function(\n        obj /*: ClassObject */,\n      ) /*: ElementsFinisher */ {\n        var kind = String(obj.kind);\n        if (kind !== \"class\") {\n          throw new TypeError(\n            'A class descriptor\\\\'s .kind property must be \"class\", but a decorator' +\n              ' created a class descriptor with .kind \"' +\n              kind +\n              '\"',\n          );\n        }\n\n        this.disallowProperty(obj, \"key\", \"A class descriptor\");\n        this.disallowProperty(obj, \"placement\", \"A class descriptor\");\n        this.disallowProperty(obj, \"descriptor\", \"A class descriptor\");\n        this.disallowProperty(obj, \"initializer\", \"A class descriptor\");\n        this.disallowProperty(obj, \"extras\", \"A class descriptor\");\n\n        var finisher = _optionalCallableProperty(obj, \"finisher\");\n        var elements = this.toElementDescriptors(obj.elements);\n\n        return { elements: elements, finisher: finisher };\n      },\n\n      // RunClassFinishers\n      runClassFinishers: function(\n        constructor /*: Class<*> */,\n        finishers /*: ClassFinisher[] */,\n      ) /*: Class<*> */ {\n        for (var i = 0; i < finishers.length; i++) {\n          var newConstructor /*: ?Class<*> */ = (0, finishers[i])(constructor);\n          if (newConstructor !== undefined) {\n            // NOTE: This should check if IsConstructor(newConstructor) is false.\n            if (typeof newConstructor !== \"function\") {\n              throw new TypeError(\"Finishers must return a constructor.\");\n            }\n            constructor = newConstructor;\n          }\n        }\n        return constructor;\n      },\n\n      disallowProperty: function(obj, name, objectType) {\n        if (obj[name] !== undefined) {\n          throw new TypeError(objectType + \" can't have a .\" + name + \" property.\");\n        }\n      }\n    };\n\n    return api;\n  }\n\n  // ClassElementEvaluation\n  function _createElementDescriptor(\n    def /*: ElementDefinition */,\n  ) /*: ElementDescriptor */ {\n    var key = toPropertyKey(def.key);\n\n    var descriptor /*: PropertyDescriptor */;\n    if (def.kind === \"method\") {\n      descriptor = {\n        value: def.value,\n        writable: true,\n        configurable: true,\n        enumerable: false,\n      };\n    } else if (def.kind === \"get\") {\n      descriptor = { get: def.value, configurable: true, enumerable: false };\n    } else if (def.kind === \"set\") {\n      descriptor = { set: def.value, configurable: true, enumerable: false };\n    } else if (def.kind === \"field\") {\n      descriptor = { configurable: true, writable: true, enumerable: true };\n    }\n\n    var element /*: ElementDescriptor */ = {\n      kind: def.kind === \"field\" ? \"field\" : \"method\",\n      key: key,\n      placement: def.static\n        ? \"static\"\n        : def.kind === \"field\"\n        ? \"own\"\n        : \"prototype\",\n      descriptor: descriptor,\n    };\n    if (def.decorators) element.decorators = def.decorators;\n    if (def.kind === \"field\") element.initializer = def.value;\n\n    return element;\n  }\n\n  // CoalesceGetterSetter\n  function _coalesceGetterSetter(\n    element /*: ElementDescriptor */,\n    other /*: ElementDescriptor */,\n  ) {\n    if (element.descriptor.get !== undefined) {\n      other.descriptor.get = element.descriptor.get;\n    } else {\n      other.descriptor.set = element.descriptor.set;\n    }\n  }\n\n  // CoalesceClassElements\n  function _coalesceClassElements(\n    elements /*: ElementDescriptor[] */,\n  ) /*: ElementDescriptor[] */ {\n    var newElements /*: ElementDescriptor[] */ = [];\n\n    var isSameElement = function(\n      other /*: ElementDescriptor */,\n    ) /*: boolean */ {\n      return (\n        other.kind === \"method\" &&\n        other.key === element.key &&\n        other.placement === element.placement\n      );\n    };\n\n    for (var i = 0; i < elements.length; i++) {\n      var element /*: ElementDescriptor */ = elements[i];\n      var other /*: ElementDescriptor */;\n\n      if (\n        element.kind === \"method\" &&\n        (other = newElements.find(isSameElement))\n      ) {\n        if (\n          _isDataDescriptor(element.descriptor) ||\n          _isDataDescriptor(other.descriptor)\n        ) {\n          if (_hasDecorators(element) || _hasDecorators(other)) {\n            throw new ReferenceError(\n              \"Duplicated methods (\" + element.key + \") can't be decorated.\",\n            );\n          }\n          other.descriptor = element.descriptor;\n        } else {\n          if (_hasDecorators(element)) {\n            if (_hasDecorators(other)) {\n              throw new ReferenceError(\n                \"Decorators can't be placed on different accessors with for \" +\n                  \"the same property (\" +\n                  element.key +\n                  \").\",\n              );\n            }\n            other.decorators = element.decorators;\n          }\n          _coalesceGetterSetter(element, other);\n        }\n      } else {\n        newElements.push(element);\n      }\n    }\n\n    return newElements;\n  }\n\n  function _hasDecorators(element /*: ElementDescriptor */) /*: boolean */ {\n    return element.decorators && element.decorators.length;\n  }\n\n  function _isDataDescriptor(desc /*: PropertyDescriptor */) /*: boolean */ {\n    return (\n      desc !== undefined &&\n      !(desc.value === undefined && desc.writable === undefined)\n    );\n  }\n\n  function _optionalCallableProperty /*::<T>*/(\n    obj /*: T */,\n    name /*: $Keys<T> */,\n  ) /*: ?Function */ {\n    var value = obj[name];\n    if (value !== undefined && typeof value !== \"function\") {\n      throw new TypeError(\"Expected '\" + name + \"' to be a function\");\n    }\n    return value;\n  }\n\n"])));
    helpers$1.classPrivateMethodGet = helper$2("7.1.6")(_templateObject77 || (_templateObject77 = _taggedTemplateLiteralLoose(["\n  export default function _classPrivateMethodGet(receiver, privateSet, fn) {\n    if (!privateSet.has(receiver)) {\n      throw new TypeError(\"attempted to get private field on non-instance\");\n    }\n    return fn;\n  }\n"])));
    helpers$1.checkPrivateRedeclaration = helper$2("7.14.1")(_templateObject78 || (_templateObject78 = _taggedTemplateLiteralLoose(["\n  export default function _checkPrivateRedeclaration(obj, privateCollection) {\n    if (privateCollection.has(obj)) {\n      throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n    }\n  }\n"])));
    helpers$1.classPrivateFieldInitSpec = helper$2("7.14.1")(_templateObject79 || (_templateObject79 = _taggedTemplateLiteralLoose(["\n  import checkPrivateRedeclaration from \"checkPrivateRedeclaration\";\n\n  export default function _classPrivateFieldInitSpec(obj, privateMap, value) {\n    checkPrivateRedeclaration(obj, privateMap);\n    privateMap.set(obj, value);\n  }\n"])));
    helpers$1.classPrivateMethodInitSpec = helper$2("7.14.1")(_templateObject80 || (_templateObject80 = _taggedTemplateLiteralLoose(["\n  import checkPrivateRedeclaration from \"checkPrivateRedeclaration\";\n\n  export default function _classPrivateMethodInitSpec(obj, privateSet) {\n    checkPrivateRedeclaration(obj, privateSet);\n    privateSet.add(obj);\n  }\n"])));
    {
      helpers$1.classPrivateMethodSet = helper$2("7.1.6")(_templateObject81 || (_templateObject81 = _taggedTemplateLiteralLoose(["\n    export default function _classPrivateMethodSet() {\n      throw new TypeError(\"attempted to reassign private method\");\n    }\n  "])));
    }
    helpers$1.identity = helper$2("7.17.0")(_templateObject82 || (_templateObject82 = _taggedTemplateLiteralLoose(["\n  export default function _identity(x) {\n    return x;\n  }\n"])));
  
    var assignmentExpression$8 = assignmentExpression$d,
      cloneNode$b = cloneNode$j,
      expressionStatement$4 = expressionStatement$a,
      file$1 = file$2,
      identifier$9 = identifier$i;
    function makePath(path) {
      var parts = [];
      for (; path.parentPath; path = path.parentPath) {
        parts.push(path.key);
        if (path.inList) parts.push(path.listKey);
      }
      return parts.reverse().join(".");
    }
    var FileClass = undefined;
    function getHelperMetadata(file) {
      var globals = new Set();
      var localBindingNames = new Set();
      var dependencies = new Map();
      var exportName;
      var exportPath;
      var exportBindingAssignments = [];
      var importPaths = [];
      var importBindingsReferences = [];
      var dependencyVisitor = {
        ImportDeclaration: function ImportDeclaration(child) {
          var name = child.node.source.value;
          if (!helpers$1[name]) {
            throw child.buildCodeFrameError("Unknown helper " + name);
          }
          if (child.get("specifiers").length !== 1 || !child.get("specifiers.0").isImportDefaultSpecifier()) {
            throw child.buildCodeFrameError("Helpers can only import a default value");
          }
          var bindingIdentifier = child.node.specifiers[0].local;
          dependencies.set(bindingIdentifier, name);
          importPaths.push(makePath(child));
        },
        ExportDefaultDeclaration: function ExportDefaultDeclaration(child) {
          var decl = child.get("declaration");
          if (!decl.isFunctionDeclaration() || !decl.node.id) {
            throw decl.buildCodeFrameError("Helpers can only export named function declarations");
          }
          exportName = decl.node.id.name;
          exportPath = makePath(child);
        },
        ExportAllDeclaration: function ExportAllDeclaration(child) {
          throw child.buildCodeFrameError("Helpers can only export default");
        },
        ExportNamedDeclaration: function ExportNamedDeclaration(child) {
          throw child.buildCodeFrameError("Helpers can only export default");
        },
        Statement: function Statement(child) {
          if (child.isImportDeclaration() || child.isExportDeclaration()) return;
          child.skip();
        }
      };
      var referenceVisitor = {
        Program: function Program(path) {
          var bindings = path.scope.getAllBindings();
          Object.keys(bindings).forEach(function (name) {
            if (name === exportName) return;
            if (dependencies.has(bindings[name].identifier)) return;
            localBindingNames.add(name);
          });
        },
        ReferencedIdentifier: function ReferencedIdentifier(child) {
          var name = child.node.name;
          var binding = child.scope.getBinding(name);
          if (!binding) {
            globals.add(name);
          } else if (dependencies.has(binding.identifier)) {
            importBindingsReferences.push(makePath(child));
          }
        },
        AssignmentExpression: function AssignmentExpression(child) {
          var left = child.get("left");
          if (!(exportName in left.getBindingIdentifiers())) return;
          if (!left.isIdentifier()) {
            throw left.buildCodeFrameError("Only simple assignments to exports are allowed in helpers");
          }
          var binding = child.scope.getBinding(exportName);
          if (binding != null && binding.scope.path.isProgram()) {
            exportBindingAssignments.push(makePath(child));
          }
        }
      };
      traverse(file.ast, dependencyVisitor, file.scope);
      traverse(file.ast, referenceVisitor, file.scope);
      if (!exportPath) throw new Error("Helpers must have a default export.");
      exportBindingAssignments.reverse();
      return {
        globals: Array.from(globals),
        localBindingNames: Array.from(localBindingNames),
        dependencies: dependencies,
        exportBindingAssignments: exportBindingAssignments,
        exportPath: exportPath,
        exportName: exportName,
        importBindingsReferences: importBindingsReferences,
        importPaths: importPaths
      };
    }
    function permuteHelperAST(file, metadata, id, localBindings, getDependency) {
      if (localBindings && !id) {
        throw new Error("Unexpected local bindings for module-based helpers.");
      }
      if (!id) return;
      var localBindingNames = metadata.localBindingNames,
        dependencies = metadata.dependencies,
        exportBindingAssignments = metadata.exportBindingAssignments,
        exportPath = metadata.exportPath,
        exportName = metadata.exportName,
        importBindingsReferences = metadata.importBindingsReferences,
        importPaths = metadata.importPaths;
      var dependenciesRefs = {};
      dependencies.forEach(function (name, id) {
        dependenciesRefs[id.name] = typeof getDependency === "function" && getDependency(name) || id;
      });
      var toRename = {};
      var bindings = new Set(localBindings || []);
      localBindingNames.forEach(function (name) {
        var newName = name;
        while (bindings.has(newName)) newName = "_" + newName;
        if (newName !== name) toRename[name] = newName;
      });
      if (id.type === "Identifier" && exportName !== id.name) {
        toRename[exportName] = id.name;
      }
      var path = file.path;
      var exp = path.get(exportPath);
      var imps = importPaths.map(function (p) {
        return path.get(p);
      });
      var impsBindingRefs = importBindingsReferences.map(function (p) {
        return path.get(p);
      });
      var decl = exp.get("declaration");
      if (id.type === "Identifier") {
        exp.replaceWith(decl);
      } else if (id.type === "MemberExpression") {
        exportBindingAssignments.forEach(function (assignPath) {
          var assign = path.get(assignPath);
          assign.replaceWith(assignmentExpression$8("=", id, assign.node));
        });
        exp.replaceWith(decl);
        path.pushContainer("body", expressionStatement$4(assignmentExpression$8("=", id, identifier$9(exportName))));
      } else {
        throw new Error("Unexpected helper format.");
      }
      Object.keys(toRename).forEach(function (name) {
        path.scope.rename(name, toRename[name]);
      });
      for (var _iterator = _createForOfIteratorHelperLoose(imps), _step; !(_step = _iterator()).done;) {
        var _path = _step.value;
        _path.remove();
      }
      for (var _iterator2 = _createForOfIteratorHelperLoose(impsBindingRefs), _step2; !(_step2 = _iterator2()).done;) {
        var _path2 = _step2.value;
        var node = cloneNode$b(dependenciesRefs[_path2.node.name]);
        _path2.replaceWith(node);
      }
    }
    var helperData = Object.create(null);
    function loadHelper(name) {
      if (!helperData[name]) {
        var helper = helpers$1[name];
        if (!helper) {
          throw Object.assign(new ReferenceError("Unknown helper " + name), {
            code: "BABEL_HELPER_UNKNOWN",
            helper: name
          });
        }
        var fn = function fn() {
          {
            if (!FileClass) {
              var fakeFile = {
                ast: file$1(helper.ast()),
                path: null
              };
              traverse(fakeFile.ast, {
                Program: function Program(path) {
                  return (fakeFile.path = path).stop();
                }
              });
              return fakeFile;
            }
          }
          return new FileClass({
            filename: "babel-helper://" + name
          }, {
            ast: file$1(helper.ast()),
            code: "[internal Babel helper code]",
            inputMap: null
          });
        };
        var metadata = null;
        helperData[name] = {
          minVersion: helper.minVersion,
          build: function build(getDependency, id, localBindings) {
            var file = fn();
            metadata || (metadata = getHelperMetadata(file));
            permuteHelperAST(file, metadata, id, localBindings, getDependency);
            return {
              nodes: file.ast.program.body,
              globals: metadata.globals
            };
          },
          getDependencies: function getDependencies() {
            metadata || (metadata = getHelperMetadata(fn()));
            return Array.from(metadata.dependencies.values());
          }
        };
      }
      return helperData[name];
    }
    function get$1(name, getDependency, id, localBindings) {
      return loadHelper(name).build(getDependency, id, localBindings);
    }
    function minVersion(name) {
      return loadHelper(name).minVersion;
    }
    function getDependencies(name) {
      return loadHelper(name).getDependencies();
    }
    function ensure(name, newFileClass) {
      FileClass || (FileClass = newFileClass);
      loadHelper(name);
    }
    var list = Object.keys(helpers$1).map(function (name) {
      return name.replace(/^_/, "");
    });
  
    var assert$1 = {exports: {}};
  
    /*
    object-assign
    (c) Sindre Sorhus
    @license MIT
    */
    var getOwnPropertySymbols = Object.getOwnPropertySymbols;
    var hasOwnProperty = Object.prototype.hasOwnProperty;
    var propIsEnumerable = Object.prototype.propertyIsEnumerable;
    function toObject(val) {
      if (val === null || val === undefined) {
        throw new TypeError('Object.assign cannot be called with null or undefined');
      }
      return Object(val);
    }
    function shouldUseNative() {
      try {
        if (!Object.assign) {
          return false;
        }
        var test1 = new String('abc');
        test1[5] = 'de';
        if (Object.getOwnPropertyNames(test1)[0] === '5') {
          return false;
        }
        var test2 = {};
        for (var i = 0; i < 10; i++) {
          test2['_' + String.fromCharCode(i)] = i;
        }
        var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
          return test2[n];
        });
        if (order2.join('') !== '0123456789') {
          return false;
        }
        var test3 = {};
        'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
          test3[letter] = letter;
        });
        if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {
          return false;
        }
        return true;
      } catch (err) {
        return false;
      }
    }
    var objectAssign$1 = shouldUseNative() ? Object.assign : function (target, source) {
      var from;
      var to = toObject(target);
      var symbols;
      for (var s = 1; s < arguments.length; s++) {
        from = Object(arguments[s]);
        for (var key in from) {
          if (hasOwnProperty.call(from, key)) {
            to[key] = from[key];
          }
        }
        if (getOwnPropertySymbols) {
          symbols = getOwnPropertySymbols(from);
          for (var i = 0; i < symbols.length; i++) {
            if (propIsEnumerable.call(from, symbols[i])) {
              to[symbols[i]] = from[symbols[i]];
            }
          }
        }
      }
      return to;
    };
  
    var util$3 = {};
  
    var isBufferBrowser = function isBuffer(arg) {
      return arg && typeof arg === 'object' && typeof arg.copy === 'function' && typeof arg.fill === 'function' && typeof arg.readUInt8 === 'function';
    };
  
    var inherits_browser = {exports: {}};
  
    if (typeof Object.create === 'function') {
      inherits_browser.exports = function inherits(ctor, superCtor) {
        ctor.super_ = superCtor;
        ctor.prototype = Object.create(superCtor.prototype, {
          constructor: {
            value: ctor,
            enumerable: false,
            writable: true,
            configurable: true
          }
        });
      };
    } else {
      inherits_browser.exports = function inherits(ctor, superCtor) {
        ctor.super_ = superCtor;
        var TempCtor = function TempCtor() {};
        TempCtor.prototype = superCtor.prototype;
        ctor.prototype = new TempCtor();
        ctor.prototype.constructor = ctor;
      };
    }
  
    (function (exports) {
      var formatRegExp = /%[sdj%]/g;
      exports.format = function (f) {
        if (!isString(f)) {
          var objects = [];
          for (var i = 0; i < arguments.length; i++) {
            objects.push(inspect(arguments[i]));
          }
          return objects.join(' ');
        }
        var i = 1;
        var args = arguments;
        var len = args.length;
        var str = String(f).replace(formatRegExp, function (x) {
          if (x === '%%') return '%';
          if (i >= len) return x;
          switch (x) {
            case '%s':
              return String(args[i++]);
            case '%d':
              return Number(args[i++]);
            case '%j':
              try {
                return JSON.stringify(args[i++]);
              } catch (_) {
                return '[Circular]';
              }
            default:
              return x;
          }
        });
        for (var x = args[i]; i < len; x = args[++i]) {
          if (isNull(x) || !isObject(x)) {
            str += ' ' + x;
          } else {
            str += ' ' + inspect(x);
          }
        }
        return str;
      };
      exports.deprecate = function (fn, msg) {
        if (isUndefined(commonjsGlobal.process)) {
          return function () {
            return exports.deprecate(fn, msg).apply(this, arguments);
          };
        }
        if (browser$1$1.noDeprecation === true) {
          return fn;
        }
        var warned = false;
        function deprecated() {
          if (!warned) {
            if (browser$1$1.throwDeprecation) {
              throw new Error(msg);
            } else if (browser$1$1.traceDeprecation) {
              console.trace(msg);
            } else {
              console.error(msg);
            }
            warned = true;
          }
          return fn.apply(this, arguments);
        }
        return deprecated;
      };
      var debugs = {};
      var debugEnviron;
      exports.debuglog = function (set) {
        if (isUndefined(debugEnviron)) debugEnviron = browser$1$1.env.NODE_DEBUG || '';
        set = set.toUpperCase();
        if (!debugs[set]) {
          if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
            var pid = browser$1$1.pid;
            debugs[set] = function () {
              var msg = exports.format.apply(exports, arguments);
              console.error('%s %d: %s', set, pid, msg);
            };
          } else {
            debugs[set] = function () {};
          }
        }
        return debugs[set];
      };
      function inspect(obj, opts) {
        var ctx = {
          seen: [],
          stylize: stylizeNoColor
        };
        if (arguments.length >= 3) ctx.depth = arguments[2];
        if (arguments.length >= 4) ctx.colors = arguments[3];
        if (isBoolean(opts)) {
          ctx.showHidden = opts;
        } else if (opts) {
          exports._extend(ctx, opts);
        }
        if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
        if (isUndefined(ctx.depth)) ctx.depth = 2;
        if (isUndefined(ctx.colors)) ctx.colors = false;
        if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
        if (ctx.colors) ctx.stylize = stylizeWithColor;
        return formatValue(ctx, obj, ctx.depth);
      }
      exports.inspect = inspect;
      inspect.colors = {
        'bold': [1, 22],
        'italic': [3, 23],
        'underline': [4, 24],
        'inverse': [7, 27],
        'white': [37, 39],
        'grey': [90, 39],
        'black': [30, 39],
        'blue': [34, 39],
        'cyan': [36, 39],
        'green': [32, 39],
        'magenta': [35, 39],
        'red': [31, 39],
        'yellow': [33, 39]
      };
      inspect.styles = {
        'special': 'cyan',
        'number': 'yellow',
        'boolean': 'yellow',
        'undefined': 'grey',
        'null': 'bold',
        'string': 'green',
        'date': 'magenta',
        'regexp': 'red'
      };
      function stylizeWithColor(str, styleType) {
        var style = inspect.styles[styleType];
        if (style) {
          return "\x1B[" + inspect.colors[style][0] + 'm' + str + "\x1B[" + inspect.colors[style][1] + 'm';
        } else {
          return str;
        }
      }
      function stylizeNoColor(str, styleType) {
        return str;
      }
      function arrayToHash(array) {
        var hash = {};
        array.forEach(function (val, idx) {
          hash[val] = true;
        });
        return hash;
      }
      function formatValue(ctx, value, recurseTimes) {
        if (ctx.customInspect && value && isFunction(value.inspect) && value.inspect !== exports.inspect && !(value.constructor && value.constructor.prototype === value)) {
          var ret = value.inspect(recurseTimes, ctx);
          if (!isString(ret)) {
            ret = formatValue(ctx, ret, recurseTimes);
          }
          return ret;
        }
        var primitive = formatPrimitive(ctx, value);
        if (primitive) {
          return primitive;
        }
        var keys = Object.keys(value);
        var visibleKeys = arrayToHash(keys);
        if (ctx.showHidden) {
          keys = Object.getOwnPropertyNames(value);
        }
        if (isError(value) && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
          return formatError(value);
        }
        if (keys.length === 0) {
          if (isFunction(value)) {
            var name = value.name ? ': ' + value.name : '';
            return ctx.stylize('[Function' + name + ']', 'special');
          }
          if (isRegExp(value)) {
            return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
          }
          if (isDate(value)) {
            return ctx.stylize(Date.prototype.toString.call(value), 'date');
          }
          if (isError(value)) {
            return formatError(value);
          }
        }
        var base = '',
          array = false,
          braces = ['{', '}'];
        if (isArray(value)) {
          array = true;
          braces = ['[', ']'];
        }
        if (isFunction(value)) {
          var n = value.name ? ': ' + value.name : '';
          base = ' [Function' + n + ']';
        }
        if (isRegExp(value)) {
          base = ' ' + RegExp.prototype.toString.call(value);
        }
        if (isDate(value)) {
          base = ' ' + Date.prototype.toUTCString.call(value);
        }
        if (isError(value)) {
          base = ' ' + formatError(value);
        }
        if (keys.length === 0 && (!array || value.length == 0)) {
          return braces[0] + base + braces[1];
        }
        if (recurseTimes < 0) {
          if (isRegExp(value)) {
            return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
          } else {
            return ctx.stylize('[Object]', 'special');
          }
        }
        ctx.seen.push(value);
        var output;
        if (array) {
          output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
        } else {
          output = keys.map(function (key) {
            return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
          });
        }
        ctx.seen.pop();
        return reduceToSingleString(output, base, braces);
      }
      function formatPrimitive(ctx, value) {
        if (isUndefined(value)) return ctx.stylize('undefined', 'undefined');
        if (isString(value)) {
          var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '').replace(/'/g, "\\'").replace(/\\"/g, '"') + '\'';
          return ctx.stylize(simple, 'string');
        }
        if (isNumber(value)) return ctx.stylize('' + value, 'number');
        if (isBoolean(value)) return ctx.stylize('' + value, 'boolean');
        if (isNull(value)) return ctx.stylize('null', 'null');
      }
      function formatError(value) {
        return '[' + Error.prototype.toString.call(value) + ']';
      }
      function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
        var output = [];
        for (var i = 0, l = value.length; i < l; ++i) {
          if (hasOwnProperty(value, String(i))) {
            output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, String(i), true));
          } else {
            output.push('');
          }
        }
        keys.forEach(function (key) {
          if (!key.match(/^\d+$/)) {
            output.push(formatProperty(ctx, value, recurseTimes, visibleKeys, key, true));
          }
        });
        return output;
      }
      function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
        var name, str, desc;
        desc = Object.getOwnPropertyDescriptor(value, key) || {
          value: value[key]
        };
        if (desc.get) {
          if (desc.set) {
            str = ctx.stylize('[Getter/Setter]', 'special');
          } else {
            str = ctx.stylize('[Getter]', 'special');
          }
        } else {
          if (desc.set) {
            str = ctx.stylize('[Setter]', 'special');
          }
        }
        if (!hasOwnProperty(visibleKeys, key)) {
          name = '[' + key + ']';
        }
        if (!str) {
          if (ctx.seen.indexOf(desc.value) < 0) {
            if (isNull(recurseTimes)) {
              str = formatValue(ctx, desc.value, null);
            } else {
              str = formatValue(ctx, desc.value, recurseTimes - 1);
            }
            if (str.indexOf('\n') > -1) {
              if (array) {
                str = str.split('\n').map(function (line) {
                  return '  ' + line;
                }).join('\n').substr(2);
              } else {
                str = '\n' + str.split('\n').map(function (line) {
                  return '   ' + line;
                }).join('\n');
              }
            }
          } else {
            str = ctx.stylize('[Circular]', 'special');
          }
        }
        if (isUndefined(name)) {
          if (array && key.match(/^\d+$/)) {
            return str;
          }
          name = JSON.stringify('' + key);
          if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
            name = name.substr(1, name.length - 2);
            name = ctx.stylize(name, 'name');
          } else {
            name = name.replace(/'/g, "\\'").replace(/\\"/g, '"').replace(/(^"|"$)/g, "'");
            name = ctx.stylize(name, 'string');
          }
        }
        return name + ': ' + str;
      }
      function reduceToSingleString(output, base, braces) {
        var length = output.reduce(function (prev, cur) {
          if (cur.indexOf('\n') >= 0) ;
          return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
        }, 0);
        if (length > 60) {
          return braces[0] + (base === '' ? '' : base + '\n ') + ' ' + output.join(',\n  ') + ' ' + braces[1];
        }
        return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
      }
      function isArray(ar) {
        return Array.isArray(ar);
      }
      exports.isArray = isArray;
      function isBoolean(arg) {
        return typeof arg === 'boolean';
      }
      exports.isBoolean = isBoolean;
      function isNull(arg) {
        return arg === null;
      }
      exports.isNull = isNull;
      function isNullOrUndefined(arg) {
        return arg == null;
      }
      exports.isNullOrUndefined = isNullOrUndefined;
      function isNumber(arg) {
        return typeof arg === 'number';
      }
      exports.isNumber = isNumber;
      function isString(arg) {
        return typeof arg === 'string';
      }
      exports.isString = isString;
      function isSymbol(arg) {
        return typeof arg === 'symbol';
      }
      exports.isSymbol = isSymbol;
      function isUndefined(arg) {
        return arg === void 0;
      }
      exports.isUndefined = isUndefined;
      function isRegExp(re) {
        return isObject(re) && objectToString(re) === '[object RegExp]';
      }
      exports.isRegExp = isRegExp;
      function isObject(arg) {
        return typeof arg === 'object' && arg !== null;
      }
      exports.isObject = isObject;
      function isDate(d) {
        return isObject(d) && objectToString(d) === '[object Date]';
      }
      exports.isDate = isDate;
      function isError(e) {
        return isObject(e) && (objectToString(e) === '[object Error]' || e instanceof Error);
      }
      exports.isError = isError;
      function isFunction(arg) {
        return typeof arg === 'function';
      }
      exports.isFunction = isFunction;
      function isPrimitive(arg) {
        return arg === null || typeof arg === 'boolean' || typeof arg === 'number' || typeof arg === 'string' || typeof arg === 'symbol' || typeof arg === 'undefined';
      }
      exports.isPrimitive = isPrimitive;
      exports.isBuffer = isBufferBrowser;
      function objectToString(o) {
        return Object.prototype.toString.call(o);
      }
      function pad(n) {
        return n < 10 ? '0' + n.toString(10) : n.toString(10);
      }
      var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
      function timestamp() {
        var d = new Date();
        var time = [pad(d.getHours()), pad(d.getMinutes()), pad(d.getSeconds())].join(':');
        return [d.getDate(), months[d.getMonth()], time].join(' ');
      }
      exports.log = function () {
        console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
      };
      exports.inherits = inherits_browser.exports;
      exports._extend = function (origin, add) {
        if (!add || !isObject(add)) return origin;
        var keys = Object.keys(add);
        var i = keys.length;
        while (i--) {
          origin[keys[i]] = add[keys[i]];
        }
        return origin;
      };
      function hasOwnProperty(obj, prop) {
        return Object.prototype.hasOwnProperty.call(obj, prop);
      }
    })(util$3);
  
    var objectAssign = objectAssign$1;
    /*!
     * The buffer module from node.js, for the browser.
     *
     * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
     * @license  MIT
     */
    function compare$3(a, b) {
      if (a === b) {
        return 0;
      }
      var x = a.length;
      var y = b.length;
      for (var i = 0, len = Math.min(x, y); i < len; ++i) {
        if (a[i] !== b[i]) {
          x = a[i];
          y = b[i];
          break;
        }
      }
      if (x < y) {
        return -1;
      }
      if (y < x) {
        return 1;
      }
      return 0;
    }
    function isBuffer(b) {
      if (commonjsGlobal.Buffer && typeof commonjsGlobal.Buffer.isBuffer === 'function') {
        return commonjsGlobal.Buffer.isBuffer(b);
      }
      return !!(b != null && b._isBuffer);
    }
    var util$2 = util$3;
    var hasOwn = Object.prototype.hasOwnProperty;
    var pSlice = Array.prototype.slice;
    var functionsHaveNames = function () {
      return function foo() {}.name === 'foo';
    }();
    function pToString(obj) {
      return Object.prototype.toString.call(obj);
    }
    function isView(arrbuf) {
      if (isBuffer(arrbuf)) {
        return false;
      }
      if (typeof commonjsGlobal.ArrayBuffer !== 'function') {
        return false;
      }
      if (typeof ArrayBuffer.isView === 'function') {
        return ArrayBuffer.isView(arrbuf);
      }
      if (!arrbuf) {
        return false;
      }
      if (arrbuf instanceof DataView) {
        return true;
      }
      if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {
        return true;
      }
      return false;
    }
    var assert = assert$1.exports = ok;
    var regex = /\s*function\s+([^\(\s]*)\s*/;
    function getName$1(func) {
      if (!util$2.isFunction(func)) {
        return;
      }
      if (functionsHaveNames) {
        return func.name;
      }
      var str = func.toString();
      var match = str.match(regex);
      return match && match[1];
    }
    assert.AssertionError = function AssertionError(options) {
      this.name = 'AssertionError';
      this.actual = options.actual;
      this.expected = options.expected;
      this.operator = options.operator;
      if (options.message) {
        this.message = options.message;
        this.generatedMessage = false;
      } else {
        this.message = getMessage(this);
        this.generatedMessage = true;
      }
      var stackStartFunction = options.stackStartFunction || fail;
      if (Error.captureStackTrace) {
        Error.captureStackTrace(this, stackStartFunction);
      } else {
        var err = new Error();
        if (err.stack) {
          var out = err.stack;
          var fn_name = getName$1(stackStartFunction);
          var idx = out.indexOf('\n' + fn_name);
          if (idx >= 0) {
            var next_line = out.indexOf('\n', idx + 1);
            out = out.substring(next_line + 1);
          }
          this.stack = out;
        }
      }
    };
    util$2.inherits(assert.AssertionError, Error);
    function truncate(s, n) {
      if (typeof s === 'string') {
        return s.length < n ? s : s.slice(0, n);
      } else {
        return s;
      }
    }
    function inspect(something) {
      if (functionsHaveNames || !util$2.isFunction(something)) {
        return util$2.inspect(something);
      }
      var rawname = getName$1(something);
      var name = rawname ? ': ' + rawname : '';
      return '[Function' + name + ']';
    }
    function getMessage(self) {
      return truncate(inspect(self.actual), 128) + ' ' + self.operator + ' ' + truncate(inspect(self.expected), 128);
    }
    function fail(actual, expected, message, operator, stackStartFunction) {
      throw new assert.AssertionError({
        message: message,
        actual: actual,
        expected: expected,
        operator: operator,
        stackStartFunction: stackStartFunction
      });
    }
    assert.fail = fail;
    function ok(value, message) {
      if (!value) fail(value, true, message, '==', assert.ok);
    }
    assert.ok = ok;
    assert.equal = function equal(actual, expected, message) {
      if (actual != expected) fail(actual, expected, message, '==', assert.equal);
    };
    assert.notEqual = function notEqual(actual, expected, message) {
      if (actual == expected) {
        fail(actual, expected, message, '!=', assert.notEqual);
      }
    };
    assert.deepEqual = function deepEqual(actual, expected, message) {
      if (!_deepEqual(actual, expected, false)) {
        fail(actual, expected, message, 'deepEqual', assert.deepEqual);
      }
    };
    assert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {
      if (!_deepEqual(actual, expected, true)) {
        fail(actual, expected, message, 'deepStrictEqual', assert.deepStrictEqual);
      }
    };
    function _deepEqual(actual, expected, strict, memos) {
      if (actual === expected) {
        return true;
      } else if (isBuffer(actual) && isBuffer(expected)) {
        return compare$3(actual, expected) === 0;
      } else if (util$2.isDate(actual) && util$2.isDate(expected)) {
        return actual.getTime() === expected.getTime();
      } else if (util$2.isRegExp(actual) && util$2.isRegExp(expected)) {
        return actual.source === expected.source && actual.global === expected.global && actual.multiline === expected.multiline && actual.lastIndex === expected.lastIndex && actual.ignoreCase === expected.ignoreCase;
      } else if ((actual === null || typeof actual !== 'object') && (expected === null || typeof expected !== 'object')) {
        return strict ? actual === expected : actual == expected;
      } else if (isView(actual) && isView(expected) && pToString(actual) === pToString(expected) && !(actual instanceof Float32Array || actual instanceof Float64Array)) {
        return compare$3(new Uint8Array(actual.buffer), new Uint8Array(expected.buffer)) === 0;
      } else if (isBuffer(actual) !== isBuffer(expected)) {
        return false;
      } else {
        memos = memos || {
          actual: [],
          expected: []
        };
        var actualIndex = memos.actual.indexOf(actual);
        if (actualIndex !== -1) {
          if (actualIndex === memos.expected.indexOf(expected)) {
            return true;
          }
        }
        memos.actual.push(actual);
        memos.expected.push(expected);
        return objEquiv(actual, expected, strict, memos);
      }
    }
    function isArguments(object) {
      return Object.prototype.toString.call(object) == '[object Arguments]';
    }
    function objEquiv(a, b, strict, actualVisitedObjects) {
      if (a === null || a === undefined || b === null || b === undefined) return false;
      if (util$2.isPrimitive(a) || util$2.isPrimitive(b)) return a === b;
      if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b)) return false;
      var aIsArgs = isArguments(a);
      var bIsArgs = isArguments(b);
      if (aIsArgs && !bIsArgs || !aIsArgs && bIsArgs) return false;
      if (aIsArgs) {
        a = pSlice.call(a);
        b = pSlice.call(b);
        return _deepEqual(a, b, strict);
      }
      var ka = objectKeys(a);
      var kb = objectKeys(b);
      var key, i;
      if (ka.length !== kb.length) return false;
      ka.sort();
      kb.sort();
      for (i = ka.length - 1; i >= 0; i--) {
        if (ka[i] !== kb[i]) return false;
      }
      for (i = ka.length - 1; i >= 0; i--) {
        key = ka[i];
        if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects)) return false;
      }
      return true;
    }
    assert.notDeepEqual = function notDeepEqual(actual, expected, message) {
      if (_deepEqual(actual, expected, false)) {
        fail(actual, expected, message, 'notDeepEqual', assert.notDeepEqual);
      }
    };
    assert.notDeepStrictEqual = notDeepStrictEqual;
    function notDeepStrictEqual(actual, expected, message) {
      if (_deepEqual(actual, expected, true)) {
        fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);
      }
    }
    assert.strictEqual = function strictEqual(actual, expected, message) {
      if (actual !== expected) {
        fail(actual, expected, message, '===', assert.strictEqual);
      }
    };
    assert.notStrictEqual = function notStrictEqual(actual, expected, message) {
      if (actual === expected) {
        fail(actual, expected, message, '!==', assert.notStrictEqual);
      }
    };
    function expectedException(actual, expected) {
      if (!actual || !expected) {
        return false;
      }
      if (Object.prototype.toString.call(expected) == '[object RegExp]') {
        return expected.test(actual);
      }
      try {
        if (actual instanceof expected) {
          return true;
        }
      } catch (e) {}
      if (Error.isPrototypeOf(expected)) {
        return false;
      }
      return expected.call({}, actual) === true;
    }
    function _tryBlock(block) {
      var error;
      try {
        block();
      } catch (e) {
        error = e;
      }
      return error;
    }
    function _throws(shouldThrow, block, expected, message) {
      var actual;
      if (typeof block !== 'function') {
        throw new TypeError('"block" argument must be a function');
      }
      if (typeof expected === 'string') {
        message = expected;
        expected = null;
      }
      actual = _tryBlock(block);
      message = (expected && expected.name ? ' (' + expected.name + ').' : '.') + (message ? ' ' + message : '.');
      if (shouldThrow && !actual) {
        fail(actual, expected, 'Missing expected exception' + message);
      }
      var userProvidedMessage = typeof message === 'string';
      var isUnwantedException = !shouldThrow && util$2.isError(actual);
      var isUnexpectedException = !shouldThrow && actual && !expected;
      if (isUnwantedException && userProvidedMessage && expectedException(actual, expected) || isUnexpectedException) {
        fail(actual, expected, 'Got unwanted exception' + message);
      }
      if (shouldThrow && actual && expected && !expectedException(actual, expected) || !shouldThrow && actual) {
        throw actual;
      }
    }
    assert["throws"] = function (block, error, message) {
      _throws(true, block, error, message);
    };
    assert.doesNotThrow = function (block, error, message) {
      _throws(false, block, error, message);
    };
    assert.ifError = function (err) {
      if (err) throw err;
    };
    function strict(value, message) {
      if (!value) fail(value, true, message, '==', strict);
    }
    assert.strict = objectAssign(strict, assert, {
      equal: assert.strictEqual,
      deepEqual: assert.deepStrictEqual,
      notEqual: assert.notStrictEqual,
      notDeepEqual: assert.notDeepStrictEqual
    });
    assert.strict.strict = assert.strict;
    var objectKeys = Object.keys || function (obj) {
      var keys = [];
      for (var key in obj) {
        if (hasOwn.call(obj, key)) keys.push(key);
      }
      return keys;
    };
  
    var callExpression$9 = callExpression$e,
      cloneNode$a = cloneNode$j,
      expressionStatement$3 = expressionStatement$a,
      identifier$8 = identifier$i,
      importDeclaration = importDeclaration$1,
      importDefaultSpecifier = importDefaultSpecifier$1,
      importNamespaceSpecifier = importNamespaceSpecifier$1,
      importSpecifier = importSpecifier$1,
      memberExpression$9 = memberExpression$c,
      stringLiteral$5 = stringLiteral$8,
      variableDeclaration$4 = variableDeclaration$8,
      variableDeclarator$4 = variableDeclarator$8;
    var ImportBuilder = function () {
      function ImportBuilder(importedSource, scope, hub) {
        this._statements = [];
        this._resultName = null;
        this._importedSource = void 0;
        this._scope = scope;
        this._hub = hub;
        this._importedSource = importedSource;
      }
      var _proto = ImportBuilder.prototype;
      _proto.done = function done() {
        return {
          statements: this._statements,
          resultName: this._resultName
        };
      };
      _proto["import"] = function _import() {
        this._statements.push(importDeclaration([], stringLiteral$5(this._importedSource)));
        return this;
      };
      _proto.require = function require() {
        this._statements.push(expressionStatement$3(callExpression$9(identifier$8("require"), [stringLiteral$5(this._importedSource)])));
        return this;
      };
      _proto.namespace = function namespace(name) {
        if (name === void 0) {
          name = "namespace";
        }
        var local = this._scope.generateUidIdentifier(name);
        var statement = this._statements[this._statements.length - 1];
        assert$1.exports(statement.type === "ImportDeclaration");
        assert$1.exports(statement.specifiers.length === 0);
        statement.specifiers = [importNamespaceSpecifier(local)];
        this._resultName = cloneNode$a(local);
        return this;
      };
      _proto["default"] = function _default(name) {
        var id = this._scope.generateUidIdentifier(name);
        var statement = this._statements[this._statements.length - 1];
        assert$1.exports(statement.type === "ImportDeclaration");
        assert$1.exports(statement.specifiers.length === 0);
        statement.specifiers = [importDefaultSpecifier(id)];
        this._resultName = cloneNode$a(id);
        return this;
      };
      _proto.named = function named(name, importName) {
        if (importName === "default") return this["default"](name);
        var id = this._scope.generateUidIdentifier(name);
        var statement = this._statements[this._statements.length - 1];
        assert$1.exports(statement.type === "ImportDeclaration");
        assert$1.exports(statement.specifiers.length === 0);
        statement.specifiers = [importSpecifier(id, identifier$8(importName))];
        this._resultName = cloneNode$a(id);
        return this;
      };
      _proto["var"] = function _var(name) {
        var id = this._scope.generateUidIdentifier(name);
        var statement = this._statements[this._statements.length - 1];
        if (statement.type !== "ExpressionStatement") {
          assert$1.exports(this._resultName);
          statement = expressionStatement$3(this._resultName);
          this._statements.push(statement);
        }
        this._statements[this._statements.length - 1] = variableDeclaration$4("var", [variableDeclarator$4(id, statement.expression)]);
        this._resultName = cloneNode$a(id);
        return this;
      };
      _proto.defaultInterop = function defaultInterop() {
        return this._interop(this._hub.addHelper("interopRequireDefault"));
      };
      _proto.wildcardInterop = function wildcardInterop() {
        return this._interop(this._hub.addHelper("interopRequireWildcard"));
      };
      _proto._interop = function _interop(callee) {
        var statement = this._statements[this._statements.length - 1];
        if (statement.type === "ExpressionStatement") {
          statement.expression = callExpression$9(callee, [statement.expression]);
        } else if (statement.type === "VariableDeclaration") {
          assert$1.exports(statement.declarations.length === 1);
          statement.declarations[0].init = callExpression$9(callee, [statement.declarations[0].init]);
        } else {
          assert$1.exports.fail("Unexpected type.");
        }
        return this;
      };
      _proto.prop = function prop(name) {
        var statement = this._statements[this._statements.length - 1];
        if (statement.type === "ExpressionStatement") {
          statement.expression = memberExpression$9(statement.expression, identifier$8(name));
        } else if (statement.type === "VariableDeclaration") {
          assert$1.exports(statement.declarations.length === 1);
          statement.declarations[0].init = memberExpression$9(statement.declarations[0].init, identifier$8(name));
        } else {
          assert$1.exports.fail("Unexpected type:" + statement.type);
        }
        return this;
      };
      _proto.read = function read(name) {
        this._resultName = memberExpression$9(this._resultName, identifier$8(name));
      };
      return _createClass(ImportBuilder);
    }();
  
    function isModule(path) {
      return path.node.sourceType === "module";
    }
  
    var numericLiteral$4 = numericLiteral$8,
      sequenceExpression$5 = sequenceExpression$7;
    var ImportInjector = function () {
      function ImportInjector(path, importedSource, opts) {
        this._defaultOpts = {
          importedSource: null,
          importedType: "commonjs",
          importedInterop: "babel",
          importingInterop: "babel",
          ensureLiveReference: false,
          ensureNoContext: false,
          importPosition: "before"
        };
        var programPath = path.find(function (p) {
          return p.isProgram();
        });
        this._programPath = programPath;
        this._programScope = programPath.scope;
        this._hub = programPath.hub;
        this._defaultOpts = this._applyDefaults(importedSource, opts, true);
      }
      var _proto = ImportInjector.prototype;
      _proto.addDefault = function addDefault(importedSourceIn, opts) {
        return this.addNamed("default", importedSourceIn, opts);
      };
      _proto.addNamed = function addNamed(importName, importedSourceIn, opts) {
        assert$1.exports(typeof importName === "string");
        return this._generateImport(this._applyDefaults(importedSourceIn, opts), importName);
      };
      _proto.addNamespace = function addNamespace(importedSourceIn, opts) {
        return this._generateImport(this._applyDefaults(importedSourceIn, opts), null);
      };
      _proto.addSideEffect = function addSideEffect(importedSourceIn, opts) {
        return this._generateImport(this._applyDefaults(importedSourceIn, opts), void 0);
      };
      _proto._applyDefaults = function _applyDefaults(importedSource, opts, isInit) {
        if (isInit === void 0) {
          isInit = false;
        }
        var newOpts;
        if (typeof importedSource === "string") {
          newOpts = Object.assign({}, this._defaultOpts, {
            importedSource: importedSource
          }, opts);
        } else {
          assert$1.exports(!opts, "Unexpected secondary arguments.");
          newOpts = Object.assign({}, this._defaultOpts, importedSource);
        }
        if (!isInit && opts) {
          if (opts.nameHint !== undefined) newOpts.nameHint = opts.nameHint;
          if (opts.blockHoist !== undefined) newOpts.blockHoist = opts.blockHoist;
        }
        return newOpts;
      };
      _proto._generateImport = function _generateImport(opts, importName) {
        var isDefault = importName === "default";
        var isNamed = !!importName && !isDefault;
        var isNamespace = importName === null;
        var importedSource = opts.importedSource,
          importedType = opts.importedType,
          importedInterop = opts.importedInterop,
          importingInterop = opts.importingInterop,
          ensureLiveReference = opts.ensureLiveReference,
          ensureNoContext = opts.ensureNoContext,
          nameHint = opts.nameHint,
          importPosition = opts.importPosition,
          blockHoist = opts.blockHoist;
        var name = nameHint || importName;
        var isMod = isModule(this._programPath);
        var isModuleForNode = isMod && importingInterop === "node";
        var isModuleForBabel = isMod && importingInterop === "babel";
        if (importPosition === "after" && !isMod) {
          throw new Error("\"importPosition\": \"after\" is only supported in modules");
        }
        var builder = new ImportBuilder(importedSource, this._programScope, this._hub);
        if (importedType === "es6") {
          if (!isModuleForNode && !isModuleForBabel) {
            throw new Error("Cannot import an ES6 module from CommonJS");
          }
          builder["import"]();
          if (isNamespace) {
            builder.namespace(nameHint || importedSource);
          } else if (isDefault || isNamed) {
            builder.named(name, importName);
          }
        } else if (importedType !== "commonjs") {
          throw new Error("Unexpected interopType \"" + importedType + "\"");
        } else if (importedInterop === "babel") {
          if (isModuleForNode) {
            name = name !== "default" ? name : importedSource;
            var es6Default = importedSource + "$es6Default";
            builder["import"]();
            if (isNamespace) {
              builder["default"](es6Default)["var"](name || importedSource).wildcardInterop();
            } else if (isDefault) {
              if (ensureLiveReference) {
                builder["default"](es6Default)["var"](name || importedSource).defaultInterop().read("default");
              } else {
                builder["default"](es6Default)["var"](name).defaultInterop().prop(importName);
              }
            } else if (isNamed) {
              builder["default"](es6Default).read(importName);
            }
          } else if (isModuleForBabel) {
            builder["import"]();
            if (isNamespace) {
              builder.namespace(name || importedSource);
            } else if (isDefault || isNamed) {
              builder.named(name, importName);
            }
          } else {
            builder.require();
            if (isNamespace) {
              builder["var"](name || importedSource).wildcardInterop();
            } else if ((isDefault || isNamed) && ensureLiveReference) {
              if (isDefault) {
                name = name !== "default" ? name : importedSource;
                builder["var"](name).read(importName);
                builder.defaultInterop();
              } else {
                builder["var"](importedSource).read(importName);
              }
            } else if (isDefault) {
              builder["var"](name).defaultInterop().prop(importName);
            } else if (isNamed) {
              builder["var"](name).prop(importName);
            }
          }
        } else if (importedInterop === "compiled") {
          if (isModuleForNode) {
            builder["import"]();
            if (isNamespace) {
              builder["default"](name || importedSource);
            } else if (isDefault || isNamed) {
              builder["default"](importedSource).read(name);
            }
          } else if (isModuleForBabel) {
            builder["import"]();
            if (isNamespace) {
              builder.namespace(name || importedSource);
            } else if (isDefault || isNamed) {
              builder.named(name, importName);
            }
          } else {
            builder.require();
            if (isNamespace) {
              builder["var"](name || importedSource);
            } else if (isDefault || isNamed) {
              if (ensureLiveReference) {
                builder["var"](importedSource).read(name);
              } else {
                builder.prop(importName)["var"](name);
              }
            }
          }
        } else if (importedInterop === "uncompiled") {
          if (isDefault && ensureLiveReference) {
            throw new Error("No live reference for commonjs default");
          }
          if (isModuleForNode) {
            builder["import"]();
            if (isNamespace) {
              builder["default"](name || importedSource);
            } else if (isDefault) {
              builder["default"](name);
            } else if (isNamed) {
              builder["default"](importedSource).read(name);
            }
          } else if (isModuleForBabel) {
            builder["import"]();
            if (isNamespace) {
              builder["default"](name || importedSource);
            } else if (isDefault) {
              builder["default"](name);
            } else if (isNamed) {
              builder.named(name, importName);
            }
          } else {
            builder.require();
            if (isNamespace) {
              builder["var"](name || importedSource);
            } else if (isDefault) {
              builder["var"](name);
            } else if (isNamed) {
              if (ensureLiveReference) {
                builder["var"](importedSource).read(name);
              } else {
                builder["var"](name).prop(importName);
              }
            }
          }
        } else {
          throw new Error("Unknown importedInterop \"" + importedInterop + "\".");
        }
        var _builder$done = builder.done(),
          statements = _builder$done.statements,
          resultName = _builder$done.resultName;
        this._insertStatements(statements, importPosition, blockHoist);
        if ((isDefault || isNamed) && ensureNoContext && resultName.type !== "Identifier") {
          return sequenceExpression$5([numericLiteral$4(0), resultName]);
        }
        return resultName;
      };
      _proto._insertStatements = function _insertStatements(statements, importPosition, blockHoist) {
        if (importPosition === void 0) {
          importPosition = "before";
        }
        if (blockHoist === void 0) {
          blockHoist = 3;
        }
        var body = this._programPath.get("body");
        if (importPosition === "after") {
          for (var i = body.length - 1; i >= 0; i--) {
            if (body[i].isImportDeclaration()) {
              body[i].insertAfter(statements);
              return;
            }
          }
        } else {
          statements.forEach(function (node) {
            node._blockHoist = blockHoist;
          });
          var targetPath = body.find(function (p) {
            var val = p.node._blockHoist;
            return Number.isFinite(val) && val < 4;
          });
          if (targetPath) {
            targetPath.insertBefore(statements);
            return;
          }
        }
        this._programPath.unshiftContainer("body", statements);
      };
      return _createClass(ImportInjector);
    }();
  
    function addDefault(path, importedSource, opts) {
      return new ImportInjector(path).addDefault(importedSource, opts);
    }
    function addNamed(path, name, importedSource, opts) {
      return new ImportInjector(path).addNamed(name, importedSource, opts);
    }
    function addNamespace(path, importedSource, opts) {
      return new ImportInjector(path).addNamespace(importedSource, opts);
    }
  
    var numericLiteral$3 = numericLiteral$8,
      unaryExpression$3 = unaryExpression$7;
    var rewriteThisVisitor = traverse.visitors.merge([visitor$5, {
      ThisExpression: function ThisExpression(path) {
        path.replaceWith(unaryExpression$3("void", numericLiteral$3(0), true));
      }
    }]);
    function rewriteThis(programPath) {
      traverse(programPath.node, Object.assign({}, rewriteThisVisitor, {
        noScope: true
      }));
    }
  
    var LOGICAL_OPERATORS$1 = LOGICAL_OPERATORS$3,
      assignmentExpression$7 = assignmentExpression$d,
      binaryExpression$3 = binaryExpression$5,
      cloneNode$9 = cloneNode$j,
      identifier$7 = identifier$i,
      logicalExpression$1 = logicalExpression$3,
      numericLiteral$2 = numericLiteral$8,
      sequenceExpression$4 = sequenceExpression$7,
      unaryExpression$2 = unaryExpression$7;
    var simpleAssignmentVisitor = {
      AssignmentExpression: {
        exit: function exit(path) {
          var scope = this.scope,
            seen = this.seen,
            bindingNames = this.bindingNames;
          if (path.node.operator === "=") return;
          if (seen.has(path.node)) return;
          seen.add(path.node);
          var left = path.get("left");
          if (!left.isIdentifier()) return;
          var localName = left.node.name;
          if (!bindingNames.has(localName)) return;
          if (scope.getBinding(localName) !== path.scope.getBinding(localName)) {
            return;
          }
          var operator = path.node.operator.slice(0, -1);
          if (LOGICAL_OPERATORS$1.includes(operator)) {
            path.replaceWith(logicalExpression$1(operator, path.node.left, assignmentExpression$7("=", cloneNode$9(path.node.left), path.node.right)));
          } else {
            path.node.right = binaryExpression$3(operator, cloneNode$9(path.node.left), path.node.right);
            path.node.operator = "=";
          }
        }
      }
    };
    {
      simpleAssignmentVisitor.UpdateExpression = {
        exit: function exit(path) {
          if (!this.includeUpdateExpression) return;
          var scope = this.scope,
            bindingNames = this.bindingNames;
          var arg = path.get("argument");
          if (!arg.isIdentifier()) return;
          var localName = arg.node.name;
          if (!bindingNames.has(localName)) return;
          if (scope.getBinding(localName) !== path.scope.getBinding(localName)) {
            return;
          }
          if (path.parentPath.isExpressionStatement() && !path.isCompletionRecord()) {
            var operator = path.node.operator == "++" ? "+=" : "-=";
            path.replaceWith(assignmentExpression$7(operator, arg.node, numericLiteral$2(1)));
          } else if (path.node.prefix) {
            path.replaceWith(assignmentExpression$7("=", identifier$7(localName), binaryExpression$3(path.node.operator[0], unaryExpression$2("+", arg.node), numericLiteral$2(1))));
          } else {
            var old = path.scope.generateUidIdentifierBasedOnNode(arg.node, "old");
            var varName = old.name;
            path.scope.push({
              id: old
            });
            var binary = binaryExpression$3(path.node.operator[0], identifier$7(varName), numericLiteral$2(1));
            path.replaceWith(sequenceExpression$4([assignmentExpression$7("=", identifier$7(varName), unaryExpression$2("+", arg.node)), assignmentExpression$7("=", cloneNode$9(arg.node), binary), identifier$7(varName)]));
          }
        }
      };
    }
    function simplifyAccess(path, bindingNames) {
      {
        var _arguments$;
        path.traverse(simpleAssignmentVisitor, {
          scope: path.scope,
          bindingNames: bindingNames,
          seen: new WeakSet(),
          includeUpdateExpression: (_arguments$ = arguments[2]) != null ? _arguments$ : true
        });
      }
    }
  
    var _templateObject$u;
    var assignmentExpression$6 = assignmentExpression$d,
      callExpression$8 = callExpression$e,
      cloneNode$8 = cloneNode$j,
      expressionStatement$2 = expressionStatement$a,
      getOuterBindingIdentifiers = getOuterBindingIdentifiers$2,
      identifier$6 = identifier$i,
      isMemberExpression$2 = isMemberExpression$8,
      isVariableDeclaration = isVariableDeclaration$3,
      jsxIdentifier = jsxIdentifier$2,
      jsxMemberExpression = jsxMemberExpression$1,
      memberExpression$8 = memberExpression$c,
      numericLiteral$1 = numericLiteral$8,
      sequenceExpression$3 = sequenceExpression$7,
      stringLiteral$4 = stringLiteral$8,
      variableDeclaration$3 = variableDeclaration$8,
      variableDeclarator$3 = variableDeclarator$8;
    function isInType$1(path) {
      do {
        switch (path.parent.type) {
          case "TSTypeAnnotation":
          case "TSTypeAliasDeclaration":
          case "TSTypeReference":
          case "TypeAnnotation":
          case "TypeAlias":
            return true;
          case "ExportSpecifier":
            return path.parentPath.parent.exportKind === "type";
          default:
            if (path.parentPath.isStatement() || path.parentPath.isExpression()) {
              return false;
            }
        }
      } while (path = path.parentPath);
    }
    function rewriteLiveReferences(programPath, metadata) {
      var imported = new Map();
      var exported = new Map();
      var requeueInParent = function requeueInParent(path) {
        programPath.requeue(path);
      };
      for (var _iterator = _createForOfIteratorHelperLoose(metadata.source), _step; !(_step = _iterator()).done;) {
        var _step$value = _slicedToArray(_step.value, 2),
          source = _step$value[0],
          data = _step$value[1];
        for (var _iterator3 = _createForOfIteratorHelperLoose(data.imports), _step3; !(_step3 = _iterator3()).done;) {
          var _step3$value = _slicedToArray(_step3.value, 2),
            localName = _step3$value[0],
            importName = _step3$value[1];
          imported.set(localName, [source, importName, null]);
        }
        for (var _iterator4 = _createForOfIteratorHelperLoose(data.importsNamespace), _step4; !(_step4 = _iterator4()).done;) {
          var _localName = _step4.value;
          imported.set(_localName, [source, null, _localName]);
        }
      }
      for (var _iterator2 = _createForOfIteratorHelperLoose(metadata.local), _step2; !(_step2 = _iterator2()).done;) {
        var _exportMeta;
        var _step2$value = _slicedToArray(_step2.value, 2),
          local = _step2$value[0],
          _data = _step2$value[1];
        var exportMeta = exported.get(local);
        if (!exportMeta) {
          exportMeta = [];
          exported.set(local, exportMeta);
        }
        (_exportMeta = exportMeta).push.apply(_exportMeta, _toConsumableArray(_data.names));
      }
      var rewriteBindingInitVisitorState = {
        metadata: metadata,
        requeueInParent: requeueInParent,
        scope: programPath.scope,
        exported: exported
      };
      programPath.traverse(rewriteBindingInitVisitor, rewriteBindingInitVisitorState);
      var bindingNames = new Set([].concat(_toConsumableArray(Array.from(imported.keys())), _toConsumableArray(Array.from(exported.keys()))));
      {
        simplifyAccess(programPath, bindingNames, false);
      }
      var rewriteReferencesVisitorState = {
        seen: new WeakSet(),
        metadata: metadata,
        requeueInParent: requeueInParent,
        scope: programPath.scope,
        imported: imported,
        exported: exported,
        buildImportReference: function buildImportReference(_ref, identNode) {
          var _ref2 = _slicedToArray(_ref, 3),
            source = _ref2[0],
            importName = _ref2[1],
            localName = _ref2[2];
          var meta = metadata.source.get(source);
          meta.referenced = true;
          if (localName) {
            if (meta.lazy) {
              identNode = callExpression$8(identNode, []);
            }
            return identNode;
          }
          var namespace = identifier$6(meta.name);
          if (meta.lazy) namespace = callExpression$8(namespace, []);
          if (importName === "default" && meta.interop === "node-default") {
            return namespace;
          }
          var computed = metadata.stringSpecifiers.has(importName);
          return memberExpression$8(namespace, computed ? stringLiteral$4(importName) : identifier$6(importName), computed);
        }
      };
      programPath.traverse(rewriteReferencesVisitor, rewriteReferencesVisitorState);
    }
    var rewriteBindingInitVisitor = {
      Scope: function Scope(path) {
        path.skip();
      },
      ClassDeclaration: function ClassDeclaration(path) {
        var requeueInParent = this.requeueInParent,
          exported = this.exported,
          metadata = this.metadata;
        var id = path.node.id;
        if (!id) throw new Error("Expected class to have a name");
        var localName = id.name;
        var exportNames = exported.get(localName) || [];
        if (exportNames.length > 0) {
          var statement = expressionStatement$2(buildBindingExportAssignmentExpression(metadata, exportNames, identifier$6(localName), path.scope));
          statement._blockHoist = path.node._blockHoist;
          requeueInParent(path.insertAfter(statement)[0]);
        }
      },
      VariableDeclaration: function VariableDeclaration(path) {
        var requeueInParent = this.requeueInParent,
          exported = this.exported,
          metadata = this.metadata;
        Object.keys(path.getOuterBindingIdentifiers()).forEach(function (localName) {
          var exportNames = exported.get(localName) || [];
          if (exportNames.length > 0) {
            var statement = expressionStatement$2(buildBindingExportAssignmentExpression(metadata, exportNames, identifier$6(localName), path.scope));
            statement._blockHoist = path.node._blockHoist;
            requeueInParent(path.insertAfter(statement)[0]);
          }
        });
      }
    };
    var buildBindingExportAssignmentExpression = function buildBindingExportAssignmentExpression(metadata, exportNames, localExpr, scope) {
      var exportsObjectName = metadata.exportName;
      for (var currentScope = scope; currentScope != null; currentScope = currentScope.parent) {
        if (currentScope.hasOwnBinding(exportsObjectName)) {
          currentScope.rename(exportsObjectName);
        }
      }
      return (exportNames || []).reduce(function (expr, exportName) {
        var stringSpecifiers = metadata.stringSpecifiers;
        var computed = stringSpecifiers.has(exportName);
        return assignmentExpression$6("=", memberExpression$8(identifier$6(exportsObjectName), computed ? stringLiteral$4(exportName) : identifier$6(exportName), computed), expr);
      }, localExpr);
    };
    var buildImportThrow = function buildImportThrow(localName) {
      return template$2.expression.ast(_templateObject$u || (_templateObject$u = _taggedTemplateLiteralLoose(["\n    (function() {\n      throw new Error('\"' + '", "' + '\" is read-only.');\n    })()\n  "])), localName);
    };
    var rewriteReferencesVisitor = {
      ReferencedIdentifier: function ReferencedIdentifier(path) {
        var seen = this.seen,
          buildImportReference = this.buildImportReference,
          scope = this.scope,
          imported = this.imported,
          requeueInParent = this.requeueInParent;
        if (seen.has(path.node)) return;
        seen.add(path.node);
        var localName = path.node.name;
        var importData = imported.get(localName);
        if (importData) {
          if (isInType$1(path)) {
            throw path.buildCodeFrameError("Cannot transform the imported binding \"" + localName + "\" since it's also used in a type annotation. " + "Please strip type annotations using @babel/preset-typescript or @babel/preset-flow.");
          }
          var localBinding = path.scope.getBinding(localName);
          var rootBinding = scope.getBinding(localName);
          if (rootBinding !== localBinding) return;
          var ref = buildImportReference(importData, path.node);
          ref.loc = path.node.loc;
          if ((path.parentPath.isCallExpression({
            callee: path.node
          }) || path.parentPath.isOptionalCallExpression({
            callee: path.node
          }) || path.parentPath.isTaggedTemplateExpression({
            tag: path.node
          })) && isMemberExpression$2(ref)) {
            path.replaceWith(sequenceExpression$3([numericLiteral$1(0), ref]));
          } else if (path.isJSXIdentifier() && isMemberExpression$2(ref)) {
            var object = ref.object,
              property = ref.property;
            path.replaceWith(jsxMemberExpression(jsxIdentifier(object.name), jsxIdentifier(property.name)));
          } else {
            path.replaceWith(ref);
          }
          requeueInParent(path);
          path.skip();
        }
      },
      UpdateExpression: function UpdateExpression(path) {
        var scope = this.scope,
          seen = this.seen,
          imported = this.imported,
          exported = this.exported,
          requeueInParent = this.requeueInParent,
          buildImportReference = this.buildImportReference;
        if (seen.has(path.node)) return;
        seen.add(path.node);
        var arg = path.get("argument");
        if (arg.isMemberExpression()) return;
        var update = path.node;
        if (arg.isIdentifier()) {
          var localName = arg.node.name;
          if (scope.getBinding(localName) !== path.scope.getBinding(localName)) {
            return;
          }
          var exportedNames = exported.get(localName);
          var importData = imported.get(localName);
          if ((exportedNames == null ? void 0 : exportedNames.length) > 0 || importData) {
            if (importData) {
              path.replaceWith(assignmentExpression$6(update.operator[0] + "=", buildImportReference(importData, arg.node), buildImportThrow(localName)));
            } else if (update.prefix) {
              path.replaceWith(buildBindingExportAssignmentExpression(this.metadata, exportedNames, cloneNode$8(update), path.scope));
            } else {
              var ref = scope.generateDeclaredUidIdentifier(localName);
              path.replaceWith(sequenceExpression$3([assignmentExpression$6("=", cloneNode$8(ref), cloneNode$8(update)), buildBindingExportAssignmentExpression(this.metadata, exportedNames, identifier$6(localName), path.scope), cloneNode$8(ref)]));
            }
          }
        }
        requeueInParent(path);
        path.skip();
      },
      AssignmentExpression: {
        exit: function exit(path) {
          var _this = this;
          var scope = this.scope,
            seen = this.seen,
            imported = this.imported,
            exported = this.exported,
            requeueInParent = this.requeueInParent,
            buildImportReference = this.buildImportReference;
          if (seen.has(path.node)) return;
          seen.add(path.node);
          var left = path.get("left");
          if (left.isMemberExpression()) return;
          if (left.isIdentifier()) {
            var localName = left.node.name;
            if (scope.getBinding(localName) !== path.scope.getBinding(localName)) {
              return;
            }
            var exportedNames = exported.get(localName);
            var importData = imported.get(localName);
            if ((exportedNames == null ? void 0 : exportedNames.length) > 0 || importData) {
              assert$1.exports(path.node.operator === "=", "Path was not simplified");
              var assignment = path.node;
              if (importData) {
                assignment.left = buildImportReference(importData, left.node);
                assignment.right = sequenceExpression$3([assignment.right, buildImportThrow(localName)]);
              }
              path.replaceWith(buildBindingExportAssignmentExpression(this.metadata, exportedNames, assignment, path.scope));
              requeueInParent(path);
            }
          } else {
            var ids = left.getOuterBindingIdentifiers();
            var programScopeIds = Object.keys(ids).filter(function (localName) {
              return scope.getBinding(localName) === path.scope.getBinding(localName);
            });
            var id = programScopeIds.find(function (localName) {
              return imported.has(localName);
            });
            if (id) {
              path.node.right = sequenceExpression$3([path.node.right, buildImportThrow(id)]);
            }
            var items = [];
            programScopeIds.forEach(function (localName) {
              var exportedNames = exported.get(localName) || [];
              if (exportedNames.length > 0) {
                items.push(buildBindingExportAssignmentExpression(_this.metadata, exportedNames, identifier$6(localName), path.scope));
              }
            });
            if (items.length > 0) {
              var node = sequenceExpression$3(items);
              if (path.parentPath.isExpressionStatement()) {
                node = expressionStatement$2(node);
                node._blockHoist = path.parentPath.node._blockHoist;
              }
              var statement = path.insertAfter(node)[0];
              requeueInParent(statement);
            }
          }
        }
      },
      "ForOfStatement|ForInStatement": function ForOfStatementForInStatement(path) {
        var scope = path.scope,
          node = path.node;
        var left = node.left;
        var exported = this.exported,
          imported = this.imported,
          programScope = this.scope;
        if (!isVariableDeclaration(left)) {
          var didTransformExport = false,
            importConstViolationName;
          var loopBodyScope = path.get("body").scope;
          for (var _i = 0, _Object$keys = Object.keys(getOuterBindingIdentifiers(left)); _i < _Object$keys.length; _i++) {
            var name = _Object$keys[_i];
            if (programScope.getBinding(name) === scope.getBinding(name)) {
              if (exported.has(name)) {
                didTransformExport = true;
                if (loopBodyScope.hasOwnBinding(name)) {
                  loopBodyScope.rename(name);
                }
              }
              if (imported.has(name) && !importConstViolationName) {
                importConstViolationName = name;
              }
            }
          }
          if (!didTransformExport && !importConstViolationName) {
            return;
          }
          path.ensureBlock();
          var bodyPath = path.get("body");
          var newLoopId = scope.generateUidIdentifierBasedOnNode(left);
          path.get("left").replaceWith(variableDeclaration$3("let", [variableDeclarator$3(cloneNode$8(newLoopId))]));
          scope.registerDeclaration(path.get("left"));
          if (didTransformExport) {
            bodyPath.unshiftContainer("body", expressionStatement$2(assignmentExpression$6("=", left, newLoopId)));
          }
          if (importConstViolationName) {
            bodyPath.unshiftContainer("body", expressionStatement$2(buildImportThrow(importConstViolationName)));
          }
        }
      }
    };
  
    // Copyright Joyent, Inc. and other Node contributors.
    //
    // Permission is hereby granted, free of charge, to any person obtaining a
    // copy of this software and associated documentation files (the
    // "Software"), to deal in the Software without restriction, including
    // without limitation the rights to use, copy, modify, merge, publish,
    // distribute, sublicense, and/or sell copies of the Software, and to permit
    // persons to whom the Software is furnished to do so, subject to the
    // following conditions:
    //
    // The above copyright notice and this permission notice shall be included
    // in all copies or substantial portions of the Software.
    //
    // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
    // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
    // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
    // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
    // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
    // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
    // USE OR OTHER DEALINGS IN THE SOFTWARE.
  
    // resolves . and .. elements in a path array with directory names there
    // must be no slashes, empty elements, or device names (c:\) in the array
    // (so also no leading and trailing slashes - it does not distinguish
    // relative and absolute paths)
    function normalizeArray(parts, allowAboveRoot) {
      // if the path tries to go above the root, `up` ends up > 0
      var up = 0;
      for (var i = parts.length - 1; i >= 0; i--) {
        var last = parts[i];
        if (last === '.') {
          parts.splice(i, 1);
        } else if (last === '..') {
          parts.splice(i, 1);
          up++;
        } else if (up) {
          parts.splice(i, 1);
          up--;
        }
      }
  
      // if the path is allowed to go above the root, restore leading ..s
      if (allowAboveRoot) {
        for (; up--; up) {
          parts.unshift('..');
        }
      }
  
      return parts;
    }
  
    // Split a filename into [root, dir, basename, ext], unix version
    // 'root' is just a slash, or nothing.
    var splitPathRe =
        /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;
    var splitPath = function(filename) {
      return splitPathRe.exec(filename).slice(1);
    };
  
    // path.resolve([from ...], to)
    // posix version
    function resolve$3() {
      var resolvedPath = '',
          resolvedAbsolute = false;
  
      for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {
        var path = (i >= 0) ? arguments[i] : '/';
  
        // Skip empty and invalid entries
        if (typeof path !== 'string') {
          throw new TypeError('Arguments to path.resolve must be strings');
        } else if (!path) {
          continue;
        }
  
        resolvedPath = path + '/' + resolvedPath;
        resolvedAbsolute = path.charAt(0) === '/';
      }
  
      // At this point the path should be resolved to a full absolute path, but
      // handle relative paths to be safe (might happen when process.cwd() fails)
  
      // Normalize the path
      resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function(p) {
        return !!p;
      }), !resolvedAbsolute).join('/');
  
      return ((resolvedAbsolute ? '/' : '') + resolvedPath) || '.';
    }
    // path.normalize(path)
    // posix version
    function normalize$2(path) {
      var isPathAbsolute = isAbsolute(path),
          trailingSlash = substr(path, -1) === '/';
  
      // Normalize the path
      path = normalizeArray(filter(path.split('/'), function(p) {
        return !!p;
      }), !isPathAbsolute).join('/');
  
      if (!path && !isPathAbsolute) {
        path = '.';
      }
      if (path && trailingSlash) {
        path += '/';
      }
  
      return (isPathAbsolute ? '/' : '') + path;
    }
    // posix version
    function isAbsolute(path) {
      return path.charAt(0) === '/';
    }
  
    // posix version
    function join() {
      var paths = Array.prototype.slice.call(arguments, 0);
      return normalize$2(filter(paths, function(p, index) {
        if (typeof p !== 'string') {
          throw new TypeError('Arguments to path.join must be strings');
        }
        return p;
      }).join('/'));
    }
  
  
    // path.relative(from, to)
    // posix version
    function relative(from, to) {
      from = resolve$3(from).substr(1);
      to = resolve$3(to).substr(1);
  
      function trim(arr) {
        var start = 0;
        for (; start < arr.length; start++) {
          if (arr[start] !== '') break;
        }
  
        var end = arr.length - 1;
        for (; end >= 0; end--) {
          if (arr[end] !== '') break;
        }
  
        if (start > end) return [];
        return arr.slice(start, end - start + 1);
      }
  
      var fromParts = trim(from.split('/'));
      var toParts = trim(to.split('/'));
  
      var length = Math.min(fromParts.length, toParts.length);
      var samePartsLength = length;
      for (var i = 0; i < length; i++) {
        if (fromParts[i] !== toParts[i]) {
          samePartsLength = i;
          break;
        }
      }
  
      var outputParts = [];
      for (var i = samePartsLength; i < fromParts.length; i++) {
        outputParts.push('..');
      }
  
      outputParts = outputParts.concat(toParts.slice(samePartsLength));
  
      return outputParts.join('/');
    }
  
    var sep$1 = '/';
    var delimiter = ':';
  
    function dirname(path) {
      var result = splitPath(path),
          root = result[0],
          dir = result[1];
  
      if (!root && !dir) {
        // No dirname whatsoever
        return '.';
      }
  
      if (dir) {
        // It has a dirname, strip trailing slash
        dir = dir.substr(0, dir.length - 1);
      }
  
      return root + dir;
    }
  
    function basename(path, ext) {
      var f = splitPath(path)[2];
      // TODO: make this comparison case-insensitive on windows?
      if (ext && f.substr(-1 * ext.length) === ext) {
        f = f.substr(0, f.length - ext.length);
      }
      return f;
    }
  
  
    function extname(path) {
      return splitPath(path)[3];
    }
    var path$1 = {
      extname: extname,
      basename: basename,
      dirname: dirname,
      sep: sep$1,
      delimiter: delimiter,
      relative: relative,
      join: join,
      isAbsolute: isAbsolute,
      normalize: normalize$2,
      resolve: resolve$3
    };
    function filter (xs, f) {
        if (xs.filter) return xs.filter(f);
        var res = [];
        for (var i = 0; i < xs.length; i++) {
            if (f(xs[i], i, xs)) res.push(xs[i]);
        }
        return res;
    }
  
    // String.prototype.substr - negative index don't work in IE8
    var substr = 'ab'.substr(-1) === 'b' ?
        function (str, start, len) { return str.substr(start, len) } :
        function (str, start, len) {
            if (start < 0) start = str.length + start;
            return str.substr(start, len);
        }
    ;
  
    var _polyfillNode_path = /*#__PURE__*/Object.freeze({
      __proto__: null,
      resolve: resolve$3,
      normalize: normalize$2,
      isAbsolute: isAbsolute,
      join: join,
      relative: relative,
      sep: sep$1,
      delimiter: delimiter,
      dirname: dirname,
      basename: basename,
      extname: extname,
      'default': path$1
    });
  
    function hasExports(metadata) {
      return metadata.hasExports;
    }
    function isSideEffectImport(source) {
      return source.imports.size === 0 && source.importsNamespace.size === 0 && source.reexports.size === 0 && source.reexportNamespace.size === 0 && !source.reexportAll;
    }
    function validateImportInteropOption(importInterop) {
      if (typeof importInterop !== "function" && importInterop !== "none" && importInterop !== "babel" && importInterop !== "node") {
        throw new Error(".importInterop must be one of \"none\", \"babel\", \"node\", or a function returning one of those values (received " + importInterop + ").");
      }
      return importInterop;
    }
    function resolveImportInterop(importInterop, source, filename) {
      if (typeof importInterop === "function") {
        return validateImportInteropOption(importInterop(source, filename));
      }
      return importInterop;
    }
    function normalizeModuleAndLoadMetadata(programPath, exportName, _ref) {
      var importInterop = _ref.importInterop,
        _ref$initializeReexpo = _ref.initializeReexports,
        initializeReexports = _ref$initializeReexpo === void 0 ? false : _ref$initializeReexpo,
        _ref$lazy = _ref.lazy,
        lazy = _ref$lazy === void 0 ? false : _ref$lazy,
        _ref$esNamespaceOnly = _ref.esNamespaceOnly,
        esNamespaceOnly = _ref$esNamespaceOnly === void 0 ? false : _ref$esNamespaceOnly,
        filename = _ref.filename;
      if (!exportName) {
        exportName = programPath.scope.generateUidIdentifier("exports").name;
      }
      var stringSpecifiers = new Set();
      nameAnonymousExports(programPath);
      var _getModuleMetadata = getModuleMetadata(programPath, {
          initializeReexports: initializeReexports,
          lazy: lazy
        }, stringSpecifiers),
        local = _getModuleMetadata.local,
        sources = _getModuleMetadata.sources,
        hasExports = _getModuleMetadata.hasExports;
      removeImportExportDeclarations(programPath);
      for (var _iterator = _createForOfIteratorHelperLoose(sources), _step; !(_step = _iterator()).done;) {
        var _step$value = _slicedToArray(_step.value, 2),
          _source = _step$value[0],
          metadata = _step$value[1];
        if (metadata.importsNamespace.size > 0) {
          metadata.name = metadata.importsNamespace.values().next().value;
        }
        var resolvedInterop = resolveImportInterop(importInterop, _source, filename);
        if (resolvedInterop === "none") {
          metadata.interop = "none";
        } else if (resolvedInterop === "node" && metadata.interop === "namespace") {
          metadata.interop = "node-namespace";
        } else if (resolvedInterop === "node" && metadata.interop === "default") {
          metadata.interop = "node-default";
        } else if (esNamespaceOnly && metadata.interop === "namespace") {
          metadata.interop = "default";
        }
      }
      return {
        exportName: exportName,
        exportNameListName: null,
        hasExports: hasExports,
        local: local,
        source: sources,
        stringSpecifiers: stringSpecifiers
      };
    }
    function getExportSpecifierName$1(path, stringSpecifiers) {
      if (path.isIdentifier()) {
        return path.node.name;
      } else if (path.isStringLiteral()) {
        var stringValue = path.node.value;
        if (!isIdentifierName(stringValue)) {
          stringSpecifiers.add(stringValue);
        }
        return stringValue;
      } else {
        throw new Error("Expected export specifier to be either Identifier or StringLiteral, got " + path.node.type);
      }
    }
    function assertExportSpecifier(path) {
      if (path.isExportSpecifier()) {
        return;
      } else if (path.isExportNamespaceSpecifier()) {
        throw path.buildCodeFrameError("Export namespace should be first transformed by `@babel/plugin-proposal-export-namespace-from`.");
      } else {
        throw path.buildCodeFrameError("Unexpected export specifier type");
      }
    }
    function getModuleMetadata(programPath, _ref2, stringSpecifiers) {
      var lazy = _ref2.lazy,
        initializeReexports = _ref2.initializeReexports;
      var localData = getLocalExportMetadata(programPath, initializeReexports, stringSpecifiers);
      var sourceData = new Map();
      var getData = function getData(sourceNode) {
        var source = sourceNode.value;
        var data = sourceData.get(source);
        if (!data) {
          data = {
            name: programPath.scope.generateUidIdentifier(basename(source, extname(source))).name,
            interop: "none",
            loc: null,
            imports: new Map(),
            importsNamespace: new Set(),
            reexports: new Map(),
            reexportNamespace: new Set(),
            reexportAll: null,
            lazy: false,
            referenced: false
          };
          sourceData.set(source, data);
        }
        return data;
      };
      var hasExports = false;
      programPath.get("body").forEach(function (child) {
        if (child.isImportDeclaration()) {
          var data = getData(child.node.source);
          if (!data.loc) data.loc = child.node.loc;
          child.get("specifiers").forEach(function (spec) {
            if (spec.isImportDefaultSpecifier()) {
              var localName = spec.get("local").node.name;
              data.imports.set(localName, "default");
              var reexport = localData.get(localName);
              if (reexport) {
                localData["delete"](localName);
                reexport.names.forEach(function (name) {
                  data.reexports.set(name, "default");
                });
                data.referenced = true;
              }
            } else if (spec.isImportNamespaceSpecifier()) {
              var _localName = spec.get("local").node.name;
              data.importsNamespace.add(_localName);
              var _reexport = localData.get(_localName);
              if (_reexport) {
                localData["delete"](_localName);
                _reexport.names.forEach(function (name) {
                  data.reexportNamespace.add(name);
                });
                data.referenced = true;
              }
            } else if (spec.isImportSpecifier()) {
              var importName = getExportSpecifierName$1(spec.get("imported"), stringSpecifiers);
              var _localName2 = spec.get("local").node.name;
              data.imports.set(_localName2, importName);
              var _reexport2 = localData.get(_localName2);
              if (_reexport2) {
                localData["delete"](_localName2);
                _reexport2.names.forEach(function (name) {
                  data.reexports.set(name, importName);
                });
                data.referenced = true;
              }
            }
          });
        } else if (child.isExportAllDeclaration()) {
          hasExports = true;
          var _data = getData(child.node.source);
          if (!_data.loc) _data.loc = child.node.loc;
          _data.reexportAll = {
            loc: child.node.loc
          };
          _data.referenced = true;
        } else if (child.isExportNamedDeclaration() && child.node.source) {
          hasExports = true;
          var _data2 = getData(child.node.source);
          if (!_data2.loc) _data2.loc = child.node.loc;
          child.get("specifiers").forEach(function (spec) {
            assertExportSpecifier(spec);
            var importName = getExportSpecifierName$1(spec.get("local"), stringSpecifiers);
            var exportName = getExportSpecifierName$1(spec.get("exported"), stringSpecifiers);
            _data2.reexports.set(exportName, importName);
            _data2.referenced = true;
            if (exportName === "__esModule") {
              throw spec.get("exported").buildCodeFrameError('Illegal export "__esModule".');
            }
          });
        } else if (child.isExportNamedDeclaration() || child.isExportDefaultDeclaration()) {
          hasExports = true;
        }
      });
      for (var _iterator2 = _createForOfIteratorHelperLoose(sourceData.values()), _step2; !(_step2 = _iterator2()).done;) {
        var metadata = _step2.value;
        var needsDefault = false;
        var needsNamed = false;
        if (metadata.importsNamespace.size > 0) {
          needsDefault = true;
          needsNamed = true;
        }
        if (metadata.reexportAll) {
          needsNamed = true;
        }
        for (var _iterator4 = _createForOfIteratorHelperLoose(metadata.imports.values()), _step4; !(_step4 = _iterator4()).done;) {
          var importName = _step4.value;
          if (importName === "default") needsDefault = true;else needsNamed = true;
        }
        for (var _iterator5 = _createForOfIteratorHelperLoose(metadata.reexports.values()), _step5; !(_step5 = _iterator5()).done;) {
          var _importName = _step5.value;
          if (_importName === "default") needsDefault = true;else needsNamed = true;
        }
        if (needsDefault && needsNamed) {
          metadata.interop = "namespace";
        } else if (needsDefault) {
          metadata.interop = "default";
        }
      }
      for (var _iterator3 = _createForOfIteratorHelperLoose(sourceData), _step3; !(_step3 = _iterator3()).done;) {
        var _step3$value = _slicedToArray(_step3.value, 2),
          _source2 = _step3$value[0],
          _metadata = _step3$value[1];
        if (lazy !== false && !(isSideEffectImport(_metadata) || _metadata.reexportAll)) {
          if (lazy === true) {
            _metadata.lazy = !/\./.test(_source2);
          } else if (Array.isArray(lazy)) {
            _metadata.lazy = lazy.indexOf(_source2) !== -1;
          } else if (typeof lazy === "function") {
            _metadata.lazy = lazy(_source2);
          } else {
            throw new Error(".lazy must be a boolean, string array, or function");
          }
        }
      }
      return {
        hasExports: hasExports,
        local: localData,
        sources: sourceData
      };
    }
    function getLocalExportMetadata(programPath, initializeReexports, stringSpecifiers) {
      var bindingKindLookup = new Map();
      programPath.get("body").forEach(function (child) {
        var kind;
        if (child.isImportDeclaration()) {
          kind = "import";
        } else {
          if (child.isExportDefaultDeclaration()) {
            child = child.get("declaration");
          }
          if (child.isExportNamedDeclaration()) {
            if (child.node.declaration) {
              child = child.get("declaration");
            } else if (initializeReexports && child.node.source && child.get("source").isStringLiteral()) {
              child.get("specifiers").forEach(function (spec) {
                assertExportSpecifier(spec);
                bindingKindLookup.set(spec.get("local").node.name, "block");
              });
              return;
            }
          }
          if (child.isFunctionDeclaration()) {
            kind = "hoisted";
          } else if (child.isClassDeclaration()) {
            kind = "block";
          } else if (child.isVariableDeclaration({
            kind: "var"
          })) {
            kind = "var";
          } else if (child.isVariableDeclaration()) {
            kind = "block";
          } else {
            return;
          }
        }
        Object.keys(child.getOuterBindingIdentifiers()).forEach(function (name) {
          bindingKindLookup.set(name, kind);
        });
      });
      var localMetadata = new Map();
      var getLocalMetadata = function getLocalMetadata(idPath) {
        var localName = idPath.node.name;
        var metadata = localMetadata.get(localName);
        if (!metadata) {
          var kind = bindingKindLookup.get(localName);
          if (kind === undefined) {
            throw idPath.buildCodeFrameError("Exporting local \"" + localName + "\", which is not declared.");
          }
          metadata = {
            names: [],
            kind: kind
          };
          localMetadata.set(localName, metadata);
        }
        return metadata;
      };
      programPath.get("body").forEach(function (child) {
        if (child.isExportNamedDeclaration() && (initializeReexports || !child.node.source)) {
          if (child.node.declaration) {
            var declaration = child.get("declaration");
            var ids = declaration.getOuterBindingIdentifierPaths();
            Object.keys(ids).forEach(function (name) {
              if (name === "__esModule") {
                throw declaration.buildCodeFrameError('Illegal export "__esModule".');
              }
              getLocalMetadata(ids[name]).names.push(name);
            });
          } else {
            child.get("specifiers").forEach(function (spec) {
              var local = spec.get("local");
              var exported = spec.get("exported");
              var localMetadata = getLocalMetadata(local);
              var exportName = getExportSpecifierName$1(exported, stringSpecifiers);
              if (exportName === "__esModule") {
                throw exported.buildCodeFrameError('Illegal export "__esModule".');
              }
              localMetadata.names.push(exportName);
            });
          }
        } else if (child.isExportDefaultDeclaration()) {
          var _declaration = child.get("declaration");
          if (_declaration.isFunctionDeclaration() || _declaration.isClassDeclaration()) {
            getLocalMetadata(_declaration.get("id")).names.push("default");
          } else {
            throw _declaration.buildCodeFrameError("Unexpected default expression export.");
          }
        }
      });
      return localMetadata;
    }
    function nameAnonymousExports(programPath) {
      programPath.get("body").forEach(function (child) {
        if (!child.isExportDefaultDeclaration()) return;
        splitExportDeclaration(child);
      });
    }
    function removeImportExportDeclarations(programPath) {
      programPath.get("body").forEach(function (child) {
        if (child.isImportDeclaration()) {
          child.remove();
        } else if (child.isExportNamedDeclaration()) {
          if (child.node.declaration) {
            child.node.declaration._blockHoist = child.node._blockHoist;
            child.replaceWith(child.node.declaration);
          } else {
            child.remove();
          }
        } else if (child.isExportDefaultDeclaration()) {
          var declaration = child.get("declaration");
          if (declaration.isFunctionDeclaration() || declaration.isClassDeclaration()) {
            declaration._blockHoist = child.node._blockHoist;
            child.replaceWith(declaration);
          } else {
            throw declaration.buildCodeFrameError("Unexpected default expression export.");
          }
        } else if (child.isExportAllDeclaration()) {
          child.remove();
        }
      });
    }
  
    var _templateObject$t, _templateObject2$e, _templateObject3$c, _templateObject4$7;
    function buildDynamicImport(node, deferToThen, wrapWithPromise, builder) {
      var _node$arguments = _slicedToArray(node.arguments, 1),
        specifier = _node$arguments[0];
      if (isStringLiteral$6(specifier) || isTemplateLiteral$2(specifier) && specifier.quasis.length === 0) {
        if (deferToThen) {
          return template$2.expression.ast(_templateObject$t || (_templateObject$t = _taggedTemplateLiteralLoose(["\n        Promise.resolve().then(() => ", ")\n      "])), builder(specifier));
        } else return builder(specifier);
      }
      var specifierToString = isTemplateLiteral$2(specifier) ? identifier$i("specifier") : templateLiteral([templateElement({
        raw: ""
      }), templateElement({
        raw: ""
      })], [identifier$i("specifier")]);
      if (deferToThen) {
        return template$2.expression.ast(_templateObject2$e || (_templateObject2$e = _taggedTemplateLiteralLoose(["\n      (specifier =>\n        new Promise(r => r(", "))\n          .then(s => ", ")\n      )(", ")\n    "])), specifierToString, builder(identifier$i("s")), specifier);
      } else if (wrapWithPromise) {
        return template$2.expression.ast(_templateObject3$c || (_templateObject3$c = _taggedTemplateLiteralLoose(["\n      (specifier =>\n        new Promise(r => r(", "))\n      )(", ")\n    "])), builder(specifierToString), specifier);
      } else {
        return template$2.expression.ast(_templateObject4$7 || (_templateObject4$7 = _taggedTemplateLiteralLoose(["\n      (specifier => ", ")(", ")\n    "])), builder(specifierToString), specifier);
      }
    }
  
    {
      var originalGetModuleName = getModuleName;
      getModuleName = function getModuleName(rootOpts, pluginOpts) {
        var _pluginOpts$moduleId, _pluginOpts$moduleIds, _pluginOpts$getModule, _pluginOpts$moduleRoo;
        return originalGetModuleName(rootOpts, {
          moduleId: (_pluginOpts$moduleId = pluginOpts.moduleId) != null ? _pluginOpts$moduleId : rootOpts.moduleId,
          moduleIds: (_pluginOpts$moduleIds = pluginOpts.moduleIds) != null ? _pluginOpts$moduleIds : rootOpts.moduleIds,
          getModuleId: (_pluginOpts$getModule = pluginOpts.getModuleId) != null ? _pluginOpts$getModule : rootOpts.getModuleId,
          moduleRoot: (_pluginOpts$moduleRoo = pluginOpts.moduleRoot) != null ? _pluginOpts$moduleRoo : rootOpts.moduleRoot
        });
      };
    }
    function getModuleName(rootOpts, pluginOpts) {
      var filename = rootOpts.filename,
        _rootOpts$filenameRel = rootOpts.filenameRelative,
        filenameRelative = _rootOpts$filenameRel === void 0 ? filename : _rootOpts$filenameRel,
        _rootOpts$sourceRoot = rootOpts.sourceRoot,
        sourceRoot = _rootOpts$sourceRoot === void 0 ? pluginOpts.moduleRoot : _rootOpts$sourceRoot;
      var moduleId = pluginOpts.moduleId,
        _pluginOpts$moduleIds2 = pluginOpts.moduleIds,
        moduleIds = _pluginOpts$moduleIds2 === void 0 ? !!moduleId : _pluginOpts$moduleIds2,
        getModuleId = pluginOpts.getModuleId,
        _pluginOpts$moduleRoo2 = pluginOpts.moduleRoot,
        moduleRoot = _pluginOpts$moduleRoo2 === void 0 ? sourceRoot : _pluginOpts$moduleRoo2;
      if (!moduleIds) return null;
      if (moduleId != null && !getModuleId) {
        return moduleId;
      }
      var moduleName = moduleRoot != null ? moduleRoot + "/" : "";
      if (filenameRelative) {
        var sourceRootReplacer = sourceRoot != null ? new RegExp("^" + sourceRoot + "/?") : "";
        moduleName += filenameRelative.replace(sourceRootReplacer, "").replace(/\.(\w*?)$/, "");
      }
      moduleName = moduleName.replace(/\\/g, "/");
      if (getModuleId) {
        return getModuleId(moduleName) || moduleName;
      } else {
        return moduleName;
      }
    }
  
    var _templateObject$s, _templateObject2$d, _templateObject3$b, _templateObject4$6, _templateObject5$4, _templateObject6$4, _templateObject7$2, _templateObject8$1, _templateObject9$1, _templateObject10$1, _templateObject11$1, _templateObject12$1, _templateObject13$1;
    var booleanLiteral$3 = booleanLiteral$4,
      callExpression$7 = callExpression$e,
      cloneNode$7 = cloneNode$j,
      directive = directive$1,
      directiveLiteral = directiveLiteral$1,
      expressionStatement$1 = expressionStatement$a,
      identifier$5 = identifier$i,
      isIdentifier$6 = isIdentifier$j,
      memberExpression$7 = memberExpression$c,
      stringLiteral$3 = stringLiteral$8,
      valueToNode = valueToNode$1,
      variableDeclaration$2 = variableDeclaration$8,
      variableDeclarator$2 = variableDeclarator$8;
    function rewriteModuleStatementsAndPrepareHeader(path, _ref) {
      var exportName = _ref.exportName,
        strict = _ref.strict,
        allowTopLevelThis = _ref.allowTopLevelThis,
        strictMode = _ref.strictMode,
        noInterop = _ref.noInterop,
        _ref$importInterop = _ref.importInterop,
        importInterop = _ref$importInterop === void 0 ? noInterop ? "none" : "babel" : _ref$importInterop,
        lazy = _ref.lazy,
        esNamespaceOnly = _ref.esNamespaceOnly,
        filename = _ref.filename,
        _ref$constantReexport = _ref.constantReexports,
        constantReexports = _ref$constantReexport === void 0 ? arguments[1].loose : _ref$constantReexport,
        _ref$enumerableModule = _ref.enumerableModuleMeta,
        enumerableModuleMeta = _ref$enumerableModule === void 0 ? arguments[1].loose : _ref$enumerableModule,
        noIncompleteNsImportDetection = _ref.noIncompleteNsImportDetection;
      validateImportInteropOption(importInterop);
      assert$1.exports(isModule(path), "Cannot process module statements in a script");
      path.node.sourceType = "script";
      var meta = normalizeModuleAndLoadMetadata(path, exportName, {
        importInterop: importInterop,
        initializeReexports: constantReexports,
        lazy: lazy,
        esNamespaceOnly: esNamespaceOnly,
        filename: filename
      });
      if (!allowTopLevelThis) {
        rewriteThis(path);
      }
      rewriteLiveReferences(path, meta);
      if (strictMode !== false) {
        var hasStrict = path.node.directives.some(function (directive) {
          return directive.value.value === "use strict";
        });
        if (!hasStrict) {
          path.unshiftContainer("directives", directive(directiveLiteral("use strict")));
        }
      }
      var headers = [];
      if (hasExports(meta) && !strict) {
        headers.push(buildESModuleHeader(meta, enumerableModuleMeta));
      }
      var nameList = buildExportNameListDeclaration(path, meta);
      if (nameList) {
        meta.exportNameListName = nameList.name;
        headers.push(nameList.statement);
      }
      headers.push.apply(headers, _toConsumableArray(buildExportInitializationStatements(path, meta, constantReexports, noIncompleteNsImportDetection)));
      return {
        meta: meta,
        headers: headers
      };
    }
    function ensureStatementsHoisted(statements) {
      statements.forEach(function (header) {
        header._blockHoist = 3;
      });
    }
    function wrapInterop(programPath, expr, type) {
      if (type === "none") {
        return null;
      }
      if (type === "node-namespace") {
        return callExpression$7(programPath.hub.addHelper("interopRequireWildcard"), [expr, booleanLiteral$3(true)]);
      } else if (type === "node-default") {
        return null;
      }
      var helper;
      if (type === "default") {
        helper = "interopRequireDefault";
      } else if (type === "namespace") {
        helper = "interopRequireWildcard";
      } else {
        throw new Error("Unknown interop: " + type);
      }
      return callExpression$7(programPath.hub.addHelper(helper), [expr]);
    }
    function buildNamespaceInitStatements(metadata, sourceMetadata, constantReexports) {
      if (constantReexports === void 0) {
        constantReexports = false;
      }
      var statements = [];
      var srcNamespace = identifier$5(sourceMetadata.name);
      if (sourceMetadata.lazy) srcNamespace = callExpression$7(srcNamespace, []);
      for (var _iterator = _createForOfIteratorHelperLoose(sourceMetadata.importsNamespace), _step; !(_step = _iterator()).done;) {
        var localName = _step.value;
        if (localName === sourceMetadata.name) continue;
        statements.push(template$2.statement(_templateObject$s || (_templateObject$s = _taggedTemplateLiteralLoose(["var NAME = SOURCE;"])))({
          NAME: localName,
          SOURCE: cloneNode$7(srcNamespace)
        }));
      }
      if (constantReexports) {
        statements.push.apply(statements, _toConsumableArray(buildReexportsFromMeta(metadata, sourceMetadata, true)));
      }
      for (var _iterator2 = _createForOfIteratorHelperLoose(sourceMetadata.reexportNamespace), _step2; !(_step2 = _iterator2()).done;) {
        var exportName = _step2.value;
        statements.push((sourceMetadata.lazy ? template$2.statement(_templateObject2$d || (_templateObject2$d = _taggedTemplateLiteralLoose(["\n            Object.defineProperty(EXPORTS, \"NAME\", {\n              enumerable: true,\n              get: function() {\n                return NAMESPACE;\n              }\n            });\n          "]))) : template$2.statement(_templateObject3$b || (_templateObject3$b = _taggedTemplateLiteralLoose(["EXPORTS.NAME = NAMESPACE;"]))))({
          EXPORTS: metadata.exportName,
          NAME: exportName,
          NAMESPACE: cloneNode$7(srcNamespace)
        }));
      }
      if (sourceMetadata.reexportAll) {
        var statement = buildNamespaceReexport(metadata, cloneNode$7(srcNamespace), constantReexports);
        statement.loc = sourceMetadata.reexportAll.loc;
        statements.push(statement);
      }
      return statements;
    }
    var ReexportTemplate = {
      constant: template$2.statement(_templateObject4$6 || (_templateObject4$6 = _taggedTemplateLiteralLoose(["EXPORTS.EXPORT_NAME = NAMESPACE_IMPORT;"]))),
      constantComputed: template$2.statement(_templateObject5$4 || (_templateObject5$4 = _taggedTemplateLiteralLoose(["EXPORTS[\"EXPORT_NAME\"] = NAMESPACE_IMPORT;"]))),
      spec: template$2.statement(_templateObject6$4 || (_templateObject6$4 = _taggedTemplateLiteralLoose(["\n    Object.defineProperty(EXPORTS, \"EXPORT_NAME\", {\n      enumerable: true,\n      get: function() {\n        return NAMESPACE_IMPORT;\n      },\n    });\n    "])))
    };
    function buildReexportsFromMeta(meta, metadata, constantReexports) {
      var namespace = metadata.lazy ? callExpression$7(identifier$5(metadata.name), []) : identifier$5(metadata.name);
      var stringSpecifiers = meta.stringSpecifiers;
      return Array.from(metadata.reexports, function (_ref2) {
        var _ref3 = _slicedToArray(_ref2, 2),
          exportName = _ref3[0],
          importName = _ref3[1];
        var NAMESPACE_IMPORT = cloneNode$7(namespace);
        if (importName === "default" && metadata.interop === "node-default") ; else if (stringSpecifiers.has(importName)) {
          NAMESPACE_IMPORT = memberExpression$7(NAMESPACE_IMPORT, stringLiteral$3(importName), true);
        } else {
          NAMESPACE_IMPORT = memberExpression$7(NAMESPACE_IMPORT, identifier$5(importName));
        }
        var astNodes = {
          EXPORTS: meta.exportName,
          EXPORT_NAME: exportName,
          NAMESPACE_IMPORT: NAMESPACE_IMPORT
        };
        if (constantReexports || isIdentifier$6(NAMESPACE_IMPORT)) {
          if (stringSpecifiers.has(exportName)) {
            return ReexportTemplate.constantComputed(astNodes);
          } else {
            return ReexportTemplate.constant(astNodes);
          }
        } else {
          return ReexportTemplate.spec(astNodes);
        }
      });
    }
    function buildESModuleHeader(metadata, enumerableModuleMeta) {
      if (enumerableModuleMeta === void 0) {
        enumerableModuleMeta = false;
      }
      return (enumerableModuleMeta ? template$2.statement(_templateObject7$2 || (_templateObject7$2 = _taggedTemplateLiteralLoose(["\n        EXPORTS.__esModule = true;\n      "]))) : template$2.statement(_templateObject8$1 || (_templateObject8$1 = _taggedTemplateLiteralLoose(["\n        Object.defineProperty(EXPORTS, \"__esModule\", {\n          value: true,\n        });\n      "]))))({
        EXPORTS: metadata.exportName
      });
    }
    function buildNamespaceReexport(metadata, namespace, constantReexports) {
      return (constantReexports ? template$2.statement(_templateObject9$1 || (_templateObject9$1 = _taggedTemplateLiteralLoose(["\n        Object.keys(NAMESPACE).forEach(function(key) {\n          if (key === \"default\" || key === \"__esModule\") return;\n          VERIFY_NAME_LIST;\n          if (key in EXPORTS && EXPORTS[key] === NAMESPACE[key]) return;\n\n          EXPORTS[key] = NAMESPACE[key];\n        });\n      "]))) : template$2.statement(_templateObject10$1 || (_templateObject10$1 = _taggedTemplateLiteralLoose(["\n        Object.keys(NAMESPACE).forEach(function(key) {\n          if (key === \"default\" || key === \"__esModule\") return;\n          VERIFY_NAME_LIST;\n          if (key in EXPORTS && EXPORTS[key] === NAMESPACE[key]) return;\n\n          Object.defineProperty(EXPORTS, key, {\n            enumerable: true,\n            get: function() {\n              return NAMESPACE[key];\n            },\n          });\n        });\n    "]))))({
        NAMESPACE: namespace,
        EXPORTS: metadata.exportName,
        VERIFY_NAME_LIST: metadata.exportNameListName ? template$2(_templateObject11$1 || (_templateObject11$1 = _taggedTemplateLiteralLoose(["\n            if (Object.prototype.hasOwnProperty.call(EXPORTS_LIST, key)) return;\n          "])))({
          EXPORTS_LIST: metadata.exportNameListName
        }) : null
      });
    }
    function buildExportNameListDeclaration(programPath, metadata) {
      var exportedVars = Object.create(null);
      for (var _iterator3 = _createForOfIteratorHelperLoose(metadata.local.values()), _step3; !(_step3 = _iterator3()).done;) {
        var data = _step3.value;
        for (var _iterator5 = _createForOfIteratorHelperLoose(data.names), _step5; !(_step5 = _iterator5()).done;) {
          var _name = _step5.value;
          exportedVars[_name] = true;
        }
      }
      var hasReexport = false;
      for (var _iterator4 = _createForOfIteratorHelperLoose(metadata.source.values()), _step4; !(_step4 = _iterator4()).done;) {
        var _data = _step4.value;
        for (var _iterator6 = _createForOfIteratorHelperLoose(_data.reexports.keys()), _step6; !(_step6 = _iterator6()).done;) {
          var exportName = _step6.value;
          exportedVars[exportName] = true;
        }
        for (var _iterator7 = _createForOfIteratorHelperLoose(_data.reexportNamespace), _step7; !(_step7 = _iterator7()).done;) {
          var _exportName = _step7.value;
          exportedVars[_exportName] = true;
        }
        hasReexport = hasReexport || !!_data.reexportAll;
      }
      if (!hasReexport || Object.keys(exportedVars).length === 0) return null;
      var name = programPath.scope.generateUidIdentifier("exportNames");
      delete exportedVars["default"];
      return {
        name: name.name,
        statement: variableDeclaration$2("var", [variableDeclarator$2(name, valueToNode(exportedVars))])
      };
    }
    function buildExportInitializationStatements(programPath, metadata, constantReexports, noIncompleteNsImportDetection) {
      if (constantReexports === void 0) {
        constantReexports = false;
      }
      if (noIncompleteNsImportDetection === void 0) {
        noIncompleteNsImportDetection = false;
      }
      var initStatements = [];
      for (var _iterator8 = _createForOfIteratorHelperLoose(metadata.local), _step8; !(_step8 = _iterator8()).done;) {
        var _step8$value = _slicedToArray(_step8.value, 2),
          localName = _step8$value[0],
          data = _step8$value[1];
        if (data.kind === "import") ; else if (data.kind === "hoisted") {
          initStatements.push([data.names[0], buildInitStatement(metadata, data.names, identifier$5(localName))]);
        } else if (!noIncompleteNsImportDetection) {
          for (var _iterator11 = _createForOfIteratorHelperLoose(data.names), _step11; !(_step11 = _iterator11()).done;) {
            var _exportName2 = _step11.value;
            initStatements.push([_exportName2, null]);
          }
        }
      }
      for (var _iterator9 = _createForOfIteratorHelperLoose(metadata.source.values()), _step9; !(_step9 = _iterator9()).done;) {
        var _data2 = _step9.value;
        if (!constantReexports) {
          var reexportsStatements = buildReexportsFromMeta(metadata, _data2, false);
          var reexports = _toConsumableArray(_data2.reexports.keys());
          for (var _i = 0; _i < reexportsStatements.length; _i++) {
            initStatements.push([reexports[_i], reexportsStatements[_i]]);
          }
        }
        if (!noIncompleteNsImportDetection) {
          for (var _iterator12 = _createForOfIteratorHelperLoose(_data2.reexportNamespace), _step12; !(_step12 = _iterator12()).done;) {
            var _exportName3 = _step12.value;
            initStatements.push([_exportName3, null]);
          }
        }
      }
      initStatements.sort(function (_ref4, _ref5) {
        var _ref6 = _slicedToArray(_ref4, 1),
          a = _ref6[0];
        var _ref7 = _slicedToArray(_ref5, 1),
          b = _ref7[0];
        if (a < b) return -1;
        if (b < a) return 1;
        return 0;
      });
      var results = [];
      if (noIncompleteNsImportDetection) {
        for (var _iterator10 = _createForOfIteratorHelperLoose(initStatements), _step10; !(_step10 = _iterator10()).done;) {
          var _step10$value = _slicedToArray(_step10.value, 2),
            initStatement = _step10$value[1];
          results.push(initStatement);
        }
      } else {
        var chunkSize = 100;
        for (var i = 0; i < initStatements.length; i += chunkSize) {
          var uninitializedExportNames = [];
          for (var j = 0; j < chunkSize && i + j < initStatements.length; j++) {
            var _initStatements = _slicedToArray(initStatements[i + j], 2),
              exportName = _initStatements[0],
              _initStatement = _initStatements[1];
            if (_initStatement !== null) {
              if (uninitializedExportNames.length > 0) {
                results.push(buildInitStatement(metadata, uninitializedExportNames, programPath.scope.buildUndefinedNode()));
                uninitializedExportNames = [];
              }
              results.push(_initStatement);
            } else {
              uninitializedExportNames.push(exportName);
            }
          }
          if (uninitializedExportNames.length > 0) {
            results.push(buildInitStatement(metadata, uninitializedExportNames, programPath.scope.buildUndefinedNode()));
          }
        }
      }
      return results;
    }
    var InitTemplate = {
      computed: template$2.expression(_templateObject12$1 || (_templateObject12$1 = _taggedTemplateLiteralLoose(["EXPORTS[\"NAME\"] = VALUE"]))),
      "default": template$2.expression(_templateObject13$1 || (_templateObject13$1 = _taggedTemplateLiteralLoose(["EXPORTS.NAME = VALUE"])))
    };
    function buildInitStatement(metadata, exportNames, initExpr) {
      var stringSpecifiers = metadata.stringSpecifiers,
        EXPORTS = metadata.exportName;
      return expressionStatement$1(exportNames.reduce(function (acc, exportName) {
        var params = {
          EXPORTS: EXPORTS,
          NAME: exportName,
          VALUE: acc
        };
        if (stringSpecifiers.has(exportName)) {
          return InitTemplate.computed(params);
        } else {
          return InitTemplate["default"](params);
        }
      }, initExpr));
    }
  
    var re = {exports: {}};
  
    var constants;
    var hasRequiredConstants;
    function requireConstants() {
      if (hasRequiredConstants) return constants;
      hasRequiredConstants = 1;
      var SEMVER_SPEC_VERSION = '2.0.0';
      var MAX_LENGTH = 256;
      var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
      var MAX_SAFE_COMPONENT_LENGTH = 16;
      constants = {
        SEMVER_SPEC_VERSION: SEMVER_SPEC_VERSION,
        MAX_LENGTH: MAX_LENGTH,
        MAX_SAFE_INTEGER: MAX_SAFE_INTEGER,
        MAX_SAFE_COMPONENT_LENGTH: MAX_SAFE_COMPONENT_LENGTH
      };
      return constants;
    }
  
    var debug_1;
    var hasRequiredDebug;
    function requireDebug() {
      if (hasRequiredDebug) return debug_1;
      hasRequiredDebug = 1;
      var debug = typeof browser$1$1 === 'object' && browser$1$1.env && browser$1$1.env.NODE_DEBUG && /\bsemver\b/i.test(browser$1$1.env.NODE_DEBUG) ? function () {
        var _console;
        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
          args[_key] = arguments[_key];
        }
        return (_console = console).error.apply(_console, ['SEMVER'].concat(args));
      } : function () {};
      debug_1 = debug;
      return debug_1;
    }
  
    var hasRequiredRe;
    function requireRe() {
      if (hasRequiredRe) return re.exports;
      hasRequiredRe = 1;
      (function (module, exports) {
        var _require$$ = requireConstants(),
          MAX_SAFE_COMPONENT_LENGTH = _require$$.MAX_SAFE_COMPONENT_LENGTH;
        var debug = requireDebug();
        exports = module.exports = {};
        var re = exports.re = [];
        var src = exports.src = [];
        var t = exports.t = {};
        var R = 0;
        var createToken = function createToken(name, value, isGlobal) {
          var index = R++;
          debug(index, value);
          t[name] = index;
          src[index] = value;
          re[index] = new RegExp(value, isGlobal ? 'g' : undefined);
        };
        createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*');
        createToken('NUMERICIDENTIFIERLOOSE', '[0-9]+');
        createToken('NONNUMERICIDENTIFIER', '\\d*[a-zA-Z-][a-zA-Z0-9-]*');
        createToken('MAINVERSION', "(" + src[t.NUMERICIDENTIFIER] + ")\\." + ("(" + src[t.NUMERICIDENTIFIER] + ")\\.") + ("(" + src[t.NUMERICIDENTIFIER] + ")"));
        createToken('MAINVERSIONLOOSE', "(" + src[t.NUMERICIDENTIFIERLOOSE] + ")\\." + ("(" + src[t.NUMERICIDENTIFIERLOOSE] + ")\\.") + ("(" + src[t.NUMERICIDENTIFIERLOOSE] + ")"));
        createToken('PRERELEASEIDENTIFIER', "(?:" + src[t.NUMERICIDENTIFIER] + "|" + src[t.NONNUMERICIDENTIFIER] + ")");
        createToken('PRERELEASEIDENTIFIERLOOSE', "(?:" + src[t.NUMERICIDENTIFIERLOOSE] + "|" + src[t.NONNUMERICIDENTIFIER] + ")");
        createToken('PRERELEASE', "(?:-(" + src[t.PRERELEASEIDENTIFIER] + "(?:\\." + src[t.PRERELEASEIDENTIFIER] + ")*))");
        createToken('PRERELEASELOOSE', "(?:-?(" + src[t.PRERELEASEIDENTIFIERLOOSE] + "(?:\\." + src[t.PRERELEASEIDENTIFIERLOOSE] + ")*))");
        createToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+');
        createToken('BUILD', "(?:\\+(" + src[t.BUILDIDENTIFIER] + "(?:\\." + src[t.BUILDIDENTIFIER] + ")*))");
        createToken('FULLPLAIN', "v?" + src[t.MAINVERSION] + src[t.PRERELEASE] + "?" + src[t.BUILD] + "?");
        createToken('FULL', "^" + src[t.FULLPLAIN] + "$");
        createToken('LOOSEPLAIN', "[v=\\s]*" + src[t.MAINVERSIONLOOSE] + src[t.PRERELEASELOOSE] + "?" + src[t.BUILD] + "?");
        createToken('LOOSE', "^" + src[t.LOOSEPLAIN] + "$");
        createToken('GTLT', '((?:<|>)?=?)');
        createToken('XRANGEIDENTIFIERLOOSE', src[t.NUMERICIDENTIFIERLOOSE] + "|x|X|\\*");
        createToken('XRANGEIDENTIFIER', src[t.NUMERICIDENTIFIER] + "|x|X|\\*");
        createToken('XRANGEPLAIN', "[v=\\s]*(" + src[t.XRANGEIDENTIFIER] + ")" + ("(?:\\.(" + src[t.XRANGEIDENTIFIER] + ")") + ("(?:\\.(" + src[t.XRANGEIDENTIFIER] + ")") + ("(?:" + src[t.PRERELEASE] + ")?" + src[t.BUILD] + "?") + ")?)?");
        createToken('XRANGEPLAINLOOSE', "[v=\\s]*(" + src[t.XRANGEIDENTIFIERLOOSE] + ")" + ("(?:\\.(" + src[t.XRANGEIDENTIFIERLOOSE] + ")") + ("(?:\\.(" + src[t.XRANGEIDENTIFIERLOOSE] + ")") + ("(?:" + src[t.PRERELEASELOOSE] + ")?" + src[t.BUILD] + "?") + ")?)?");
        createToken('XRANGE', "^" + src[t.GTLT] + "\\s*" + src[t.XRANGEPLAIN] + "$");
        createToken('XRANGELOOSE', "^" + src[t.GTLT] + "\\s*" + src[t.XRANGEPLAINLOOSE] + "$");
        createToken('COERCE', "" + ('(^|[^\\d])' + '(\\d{1,') + MAX_SAFE_COMPONENT_LENGTH + "})" + ("(?:\\.(\\d{1," + MAX_SAFE_COMPONENT_LENGTH + "}))?") + ("(?:\\.(\\d{1," + MAX_SAFE_COMPONENT_LENGTH + "}))?") + "(?:$|[^\\d])");
        createToken('COERCERTL', src[t.COERCE], true);
        createToken('LONETILDE', '(?:~>?)');
        createToken('TILDETRIM', "(\\s*)" + src[t.LONETILDE] + "\\s+", true);
        exports.tildeTrimReplace = '$1~';
        createToken('TILDE', "^" + src[t.LONETILDE] + src[t.XRANGEPLAIN] + "$");
        createToken('TILDELOOSE', "^" + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + "$");
        createToken('LONECARET', '(?:\\^)');
        createToken('CARETTRIM', "(\\s*)" + src[t.LONECARET] + "\\s+", true);
        exports.caretTrimReplace = '$1^';
        createToken('CARET', "^" + src[t.LONECARET] + src[t.XRANGEPLAIN] + "$");
        createToken('CARETLOOSE', "^" + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + "$");
        createToken('COMPARATORLOOSE', "^" + src[t.GTLT] + "\\s*(" + src[t.LOOSEPLAIN] + ")$|^$");
        createToken('COMPARATOR', "^" + src[t.GTLT] + "\\s*(" + src[t.FULLPLAIN] + ")$|^$");
        createToken('COMPARATORTRIM', "(\\s*)" + src[t.GTLT] + "\\s*(" + src[t.LOOSEPLAIN] + "|" + src[t.XRANGEPLAIN] + ")", true);
        exports.comparatorTrimReplace = '$1$2$3';
        createToken('HYPHENRANGE', "^\\s*(" + src[t.XRANGEPLAIN] + ")" + "\\s+-\\s+" + ("(" + src[t.XRANGEPLAIN] + ")") + "\\s*$");
        createToken('HYPHENRANGELOOSE', "^\\s*(" + src[t.XRANGEPLAINLOOSE] + ")" + "\\s+-\\s+" + ("(" + src[t.XRANGEPLAINLOOSE] + ")") + "\\s*$");
        createToken('STAR', '(<|>)?=?\\s*\\*');
        createToken('GTE0', '^\\s*>=\\s*0\.0\.0\\s*$');
        createToken('GTE0PRE', '^\\s*>=\\s*0\.0\.0-0\\s*$');
      })(re, re.exports);
      return re.exports;
    }
  
    var parseOptions_1;
    var hasRequiredParseOptions;
    function requireParseOptions() {
      if (hasRequiredParseOptions) return parseOptions_1;
      hasRequiredParseOptions = 1;
      var opts = ['includePrerelease', 'loose', 'rtl'];
      var parseOptions = function parseOptions(options) {
        return !options ? {} : typeof options !== 'object' ? {
          loose: true
        } : opts.filter(function (k) {
          return options[k];
        }).reduce(function (options, k) {
          options[k] = true;
          return options;
        }, {});
      };
      parseOptions_1 = parseOptions;
      return parseOptions_1;
    }
  
    var identifiers;
    var hasRequiredIdentifiers;
    function requireIdentifiers() {
      if (hasRequiredIdentifiers) return identifiers;
      hasRequiredIdentifiers = 1;
      var numeric = /^[0-9]+$/;
      var compareIdentifiers = function compareIdentifiers(a, b) {
        var anum = numeric.test(a);
        var bnum = numeric.test(b);
        if (anum && bnum) {
          a = +a;
          b = +b;
        }
        return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;
      };
      var rcompareIdentifiers = function rcompareIdentifiers(a, b) {
        return compareIdentifiers(b, a);
      };
      identifiers = {
        compareIdentifiers: compareIdentifiers,
        rcompareIdentifiers: rcompareIdentifiers
      };
      return identifiers;
    }
  
    var semver$d;
    var hasRequiredSemver$1;
    function requireSemver$1() {
      if (hasRequiredSemver$1) return semver$d;
      hasRequiredSemver$1 = 1;
      var debug = requireDebug();
      var _require$$ = requireConstants(),
        MAX_LENGTH = _require$$.MAX_LENGTH,
        MAX_SAFE_INTEGER = _require$$.MAX_SAFE_INTEGER;
      var _require$$2 = requireRe(),
        re = _require$$2.re,
        t = _require$$2.t;
      var parseOptions = requireParseOptions();
      var _require$$3 = requireIdentifiers(),
        compareIdentifiers = _require$$3.compareIdentifiers;
      var SemVer = function () {
        function SemVer(version, options) {
          options = parseOptions(options);
          if (version instanceof SemVer) {
            if (version.loose === !!options.loose && version.includePrerelease === !!options.includePrerelease) {
              return version;
            } else {
              version = version.version;
            }
          } else if (typeof version !== 'string') {
            throw new TypeError("Invalid Version: " + version);
          }
          if (version.length > MAX_LENGTH) {
            throw new TypeError("version is longer than " + MAX_LENGTH + " characters");
          }
          debug('SemVer', version, options);
          this.options = options;
          this.loose = !!options.loose;
          this.includePrerelease = !!options.includePrerelease;
          var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]);
          if (!m) {
            throw new TypeError("Invalid Version: " + version);
          }
          this.raw = version;
          this.major = +m[1];
          this.minor = +m[2];
          this.patch = +m[3];
          if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
            throw new TypeError('Invalid major version');
          }
          if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
            throw new TypeError('Invalid minor version');
          }
          if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
            throw new TypeError('Invalid patch version');
          }
          if (!m[4]) {
            this.prerelease = [];
          } else {
            this.prerelease = m[4].split('.').map(function (id) {
              if (/^[0-9]+$/.test(id)) {
                var num = +id;
                if (num >= 0 && num < MAX_SAFE_INTEGER) {
                  return num;
                }
              }
              return id;
            });
          }
          this.build = m[5] ? m[5].split('.') : [];
          this.format();
        }
        var _proto = SemVer.prototype;
        _proto.format = function format() {
          this.version = this.major + "." + this.minor + "." + this.patch;
          if (this.prerelease.length) {
            this.version += "-" + this.prerelease.join('.');
          }
          return this.version;
        };
        _proto.toString = function toString() {
          return this.version;
        };
        _proto.compare = function compare(other) {
          debug('SemVer.compare', this.version, this.options, other);
          if (!(other instanceof SemVer)) {
            if (typeof other === 'string' && other === this.version) {
              return 0;
            }
            other = new SemVer(other, this.options);
          }
          if (other.version === this.version) {
            return 0;
          }
          return this.compareMain(other) || this.comparePre(other);
        };
        _proto.compareMain = function compareMain(other) {
          if (!(other instanceof SemVer)) {
            other = new SemVer(other, this.options);
          }
          return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);
        };
        _proto.comparePre = function comparePre(other) {
          if (!(other instanceof SemVer)) {
            other = new SemVer(other, this.options);
          }
          if (this.prerelease.length && !other.prerelease.length) {
            return -1;
          } else if (!this.prerelease.length && other.prerelease.length) {
            return 1;
          } else if (!this.prerelease.length && !other.prerelease.length) {
            return 0;
          }
          var i = 0;
          do {
            var a = this.prerelease[i];
            var b = other.prerelease[i];
            debug('prerelease compare', i, a, b);
            if (a === undefined && b === undefined) {
              return 0;
            } else if (b === undefined) {
              return 1;
            } else if (a === undefined) {
              return -1;
            } else if (a === b) {
              continue;
            } else {
              return compareIdentifiers(a, b);
            }
          } while (++i);
        };
        _proto.compareBuild = function compareBuild(other) {
          if (!(other instanceof SemVer)) {
            other = new SemVer(other, this.options);
          }
          var i = 0;
          do {
            var a = this.build[i];
            var b = other.build[i];
            debug('prerelease compare', i, a, b);
            if (a === undefined && b === undefined) {
              return 0;
            } else if (b === undefined) {
              return 1;
            } else if (a === undefined) {
              return -1;
            } else if (a === b) {
              continue;
            } else {
              return compareIdentifiers(a, b);
            }
          } while (++i);
        };
        _proto.inc = function inc(release, identifier) {
          switch (release) {
            case 'premajor':
              this.prerelease.length = 0;
              this.patch = 0;
              this.minor = 0;
              this.major++;
              this.inc('pre', identifier);
              break;
            case 'preminor':
              this.prerelease.length = 0;
              this.patch = 0;
              this.minor++;
              this.inc('pre', identifier);
              break;
            case 'prepatch':
              this.prerelease.length = 0;
              this.inc('patch', identifier);
              this.inc('pre', identifier);
              break;
            case 'prerelease':
              if (this.prerelease.length === 0) {
                this.inc('patch', identifier);
              }
              this.inc('pre', identifier);
              break;
            case 'major':
              if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {
                this.major++;
              }
              this.minor = 0;
              this.patch = 0;
              this.prerelease = [];
              break;
            case 'minor':
              if (this.patch !== 0 || this.prerelease.length === 0) {
                this.minor++;
              }
              this.patch = 0;
              this.prerelease = [];
              break;
            case 'patch':
              if (this.prerelease.length === 0) {
                this.patch++;
              }
              this.prerelease = [];
              break;
            case 'pre':
              if (this.prerelease.length === 0) {
                this.prerelease = [0];
              } else {
                var i = this.prerelease.length;
                while (--i >= 0) {
                  if (typeof this.prerelease[i] === 'number') {
                    this.prerelease[i]++;
                    i = -2;
                  }
                }
                if (i === -1) {
                  this.prerelease.push(0);
                }
              }
              if (identifier) {
                if (this.prerelease[0] === identifier) {
                  if (isNaN(this.prerelease[1])) {
                    this.prerelease = [identifier, 0];
                  }
                } else {
                  this.prerelease = [identifier, 0];
                }
              }
              break;
            default:
              throw new Error("invalid increment argument: " + release);
          }
          this.format();
          this.raw = this.version;
          return this;
        };
        return _createClass(SemVer);
      }();
      semver$d = SemVer;
      return semver$d;
    }
  
    var parse_1;
    var hasRequiredParse;
    function requireParse() {
      if (hasRequiredParse) return parse_1;
      hasRequiredParse = 1;
      var _require$$ = requireConstants(),
        MAX_LENGTH = _require$$.MAX_LENGTH;
      var _require$$2 = requireRe(),
        re = _require$$2.re,
        t = _require$$2.t;
      var SemVer = requireSemver$1();
      var parseOptions = requireParseOptions();
      var parse = function parse(version, options) {
        options = parseOptions(options);
        if (version instanceof SemVer) {
          return version;
        }
        if (typeof version !== 'string') {
          return null;
        }
        if (version.length > MAX_LENGTH) {
          return null;
        }
        var r = options.loose ? re[t.LOOSE] : re[t.FULL];
        if (!r.test(version)) {
          return null;
        }
        try {
          return new SemVer(version, options);
        } catch (er) {
          return null;
        }
      };
      parse_1 = parse;
      return parse_1;
    }
  
    var valid_1;
    var hasRequiredValid$1;
    function requireValid$1() {
      if (hasRequiredValid$1) return valid_1;
      hasRequiredValid$1 = 1;
      var parse = requireParse();
      var valid = function valid(version, options) {
        var v = parse(version, options);
        return v ? v.version : null;
      };
      valid_1 = valid;
      return valid_1;
    }
  
    var clean_1;
    var hasRequiredClean;
    function requireClean() {
      if (hasRequiredClean) return clean_1;
      hasRequiredClean = 1;
      var parse = requireParse();
      var clean = function clean(version, options) {
        var s = parse(version.trim().replace(/^[=v]+/, ''), options);
        return s ? s.version : null;
      };
      clean_1 = clean;
      return clean_1;
    }
  
    var inc_1;
    var hasRequiredInc;
    function requireInc() {
      if (hasRequiredInc) return inc_1;
      hasRequiredInc = 1;
      var SemVer = requireSemver$1();
      var inc = function inc(version, release, options, identifier) {
        if (typeof options === 'string') {
          identifier = options;
          options = undefined;
        }
        try {
          return new SemVer(version, options).inc(release, identifier).version;
        } catch (er) {
          return null;
        }
      };
      inc_1 = inc;
      return inc_1;
    }
  
    var compare_1;
    var hasRequiredCompare;
    function requireCompare() {
      if (hasRequiredCompare) return compare_1;
      hasRequiredCompare = 1;
      var SemVer = requireSemver$1();
      var compare = function compare(a, b, loose) {
        return new SemVer(a, loose).compare(new SemVer(b, loose));
      };
      compare_1 = compare;
      return compare_1;
    }
  
    var eq_1;
    var hasRequiredEq;
    function requireEq() {
      if (hasRequiredEq) return eq_1;
      hasRequiredEq = 1;
      var compare = requireCompare();
      var eq = function eq(a, b, loose) {
        return compare(a, b, loose) === 0;
      };
      eq_1 = eq;
      return eq_1;
    }
  
    var diff_1;
    var hasRequiredDiff;
    function requireDiff() {
      if (hasRequiredDiff) return diff_1;
      hasRequiredDiff = 1;
      var parse = requireParse();
      var eq = requireEq();
      var diff = function diff(version1, version2) {
        if (eq(version1, version2)) {
          return null;
        } else {
          var v1 = parse(version1);
          var v2 = parse(version2);
          var hasPre = v1.prerelease.length || v2.prerelease.length;
          var prefix = hasPre ? 'pre' : '';
          var defaultResult = hasPre ? 'prerelease' : '';
          for (var key in v1) {
            if (key === 'major' || key === 'minor' || key === 'patch') {
              if (v1[key] !== v2[key]) {
                return prefix + key;
              }
            }
          }
          return defaultResult;
        }
      };
      diff_1 = diff;
      return diff_1;
    }
  
    var major_1;
    var hasRequiredMajor;
    function requireMajor() {
      if (hasRequiredMajor) return major_1;
      hasRequiredMajor = 1;
      var SemVer = requireSemver$1();
      var major = function major(a, loose) {
        return new SemVer(a, loose).major;
      };
      major_1 = major;
      return major_1;
    }
  
    var minor_1;
    var hasRequiredMinor;
    function requireMinor() {
      if (hasRequiredMinor) return minor_1;
      hasRequiredMinor = 1;
      var SemVer = requireSemver$1();
      var minor = function minor(a, loose) {
        return new SemVer(a, loose).minor;
      };
      minor_1 = minor;
      return minor_1;
    }
  
    var patch_1;
    var hasRequiredPatch;
    function requirePatch() {
      if (hasRequiredPatch) return patch_1;
      hasRequiredPatch = 1;
      var SemVer = requireSemver$1();
      var patch = function patch(a, loose) {
        return new SemVer(a, loose).patch;
      };
      patch_1 = patch;
      return patch_1;
    }
  
    var prerelease_1;
    var hasRequiredPrerelease;
    function requirePrerelease() {
      if (hasRequiredPrerelease) return prerelease_1;
      hasRequiredPrerelease = 1;
      var parse = requireParse();
      var prerelease = function prerelease(version, options) {
        var parsed = parse(version, options);
        return parsed && parsed.prerelease.length ? parsed.prerelease : null;
      };
      prerelease_1 = prerelease;
      return prerelease_1;
    }
  
    var rcompare_1;
    var hasRequiredRcompare;
    function requireRcompare() {
      if (hasRequiredRcompare) return rcompare_1;
      hasRequiredRcompare = 1;
      var compare = requireCompare();
      var rcompare = function rcompare(a, b, loose) {
        return compare(b, a, loose);
      };
      rcompare_1 = rcompare;
      return rcompare_1;
    }
  
    var compareLoose_1;
    var hasRequiredCompareLoose;
    function requireCompareLoose() {
      if (hasRequiredCompareLoose) return compareLoose_1;
      hasRequiredCompareLoose = 1;
      var compare = requireCompare();
      var compareLoose = function compareLoose(a, b) {
        return compare(a, b, true);
      };
      compareLoose_1 = compareLoose;
      return compareLoose_1;
    }
  
    var compareBuild_1;
    var hasRequiredCompareBuild;
    function requireCompareBuild() {
      if (hasRequiredCompareBuild) return compareBuild_1;
      hasRequiredCompareBuild = 1;
      var SemVer = requireSemver$1();
      var compareBuild = function compareBuild(a, b, loose) {
        var versionA = new SemVer(a, loose);
        var versionB = new SemVer(b, loose);
        return versionA.compare(versionB) || versionA.compareBuild(versionB);
      };
      compareBuild_1 = compareBuild;
      return compareBuild_1;
    }
  
    var sort_1;
    var hasRequiredSort;
    function requireSort() {
      if (hasRequiredSort) return sort_1;
      hasRequiredSort = 1;
      var compareBuild = requireCompareBuild();
      var sort = function sort(list, loose) {
        return list.sort(function (a, b) {
          return compareBuild(a, b, loose);
        });
      };
      sort_1 = sort;
      return sort_1;
    }
  
    var rsort_1;
    var hasRequiredRsort;
    function requireRsort() {
      if (hasRequiredRsort) return rsort_1;
      hasRequiredRsort = 1;
      var compareBuild = requireCompareBuild();
      var rsort = function rsort(list, loose) {
        return list.sort(function (a, b) {
          return compareBuild(b, a, loose);
        });
      };
      rsort_1 = rsort;
      return rsort_1;
    }
  
    var gt_1;
    var hasRequiredGt;
    function requireGt() {
      if (hasRequiredGt) return gt_1;
      hasRequiredGt = 1;
      var compare = requireCompare();
      var gt = function gt(a, b, loose) {
        return compare(a, b, loose) > 0;
      };
      gt_1 = gt;
      return gt_1;
    }
  
    var lt_1;
    var hasRequiredLt;
    function requireLt() {
      if (hasRequiredLt) return lt_1;
      hasRequiredLt = 1;
      var compare = requireCompare();
      var lt = function lt(a, b, loose) {
        return compare(a, b, loose) < 0;
      };
      lt_1 = lt;
      return lt_1;
    }
  
    var neq_1;
    var hasRequiredNeq;
    function requireNeq() {
      if (hasRequiredNeq) return neq_1;
      hasRequiredNeq = 1;
      var compare = requireCompare();
      var neq = function neq(a, b, loose) {
        return compare(a, b, loose) !== 0;
      };
      neq_1 = neq;
      return neq_1;
    }
  
    var gte_1;
    var hasRequiredGte;
    function requireGte() {
      if (hasRequiredGte) return gte_1;
      hasRequiredGte = 1;
      var compare = requireCompare();
      var gte = function gte(a, b, loose) {
        return compare(a, b, loose) >= 0;
      };
      gte_1 = gte;
      return gte_1;
    }
  
    var lte_1;
    var hasRequiredLte;
    function requireLte() {
      if (hasRequiredLte) return lte_1;
      hasRequiredLte = 1;
      var compare = requireCompare();
      var lte = function lte(a, b, loose) {
        return compare(a, b, loose) <= 0;
      };
      lte_1 = lte;
      return lte_1;
    }
  
    var cmp_1;
    var hasRequiredCmp;
    function requireCmp() {
      if (hasRequiredCmp) return cmp_1;
      hasRequiredCmp = 1;
      var eq = requireEq();
      var neq = requireNeq();
      var gt = requireGt();
      var gte = requireGte();
      var lt = requireLt();
      var lte = requireLte();
      var cmp = function cmp(a, op, b, loose) {
        switch (op) {
          case '===':
            if (typeof a === 'object') a = a.version;
            if (typeof b === 'object') b = b.version;
            return a === b;
          case '!==':
            if (typeof a === 'object') a = a.version;
            if (typeof b === 'object') b = b.version;
            return a !== b;
          case '':
          case '=':
          case '==':
            return eq(a, b, loose);
          case '!=':
            return neq(a, b, loose);
          case '>':
            return gt(a, b, loose);
          case '>=':
            return gte(a, b, loose);
          case '<':
            return lt(a, b, loose);
          case '<=':
            return lte(a, b, loose);
          default:
            throw new TypeError("Invalid operator: " + op);
        }
      };
      cmp_1 = cmp;
      return cmp_1;
    }
  
    var coerce_1;
    var hasRequiredCoerce;
    function requireCoerce() {
      if (hasRequiredCoerce) return coerce_1;
      hasRequiredCoerce = 1;
      var SemVer = requireSemver$1();
      var parse = requireParse();
      var _require$$ = requireRe(),
        re = _require$$.re,
        t = _require$$.t;
      var coerce = function coerce(version, options) {
        if (version instanceof SemVer) {
          return version;
        }
        if (typeof version === 'number') {
          version = String(version);
        }
        if (typeof version !== 'string') {
          return null;
        }
        options = options || {};
        var match = null;
        if (!options.rtl) {
          match = version.match(re[t.COERCE]);
        } else {
          var next;
          while ((next = re[t.COERCERTL].exec(version)) && (!match || match.index + match[0].length !== version.length)) {
            if (!match || next.index + next[0].length !== match.index + match[0].length) {
              match = next;
            }
            re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length;
          }
          re[t.COERCERTL].lastIndex = -1;
        }
        if (match === null) return null;
        return parse(match[2] + "." + (match[3] || '0') + "." + (match[4] || '0'), options);
      };
      coerce_1 = coerce;
      return coerce_1;
    }
  
    var iterator$1;
    var hasRequiredIterator$1;
    function requireIterator$1() {
      if (hasRequiredIterator$1) return iterator$1;
      hasRequiredIterator$1 = 1;
      iterator$1 = function iterator(Yallist) {
        Yallist.prototype[Symbol.iterator] = _regeneratorRuntime().mark(function _callee() {
          var walker;
          return _regeneratorRuntime().wrap(function _callee$(_context) {
            while (1) switch (_context.prev = _context.next) {
              case 0:
                walker = this.head;
              case 1:
                if (!walker) {
                  _context.next = 7;
                  break;
                }
                _context.next = 4;
                return walker.value;
              case 4:
                walker = walker.next;
                _context.next = 1;
                break;
              case 7:
              case "end":
                return _context.stop();
            }
          }, _callee, this);
        });
      };
      return iterator$1;
    }
  
    var yallist$1;
    var hasRequiredYallist$1;
    function requireYallist$1() {
      if (hasRequiredYallist$1) return yallist$1;
      hasRequiredYallist$1 = 1;
      yallist$1 = Yallist;
      Yallist.Node = Node;
      Yallist.create = Yallist;
      function Yallist(list) {
        var self = this;
        if (!(self instanceof Yallist)) {
          self = new Yallist();
        }
        self.tail = null;
        self.head = null;
        self.length = 0;
        if (list && typeof list.forEach === 'function') {
          list.forEach(function (item) {
            self.push(item);
          });
        } else if (arguments.length > 0) {
          for (var i = 0, l = arguments.length; i < l; i++) {
            self.push(arguments[i]);
          }
        }
        return self;
      }
      Yallist.prototype.removeNode = function (node) {
        if (node.list !== this) {
          throw new Error('removing node which does not belong to this list');
        }
        var next = node.next;
        var prev = node.prev;
        if (next) {
          next.prev = prev;
        }
        if (prev) {
          prev.next = next;
        }
        if (node === this.head) {
          this.head = next;
        }
        if (node === this.tail) {
          this.tail = prev;
        }
        node.list.length--;
        node.next = null;
        node.prev = null;
        node.list = null;
        return next;
      };
      Yallist.prototype.unshiftNode = function (node) {
        if (node === this.head) {
          return;
        }
        if (node.list) {
          node.list.removeNode(node);
        }
        var head = this.head;
        node.list = this;
        node.next = head;
        if (head) {
          head.prev = node;
        }
        this.head = node;
        if (!this.tail) {
          this.tail = node;
        }
        this.length++;
      };
      Yallist.prototype.pushNode = function (node) {
        if (node === this.tail) {
          return;
        }
        if (node.list) {
          node.list.removeNode(node);
        }
        var tail = this.tail;
        node.list = this;
        node.prev = tail;
        if (tail) {
          tail.next = node;
        }
        this.tail = node;
        if (!this.head) {
          this.head = node;
        }
        this.length++;
      };
      Yallist.prototype.push = function () {
        for (var i = 0, l = arguments.length; i < l; i++) {
          push(this, arguments[i]);
        }
        return this.length;
      };
      Yallist.prototype.unshift = function () {
        for (var i = 0, l = arguments.length; i < l; i++) {
          unshift(this, arguments[i]);
        }
        return this.length;
      };
      Yallist.prototype.pop = function () {
        if (!this.tail) {
          return undefined;
        }
        var res = this.tail.value;
        this.tail = this.tail.prev;
        if (this.tail) {
          this.tail.next = null;
        } else {
          this.head = null;
        }
        this.length--;
        return res;
      };
      Yallist.prototype.shift = function () {
        if (!this.head) {
          return undefined;
        }
        var res = this.head.value;
        this.head = this.head.next;
        if (this.head) {
          this.head.prev = null;
        } else {
          this.tail = null;
        }
        this.length--;
        return res;
      };
      Yallist.prototype.forEach = function (fn, thisp) {
        thisp = thisp || this;
        for (var walker = this.head, i = 0; walker !== null; i++) {
          fn.call(thisp, walker.value, i, this);
          walker = walker.next;
        }
      };
      Yallist.prototype.forEachReverse = function (fn, thisp) {
        thisp = thisp || this;
        for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {
          fn.call(thisp, walker.value, i, this);
          walker = walker.prev;
        }
      };
      Yallist.prototype.get = function (n) {
        for (var i = 0, walker = this.head; walker !== null && i < n; i++) {
          walker = walker.next;
        }
        if (i === n && walker !== null) {
          return walker.value;
        }
      };
      Yallist.prototype.getReverse = function (n) {
        for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {
          walker = walker.prev;
        }
        if (i === n && walker !== null) {
          return walker.value;
        }
      };
      Yallist.prototype.map = function (fn, thisp) {
        thisp = thisp || this;
        var res = new Yallist();
        for (var walker = this.head; walker !== null;) {
          res.push(fn.call(thisp, walker.value, this));
          walker = walker.next;
        }
        return res;
      };
      Yallist.prototype.mapReverse = function (fn, thisp) {
        thisp = thisp || this;
        var res = new Yallist();
        for (var walker = this.tail; walker !== null;) {
          res.push(fn.call(thisp, walker.value, this));
          walker = walker.prev;
        }
        return res;
      };
      Yallist.prototype.reduce = function (fn, initial) {
        var acc;
        var walker = this.head;
        if (arguments.length > 1) {
          acc = initial;
        } else if (this.head) {
          walker = this.head.next;
          acc = this.head.value;
        } else {
          throw new TypeError('Reduce of empty list with no initial value');
        }
        for (var i = 0; walker !== null; i++) {
          acc = fn(acc, walker.value, i);
          walker = walker.next;
        }
        return acc;
      };
      Yallist.prototype.reduceReverse = function (fn, initial) {
        var acc;
        var walker = this.tail;
        if (arguments.length > 1) {
          acc = initial;
        } else if (this.tail) {
          walker = this.tail.prev;
          acc = this.tail.value;
        } else {
          throw new TypeError('Reduce of empty list with no initial value');
        }
        for (var i = this.length - 1; walker !== null; i--) {
          acc = fn(acc, walker.value, i);
          walker = walker.prev;
        }
        return acc;
      };
      Yallist.prototype.toArray = function () {
        var arr = new Array(this.length);
        for (var i = 0, walker = this.head; walker !== null; i++) {
          arr[i] = walker.value;
          walker = walker.next;
        }
        return arr;
      };
      Yallist.prototype.toArrayReverse = function () {
        var arr = new Array(this.length);
        for (var i = 0, walker = this.tail; walker !== null; i++) {
          arr[i] = walker.value;
          walker = walker.prev;
        }
        return arr;
      };
      Yallist.prototype.slice = function (from, to) {
        to = to || this.length;
        if (to < 0) {
          to += this.length;
        }
        from = from || 0;
        if (from < 0) {
          from += this.length;
        }
        var ret = new Yallist();
        if (to < from || to < 0) {
          return ret;
        }
        if (from < 0) {
          from = 0;
        }
        if (to > this.length) {
          to = this.length;
        }
        for (var i = 0, walker = this.head; walker !== null && i < from; i++) {
          walker = walker.next;
        }
        for (; walker !== null && i < to; i++, walker = walker.next) {
          ret.push(walker.value);
        }
        return ret;
      };
      Yallist.prototype.sliceReverse = function (from, to) {
        to = to || this.length;
        if (to < 0) {
          to += this.length;
        }
        from = from || 0;
        if (from < 0) {
          from += this.length;
        }
        var ret = new Yallist();
        if (to < from || to < 0) {
          return ret;
        }
        if (from < 0) {
          from = 0;
        }
        if (to > this.length) {
          to = this.length;
        }
        for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {
          walker = walker.prev;
        }
        for (; walker !== null && i > from; i--, walker = walker.prev) {
          ret.push(walker.value);
        }
        return ret;
      };
      Yallist.prototype.splice = function (start, deleteCount) {
        if (start > this.length) {
          start = this.length - 1;
        }
        if (start < 0) {
          start = this.length + start;
        }
        for (var i = 0, walker = this.head; walker !== null && i < start; i++) {
          walker = walker.next;
        }
        var ret = [];
        for (var i = 0; walker && i < deleteCount; i++) {
          ret.push(walker.value);
          walker = this.removeNode(walker);
        }
        if (walker === null) {
          walker = this.tail;
        }
        if (walker !== this.head && walker !== this.tail) {
          walker = walker.prev;
        }
        for (var i = 0; i < (arguments.length <= 2 ? 0 : arguments.length - 2); i++) {
          walker = insert(this, walker, i + 2 < 2 || arguments.length <= i + 2 ? undefined : arguments[i + 2]);
        }
        return ret;
      };
      Yallist.prototype.reverse = function () {
        var head = this.head;
        var tail = this.tail;
        for (var walker = head; walker !== null; walker = walker.prev) {
          var p = walker.prev;
          walker.prev = walker.next;
          walker.next = p;
        }
        this.head = tail;
        this.tail = head;
        return this;
      };
      function insert(self, node, value) {
        var inserted = node === self.head ? new Node(value, null, node, self) : new Node(value, node, node.next, self);
        if (inserted.next === null) {
          self.tail = inserted;
        }
        if (inserted.prev === null) {
          self.head = inserted;
        }
        self.length++;
        return inserted;
      }
      function push(self, item) {
        self.tail = new Node(item, self.tail, null, self);
        if (!self.head) {
          self.head = self.tail;
        }
        self.length++;
      }
      function unshift(self, item) {
        self.head = new Node(item, null, self.head, self);
        if (!self.tail) {
          self.tail = self.head;
        }
        self.length++;
      }
      function Node(value, prev, next, list) {
        if (!(this instanceof Node)) {
          return new Node(value, prev, next, list);
        }
        this.list = list;
        this.value = value;
        if (prev) {
          prev.next = this;
          this.prev = prev;
        } else {
          this.prev = null;
        }
        if (next) {
          next.prev = this;
          this.next = next;
        } else {
          this.next = null;
        }
      }
      try {
        requireIterator$1()(Yallist);
      } catch (er) {}
      return yallist$1;
    }
  
    var lruCache$1;
    var hasRequiredLruCache;
    function requireLruCache() {
      if (hasRequiredLruCache) return lruCache$1;
      hasRequiredLruCache = 1;
      var Yallist = requireYallist$1();
      var MAX = Symbol('max');
      var LENGTH = Symbol('length');
      var LENGTH_CALCULATOR = Symbol('lengthCalculator');
      var ALLOW_STALE = Symbol('allowStale');
      var MAX_AGE = Symbol('maxAge');
      var DISPOSE = Symbol('dispose');
      var NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet');
      var LRU_LIST = Symbol('lruList');
      var CACHE = Symbol('cache');
      var UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet');
      var naiveLength = function naiveLength() {
        return 1;
      };
      var LRUCache = function () {
        function LRUCache(options) {
          if (typeof options === 'number') options = {
            max: options
          };
          if (!options) options = {};
          if (options.max && (typeof options.max !== 'number' || options.max < 0)) throw new TypeError('max must be a non-negative number');
          this[MAX] = options.max || Infinity;
          var lc = options.length || naiveLength;
          this[LENGTH_CALCULATOR] = typeof lc !== 'function' ? naiveLength : lc;
          this[ALLOW_STALE] = options.stale || false;
          if (options.maxAge && typeof options.maxAge !== 'number') throw new TypeError('maxAge must be a number');
          this[MAX_AGE] = options.maxAge || 0;
          this[DISPOSE] = options.dispose;
          this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false;
          this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false;
          this.reset();
        }
        var _proto = LRUCache.prototype;
        _proto.rforEach = function rforEach(fn, thisp) {
          thisp = thisp || this;
          for (var walker = this[LRU_LIST].tail; walker !== null;) {
            var prev = walker.prev;
            forEachStep(this, fn, walker, thisp);
            walker = prev;
          }
        };
        _proto.forEach = function forEach(fn, thisp) {
          thisp = thisp || this;
          for (var walker = this[LRU_LIST].head; walker !== null;) {
            var next = walker.next;
            forEachStep(this, fn, walker, thisp);
            walker = next;
          }
        };
        _proto.keys = function keys() {
          return this[LRU_LIST].toArray().map(function (k) {
            return k.key;
          });
        };
        _proto.values = function values() {
          return this[LRU_LIST].toArray().map(function (k) {
            return k.value;
          });
        };
        _proto.reset = function reset() {
          var _this = this;
          if (this[DISPOSE] && this[LRU_LIST] && this[LRU_LIST].length) {
            this[LRU_LIST].forEach(function (hit) {
              return _this[DISPOSE](hit.key, hit.value);
            });
          }
          this[CACHE] = new Map();
          this[LRU_LIST] = new Yallist();
          this[LENGTH] = 0;
        };
        _proto.dump = function dump() {
          var _this2 = this;
          return this[LRU_LIST].map(function (hit) {
            return isStale(_this2, hit) ? false : {
              k: hit.key,
              v: hit.value,
              e: hit.now + (hit.maxAge || 0)
            };
          }).toArray().filter(function (h) {
            return h;
          });
        };
        _proto.dumpLru = function dumpLru() {
          return this[LRU_LIST];
        };
        _proto.set = function set(key, value, maxAge) {
          maxAge = maxAge || this[MAX_AGE];
          if (maxAge && typeof maxAge !== 'number') throw new TypeError('maxAge must be a number');
          var now = maxAge ? Date.now() : 0;
          var len = this[LENGTH_CALCULATOR](value, key);
          if (this[CACHE].has(key)) {
            if (len > this[MAX]) {
              _del(this, this[CACHE].get(key));
              return false;
            }
            var node = this[CACHE].get(key);
            var item = node.value;
            if (this[DISPOSE]) {
              if (!this[NO_DISPOSE_ON_SET]) this[DISPOSE](key, item.value);
            }
            item.now = now;
            item.maxAge = maxAge;
            item.value = value;
            this[LENGTH] += len - item.length;
            item.length = len;
            this.get(key);
            trim(this);
            return true;
          }
          var hit = new Entry(key, value, len, now, maxAge);
          if (hit.length > this[MAX]) {
            if (this[DISPOSE]) this[DISPOSE](key, value);
            return false;
          }
          this[LENGTH] += hit.length;
          this[LRU_LIST].unshift(hit);
          this[CACHE].set(key, this[LRU_LIST].head);
          trim(this);
          return true;
        };
        _proto.has = function has(key) {
          if (!this[CACHE].has(key)) return false;
          var hit = this[CACHE].get(key).value;
          return !isStale(this, hit);
        };
        _proto.get = function get(key) {
          return _get(this, key, true);
        };
        _proto.peek = function peek(key) {
          return _get(this, key, false);
        };
        _proto.pop = function pop() {
          var node = this[LRU_LIST].tail;
          if (!node) return null;
          _del(this, node);
          return node.value;
        };
        _proto.del = function del(key) {
          _del(this, this[CACHE].get(key));
        };
        _proto.load = function load(arr) {
          this.reset();
          var now = Date.now();
          for (var l = arr.length - 1; l >= 0; l--) {
            var hit = arr[l];
            var expiresAt = hit.e || 0;
            if (expiresAt === 0) this.set(hit.k, hit.v);else {
              var maxAge = expiresAt - now;
              if (maxAge > 0) {
                this.set(hit.k, hit.v, maxAge);
              }
            }
          }
        };
        _proto.prune = function prune() {
          var _this3 = this;
          this[CACHE].forEach(function (value, key) {
            return _get(_this3, key, false);
          });
        };
        _createClass(LRUCache, [{
          key: "max",
          get: function get() {
            return this[MAX];
          },
          set: function set(mL) {
            if (typeof mL !== 'number' || mL < 0) throw new TypeError('max must be a non-negative number');
            this[MAX] = mL || Infinity;
            trim(this);
          }
        }, {
          key: "allowStale",
          get: function get() {
            return this[ALLOW_STALE];
          },
          set: function set(allowStale) {
            this[ALLOW_STALE] = !!allowStale;
          }
        }, {
          key: "maxAge",
          get: function get() {
            return this[MAX_AGE];
          },
          set: function set(mA) {
            if (typeof mA !== 'number') throw new TypeError('maxAge must be a non-negative number');
            this[MAX_AGE] = mA;
            trim(this);
          }
        }, {
          key: "lengthCalculator",
          get: function get() {
            return this[LENGTH_CALCULATOR];
          },
          set: function set(lC) {
            var _this4 = this;
            if (typeof lC !== 'function') lC = naiveLength;
            if (lC !== this[LENGTH_CALCULATOR]) {
              this[LENGTH_CALCULATOR] = lC;
              this[LENGTH] = 0;
              this[LRU_LIST].forEach(function (hit) {
                hit.length = _this4[LENGTH_CALCULATOR](hit.value, hit.key);
                _this4[LENGTH] += hit.length;
              });
            }
            trim(this);
          }
        }, {
          key: "length",
          get: function get() {
            return this[LENGTH];
          }
        }, {
          key: "itemCount",
          get: function get() {
            return this[LRU_LIST].length;
          }
        }]);
        return LRUCache;
      }();
      var _get = function _get(self, key, doUse) {
        var node = self[CACHE].get(key);
        if (node) {
          var hit = node.value;
          if (isStale(self, hit)) {
            _del(self, node);
            if (!self[ALLOW_STALE]) return undefined;
          } else {
            if (doUse) {
              if (self[UPDATE_AGE_ON_GET]) node.value.now = Date.now();
              self[LRU_LIST].unshiftNode(node);
            }
          }
          return hit.value;
        }
      };
      var isStale = function isStale(self, hit) {
        if (!hit || !hit.maxAge && !self[MAX_AGE]) return false;
        var diff = Date.now() - hit.now;
        return hit.maxAge ? diff > hit.maxAge : self[MAX_AGE] && diff > self[MAX_AGE];
      };
      var trim = function trim(self) {
        if (self[LENGTH] > self[MAX]) {
          for (var walker = self[LRU_LIST].tail; self[LENGTH] > self[MAX] && walker !== null;) {
            var prev = walker.prev;
            _del(self, walker);
            walker = prev;
          }
        }
      };
      var _del = function _del(self, node) {
        if (node) {
          var hit = node.value;
          if (self[DISPOSE]) self[DISPOSE](hit.key, hit.value);
          self[LENGTH] -= hit.length;
          self[CACHE]["delete"](hit.key);
          self[LRU_LIST].removeNode(node);
        }
      };
      var Entry = _createClass(function Entry(key, value, length, now, maxAge) {
        this.key = key;
        this.value = value;
        this.length = length;
        this.now = now;
        this.maxAge = maxAge || 0;
      });
      var forEachStep = function forEachStep(self, fn, node, thisp) {
        var hit = node.value;
        if (isStale(self, hit)) {
          _del(self, node);
          if (!self[ALLOW_STALE]) hit = undefined;
        }
        if (hit) fn.call(thisp, hit.value, hit.key, self);
      };
      lruCache$1 = LRUCache;
      return lruCache$1;
    }
  
    var range;
    var hasRequiredRange;
    function requireRange() {
      if (hasRequiredRange) return range;
      hasRequiredRange = 1;
      var Range = function () {
        function Range(range, options) {
          var _this = this;
          options = parseOptions(options);
          if (range instanceof Range) {
            if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {
              return range;
            } else {
              return new Range(range.raw, options);
            }
          }
          if (range instanceof Comparator) {
            this.raw = range.value;
            this.set = [[range]];
            this.format();
            return this;
          }
          this.options = options;
          this.loose = !!options.loose;
          this.includePrerelease = !!options.includePrerelease;
          this.raw = range;
          this.set = range.split(/\s*\|\|\s*/).map(function (range) {
            return _this.parseRange(range.trim());
          }).filter(function (c) {
            return c.length;
          });
          if (!this.set.length) {
            throw new TypeError("Invalid SemVer Range: " + range);
          }
          if (this.set.length > 1) {
            var first = this.set[0];
            this.set = this.set.filter(function (c) {
              return !isNullSet(c[0]);
            });
            if (this.set.length === 0) this.set = [first];else if (this.set.length > 1) {
              for (var _iterator = _createForOfIteratorHelperLoose(this.set), _step; !(_step = _iterator()).done;) {
                var c = _step.value;
                if (c.length === 1 && isAny(c[0])) {
                  this.set = [c];
                  break;
                }
              }
            }
          }
          this.format();
        }
        var _proto = Range.prototype;
        _proto.format = function format() {
          this.range = this.set.map(function (comps) {
            return comps.join(' ').trim();
          }).join('||').trim();
          return this.range;
        };
        _proto.toString = function toString() {
          return this.range;
        };
        _proto.parseRange = function parseRange(range) {
          var _this2 = this;
          range = range.trim();
          var memoOpts = Object.keys(this.options).join(',');
          var memoKey = "parseRange:" + memoOpts + ":" + range;
          var cached = cache.get(memoKey);
          if (cached) return cached;
          var loose = this.options.loose;
          var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE];
          range = range.replace(hr, hyphenReplace(this.options.includePrerelease));
          debug('hyphen replace', range);
          range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace);
          debug('comparator trim', range, re[t.COMPARATORTRIM]);
          range = range.replace(re[t.TILDETRIM], tildeTrimReplace);
          range = range.replace(re[t.CARETTRIM], caretTrimReplace);
          range = range.split(/\s+/).join(' ');
          var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
          var rangeList = range.split(' ').map(function (comp) {
            return parseComparator(comp, _this2.options);
          }).join(' ').split(/\s+/).map(function (comp) {
            return replaceGTE0(comp, _this2.options);
          }).filter(this.options.loose ? function (comp) {
            return !!comp.match(compRe);
          } : function () {
            return true;
          }).map(function (comp) {
            return new Comparator(comp, _this2.options);
          });
          rangeList.length;
          var rangeMap = new Map();
          for (var _iterator2 = _createForOfIteratorHelperLoose(rangeList), _step2; !(_step2 = _iterator2()).done;) {
            var comp = _step2.value;
            if (isNullSet(comp)) return [comp];
            rangeMap.set(comp.value, comp);
          }
          if (rangeMap.size > 1 && rangeMap.has('')) rangeMap["delete"]('');
          var result = _toConsumableArray(rangeMap.values());
          cache.set(memoKey, result);
          return result;
        };
        _proto.intersects = function intersects(range, options) {
          if (!(range instanceof Range)) {
            throw new TypeError('a Range is required');
          }
          return this.set.some(function (thisComparators) {
            return isSatisfiable(thisComparators, options) && range.set.some(function (rangeComparators) {
              return isSatisfiable(rangeComparators, options) && thisComparators.every(function (thisComparator) {
                return rangeComparators.every(function (rangeComparator) {
                  return thisComparator.intersects(rangeComparator, options);
                });
              });
            });
          });
        };
        _proto.test = function test(version) {
          if (!version) {
            return false;
          }
          if (typeof version === 'string') {
            try {
              version = new SemVer(version, this.options);
            } catch (er) {
              return false;
            }
          }
          for (var i = 0; i < this.set.length; i++) {
            if (testSet(this.set[i], version, this.options)) {
              return true;
            }
          }
          return false;
        };
        return _createClass(Range);
      }();
      range = Range;
      var LRU = requireLruCache();
      var cache = new LRU({
        max: 1000
      });
      var parseOptions = requireParseOptions();
      var Comparator = requireComparator();
      var debug = requireDebug();
      var SemVer = requireSemver$1();
      var _require$$ = requireRe(),
        re = _require$$.re,
        t = _require$$.t,
        comparatorTrimReplace = _require$$.comparatorTrimReplace,
        tildeTrimReplace = _require$$.tildeTrimReplace,
        caretTrimReplace = _require$$.caretTrimReplace;
      var isNullSet = function isNullSet(c) {
        return c.value === '<0.0.0-0';
      };
      var isAny = function isAny(c) {
        return c.value === '';
      };
      var isSatisfiable = function isSatisfiable(comparators, options) {
        var result = true;
        var remainingComparators = comparators.slice();
        var testComparator = remainingComparators.pop();
        while (result && remainingComparators.length) {
          result = remainingComparators.every(function (otherComparator) {
            return testComparator.intersects(otherComparator, options);
          });
          testComparator = remainingComparators.pop();
        }
        return result;
      };
      var parseComparator = function parseComparator(comp, options) {
        debug('comp', comp, options);
        comp = replaceCarets(comp, options);
        debug('caret', comp);
        comp = replaceTildes(comp, options);
        debug('tildes', comp);
        comp = replaceXRanges(comp, options);
        debug('xrange', comp);
        comp = replaceStars(comp, options);
        debug('stars', comp);
        return comp;
      };
      var isX = function isX(id) {
        return !id || id.toLowerCase() === 'x' || id === '*';
      };
      var replaceTildes = function replaceTildes(comp, options) {
        return comp.trim().split(/\s+/).map(function (comp) {
          return replaceTilde(comp, options);
        }).join(' ');
      };
      var replaceTilde = function replaceTilde(comp, options) {
        var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
        return comp.replace(r, function (_, M, m, p, pr) {
          debug('tilde', comp, _, M, m, p, pr);
          var ret;
          if (isX(M)) {
            ret = '';
          } else if (isX(m)) {
            ret = ">=" + M + ".0.0 <" + (+M + 1) + ".0.0-0";
          } else if (isX(p)) {
            ret = ">=" + M + "." + m + ".0 <" + M + "." + (+m + 1) + ".0-0";
          } else if (pr) {
            debug('replaceTilde pr', pr);
            ret = ">=" + M + "." + m + "." + p + "-" + pr + " <" + M + "." + (+m + 1) + ".0-0";
          } else {
            ret = ">=" + M + "." + m + "." + p + " <" + M + "." + (+m + 1) + ".0-0";
          }
          debug('tilde return', ret);
          return ret;
        });
      };
      var replaceCarets = function replaceCarets(comp, options) {
        return comp.trim().split(/\s+/).map(function (comp) {
          return replaceCaret(comp, options);
        }).join(' ');
      };
      var replaceCaret = function replaceCaret(comp, options) {
        debug('caret', comp, options);
        var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET];
        var z = options.includePrerelease ? '-0' : '';
        return comp.replace(r, function (_, M, m, p, pr) {
          debug('caret', comp, _, M, m, p, pr);
          var ret;
          if (isX(M)) {
            ret = '';
          } else if (isX(m)) {
            ret = ">=" + M + ".0.0" + z + " <" + (+M + 1) + ".0.0-0";
          } else if (isX(p)) {
            if (M === '0') {
              ret = ">=" + M + "." + m + ".0" + z + " <" + M + "." + (+m + 1) + ".0-0";
            } else {
              ret = ">=" + M + "." + m + ".0" + z + " <" + (+M + 1) + ".0.0-0";
            }
          } else if (pr) {
            debug('replaceCaret pr', pr);
            if (M === '0') {
              if (m === '0') {
                ret = ">=" + M + "." + m + "." + p + "-" + pr + " <" + M + "." + m + "." + (+p + 1) + "-0";
              } else {
                ret = ">=" + M + "." + m + "." + p + "-" + pr + " <" + M + "." + (+m + 1) + ".0-0";
              }
            } else {
              ret = ">=" + M + "." + m + "." + p + "-" + pr + " <" + (+M + 1) + ".0.0-0";
            }
          } else {
            debug('no pr');
            if (M === '0') {
              if (m === '0') {
                ret = ">=" + M + "." + m + "." + p + z + " <" + M + "." + m + "." + (+p + 1) + "-0";
              } else {
                ret = ">=" + M + "." + m + "." + p + z + " <" + M + "." + (+m + 1) + ".0-0";
              }
            } else {
              ret = ">=" + M + "." + m + "." + p + " <" + (+M + 1) + ".0.0-0";
            }
          }
          debug('caret return', ret);
          return ret;
        });
      };
      var replaceXRanges = function replaceXRanges(comp, options) {
        debug('replaceXRanges', comp, options);
        return comp.split(/\s+/).map(function (comp) {
          return replaceXRange(comp, options);
        }).join(' ');
      };
      var replaceXRange = function replaceXRange(comp, options) {
        comp = comp.trim();
        var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
        return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
          debug('xRange', comp, ret, gtlt, M, m, p, pr);
          var xM = isX(M);
          var xm = xM || isX(m);
          var xp = xm || isX(p);
          var anyX = xp;
          if (gtlt === '=' && anyX) {
            gtlt = '';
          }
          pr = options.includePrerelease ? '-0' : '';
          if (xM) {
            if (gtlt === '>' || gtlt === '<') {
              ret = '<0.0.0-0';
            } else {
              ret = '*';
            }
          } else if (gtlt && anyX) {
            if (xm) {
              m = 0;
            }
            p = 0;
            if (gtlt === '>') {
              gtlt = '>=';
              if (xm) {
                M = +M + 1;
                m = 0;
                p = 0;
              } else {
                m = +m + 1;
                p = 0;
              }
            } else if (gtlt === '<=') {
              gtlt = '<';
              if (xm) {
                M = +M + 1;
              } else {
                m = +m + 1;
              }
            }
            if (gtlt === '<') pr = '-0';
            ret = gtlt + M + "." + m + "." + p + pr;
          } else if (xm) {
            ret = ">=" + M + ".0.0" + pr + " <" + (+M + 1) + ".0.0-0";
          } else if (xp) {
            ret = ">=" + M + "." + m + ".0" + pr + " <" + M + "." + (+m + 1) + ".0-0";
          }
          debug('xRange return', ret);
          return ret;
        });
      };
      var replaceStars = function replaceStars(comp, options) {
        debug('replaceStars', comp, options);
        return comp.trim().replace(re[t.STAR], '');
      };
      var replaceGTE0 = function replaceGTE0(comp, options) {
        debug('replaceGTE0', comp, options);
        return comp.trim().replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '');
      };
      var hyphenReplace = function hyphenReplace(incPr) {
        return function ($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) {
          if (isX(fM)) {
            from = '';
          } else if (isX(fm)) {
            from = ">=" + fM + ".0.0" + (incPr ? '-0' : '');
          } else if (isX(fp)) {
            from = ">=" + fM + "." + fm + ".0" + (incPr ? '-0' : '');
          } else if (fpr) {
            from = ">=" + from;
          } else {
            from = ">=" + from + (incPr ? '-0' : '');
          }
          if (isX(tM)) {
            to = '';
          } else if (isX(tm)) {
            to = "<" + (+tM + 1) + ".0.0-0";
          } else if (isX(tp)) {
            to = "<" + tM + "." + (+tm + 1) + ".0-0";
          } else if (tpr) {
            to = "<=" + tM + "." + tm + "." + tp + "-" + tpr;
          } else if (incPr) {
            to = "<" + tM + "." + tm + "." + (+tp + 1) + "-0";
          } else {
            to = "<=" + to;
          }
          return (from + " " + to).trim();
        };
      };
      var testSet = function testSet(set, version, options) {
        for (var i = 0; i < set.length; i++) {
          if (!set[i].test(version)) {
            return false;
          }
        }
        if (version.prerelease.length && !options.includePrerelease) {
          for (var _i = 0; _i < set.length; _i++) {
            debug(set[_i].semver);
            if (set[_i].semver === Comparator.ANY) {
              continue;
            }
            if (set[_i].semver.prerelease.length > 0) {
              var allowed = set[_i].semver;
              if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) {
                return true;
              }
            }
          }
          return false;
        }
        return true;
      };
      return range;
    }
  
    var comparator;
    var hasRequiredComparator;
    function requireComparator() {
      if (hasRequiredComparator) return comparator;
      hasRequiredComparator = 1;
      var ANY = Symbol('SemVer ANY');
      var Comparator = function () {
        function Comparator(comp, options) {
          options = parseOptions(options);
          if (comp instanceof Comparator) {
            if (comp.loose === !!options.loose) {
              return comp;
            } else {
              comp = comp.value;
            }
          }
          debug('comparator', comp, options);
          this.options = options;
          this.loose = !!options.loose;
          this.parse(comp);
          if (this.semver === ANY) {
            this.value = '';
          } else {
            this.value = this.operator + this.semver.version;
          }
          debug('comp', this);
        }
        var _proto = Comparator.prototype;
        _proto.parse = function parse(comp) {
          var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
          var m = comp.match(r);
          if (!m) {
            throw new TypeError("Invalid comparator: " + comp);
          }
          this.operator = m[1] !== undefined ? m[1] : '';
          if (this.operator === '=') {
            this.operator = '';
          }
          if (!m[2]) {
            this.semver = ANY;
          } else {
            this.semver = new SemVer(m[2], this.options.loose);
          }
        };
        _proto.toString = function toString() {
          return this.value;
        };
        _proto.test = function test(version) {
          debug('Comparator.test', version, this.options.loose);
          if (this.semver === ANY || version === ANY) {
            return true;
          }
          if (typeof version === 'string') {
            try {
              version = new SemVer(version, this.options);
            } catch (er) {
              return false;
            }
          }
          return cmp(version, this.operator, this.semver, this.options);
        };
        _proto.intersects = function intersects(comp, options) {
          if (!(comp instanceof Comparator)) {
            throw new TypeError('a Comparator is required');
          }
          if (!options || typeof options !== 'object') {
            options = {
              loose: !!options,
              includePrerelease: false
            };
          }
          if (this.operator === '') {
            if (this.value === '') {
              return true;
            }
            return new Range(comp.value, options).test(this.value);
          } else if (comp.operator === '') {
            if (comp.value === '') {
              return true;
            }
            return new Range(this.value, options).test(comp.semver);
          }
          var sameDirectionIncreasing = (this.operator === '>=' || this.operator === '>') && (comp.operator === '>=' || comp.operator === '>');
          var sameDirectionDecreasing = (this.operator === '<=' || this.operator === '<') && (comp.operator === '<=' || comp.operator === '<');
          var sameSemVer = this.semver.version === comp.semver.version;
          var differentDirectionsInclusive = (this.operator === '>=' || this.operator === '<=') && (comp.operator === '>=' || comp.operator === '<=');
          var oppositeDirectionsLessThan = cmp(this.semver, '<', comp.semver, options) && (this.operator === '>=' || this.operator === '>') && (comp.operator === '<=' || comp.operator === '<');
          var oppositeDirectionsGreaterThan = cmp(this.semver, '>', comp.semver, options) && (this.operator === '<=' || this.operator === '<') && (comp.operator === '>=' || comp.operator === '>');
          return sameDirectionIncreasing || sameDirectionDecreasing || sameSemVer && differentDirectionsInclusive || oppositeDirectionsLessThan || oppositeDirectionsGreaterThan;
        };
        _createClass(Comparator, null, [{
          key: "ANY",
          get: function get() {
            return ANY;
          }
        }]);
        return Comparator;
      }();
      comparator = Comparator;
      var parseOptions = requireParseOptions();
      var _require$$ = requireRe(),
        re = _require$$.re,
        t = _require$$.t;
      var cmp = requireCmp();
      var debug = requireDebug();
      var SemVer = requireSemver$1();
      var Range = requireRange();
      return comparator;
    }
  
    var satisfies_1;
    var hasRequiredSatisfies;
    function requireSatisfies() {
      if (hasRequiredSatisfies) return satisfies_1;
      hasRequiredSatisfies = 1;
      var Range = requireRange();
      var satisfies = function satisfies(version, range, options) {
        try {
          range = new Range(range, options);
        } catch (er) {
          return false;
        }
        return range.test(version);
      };
      satisfies_1 = satisfies;
      return satisfies_1;
    }
  
    var toComparators_1;
    var hasRequiredToComparators;
    function requireToComparators() {
      if (hasRequiredToComparators) return toComparators_1;
      hasRequiredToComparators = 1;
      var Range = requireRange();
      var toComparators = function toComparators(range, options) {
        return new Range(range, options).set.map(function (comp) {
          return comp.map(function (c) {
            return c.value;
          }).join(' ').trim().split(' ');
        });
      };
      toComparators_1 = toComparators;
      return toComparators_1;
    }
  
    var maxSatisfying_1;
    var hasRequiredMaxSatisfying;
    function requireMaxSatisfying() {
      if (hasRequiredMaxSatisfying) return maxSatisfying_1;
      hasRequiredMaxSatisfying = 1;
      var SemVer = requireSemver$1();
      var Range = requireRange();
      var maxSatisfying = function maxSatisfying(versions, range, options) {
        var max = null;
        var maxSV = null;
        var rangeObj = null;
        try {
          rangeObj = new Range(range, options);
        } catch (er) {
          return null;
        }
        versions.forEach(function (v) {
          if (rangeObj.test(v)) {
            if (!max || maxSV.compare(v) === -1) {
              max = v;
              maxSV = new SemVer(max, options);
            }
          }
        });
        return max;
      };
      maxSatisfying_1 = maxSatisfying;
      return maxSatisfying_1;
    }
  
    var minSatisfying_1;
    var hasRequiredMinSatisfying;
    function requireMinSatisfying() {
      if (hasRequiredMinSatisfying) return minSatisfying_1;
      hasRequiredMinSatisfying = 1;
      var SemVer = requireSemver$1();
      var Range = requireRange();
      var minSatisfying = function minSatisfying(versions, range, options) {
        var min = null;
        var minSV = null;
        var rangeObj = null;
        try {
          rangeObj = new Range(range, options);
        } catch (er) {
          return null;
        }
        versions.forEach(function (v) {
          if (rangeObj.test(v)) {
            if (!min || minSV.compare(v) === 1) {
              min = v;
              minSV = new SemVer(min, options);
            }
          }
        });
        return min;
      };
      minSatisfying_1 = minSatisfying;
      return minSatisfying_1;
    }
  
    var minVersion_1;
    var hasRequiredMinVersion;
    function requireMinVersion() {
      if (hasRequiredMinVersion) return minVersion_1;
      hasRequiredMinVersion = 1;
      var SemVer = requireSemver$1();
      var Range = requireRange();
      var gt = requireGt();
      var minVersion = function minVersion(range, loose) {
        range = new Range(range, loose);
        var minver = new SemVer('0.0.0');
        if (range.test(minver)) {
          return minver;
        }
        minver = new SemVer('0.0.0-0');
        if (range.test(minver)) {
          return minver;
        }
        minver = null;
        var _loop = function _loop() {
          var comparators = range.set[i];
          var setMin = null;
          comparators.forEach(function (comparator) {
            var compver = new SemVer(comparator.semver.version);
            switch (comparator.operator) {
              case '>':
                if (compver.prerelease.length === 0) {
                  compver.patch++;
                } else {
                  compver.prerelease.push(0);
                }
                compver.raw = compver.format();
              case '':
              case '>=':
                if (!setMin || gt(compver, setMin)) {
                  setMin = compver;
                }
                break;
              case '<':
              case '<=':
                break;
              default:
                throw new Error("Unexpected operation: " + comparator.operator);
            }
          });
          if (setMin && (!minver || gt(minver, setMin))) minver = setMin;
        };
        for (var i = 0; i < range.set.length; ++i) {
          _loop();
        }
        if (minver && range.test(minver)) {
          return minver;
        }
        return null;
      };
      minVersion_1 = minVersion;
      return minVersion_1;
    }
  
    var valid;
    var hasRequiredValid;
    function requireValid() {
      if (hasRequiredValid) return valid;
      hasRequiredValid = 1;
      var Range = requireRange();
      var validRange = function validRange(range, options) {
        try {
          return new Range(range, options).range || '*';
        } catch (er) {
          return null;
        }
      };
      valid = validRange;
      return valid;
    }
  
    var outside_1;
    var hasRequiredOutside;
    function requireOutside() {
      if (hasRequiredOutside) return outside_1;
      hasRequiredOutside = 1;
      var SemVer = requireSemver$1();
      var Comparator = requireComparator();
      var ANY = Comparator.ANY;
      var Range = requireRange();
      var satisfies = requireSatisfies();
      var gt = requireGt();
      var lt = requireLt();
      var lte = requireLte();
      var gte = requireGte();
      var outside = function outside(version, range, hilo, options) {
        version = new SemVer(version, options);
        range = new Range(range, options);
        var gtfn, ltefn, ltfn, comp, ecomp;
        switch (hilo) {
          case '>':
            gtfn = gt;
            ltefn = lte;
            ltfn = lt;
            comp = '>';
            ecomp = '>=';
            break;
          case '<':
            gtfn = lt;
            ltefn = gte;
            ltfn = gt;
            comp = '<';
            ecomp = '<=';
            break;
          default:
            throw new TypeError('Must provide a hilo val of "<" or ">"');
        }
        if (satisfies(version, range, options)) {
          return false;
        }
        var _loop = function _loop() {
          var comparators = range.set[i];
          var high = null;
          var low = null;
          comparators.forEach(function (comparator) {
            if (comparator.semver === ANY) {
              comparator = new Comparator('>=0.0.0');
            }
            high = high || comparator;
            low = low || comparator;
            if (gtfn(comparator.semver, high.semver, options)) {
              high = comparator;
            } else if (ltfn(comparator.semver, low.semver, options)) {
              low = comparator;
            }
          });
          if (high.operator === comp || high.operator === ecomp) {
            return {
              v: false
            };
          }
          if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) {
            return {
              v: false
            };
          } else if (low.operator === ecomp && ltfn(version, low.semver)) {
            return {
              v: false
            };
          }
        };
        for (var i = 0; i < range.set.length; ++i) {
          var _ret = _loop();
          if (typeof _ret === "object") return _ret.v;
        }
        return true;
      };
      outside_1 = outside;
      return outside_1;
    }
  
    var gtr_1;
    var hasRequiredGtr;
    function requireGtr() {
      if (hasRequiredGtr) return gtr_1;
      hasRequiredGtr = 1;
      var outside = requireOutside();
      var gtr = function gtr(version, range, options) {
        return outside(version, range, '>', options);
      };
      gtr_1 = gtr;
      return gtr_1;
    }
  
    var ltr_1;
    var hasRequiredLtr;
    function requireLtr() {
      if (hasRequiredLtr) return ltr_1;
      hasRequiredLtr = 1;
      var outside = requireOutside();
      var ltr = function ltr(version, range, options) {
        return outside(version, range, '<', options);
      };
      ltr_1 = ltr;
      return ltr_1;
    }
  
    var intersects_1;
    var hasRequiredIntersects;
    function requireIntersects() {
      if (hasRequiredIntersects) return intersects_1;
      hasRequiredIntersects = 1;
      var Range = requireRange();
      var intersects = function intersects(r1, r2, options) {
        r1 = new Range(r1, options);
        r2 = new Range(r2, options);
        return r1.intersects(r2);
      };
      intersects_1 = intersects;
      return intersects_1;
    }
  
    var simplify;
    var hasRequiredSimplify;
    function requireSimplify() {
      if (hasRequiredSimplify) return simplify;
      hasRequiredSimplify = 1;
      var satisfies = requireSatisfies();
      var compare = requireCompare();
      simplify = function simplify(versions, range, options) {
        var set = [];
        var min = null;
        var prev = null;
        var v = versions.sort(function (a, b) {
          return compare(a, b, options);
        });
        for (var _iterator = _createForOfIteratorHelperLoose(v), _step; !(_step = _iterator()).done;) {
          var version = _step.value;
          var included = satisfies(version, range, options);
          if (included) {
            prev = version;
            if (!min) min = version;
          } else {
            if (prev) {
              set.push([min, prev]);
            }
            prev = null;
            min = null;
          }
        }
        if (min) set.push([min, null]);
        var ranges = [];
        for (var _i = 0, _set = set; _i < _set.length; _i++) {
          var _set$_i = _slicedToArray(_set[_i], 2),
            _min = _set$_i[0],
            max = _set$_i[1];
          if (_min === max) ranges.push(_min);else if (!max && _min === v[0]) ranges.push('*');else if (!max) ranges.push(">=" + _min);else if (_min === v[0]) ranges.push("<=" + max);else ranges.push(_min + " - " + max);
        }
        var simplified = ranges.join(' || ');
        var original = typeof range.raw === 'string' ? range.raw : String(range);
        return simplified.length < original.length ? simplified : range;
      };
      return simplify;
    }
  
    var subset_1;
    var hasRequiredSubset;
    function requireSubset() {
      if (hasRequiredSubset) return subset_1;
      hasRequiredSubset = 1;
      var Range = requireRange();
      var _require$$ = requireComparator(),
        ANY = _require$$.ANY;
      var satisfies = requireSatisfies();
      var compare = requireCompare();
      var subset = function subset(sub, dom, options) {
        if (sub === dom) return true;
        sub = new Range(sub, options);
        dom = new Range(dom, options);
        var sawNonNull = false;
        OUTER: for (var _iterator = _createForOfIteratorHelperLoose(sub.set), _step; !(_step = _iterator()).done;) {
          var simpleSub = _step.value;
          for (var _iterator2 = _createForOfIteratorHelperLoose(dom.set), _step2; !(_step2 = _iterator2()).done;) {
            var simpleDom = _step2.value;
            var isSub = simpleSubset(simpleSub, simpleDom, options);
            sawNonNull = sawNonNull || isSub !== null;
            if (isSub) continue OUTER;
          }
          if (sawNonNull) return false;
        }
        return true;
      };
      var simpleSubset = function simpleSubset(sub, dom, options) {
        if (sub === dom) return true;
        if (sub.length === 1 && sub[0].semver === ANY) return dom.length === 1 && dom[0].semver === ANY;
        var eqSet = new Set();
        var gt, lt;
        for (var _iterator3 = _createForOfIteratorHelperLoose(sub), _step3; !(_step3 = _iterator3()).done;) {
          var c = _step3.value;
          if (c.operator === '>' || c.operator === '>=') gt = higherGT(gt, c, options);else if (c.operator === '<' || c.operator === '<=') lt = lowerLT(lt, c, options);else eqSet.add(c.semver);
        }
        if (eqSet.size > 1) return null;
        var gtltComp;
        if (gt && lt) {
          gtltComp = compare(gt.semver, lt.semver, options);
          if (gtltComp > 0) return null;else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) return null;
        }
        for (var _iterator4 = _createForOfIteratorHelperLoose(eqSet), _step4; !(_step4 = _iterator4()).done;) {
          var eq = _step4.value;
          if (gt && !satisfies(eq, String(gt), options)) return null;
          if (lt && !satisfies(eq, String(lt), options)) return null;
          for (var _iterator6 = _createForOfIteratorHelperLoose(dom), _step6; !(_step6 = _iterator6()).done;) {
            var _c = _step6.value;
            if (!satisfies(eq, String(_c), options)) return false;
          }
          return true;
        }
        var higher, lower;
        var hasDomLT, hasDomGT;
        for (var _iterator5 = _createForOfIteratorHelperLoose(dom), _step5; !(_step5 = _iterator5()).done;) {
          var _c2 = _step5.value;
          hasDomGT = hasDomGT || _c2.operator === '>' || _c2.operator === '>=';
          hasDomLT = hasDomLT || _c2.operator === '<' || _c2.operator === '<=';
          if (gt) {
            if (_c2.operator === '>' || _c2.operator === '>=') {
              higher = higherGT(gt, _c2, options);
              if (higher === _c2 && higher !== gt) return false;
            } else if (gt.operator === '>=' && !satisfies(gt.semver, String(_c2), options)) return false;
          }
          if (lt) {
            if (_c2.operator === '<' || _c2.operator === '<=') {
              lower = lowerLT(lt, _c2, options);
              if (lower === _c2 && lower !== lt) return false;
            } else if (lt.operator === '<=' && !satisfies(lt.semver, String(_c2), options)) return false;
          }
          if (!_c2.operator && (lt || gt) && gtltComp !== 0) return false;
        }
        if (gt && hasDomLT && !lt && gtltComp !== 0) return false;
        if (lt && hasDomGT && !gt && gtltComp !== 0) return false;
        return true;
      };
      var higherGT = function higherGT(a, b, options) {
        if (!a) return b;
        var comp = compare(a.semver, b.semver, options);
        return comp > 0 ? a : comp < 0 ? b : b.operator === '>' && a.operator === '>=' ? b : a;
      };
      var lowerLT = function lowerLT(a, b, options) {
        if (!a) return b;
        var comp = compare(a.semver, b.semver, options);
        return comp < 0 ? a : comp > 0 ? b : b.operator === '<' && a.operator === '<=' ? b : a;
      };
      subset_1 = subset;
      return subset_1;
    }
  
    var semverBABEL_8_BREAKINGTrue;
    var hasRequiredSemverBABEL_8_BREAKINGTrue;
    function requireSemverBABEL_8_BREAKINGTrue() {
      if (hasRequiredSemverBABEL_8_BREAKINGTrue) return semverBABEL_8_BREAKINGTrue;
      hasRequiredSemverBABEL_8_BREAKINGTrue = 1;
      var internalRe = requireRe();
      semverBABEL_8_BREAKINGTrue = {
        re: internalRe.re,
        src: internalRe.src,
        tokens: internalRe.t,
        SEMVER_SPEC_VERSION: requireConstants().SEMVER_SPEC_VERSION,
        SemVer: requireSemver$1(),
        compareIdentifiers: requireIdentifiers().compareIdentifiers,
        rcompareIdentifiers: requireIdentifiers().rcompareIdentifiers,
        parse: requireParse(),
        valid: requireValid$1(),
        clean: requireClean(),
        inc: requireInc(),
        diff: requireDiff(),
        major: requireMajor(),
        minor: requireMinor(),
        patch: requirePatch(),
        prerelease: requirePrerelease(),
        compare: requireCompare(),
        rcompare: requireRcompare(),
        compareLoose: requireCompareLoose(),
        compareBuild: requireCompareBuild(),
        sort: requireSort(),
        rsort: requireRsort(),
        gt: requireGt(),
        lt: requireLt(),
        eq: requireEq(),
        neq: requireNeq(),
        gte: requireGte(),
        lte: requireLte(),
        cmp: requireCmp(),
        coerce: requireCoerce(),
        Comparator: requireComparator(),
        Range: requireRange(),
        satisfies: requireSatisfies(),
        toComparators: requireToComparators(),
        maxSatisfying: requireMaxSatisfying(),
        minSatisfying: requireMinSatisfying(),
        minVersion: requireMinVersion(),
        validRange: requireValid(),
        outside: requireOutside(),
        gtr: requireGtr(),
        ltr: requireLtr(),
        intersects: requireIntersects(),
        simplifyRange: requireSimplify(),
        subset: requireSubset()
      };
      return semverBABEL_8_BREAKINGTrue;
    }
  
    var semver$c = {exports: {}};
  
    var hasRequiredSemver;
    function requireSemver() {
      if (hasRequiredSemver) return semver$c.exports;
      hasRequiredSemver = 1;
      (function (module, exports) {
        exports = module.exports = SemVer;
        var debug;
        if (typeof browser$1$1 === 'object' && browser$1$1.env && browser$1$1.env.NODE_DEBUG && /\bsemver\b/i.test(browser$1$1.env.NODE_DEBUG)) {
          debug = function debug() {
            var args = Array.prototype.slice.call(arguments, 0);
            args.unshift('SEMVER');
            console.log.apply(console, args);
          };
        } else {
          debug = function debug() {};
        }
        exports.SEMVER_SPEC_VERSION = '2.0.0';
        var MAX_LENGTH = 256;
        var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
        var MAX_SAFE_COMPONENT_LENGTH = 16;
        var re = exports.re = [];
        var src = exports.src = [];
        var t = exports.tokens = {};
        var R = 0;
        function tok(n) {
          t[n] = R++;
        }
        tok('NUMERICIDENTIFIER');
        src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*';
        tok('NUMERICIDENTIFIERLOOSE');
        src[t.NUMERICIDENTIFIERLOOSE] = '[0-9]+';
        tok('NONNUMERICIDENTIFIER');
        src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*';
        tok('MAINVERSION');
        src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + '(' + src[t.NUMERICIDENTIFIER] + ')';
        tok('MAINVERSIONLOOSE');
        src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')';
        tok('PRERELEASEIDENTIFIER');
        src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] + '|' + src[t.NONNUMERICIDENTIFIER] + ')';
        tok('PRERELEASEIDENTIFIERLOOSE');
        src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] + '|' + src[t.NONNUMERICIDENTIFIER] + ')';
        tok('PRERELEASE');
        src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] + '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))';
        tok('PRERELEASELOOSE');
        src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] + '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))';
        tok('BUILDIDENTIFIER');
        src[t.BUILDIDENTIFIER] = '[0-9A-Za-z-]+';
        tok('BUILD');
        src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] + '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))';
        tok('FULL');
        tok('FULLPLAIN');
        src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] + src[t.PRERELEASE] + '?' + src[t.BUILD] + '?';
        src[t.FULL] = '^' + src[t.FULLPLAIN] + '$';
        tok('LOOSEPLAIN');
        src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] + src[t.PRERELEASELOOSE] + '?' + src[t.BUILD] + '?';
        tok('LOOSE');
        src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$';
        tok('GTLT');
        src[t.GTLT] = '((?:<|>)?=?)';
        tok('XRANGEIDENTIFIERLOOSE');
        src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*';
        tok('XRANGEIDENTIFIER');
        src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*';
        tok('XRANGEPLAIN');
        src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:' + src[t.PRERELEASE] + ')?' + src[t.BUILD] + '?' + ')?)?';
        tok('XRANGEPLAINLOOSE');
        src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:' + src[t.PRERELEASELOOSE] + ')?' + src[t.BUILD] + '?' + ')?)?';
        tok('XRANGE');
        src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$';
        tok('XRANGELOOSE');
        src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$';
        tok('COERCE');
        src[t.COERCE] = '(^|[^\\d])' + '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:$|[^\\d])';
        tok('COERCERTL');
        re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g');
        tok('LONETILDE');
        src[t.LONETILDE] = '(?:~>?)';
        tok('TILDETRIM');
        src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+';
        re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g');
        var tildeTrimReplace = '$1~';
        tok('TILDE');
        src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$';
        tok('TILDELOOSE');
        src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$';
        tok('LONECARET');
        src[t.LONECARET] = '(?:\\^)';
        tok('CARETTRIM');
        src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+';
        re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g');
        var caretTrimReplace = '$1^';
        tok('CARET');
        src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$';
        tok('CARETLOOSE');
        src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$';
        tok('COMPARATORLOOSE');
        src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$';
        tok('COMPARATOR');
        src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$';
        tok('COMPARATORTRIM');
        src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')';
        re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g');
        var comparatorTrimReplace = '$1$2$3';
        tok('HYPHENRANGE');
        src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' + '\\s+-\\s+' + '(' + src[t.XRANGEPLAIN] + ')' + '\\s*$';
        tok('HYPHENRANGELOOSE');
        src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' + '\\s+-\\s+' + '(' + src[t.XRANGEPLAINLOOSE] + ')' + '\\s*$';
        tok('STAR');
        src[t.STAR] = '(<|>)?=?\\s*\\*';
        for (var i = 0; i < R; i++) {
          debug(i, src[i]);
          if (!re[i]) {
            re[i] = new RegExp(src[i]);
          }
        }
        exports.parse = parse;
        function parse(version, options) {
          if (!options || typeof options !== 'object') {
            options = {
              loose: !!options,
              includePrerelease: false
            };
          }
          if (version instanceof SemVer) {
            return version;
          }
          if (typeof version !== 'string') {
            return null;
          }
          if (version.length > MAX_LENGTH) {
            return null;
          }
          var r = options.loose ? re[t.LOOSE] : re[t.FULL];
          if (!r.test(version)) {
            return null;
          }
          try {
            return new SemVer(version, options);
          } catch (er) {
            return null;
          }
        }
        exports.valid = valid;
        function valid(version, options) {
          var v = parse(version, options);
          return v ? v.version : null;
        }
        exports.clean = clean;
        function clean(version, options) {
          var s = parse(version.trim().replace(/^[=v]+/, ''), options);
          return s ? s.version : null;
        }
        exports.SemVer = SemVer;
        function SemVer(version, options) {
          if (!options || typeof options !== 'object') {
            options = {
              loose: !!options,
              includePrerelease: false
            };
          }
          if (version instanceof SemVer) {
            if (version.loose === options.loose) {
              return version;
            } else {
              version = version.version;
            }
          } else if (typeof version !== 'string') {
            throw new TypeError('Invalid Version: ' + version);
          }
          if (version.length > MAX_LENGTH) {
            throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters');
          }
          if (!(this instanceof SemVer)) {
            return new SemVer(version, options);
          }
          debug('SemVer', version, options);
          this.options = options;
          this.loose = !!options.loose;
          var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]);
          if (!m) {
            throw new TypeError('Invalid Version: ' + version);
          }
          this.raw = version;
          this.major = +m[1];
          this.minor = +m[2];
          this.patch = +m[3];
          if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
            throw new TypeError('Invalid major version');
          }
          if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
            throw new TypeError('Invalid minor version');
          }
          if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
            throw new TypeError('Invalid patch version');
          }
          if (!m[4]) {
            this.prerelease = [];
          } else {
            this.prerelease = m[4].split('.').map(function (id) {
              if (/^[0-9]+$/.test(id)) {
                var num = +id;
                if (num >= 0 && num < MAX_SAFE_INTEGER) {
                  return num;
                }
              }
              return id;
            });
          }
          this.build = m[5] ? m[5].split('.') : [];
          this.format();
        }
        SemVer.prototype.format = function () {
          this.version = this.major + '.' + this.minor + '.' + this.patch;
          if (this.prerelease.length) {
            this.version += '-' + this.prerelease.join('.');
          }
          return this.version;
        };
        SemVer.prototype.toString = function () {
          return this.version;
        };
        SemVer.prototype.compare = function (other) {
          debug('SemVer.compare', this.version, this.options, other);
          if (!(other instanceof SemVer)) {
            other = new SemVer(other, this.options);
          }
          return this.compareMain(other) || this.comparePre(other);
        };
        SemVer.prototype.compareMain = function (other) {
          if (!(other instanceof SemVer)) {
            other = new SemVer(other, this.options);
          }
          return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);
        };
        SemVer.prototype.comparePre = function (other) {
          if (!(other instanceof SemVer)) {
            other = new SemVer(other, this.options);
          }
          if (this.prerelease.length && !other.prerelease.length) {
            return -1;
          } else if (!this.prerelease.length && other.prerelease.length) {
            return 1;
          } else if (!this.prerelease.length && !other.prerelease.length) {
            return 0;
          }
          var i = 0;
          do {
            var a = this.prerelease[i];
            var b = other.prerelease[i];
            debug('prerelease compare', i, a, b);
            if (a === undefined && b === undefined) {
              return 0;
            } else if (b === undefined) {
              return 1;
            } else if (a === undefined) {
              return -1;
            } else if (a === b) {
              continue;
            } else {
              return compareIdentifiers(a, b);
            }
          } while (++i);
        };
        SemVer.prototype.compareBuild = function (other) {
          if (!(other instanceof SemVer)) {
            other = new SemVer(other, this.options);
          }
          var i = 0;
          do {
            var a = this.build[i];
            var b = other.build[i];
            debug('prerelease compare', i, a, b);
            if (a === undefined && b === undefined) {
              return 0;
            } else if (b === undefined) {
              return 1;
            } else if (a === undefined) {
              return -1;
            } else if (a === b) {
              continue;
            } else {
              return compareIdentifiers(a, b);
            }
          } while (++i);
        };
        SemVer.prototype.inc = function (release, identifier) {
          switch (release) {
            case 'premajor':
              this.prerelease.length = 0;
              this.patch = 0;
              this.minor = 0;
              this.major++;
              this.inc('pre', identifier);
              break;
            case 'preminor':
              this.prerelease.length = 0;
              this.patch = 0;
              this.minor++;
              this.inc('pre', identifier);
              break;
            case 'prepatch':
              this.prerelease.length = 0;
              this.inc('patch', identifier);
              this.inc('pre', identifier);
              break;
            case 'prerelease':
              if (this.prerelease.length === 0) {
                this.inc('patch', identifier);
              }
              this.inc('pre', identifier);
              break;
            case 'major':
              if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {
                this.major++;
              }
              this.minor = 0;
              this.patch = 0;
              this.prerelease = [];
              break;
            case 'minor':
              if (this.patch !== 0 || this.prerelease.length === 0) {
                this.minor++;
              }
              this.patch = 0;
              this.prerelease = [];
              break;
            case 'patch':
              if (this.prerelease.length === 0) {
                this.patch++;
              }
              this.prerelease = [];
              break;
            case 'pre':
              if (this.prerelease.length === 0) {
                this.prerelease = [0];
              } else {
                var i = this.prerelease.length;
                while (--i >= 0) {
                  if (typeof this.prerelease[i] === 'number') {
                    this.prerelease[i]++;
                    i = -2;
                  }
                }
                if (i === -1) {
                  this.prerelease.push(0);
                }
              }
              if (identifier) {
                if (this.prerelease[0] === identifier) {
                  if (isNaN(this.prerelease[1])) {
                    this.prerelease = [identifier, 0];
                  }
                } else {
                  this.prerelease = [identifier, 0];
                }
              }
              break;
            default:
              throw new Error('invalid increment argument: ' + release);
          }
          this.format();
          this.raw = this.version;
          return this;
        };
        exports.inc = inc;
        function inc(version, release, loose, identifier) {
          if (typeof loose === 'string') {
            identifier = loose;
            loose = undefined;
          }
          try {
            return new SemVer(version, loose).inc(release, identifier).version;
          } catch (er) {
            return null;
          }
        }
        exports.diff = diff;
        function diff(version1, version2) {
          if (eq(version1, version2)) {
            return null;
          } else {
            var v1 = parse(version1);
            var v2 = parse(version2);
            var prefix = '';
            if (v1.prerelease.length || v2.prerelease.length) {
              prefix = 'pre';
              var defaultResult = 'prerelease';
            }
            for (var key in v1) {
              if (key === 'major' || key === 'minor' || key === 'patch') {
                if (v1[key] !== v2[key]) {
                  return prefix + key;
                }
              }
            }
            return defaultResult;
          }
        }
        exports.compareIdentifiers = compareIdentifiers;
        var numeric = /^[0-9]+$/;
        function compareIdentifiers(a, b) {
          var anum = numeric.test(a);
          var bnum = numeric.test(b);
          if (anum && bnum) {
            a = +a;
            b = +b;
          }
          return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;
        }
        exports.rcompareIdentifiers = rcompareIdentifiers;
        function rcompareIdentifiers(a, b) {
          return compareIdentifiers(b, a);
        }
        exports.major = major;
        function major(a, loose) {
          return new SemVer(a, loose).major;
        }
        exports.minor = minor;
        function minor(a, loose) {
          return new SemVer(a, loose).minor;
        }
        exports.patch = patch;
        function patch(a, loose) {
          return new SemVer(a, loose).patch;
        }
        exports.compare = compare;
        function compare(a, b, loose) {
          return new SemVer(a, loose).compare(new SemVer(b, loose));
        }
        exports.compareLoose = compareLoose;
        function compareLoose(a, b) {
          return compare(a, b, true);
        }
        exports.compareBuild = compareBuild;
        function compareBuild(a, b, loose) {
          var versionA = new SemVer(a, loose);
          var versionB = new SemVer(b, loose);
          return versionA.compare(versionB) || versionA.compareBuild(versionB);
        }
        exports.rcompare = rcompare;
        function rcompare(a, b, loose) {
          return compare(b, a, loose);
        }
        exports.sort = sort;
        function sort(list, loose) {
          return list.sort(function (a, b) {
            return exports.compareBuild(a, b, loose);
          });
        }
        exports.rsort = rsort;
        function rsort(list, loose) {
          return list.sort(function (a, b) {
            return exports.compareBuild(b, a, loose);
          });
        }
        exports.gt = gt;
        function gt(a, b, loose) {
          return compare(a, b, loose) > 0;
        }
        exports.lt = lt;
        function lt(a, b, loose) {
          return compare(a, b, loose) < 0;
        }
        exports.eq = eq;
        function eq(a, b, loose) {
          return compare(a, b, loose) === 0;
        }
        exports.neq = neq;
        function neq(a, b, loose) {
          return compare(a, b, loose) !== 0;
        }
        exports.gte = gte;
        function gte(a, b, loose) {
          return compare(a, b, loose) >= 0;
        }
        exports.lte = lte;
        function lte(a, b, loose) {
          return compare(a, b, loose) <= 0;
        }
        exports.cmp = cmp;
        function cmp(a, op, b, loose) {
          switch (op) {
            case '===':
              if (typeof a === 'object') a = a.version;
              if (typeof b === 'object') b = b.version;
              return a === b;
            case '!==':
              if (typeof a === 'object') a = a.version;
              if (typeof b === 'object') b = b.version;
              return a !== b;
            case '':
            case '=':
            case '==':
              return eq(a, b, loose);
            case '!=':
              return neq(a, b, loose);
            case '>':
              return gt(a, b, loose);
            case '>=':
              return gte(a, b, loose);
            case '<':
              return lt(a, b, loose);
            case '<=':
              return lte(a, b, loose);
            default:
              throw new TypeError('Invalid operator: ' + op);
          }
        }
        exports.Comparator = Comparator;
        function Comparator(comp, options) {
          if (!options || typeof options !== 'object') {
            options = {
              loose: !!options,
              includePrerelease: false
            };
          }
          if (comp instanceof Comparator) {
            if (comp.loose === !!options.loose) {
              return comp;
            } else {
              comp = comp.value;
            }
          }
          if (!(this instanceof Comparator)) {
            return new Comparator(comp, options);
          }
          debug('comparator', comp, options);
          this.options = options;
          this.loose = !!options.loose;
          this.parse(comp);
          if (this.semver === ANY) {
            this.value = '';
          } else {
            this.value = this.operator + this.semver.version;
          }
          debug('comp', this);
        }
        var ANY = {};
        Comparator.prototype.parse = function (comp) {
          var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
          var m = comp.match(r);
          if (!m) {
            throw new TypeError('Invalid comparator: ' + comp);
          }
          this.operator = m[1] !== undefined ? m[1] : '';
          if (this.operator === '=') {
            this.operator = '';
          }
          if (!m[2]) {
            this.semver = ANY;
          } else {
            this.semver = new SemVer(m[2], this.options.loose);
          }
        };
        Comparator.prototype.toString = function () {
          return this.value;
        };
        Comparator.prototype.test = function (version) {
          debug('Comparator.test', version, this.options.loose);
          if (this.semver === ANY || version === ANY) {
            return true;
          }
          if (typeof version === 'string') {
            try {
              version = new SemVer(version, this.options);
            } catch (er) {
              return false;
            }
          }
          return cmp(version, this.operator, this.semver, this.options);
        };
        Comparator.prototype.intersects = function (comp, options) {
          if (!(comp instanceof Comparator)) {
            throw new TypeError('a Comparator is required');
          }
          if (!options || typeof options !== 'object') {
            options = {
              loose: !!options,
              includePrerelease: false
            };
          }
          var rangeTmp;
          if (this.operator === '') {
            if (this.value === '') {
              return true;
            }
            rangeTmp = new Range(comp.value, options);
            return satisfies(this.value, rangeTmp, options);
          } else if (comp.operator === '') {
            if (comp.value === '') {
              return true;
            }
            rangeTmp = new Range(this.value, options);
            return satisfies(comp.semver, rangeTmp, options);
          }
          var sameDirectionIncreasing = (this.operator === '>=' || this.operator === '>') && (comp.operator === '>=' || comp.operator === '>');
          var sameDirectionDecreasing = (this.operator === '<=' || this.operator === '<') && (comp.operator === '<=' || comp.operator === '<');
          var sameSemVer = this.semver.version === comp.semver.version;
          var differentDirectionsInclusive = (this.operator === '>=' || this.operator === '<=') && (comp.operator === '>=' || comp.operator === '<=');
          var oppositeDirectionsLessThan = cmp(this.semver, '<', comp.semver, options) && (this.operator === '>=' || this.operator === '>') && (comp.operator === '<=' || comp.operator === '<');
          var oppositeDirectionsGreaterThan = cmp(this.semver, '>', comp.semver, options) && (this.operator === '<=' || this.operator === '<') && (comp.operator === '>=' || comp.operator === '>');
          return sameDirectionIncreasing || sameDirectionDecreasing || sameSemVer && differentDirectionsInclusive || oppositeDirectionsLessThan || oppositeDirectionsGreaterThan;
        };
        exports.Range = Range;
        function Range(range, options) {
          if (!options || typeof options !== 'object') {
            options = {
              loose: !!options,
              includePrerelease: false
            };
          }
          if (range instanceof Range) {
            if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {
              return range;
            } else {
              return new Range(range.raw, options);
            }
          }
          if (range instanceof Comparator) {
            return new Range(range.value, options);
          }
          if (!(this instanceof Range)) {
            return new Range(range, options);
          }
          this.options = options;
          this.loose = !!options.loose;
          this.includePrerelease = !!options.includePrerelease;
          this.raw = range;
          this.set = range.split(/\s*\|\|\s*/).map(function (range) {
            return this.parseRange(range.trim());
          }, this).filter(function (c) {
            return c.length;
          });
          if (!this.set.length) {
            throw new TypeError('Invalid SemVer Range: ' + range);
          }
          this.format();
        }
        Range.prototype.format = function () {
          this.range = this.set.map(function (comps) {
            return comps.join(' ').trim();
          }).join('||').trim();
          return this.range;
        };
        Range.prototype.toString = function () {
          return this.range;
        };
        Range.prototype.parseRange = function (range) {
          var loose = this.options.loose;
          range = range.trim();
          var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE];
          range = range.replace(hr, hyphenReplace);
          debug('hyphen replace', range);
          range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace);
          debug('comparator trim', range, re[t.COMPARATORTRIM]);
          range = range.replace(re[t.TILDETRIM], tildeTrimReplace);
          range = range.replace(re[t.CARETTRIM], caretTrimReplace);
          range = range.split(/\s+/).join(' ');
          var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
          var set = range.split(' ').map(function (comp) {
            return parseComparator(comp, this.options);
          }, this).join(' ').split(/\s+/);
          if (this.options.loose) {
            set = set.filter(function (comp) {
              return !!comp.match(compRe);
            });
          }
          set = set.map(function (comp) {
            return new Comparator(comp, this.options);
          }, this);
          return set;
        };
        Range.prototype.intersects = function (range, options) {
          if (!(range instanceof Range)) {
            throw new TypeError('a Range is required');
          }
          return this.set.some(function (thisComparators) {
            return isSatisfiable(thisComparators, options) && range.set.some(function (rangeComparators) {
              return isSatisfiable(rangeComparators, options) && thisComparators.every(function (thisComparator) {
                return rangeComparators.every(function (rangeComparator) {
                  return thisComparator.intersects(rangeComparator, options);
                });
              });
            });
          });
        };
        function isSatisfiable(comparators, options) {
          var result = true;
          var remainingComparators = comparators.slice();
          var testComparator = remainingComparators.pop();
          while (result && remainingComparators.length) {
            result = remainingComparators.every(function (otherComparator) {
              return testComparator.intersects(otherComparator, options);
            });
            testComparator = remainingComparators.pop();
          }
          return result;
        }
        exports.toComparators = toComparators;
        function toComparators(range, options) {
          return new Range(range, options).set.map(function (comp) {
            return comp.map(function (c) {
              return c.value;
            }).join(' ').trim().split(' ');
          });
        }
        function parseComparator(comp, options) {
          debug('comp', comp, options);
          comp = replaceCarets(comp, options);
          debug('caret', comp);
          comp = replaceTildes(comp, options);
          debug('tildes', comp);
          comp = replaceXRanges(comp, options);
          debug('xrange', comp);
          comp = replaceStars(comp, options);
          debug('stars', comp);
          return comp;
        }
        function isX(id) {
          return !id || id.toLowerCase() === 'x' || id === '*';
        }
        function replaceTildes(comp, options) {
          return comp.trim().split(/\s+/).map(function (comp) {
            return replaceTilde(comp, options);
          }).join(' ');
        }
        function replaceTilde(comp, options) {
          var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
          return comp.replace(r, function (_, M, m, p, pr) {
            debug('tilde', comp, _, M, m, p, pr);
            var ret;
            if (isX(M)) {
              ret = '';
            } else if (isX(m)) {
              ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
            } else if (isX(p)) {
              ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
            } else if (pr) {
              debug('replaceTilde pr', pr);
              ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + (+m + 1) + '.0';
            } else {
              ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';
            }
            debug('tilde return', ret);
            return ret;
          });
        }
        function replaceCarets(comp, options) {
          return comp.trim().split(/\s+/).map(function (comp) {
            return replaceCaret(comp, options);
          }).join(' ');
        }
        function replaceCaret(comp, options) {
          debug('caret', comp, options);
          var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET];
          return comp.replace(r, function (_, M, m, p, pr) {
            debug('caret', comp, _, M, m, p, pr);
            var ret;
            if (isX(M)) {
              ret = '';
            } else if (isX(m)) {
              ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
            } else if (isX(p)) {
              if (M === '0') {
                ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
              } else {
                ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0';
              }
            } else if (pr) {
              debug('replaceCaret pr', pr);
              if (M === '0') {
                if (m === '0') {
                  ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + m + '.' + (+p + 1);
                } else {
                  ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + (+m + 1) + '.0';
                }
              } else {
                ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + (+M + 1) + '.0.0';
              }
            } else {
              debug('no pr');
              if (M === '0') {
                if (m === '0') {
                  ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + m + '.' + (+p + 1);
                } else {
                  ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';
                }
              } else {
                ret = '>=' + M + '.' + m + '.' + p + ' <' + (+M + 1) + '.0.0';
              }
            }
            debug('caret return', ret);
            return ret;
          });
        }
        function replaceXRanges(comp, options) {
          debug('replaceXRanges', comp, options);
          return comp.split(/\s+/).map(function (comp) {
            return replaceXRange(comp, options);
          }).join(' ');
        }
        function replaceXRange(comp, options) {
          comp = comp.trim();
          var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
          return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
            debug('xRange', comp, ret, gtlt, M, m, p, pr);
            var xM = isX(M);
            var xm = xM || isX(m);
            var xp = xm || isX(p);
            var anyX = xp;
            if (gtlt === '=' && anyX) {
              gtlt = '';
            }
            pr = options.includePrerelease ? '-0' : '';
            if (xM) {
              if (gtlt === '>' || gtlt === '<') {
                ret = '<0.0.0-0';
              } else {
                ret = '*';
              }
            } else if (gtlt && anyX) {
              if (xm) {
                m = 0;
              }
              p = 0;
              if (gtlt === '>') {
                gtlt = '>=';
                if (xm) {
                  M = +M + 1;
                  m = 0;
                  p = 0;
                } else {
                  m = +m + 1;
                  p = 0;
                }
              } else if (gtlt === '<=') {
                gtlt = '<';
                if (xm) {
                  M = +M + 1;
                } else {
                  m = +m + 1;
                }
              }
              ret = gtlt + M + '.' + m + '.' + p + pr;
            } else if (xm) {
              ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr;
            } else if (xp) {
              ret = '>=' + M + '.' + m + '.0' + pr + ' <' + M + '.' + (+m + 1) + '.0' + pr;
            }
            debug('xRange return', ret);
            return ret;
          });
        }
        function replaceStars(comp, options) {
          debug('replaceStars', comp, options);
          return comp.trim().replace(re[t.STAR], '');
        }
        function hyphenReplace($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) {
          if (isX(fM)) {
            from = '';
          } else if (isX(fm)) {
            from = '>=' + fM + '.0.0';
          } else if (isX(fp)) {
            from = '>=' + fM + '.' + fm + '.0';
          } else {
            from = '>=' + from;
          }
          if (isX(tM)) {
            to = '';
          } else if (isX(tm)) {
            to = '<' + (+tM + 1) + '.0.0';
          } else if (isX(tp)) {
            to = '<' + tM + '.' + (+tm + 1) + '.0';
          } else if (tpr) {
            to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr;
          } else {
            to = '<=' + to;
          }
          return (from + ' ' + to).trim();
        }
        Range.prototype.test = function (version) {
          if (!version) {
            return false;
          }
          if (typeof version === 'string') {
            try {
              version = new SemVer(version, this.options);
            } catch (er) {
              return false;
            }
          }
          for (var i = 0; i < this.set.length; i++) {
            if (testSet(this.set[i], version, this.options)) {
              return true;
            }
          }
          return false;
        };
        function testSet(set, version, options) {
          for (var i = 0; i < set.length; i++) {
            if (!set[i].test(version)) {
              return false;
            }
          }
          if (version.prerelease.length && !options.includePrerelease) {
            for (i = 0; i < set.length; i++) {
              debug(set[i].semver);
              if (set[i].semver === ANY) {
                continue;
              }
              if (set[i].semver.prerelease.length > 0) {
                var allowed = set[i].semver;
                if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) {
                  return true;
                }
              }
            }
            return false;
          }
          return true;
        }
        exports.satisfies = satisfies;
        function satisfies(version, range, options) {
          try {
            range = new Range(range, options);
          } catch (er) {
            return false;
          }
          return range.test(version);
        }
        exports.maxSatisfying = maxSatisfying;
        function maxSatisfying(versions, range, options) {
          var max = null;
          var maxSV = null;
          try {
            var rangeObj = new Range(range, options);
          } catch (er) {
            return null;
          }
          versions.forEach(function (v) {
            if (rangeObj.test(v)) {
              if (!max || maxSV.compare(v) === -1) {
                max = v;
                maxSV = new SemVer(max, options);
              }
            }
          });
          return max;
        }
        exports.minSatisfying = minSatisfying;
        function minSatisfying(versions, range, options) {
          var min = null;
          var minSV = null;
          try {
            var rangeObj = new Range(range, options);
          } catch (er) {
            return null;
          }
          versions.forEach(function (v) {
            if (rangeObj.test(v)) {
              if (!min || minSV.compare(v) === 1) {
                min = v;
                minSV = new SemVer(min, options);
              }
            }
          });
          return min;
        }
        exports.minVersion = minVersion;
        function minVersion(range, loose) {
          range = new Range(range, loose);
          var minver = new SemVer('0.0.0');
          if (range.test(minver)) {
            return minver;
          }
          minver = new SemVer('0.0.0-0');
          if (range.test(minver)) {
            return minver;
          }
          minver = null;
          for (var i = 0; i < range.set.length; ++i) {
            var comparators = range.set[i];
            comparators.forEach(function (comparator) {
              var compver = new SemVer(comparator.semver.version);
              switch (comparator.operator) {
                case '>':
                  if (compver.prerelease.length === 0) {
                    compver.patch++;
                  } else {
                    compver.prerelease.push(0);
                  }
                  compver.raw = compver.format();
                case '':
                case '>=':
                  if (!minver || gt(minver, compver)) {
                    minver = compver;
                  }
                  break;
                case '<':
                case '<=':
                  break;
                default:
                  throw new Error('Unexpected operation: ' + comparator.operator);
              }
            });
          }
          if (minver && range.test(minver)) {
            return minver;
          }
          return null;
        }
        exports.validRange = validRange;
        function validRange(range, options) {
          try {
            return new Range(range, options).range || '*';
          } catch (er) {
            return null;
          }
        }
        exports.ltr = ltr;
        function ltr(version, range, options) {
          return outside(version, range, '<', options);
        }
        exports.gtr = gtr;
        function gtr(version, range, options) {
          return outside(version, range, '>', options);
        }
        exports.outside = outside;
        function outside(version, range, hilo, options) {
          version = new SemVer(version, options);
          range = new Range(range, options);
          var gtfn, ltefn, ltfn, comp, ecomp;
          switch (hilo) {
            case '>':
              gtfn = gt;
              ltefn = lte;
              ltfn = lt;
              comp = '>';
              ecomp = '>=';
              break;
            case '<':
              gtfn = lt;
              ltefn = gte;
              ltfn = gt;
              comp = '<';
              ecomp = '<=';
              break;
            default:
              throw new TypeError('Must provide a hilo val of "<" or ">"');
          }
          if (satisfies(version, range, options)) {
            return false;
          }
          for (var i = 0; i < range.set.length; ++i) {
            var comparators = range.set[i];
            var high = null;
            var low = null;
            comparators.forEach(function (comparator) {
              if (comparator.semver === ANY) {
                comparator = new Comparator('>=0.0.0');
              }
              high = high || comparator;
              low = low || comparator;
              if (gtfn(comparator.semver, high.semver, options)) {
                high = comparator;
              } else if (ltfn(comparator.semver, low.semver, options)) {
                low = comparator;
              }
            });
            if (high.operator === comp || high.operator === ecomp) {
              return false;
            }
            if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) {
              return false;
            } else if (low.operator === ecomp && ltfn(version, low.semver)) {
              return false;
            }
          }
          return true;
        }
        exports.prerelease = prerelease;
        function prerelease(version, options) {
          var parsed = parse(version, options);
          return parsed && parsed.prerelease.length ? parsed.prerelease : null;
        }
        exports.intersects = intersects;
        function intersects(r1, r2, options) {
          r1 = new Range(r1, options);
          r2 = new Range(r2, options);
          return r1.intersects(r2);
        }
        exports.coerce = coerce;
        function coerce(version, options) {
          if (version instanceof SemVer) {
            return version;
          }
          if (typeof version === 'number') {
            version = String(version);
          }
          if (typeof version !== 'string') {
            return null;
          }
          options = options || {};
          var match = null;
          if (!options.rtl) {
            match = version.match(re[t.COERCE]);
          } else {
            var next;
            while ((next = re[t.COERCERTL].exec(version)) && (!match || match.index + match[0].length !== version.length)) {
              if (!match || next.index + next[0].length !== match.index + match[0].length) {
                match = next;
              }
              re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length;
            }
            re[t.COERCERTL].lastIndex = -1;
          }
          if (match === null) {
            return null;
          }
          return parse(match[2] + '.' + (match[3] || '0') + '.' + (match[4] || '0'), options);
        }
      })(semver$c, semver$c.exports);
      return semver$c.exports;
    }
  
    function bool$6(value) {
      if (value == null) return false;
      return value && value !== "false" && value !== "0";
    }
    var semver$b = bool$6(browser$1$1.env["BABEL_8_BREAKING"]) ? requireSemverBABEL_8_BREAKINGTrue() : requireSemver();
  
    var cloneNode$6 = cloneNode$j,
      interpreterDirective = interpreterDirective$1;
    var errorVisitor = {
      enter: function enter(path, state) {
        var loc = path.node.loc;
        if (loc) {
          state.loc = loc;
          path.stop();
        }
      }
    };
    var File = function () {
      function File(options, _ref) {
        var _this = this;
        var code = _ref.code,
          ast = _ref.ast,
          inputMap = _ref.inputMap;
        this._map = new Map();
        this.opts = void 0;
        this.declarations = {};
        this.path = void 0;
        this.ast = void 0;
        this.scope = void 0;
        this.metadata = {};
        this.code = "";
        this.inputMap = void 0;
        this.hub = {
          file: this,
          getCode: function getCode() {
            return _this.code;
          },
          getScope: function getScope() {
            return _this.scope;
          },
          addHelper: this.addHelper.bind(this),
          buildError: this.buildCodeFrameError.bind(this)
        };
        this.opts = options;
        this.code = code;
        this.ast = ast;
        this.inputMap = inputMap;
        this.path = NodePath.get({
          hub: this.hub,
          parentPath: null,
          parent: this.ast,
          container: this.ast,
          key: "program"
        }).setContext();
        this.scope = this.path.scope;
      }
      var _proto = File.prototype;
      _proto.set = function set(key, val) {
        if (key === "helpersNamespace") {
          throw new Error("Babel 7.0.0-beta.56 has dropped support for the 'helpersNamespace' utility." + "If you are using @babel/plugin-external-helpers you will need to use a newer " + "version than the one you currently have installed. " + "If you have your own implementation, you'll want to explore using 'helperGenerator' " + "alongside 'file.availableHelper()'.");
        }
        this._map.set(key, val);
      };
      _proto.get = function get(key) {
        return this._map.get(key);
      };
      _proto.has = function has(key) {
        return this._map.has(key);
      };
      _proto.getModuleName = function getModuleName$1() {
        return getModuleName(this.opts, this.opts);
      };
      _proto.addImport = function addImport() {
        throw new Error("This API has been removed. If you're looking for this " + "functionality in Babel 7, you should import the " + "'@babel/helper-module-imports' module and use the functions exposed " + " from that module, such as 'addNamed' or 'addDefault'.");
      };
      _proto.availableHelper = function availableHelper(name, versionRange) {
        var minVersion$1;
        try {
          minVersion$1 = minVersion(name);
        } catch (err) {
          if (err.code !== "BABEL_HELPER_UNKNOWN") throw err;
          return false;
        }
        if (typeof versionRange !== "string") return true;
        if (semver$b.valid(versionRange)) versionRange = "^" + versionRange;
        return !semver$b.intersects("<" + minVersion$1, versionRange) && !semver$b.intersects(">=8.0.0", versionRange);
      };
      _proto.addHelper = function addHelper(name) {
        var _this2 = this;
        var declar = this.declarations[name];
        if (declar) return cloneNode$6(declar);
        var generator = this.get("helperGenerator");
        if (generator) {
          var res = generator(name);
          if (res) return res;
        }
        ensure(name, File);
        var uid = this.declarations[name] = this.scope.generateUidIdentifier(name);
        var dependencies = {};
        for (var _iterator = _createForOfIteratorHelperLoose(getDependencies(name)), _step; !(_step = _iterator()).done;) {
          var dep = _step.value;
          dependencies[dep] = this.addHelper(dep);
        }
        var _helpers$get = get$1(name, function (dep) {
            return dependencies[dep];
          }, uid, Object.keys(this.scope.getAllBindings())),
          nodes = _helpers$get.nodes,
          globals = _helpers$get.globals;
        globals.forEach(function (name) {
          if (_this2.path.scope.hasBinding(name, true)) {
            _this2.path.scope.rename(name);
          }
        });
        nodes.forEach(function (node) {
          node._compact = true;
        });
        this.path.unshiftContainer("body", nodes);
        this.path.get("body").forEach(function (path) {
          if (nodes.indexOf(path.node) === -1) return;
          if (path.isVariableDeclaration()) _this2.scope.registerDeclaration(path);
        });
        return uid;
      };
      _proto.addTemplateObject = function addTemplateObject() {
        throw new Error("This function has been moved into the template literal transform itself.");
      };
      _proto.buildCodeFrameError = function buildCodeFrameError(node, msg, _Error) {
        if (_Error === void 0) {
          _Error = SyntaxError;
        }
        var loc = node && (node.loc || node._loc);
        if (!loc && node) {
          var state = {
            loc: null
          };
          traverse(node, errorVisitor, this.scope, state);
          loc = state.loc;
          var txt = "This is an error on an internal node. Probably an internal error.";
          if (loc) txt += " Location has been estimated.";
          msg += " (" + txt + ")";
        }
        if (loc) {
          var _this$opts$highlightC = this.opts.highlightCode,
            highlightCode = _this$opts$highlightC === void 0 ? true : _this$opts$highlightC;
          msg += "\n" + codeFrameColumns(this.code, {
            start: {
              line: loc.start.line,
              column: loc.start.column + 1
            },
            end: loc.end && loc.start.line === loc.end.line ? {
              line: loc.end.line,
              column: loc.end.column + 1
            } : undefined
          }, {
            highlightCode: highlightCode
          });
        }
        return new _Error(msg);
      };
      _createClass(File, [{
        key: "shebang",
        get: function get() {
          var interpreter = this.path.node.interpreter;
          return interpreter ? interpreter.value : "";
        },
        set: function set(value) {
          if (value) {
            this.path.get("interpreter").replaceWith(interpreterDirective(value));
          } else {
            this.path.get("interpreter").remove();
          }
        }
      }]);
      return File;
    }();
  
    var _templateObject$r;
    var arrayExpression = arrayExpression$1,
      assignmentExpression$5 = assignmentExpression$d,
      binaryExpression$2 = binaryExpression$5,
      blockStatement$1 = blockStatement$6,
      callExpression$6 = callExpression$e,
      cloneNode$5 = cloneNode$j,
      conditionalExpression$2 = conditionalExpression$4,
      exportNamedDeclaration = exportNamedDeclaration$2,
      exportSpecifier = exportSpecifier$2,
      expressionStatement = expressionStatement$a,
      functionExpression$1 = functionExpression$2,
      identifier$4 = identifier$i,
      memberExpression$6 = memberExpression$c,
      objectExpression$1 = objectExpression$3,
      program = program$3,
      stringLiteral$2 = stringLiteral$8,
      unaryExpression$1 = unaryExpression$7,
      variableDeclaration$1 = variableDeclaration$8,
      variableDeclarator$1 = variableDeclarator$8;
    var buildUmdWrapper = function buildUmdWrapper(replacements) {
      return template$2.statement(_templateObject$r || (_templateObject$r = _taggedTemplateLiteralLoose(["\n    (function (root, factory) {\n      if (typeof define === \"function\" && define.amd) {\n        define(AMD_ARGUMENTS, factory);\n      } else if (typeof exports === \"object\") {\n        factory(COMMON_ARGUMENTS);\n      } else {\n        factory(BROWSER_ARGUMENTS);\n      }\n    })(UMD_ROOT, function (FACTORY_PARAMETERS) {\n      FACTORY_BODY\n    });\n  "])))(replacements);
    };
    function buildGlobal(allowlist) {
      var namespace = identifier$4("babelHelpers");
      var body = [];
      var container = functionExpression$1(null, [identifier$4("global")], blockStatement$1(body));
      var tree = program([expressionStatement(callExpression$6(container, [conditionalExpression$2(binaryExpression$2("===", unaryExpression$1("typeof", identifier$4("global")), stringLiteral$2("undefined")), identifier$4("self"), identifier$4("global"))]))]);
      body.push(variableDeclaration$1("var", [variableDeclarator$1(namespace, assignmentExpression$5("=", memberExpression$6(identifier$4("global"), namespace), objectExpression$1([])))]));
      buildHelpers(body, namespace, allowlist);
      return tree;
    }
    function buildModule(allowlist) {
      var body = [];
      var refs = buildHelpers(body, null, allowlist);
      body.unshift(exportNamedDeclaration(null, Object.keys(refs).map(function (name) {
        return exportSpecifier(cloneNode$5(refs[name]), identifier$4(name));
      })));
      return program(body, [], "module");
    }
    function buildUmd(allowlist) {
      var namespace = identifier$4("babelHelpers");
      var body = [];
      body.push(variableDeclaration$1("var", [variableDeclarator$1(namespace, identifier$4("global"))]));
      buildHelpers(body, namespace, allowlist);
      return program([buildUmdWrapper({
        FACTORY_PARAMETERS: identifier$4("global"),
        BROWSER_ARGUMENTS: assignmentExpression$5("=", memberExpression$6(identifier$4("root"), namespace), objectExpression$1([])),
        COMMON_ARGUMENTS: identifier$4("exports"),
        AMD_ARGUMENTS: arrayExpression([stringLiteral$2("exports")]),
        FACTORY_BODY: body,
        UMD_ROOT: identifier$4("this")
      })]);
    }
    function buildVar(allowlist) {
      var namespace = identifier$4("babelHelpers");
      var body = [];
      body.push(variableDeclaration$1("var", [variableDeclarator$1(namespace, objectExpression$1([]))]));
      var tree = program(body);
      buildHelpers(body, namespace, allowlist);
      body.push(expressionStatement(namespace));
      return tree;
    }
    function buildHelpers(body, namespace, allowlist) {
      var getHelperReference = function getHelperReference(name) {
        return namespace ? memberExpression$6(namespace, identifier$4(name)) : identifier$4("_" + name);
      };
      var refs = {};
      list.forEach(function (name) {
        if (allowlist && allowlist.indexOf(name) < 0) return;
        var ref = refs[name] = getHelperReference(name);
        ensure(name, File);
        var _helpers$get = get$1(name, getHelperReference, ref),
          nodes = _helpers$get.nodes;
        body.push.apply(body, _toConsumableArray(nodes));
      });
      return refs;
    }
    function babelBuildExternalHelpers (allowlist, outputType) {
      if (outputType === void 0) {
        outputType = "global";
      }
      var tree;
      var build = {
        global: buildGlobal,
        module: buildModule,
        umd: buildUmd,
        "var": buildVar
      }[outputType];
      if (build) {
        tree = build(allowlist);
      } else {
        throw new Error("Unsupported output type " + outputType);
      }
      return generate$1(tree).code;
    }
  
    var _marked$8 = _regeneratorRuntime().mark(findPackageData),
      _marked2$6 = _regeneratorRuntime().mark(findRelativeConfig),
      _marked3$4 = _regeneratorRuntime().mark(findRootConfig),
      _marked4$2 = _regeneratorRuntime().mark(loadConfig$1),
      _marked5 = _regeneratorRuntime().mark(resolveShowConfigPath);
    function findConfigUpwards(rootDir) {
      return null;
    }
    function findPackageData(filepath) {
      return _regeneratorRuntime().wrap(function findPackageData$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            return _context.abrupt("return", {
              filepath: filepath,
              directories: [],
              pkg: null,
              isPackage: false
            });
          case 1:
          case "end":
            return _context.stop();
        }
      }, _marked$8);
    }
    function findRelativeConfig(pkgData, envName, caller) {
      return _regeneratorRuntime().wrap(function findRelativeConfig$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            return _context2.abrupt("return", {
              config: null,
              ignore: null
            });
          case 1:
          case "end":
            return _context2.stop();
        }
      }, _marked2$6);
    }
    function findRootConfig(dirname, envName, caller) {
      return _regeneratorRuntime().wrap(function findRootConfig$(_context3) {
        while (1) switch (_context3.prev = _context3.next) {
          case 0:
            return _context3.abrupt("return", null);
          case 1:
          case "end":
            return _context3.stop();
        }
      }, _marked3$4);
    }
    function loadConfig$1(name, dirname, envName, caller) {
      return _regeneratorRuntime().wrap(function loadConfig$(_context4) {
        while (1) switch (_context4.prev = _context4.next) {
          case 0:
            throw new Error("Cannot load " + name + " relative to " + dirname + " in a browser");
          case 1:
          case "end":
            return _context4.stop();
        }
      }, _marked4$2);
    }
    function resolveShowConfigPath(dirname) {
      return _regeneratorRuntime().wrap(function resolveShowConfigPath$(_context5) {
        while (1) switch (_context5.prev = _context5.next) {
          case 0:
            return _context5.abrupt("return", null);
          case 1:
          case "end":
            return _context5.stop();
        }
      }, _marked5);
    }
    var ROOT_CONFIG_FILENAMES = [];
    function resolvePlugin(name, dirname) {
      return null;
    }
    function resolvePreset(name, dirname) {
      return null;
    }
    function loadPlugin(name, dirname) {
      throw new Error("Cannot load plugin " + name + " relative to " + dirname + " in a browser");
    }
    function loadPreset(name, dirname) {
      throw new Error("Cannot load preset " + name + " relative to " + dirname + " in a browser");
    }
  
    function getEnv(defaultValue) {
      if (defaultValue === void 0) {
        defaultValue = "development";
      }
      return browser$1$1.env.BABEL_ENV || "production" || defaultValue;
    }
  
    var GENSYNC_START = Symbol["for"]("gensync:v1:start");
    var GENSYNC_SUSPEND = Symbol["for"]("gensync:v1:suspend");
    var GENSYNC_EXPECTED_START = "GENSYNC_EXPECTED_START";
    var GENSYNC_EXPECTED_SUSPEND = "GENSYNC_EXPECTED_SUSPEND";
    var GENSYNC_OPTIONS_ERROR = "GENSYNC_OPTIONS_ERROR";
    var GENSYNC_RACE_NONEMPTY = "GENSYNC_RACE_NONEMPTY";
    var GENSYNC_ERRBACK_NO_CALLBACK = "GENSYNC_ERRBACK_NO_CALLBACK";
    var gensync = Object.assign(function gensync(optsOrFn) {
      var genFn = optsOrFn;
      if (typeof optsOrFn !== "function") {
        genFn = newGenerator(optsOrFn);
      } else {
        genFn = wrapGenerator(optsOrFn);
      }
      return Object.assign(genFn, makeFunctionAPI(genFn));
    }, {
      all: buildOperation({
        name: "all",
        arity: 1,
        sync: function sync(args) {
          var items = Array.from(args[0]);
          return items.map(function (item) {
            return evaluateSync(item);
          });
        },
        async: function async(args, resolve, reject) {
          var items = Array.from(args[0]);
          if (items.length === 0) {
            Promise.resolve().then(function () {
              return resolve([]);
            });
            return;
          }
          var count = 0;
          var results = items.map(function () {
            return undefined;
          });
          items.forEach(function (item, i) {
            evaluateAsync(item, function (val) {
              results[i] = val;
              count += 1;
              if (count === results.length) resolve(results);
            }, reject);
          });
        }
      }),
      race: buildOperation({
        name: "race",
        arity: 1,
        sync: function sync(args) {
          var items = Array.from(args[0]);
          if (items.length === 0) {
            throw makeError("Must race at least 1 item", GENSYNC_RACE_NONEMPTY);
          }
          return evaluateSync(items[0]);
        },
        async: function async(args, resolve, reject) {
          var items = Array.from(args[0]);
          if (items.length === 0) {
            throw makeError("Must race at least 1 item", GENSYNC_RACE_NONEMPTY);
          }
          for (var _i = 0, _items = items; _i < _items.length; _i++) {
            var item = _items[_i];
            evaluateAsync(item, resolve, reject);
          }
        }
      })
    });
    function makeFunctionAPI(genFn) {
      var fns = {
        sync: function sync() {
          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
            args[_key] = arguments[_key];
          }
          return evaluateSync(genFn.apply(this, args));
        },
        async: function async() {
          var _this = this;
          for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
            args[_key2] = arguments[_key2];
          }
          return new Promise(function (resolve, reject) {
            evaluateAsync(genFn.apply(_this, args), resolve, reject);
          });
        },
        errback: function errback() {
          for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
            args[_key3] = arguments[_key3];
          }
          var cb = args.pop();
          if (typeof cb !== "function") {
            throw makeError("Asynchronous function called without callback", GENSYNC_ERRBACK_NO_CALLBACK);
          }
          var gen;
          try {
            gen = genFn.apply(this, args);
          } catch (err) {
            cb(err);
            return;
          }
          evaluateAsync(gen, function (val) {
            return cb(undefined, val);
          }, function (err) {
            return cb(err);
          });
        }
      };
      return fns;
    }
    function assertTypeof(type, name, value, allowUndefined) {
      if (typeof value === type || allowUndefined && typeof value === "undefined") {
        return;
      }
      var msg;
      if (allowUndefined) {
        msg = "Expected opts." + name + " to be either a " + type + ", or undefined.";
      } else {
        msg = "Expected opts." + name + " to be a " + type + ".";
      }
      throw makeError(msg, GENSYNC_OPTIONS_ERROR);
    }
    function makeError(msg, code) {
      return Object.assign(new Error(msg), {
        code: code
      });
    }
    function newGenerator(_ref) {
      var name = _ref.name,
        arity = _ref.arity,
        _sync = _ref.sync,
        _async = _ref.async,
        errback = _ref.errback;
      assertTypeof("string", "name", name, true);
      assertTypeof("number", "arity", arity, true);
      assertTypeof("function", "sync", _sync);
      assertTypeof("function", "async", _async, true);
      assertTypeof("function", "errback", errback, true);
      if (_async && errback) {
        throw makeError("Expected one of either opts.async or opts.errback, but got _both_.", GENSYNC_OPTIONS_ERROR);
      }
      if (typeof name !== "string") {
        var fnName;
        if (errback && errback.name && errback.name !== "errback") {
          fnName = errback.name;
        }
        if (_async && _async.name && _async.name !== "async") {
          fnName = _async.name.replace(/Async$/, "");
        }
        if (_sync && _sync.name && _sync.name !== "sync") {
          fnName = _sync.name.replace(/Sync$/, "");
        }
        if (typeof fnName === "string") {
          name = fnName;
        }
      }
      if (typeof arity !== "number") {
        arity = _sync.length;
      }
      return buildOperation({
        name: name,
        arity: arity,
        sync: function sync(args) {
          return _sync.apply(this, args);
        },
        async: function async(args, resolve, reject) {
          if (_async) {
            _async.apply(this, args).then(resolve, reject);
          } else if (errback) {
            errback.call.apply(errback, [this].concat(_toConsumableArray(args), [function (err, value) {
              if (err == null) resolve(value);else reject(err);
            }]));
          } else {
            resolve(_sync.apply(this, args));
          }
        }
      });
    }
    function wrapGenerator(genFn) {
      return setFunctionMetadata(genFn.name, genFn.length, function () {
        for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {
          args[_key4] = arguments[_key4];
        }
        return genFn.apply(this, args);
      });
    }
    function buildOperation(_ref2) {
      var name = _ref2.name,
        arity = _ref2.arity,
        sync = _ref2.sync,
        async = _ref2.async;
      return setFunctionMetadata(name, arity, _regeneratorRuntime().mark(function _callee() {
        var resume,
          _len5,
          args,
          _key5,
          res,
          result,
          _args = arguments;
        return _regeneratorRuntime().wrap(function _callee$(_context) {
          while (1) switch (_context.prev = _context.next) {
            case 0:
              _context.next = 2;
              return GENSYNC_START;
            case 2:
              resume = _context.sent;
              for (_len5 = _args.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {
                args[_key5] = _args[_key5];
              }
              if (resume) {
                _context.next = 7;
                break;
              }
              res = sync.call(this, args);
              return _context.abrupt("return", res);
            case 7:
              try {
                async.call(this, args, function (value) {
                  if (result) return;
                  result = {
                    value: value
                  };
                  resume();
                }, function (err) {
                  if (result) return;
                  result = {
                    err: err
                  };
                  resume();
                });
              } catch (err) {
                result = {
                  err: err
                };
                resume();
              }
              _context.next = 10;
              return GENSYNC_SUSPEND;
            case 10:
              if (!result.hasOwnProperty("err")) {
                _context.next = 12;
                break;
              }
              throw result.err;
            case 12:
              return _context.abrupt("return", result.value);
            case 13:
            case "end":
              return _context.stop();
          }
        }, _callee, this);
      }));
    }
    function evaluateSync(gen) {
      var value;
      while (!(_gen$next = gen.next(), value = _gen$next.value, _gen$next).done) {
        var _gen$next;
        assertStart(value, gen);
      }
      return value;
    }
    function evaluateAsync(gen, resolve, reject) {
      (function step() {
        try {
          var value;
          var _loop = function _loop() {
            assertStart(value, gen);
            var sync = true;
            var didSyncResume = false;
            var out = gen.next(function () {
              if (sync) {
                didSyncResume = true;
              } else {
                step();
              }
            });
            sync = false;
            assertSuspend(out, gen);
            if (!didSyncResume) {
              return {
                v: void 0
              };
            }
          };
          while (!(_gen$next2 = gen.next(), value = _gen$next2.value, _gen$next2).done) {
            var _gen$next2;
            var _ret = _loop();
            if (typeof _ret === "object") return _ret.v;
          }
          return resolve(value);
        } catch (err) {
          return reject(err);
        }
      })();
    }
    function assertStart(value, gen) {
      if (value === GENSYNC_START) return;
      throwError(gen, makeError("Got unexpected yielded value in gensync generator: " + JSON.stringify(value) + ". Did you perhaps mean to use 'yield*' instead of 'yield'?", GENSYNC_EXPECTED_START));
    }
    function assertSuspend(_ref3, gen) {
      var value = _ref3.value,
        done = _ref3.done;
      if (!done && value === GENSYNC_SUSPEND) return;
      throwError(gen, makeError(done ? "Unexpected generator completion. If you get this, it is probably a gensync bug." : "Expected GENSYNC_SUSPEND, got " + JSON.stringify(value) + ". If you get this, it is probably a gensync bug.", GENSYNC_EXPECTED_SUSPEND));
    }
    function throwError(gen, err) {
      if (gen["throw"]) gen["throw"](err);
      throw err;
    }
    function setFunctionMetadata(name, arity, fn) {
      if (typeof name === "string") {
        var nameDesc = Object.getOwnPropertyDescriptor(fn, "name");
        if (!nameDesc || nameDesc.configurable) {
          Object.defineProperty(fn, "name", Object.assign(nameDesc || {}, {
            configurable: true,
            value: name
          }));
        }
      }
      if (typeof arity === "number") {
        var lengthDesc = Object.getOwnPropertyDescriptor(fn, "length");
        if (!lengthDesc || lengthDesc.configurable) {
          Object.defineProperty(fn, "length", Object.assign(lengthDesc || {}, {
            configurable: true,
            value: arity
          }));
        }
      }
      return fn;
    }
  
    var runGenerator = gensync(_regeneratorRuntime().mark(function _callee(item) {
      return _regeneratorRuntime().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            return _context.delegateYield(item, "t0", 1);
          case 1:
            return _context.abrupt("return", _context.t0);
          case 2:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    var isAsync = gensync({
      sync: function sync() {
        return false;
      },
      errback: function errback(cb) {
        return cb(null, true);
      }
    });
    function maybeAsync(fn, message) {
      return gensync({
        sync: function sync() {
          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
            args[_key] = arguments[_key];
          }
          var result = fn.apply(this, args);
          if (isThenable$1(result)) throw new Error(message);
          return result;
        },
        async: function async() {
          for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
            args[_key2] = arguments[_key2];
          }
          return Promise.resolve(fn.apply(this, args));
        }
      });
    }
    var withKind = gensync({
      sync: function sync(cb) {
        return cb("sync");
      },
      async: function () {
        var _async = _asyncToGenerator(_regeneratorRuntime().mark(function _callee2(cb) {
          return _regeneratorRuntime().wrap(function _callee2$(_context2) {
            while (1) switch (_context2.prev = _context2.next) {
              case 0:
                return _context2.abrupt("return", cb("async"));
              case 1:
              case "end":
                return _context2.stop();
            }
          }, _callee2);
        }));
        function async(_x) {
          return _async.apply(this, arguments);
        }
        return async;
      }()
    });
    function forwardAsync(action, cb) {
      var g = gensync(action);
      return withKind(function (kind) {
        var adapted = g[kind];
        return cb(adapted);
      });
    }
    var onFirstPause = gensync({
      name: "onFirstPause",
      arity: 2,
      sync: function sync(item) {
        return runGenerator.sync(item);
      },
      errback: function errback(item, firstPause, cb) {
        var completed = false;
        runGenerator.errback(item, function (err, value) {
          completed = true;
          cb(err, value);
        });
        if (!completed) {
          firstPause();
        }
      }
    });
    var waitFor = gensync({
      sync: function sync(x) {
        return x;
      },
      async: function () {
        var _async2 = _asyncToGenerator(_regeneratorRuntime().mark(function _callee3(x) {
          return _regeneratorRuntime().wrap(function _callee3$(_context3) {
            while (1) switch (_context3.prev = _context3.next) {
              case 0:
                return _context3.abrupt("return", x);
              case 1:
              case "end":
                return _context3.stop();
            }
          }, _callee3);
        }));
        function async(_x2) {
          return _async2.apply(this, arguments);
        }
        return async;
      }()
    });
    function isThenable$1(val) {
      return !!val && (typeof val === "object" || typeof val === "function") && !!val.then && typeof val.then === "function";
    }
  
    function mergeOptions(target, source) {
      for (var _i = 0, _Object$keys = Object.keys(source); _i < _Object$keys.length; _i++) {
        var k = _Object$keys[_i];
        if ((k === "parserOpts" || k === "generatorOpts" || k === "assumptions") && source[k]) {
          var parserOpts = source[k];
          var targetObj = target[k] || (target[k] = {});
          mergeDefaultFields(targetObj, parserOpts);
        } else {
          var val = source[k];
          if (val !== undefined) target[k] = val;
        }
      }
    }
    function mergeDefaultFields(target, source) {
      for (var _i2 = 0, _arr = Object.keys(source); _i2 < _arr.length; _i2++) {
        var k = _arr[_i2];
        var val = source[k];
        if (val !== undefined) target[k] = val;
      }
    }
    function isIterableIterator(value) {
      return !!value && typeof value.next === "function" && typeof value[Symbol.iterator] === "function";
    }
  
    function finalize(deepArr) {
      return Object.freeze(deepArr);
    }
    function flattenToSet(arr) {
      var result = new Set();
      var stack = [arr];
      while (stack.length > 0) {
        for (var _iterator = _createForOfIteratorHelperLoose(stack.pop()), _step; !(_step = _iterator()).done;) {
          var el = _step.value;
          if (Array.isArray(el)) stack.push(el);else result.add(el);
        }
      }
      return result;
    }
  
    var Plugin = _createClass(function Plugin(plugin, options, key, externalDependencies) {
      if (externalDependencies === void 0) {
        externalDependencies = finalize([]);
      }
      this.key = void 0;
      this.manipulateOptions = void 0;
      this.post = void 0;
      this.pre = void 0;
      this.visitor = void 0;
      this.parserOverride = void 0;
      this.generatorOverride = void 0;
      this.options = void 0;
      this.externalDependencies = void 0;
      this.key = plugin.name || key;
      this.manipulateOptions = plugin.manipulateOptions;
      this.post = plugin.post;
      this.pre = plugin.pre;
      this.visitor = plugin.visitor || {};
      this.parserOverride = plugin.parserOverride;
      this.generatorOverride = plugin.generatorOverride;
      this.options = options;
      this.externalDependencies = externalDependencies;
    });
  
    function once(fn) {
      var result;
      var resultP;
      return _regeneratorRuntime().mark(function _callee() {
        var resolve, reject;
        return _regeneratorRuntime().wrap(function _callee$(_context) {
          while (1) switch (_context.prev = _context.next) {
            case 0:
              if (!result) {
                _context.next = 2;
                break;
              }
              return _context.abrupt("return", result);
            case 2:
              return _context.delegateYield(isAsync(), "t0", 3);
            case 3:
              if (_context.t0) {
                _context.next = 6;
                break;
              }
              return _context.delegateYield(fn(), "t1", 5);
            case 5:
              return _context.abrupt("return", result = _context.t1);
            case 6:
              if (!resultP) {
                _context.next = 9;
                break;
              }
              return _context.delegateYield(waitFor(resultP), "t2", 8);
            case 8:
              return _context.abrupt("return", _context.t2);
            case 9:
              resultP = new Promise(function (res, rej) {
                resolve = res;
                reject = rej;
              });
              _context.prev = 10;
              return _context.delegateYield(fn(), "t3", 12);
            case 12:
              result = _context.t3;
              resultP = null;
              resolve(result);
              return _context.abrupt("return", result);
            case 18:
              _context.prev = 18;
              _context.t4 = _context["catch"](10);
              reject(_context.t4);
              throw _context.t4;
            case 22:
            case "end":
              return _context.stop();
          }
        }, _callee, null, [[10, 18]]);
      });
    }
  
    var _marked$7 = _regeneratorRuntime().mark(genTrue),
      _marked2$5 = _regeneratorRuntime().mark(getCachedValue),
      _marked3$3 = _regeneratorRuntime().mark(getCachedValueOrWait);
    var synchronize = function synchronize(gen) {
      return gensync(gen).sync;
    };
    function genTrue() {
      return _regeneratorRuntime().wrap(function genTrue$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            return _context.abrupt("return", true);
          case 1:
          case "end":
            return _context.stop();
        }
      }, _marked$7);
    }
    function makeWeakCache(handler) {
      return makeCachedFunction(WeakMap, handler);
    }
    function makeWeakCacheSync(handler) {
      return synchronize(makeWeakCache(handler));
    }
    function makeStrongCache(handler) {
      return makeCachedFunction(Map, handler);
    }
    function makeStrongCacheSync(handler) {
      return synchronize(makeStrongCache(handler));
    }
    function makeCachedFunction(CallCache, handler) {
      var callCacheSync = new CallCache();
      var callCacheAsync = new CallCache();
      var futureCache = new CallCache();
      return _regeneratorRuntime().mark(function cachedFunction(arg, data) {
        var asyncContext, callCache, cached, cache, handlerResult, finishLock, value;
        return _regeneratorRuntime().wrap(function cachedFunction$(_context2) {
          while (1) switch (_context2.prev = _context2.next) {
            case 0:
              return _context2.delegateYield(isAsync(), "t0", 1);
            case 1:
              asyncContext = _context2.t0;
              callCache = asyncContext ? callCacheAsync : callCacheSync;
              return _context2.delegateYield(getCachedValueOrWait(asyncContext, callCache, futureCache, arg, data), "t1", 4);
            case 4:
              cached = _context2.t1;
              if (!cached.valid) {
                _context2.next = 7;
                break;
              }
              return _context2.abrupt("return", cached.value);
            case 7:
              cache = new CacheConfigurator(data);
              handlerResult = handler(arg, cache);
              if (!isIterableIterator(handlerResult)) {
                _context2.next = 14;
                break;
              }
              return _context2.delegateYield(onFirstPause(handlerResult, function () {
                finishLock = setupAsyncLocks(cache, futureCache, arg);
              }), "t2", 11);
            case 11:
              value = _context2.t2;
              _context2.next = 15;
              break;
            case 14:
              value = handlerResult;
            case 15:
              updateFunctionCache(callCache, cache, arg, value);
              if (finishLock) {
                futureCache["delete"](arg);
                finishLock.release(value);
              }
              return _context2.abrupt("return", value);
            case 18:
            case "end":
              return _context2.stop();
          }
        }, cachedFunction);
      });
    }
    function getCachedValue(cache, arg, data) {
      var cachedValue, _iterator, _step, _step$value, _value, valid;
      return _regeneratorRuntime().wrap(function getCachedValue$(_context3) {
        while (1) switch (_context3.prev = _context3.next) {
          case 0:
            cachedValue = cache.get(arg);
            if (!cachedValue) {
              _context3.next = 10;
              break;
            }
            _iterator = _createForOfIteratorHelperLoose(cachedValue);
          case 3:
            if ((_step = _iterator()).done) {
              _context3.next = 10;
              break;
            }
            _step$value = _step.value, _value = _step$value.value, valid = _step$value.valid;
            return _context3.delegateYield(valid(data), "t0", 6);
          case 6:
            if (!_context3.t0) {
              _context3.next = 8;
              break;
            }
            return _context3.abrupt("return", {
              valid: true,
              value: _value
            });
          case 8:
            _context3.next = 3;
            break;
          case 10:
            return _context3.abrupt("return", {
              valid: false,
              value: null
            });
          case 11:
          case "end":
            return _context3.stop();
        }
      }, _marked2$5);
    }
    function getCachedValueOrWait(asyncContext, callCache, futureCache, arg, data) {
      var cached, _cached, _value2;
      return _regeneratorRuntime().wrap(function getCachedValueOrWait$(_context4) {
        while (1) switch (_context4.prev = _context4.next) {
          case 0:
            return _context4.delegateYield(getCachedValue(callCache, arg, data), "t0", 1);
          case 1:
            cached = _context4.t0;
            if (!cached.valid) {
              _context4.next = 4;
              break;
            }
            return _context4.abrupt("return", cached);
          case 4:
            if (!asyncContext) {
              _context4.next = 11;
              break;
            }
            return _context4.delegateYield(getCachedValue(futureCache, arg, data), "t1", 6);
          case 6:
            _cached = _context4.t1;
            if (!_cached.valid) {
              _context4.next = 11;
              break;
            }
            return _context4.delegateYield(waitFor(_cached.value.promise), "t2", 9);
          case 9:
            _value2 = _context4.t2;
            return _context4.abrupt("return", {
              valid: true,
              value: _value2
            });
          case 11:
            return _context4.abrupt("return", {
              valid: false,
              value: null
            });
          case 12:
          case "end":
            return _context4.stop();
        }
      }, _marked3$3);
    }
    function setupAsyncLocks(config, futureCache, arg) {
      var finishLock = new Lock();
      updateFunctionCache(futureCache, config, arg, finishLock);
      return finishLock;
    }
    function updateFunctionCache(cache, config, arg, value) {
      if (!config.configured()) config.forever();
      var cachedValue = cache.get(arg);
      config.deactivate();
      switch (config.mode()) {
        case "forever":
          cachedValue = [{
            value: value,
            valid: genTrue
          }];
          cache.set(arg, cachedValue);
          break;
        case "invalidate":
          cachedValue = [{
            value: value,
            valid: config.validator()
          }];
          cache.set(arg, cachedValue);
          break;
        case "valid":
          if (cachedValue) {
            cachedValue.push({
              value: value,
              valid: config.validator()
            });
          } else {
            cachedValue = [{
              value: value,
              valid: config.validator()
            }];
            cache.set(arg, cachedValue);
          }
      }
    }
    var CacheConfigurator = function () {
      function CacheConfigurator(data) {
        this._active = true;
        this._never = false;
        this._forever = false;
        this._invalidate = false;
        this._configured = false;
        this._pairs = [];
        this._data = void 0;
        this._data = data;
      }
      var _proto = CacheConfigurator.prototype;
      _proto.simple = function simple() {
        return makeSimpleConfigurator(this);
      };
      _proto.mode = function mode() {
        if (this._never) return "never";
        if (this._forever) return "forever";
        if (this._invalidate) return "invalidate";
        return "valid";
      };
      _proto.forever = function forever() {
        if (!this._active) {
          throw new Error("Cannot change caching after evaluation has completed.");
        }
        if (this._never) {
          throw new Error("Caching has already been configured with .never()");
        }
        this._forever = true;
        this._configured = true;
      };
      _proto.never = function never() {
        if (!this._active) {
          throw new Error("Cannot change caching after evaluation has completed.");
        }
        if (this._forever) {
          throw new Error("Caching has already been configured with .forever()");
        }
        this._never = true;
        this._configured = true;
      };
      _proto.using = function using(handler) {
        var _this = this;
        if (!this._active) {
          throw new Error("Cannot change caching after evaluation has completed.");
        }
        if (this._never || this._forever) {
          throw new Error("Caching has already been configured with .never or .forever()");
        }
        this._configured = true;
        var key = handler(this._data);
        var fn = maybeAsync(handler, "You appear to be using an async cache handler, but Babel has been called synchronously");
        if (isThenable$1(key)) {
          return key.then(function (key) {
            _this._pairs.push([key, fn]);
            return key;
          });
        }
        this._pairs.push([key, fn]);
        return key;
      };
      _proto.invalidate = function invalidate(handler) {
        this._invalidate = true;
        return this.using(handler);
      };
      _proto.validator = function validator() {
        var pairs = this._pairs;
        return _regeneratorRuntime().mark(function _callee(data) {
          var _iterator2, _step2, _step2$value, key, fn;
          return _regeneratorRuntime().wrap(function _callee$(_context5) {
            while (1) switch (_context5.prev = _context5.next) {
              case 0:
                _iterator2 = _createForOfIteratorHelperLoose(pairs);
              case 1:
                if ((_step2 = _iterator2()).done) {
                  _context5.next = 10;
                  break;
                }
                _step2$value = _slicedToArray(_step2.value, 2), key = _step2$value[0], fn = _step2$value[1];
                _context5.t0 = key;
                return _context5.delegateYield(fn(data), "t1", 5);
              case 5:
                _context5.t2 = _context5.t1;
                if (!(_context5.t0 !== _context5.t2)) {
                  _context5.next = 8;
                  break;
                }
                return _context5.abrupt("return", false);
              case 8:
                _context5.next = 1;
                break;
              case 10:
                return _context5.abrupt("return", true);
              case 11:
              case "end":
                return _context5.stop();
            }
          }, _callee);
        });
      };
      _proto.deactivate = function deactivate() {
        this._active = false;
      };
      _proto.configured = function configured() {
        return this._configured;
      };
      return _createClass(CacheConfigurator);
    }();
    function makeSimpleConfigurator(cache) {
      function cacheFn(val) {
        if (typeof val === "boolean") {
          if (val) cache.forever();else cache.never();
          return;
        }
        return cache.using(function () {
          return assertSimpleType(val());
        });
      }
      cacheFn.forever = function () {
        return cache.forever();
      };
      cacheFn.never = function () {
        return cache.never();
      };
      cacheFn.using = function (cb) {
        return cache.using(function () {
          return assertSimpleType(cb());
        });
      };
      cacheFn.invalidate = function (cb) {
        return cache.invalidate(function () {
          return assertSimpleType(cb());
        });
      };
      return cacheFn;
    }
    function assertSimpleType(value) {
      if (isThenable$1(value)) {
        throw new Error("You appear to be using an async cache handler, " + "which your current version of Babel does not support. " + "We may add support for this in the future, " + "but if you're on the most recent version of @babel/core and still " + "seeing this error, then you'll need to synchronously handle your caching logic.");
      }
      if (value != null && typeof value !== "string" && typeof value !== "boolean" && typeof value !== "number") {
        throw new Error("Cache keys must be either string, boolean, number, null, or undefined.");
      }
      return value;
    }
    var Lock = function () {
      function Lock() {
        var _this2 = this;
        this.released = false;
        this.promise = void 0;
        this._resolve = void 0;
        this.promise = new Promise(function (resolve) {
          _this2._resolve = resolve;
        });
      }
      var _proto2 = Lock.prototype;
      _proto2.release = function release(value) {
        this.released = true;
        this._resolve(value);
      };
      return _createClass(Lock);
    }();
  
    var require$$0$9 = [
        {
            name: "nodejs",
            version: "0.2.0",
            date: "2011-08-26",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "0.3.0",
            date: "2011-08-26",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "0.4.0",
            date: "2011-08-26",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "0.5.0",
            date: "2011-08-26",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "0.6.0",
            date: "2011-11-04",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "0.7.0",
            date: "2012-01-17",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "0.8.0",
            date: "2012-06-22",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "0.9.0",
            date: "2012-07-20",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "0.10.0",
            date: "2013-03-11",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "0.11.0",
            date: "2013-03-28",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "0.12.0",
            date: "2015-02-06",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "4.0.0",
            date: "2015-09-08",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "4.1.0",
            date: "2015-09-17",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "4.2.0",
            date: "2015-10-12",
            lts: "Argon",
            security: false
        },
        {
            name: "nodejs",
            version: "4.3.0",
            date: "2016-02-09",
            lts: "Argon",
            security: false
        },
        {
            name: "nodejs",
            version: "4.4.0",
            date: "2016-03-08",
            lts: "Argon",
            security: false
        },
        {
            name: "nodejs",
            version: "4.5.0",
            date: "2016-08-16",
            lts: "Argon",
            security: false
        },
        {
            name: "nodejs",
            version: "4.6.0",
            date: "2016-09-27",
            lts: "Argon",
            security: true
        },
        {
            name: "nodejs",
            version: "4.7.0",
            date: "2016-12-06",
            lts: "Argon",
            security: false
        },
        {
            name: "nodejs",
            version: "4.8.0",
            date: "2017-02-21",
            lts: "Argon",
            security: false
        },
        {
            name: "nodejs",
            version: "4.9.0",
            date: "2018-03-28",
            lts: "Argon",
            security: true
        },
        {
            name: "nodejs",
            version: "5.0.0",
            date: "2015-10-29",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "5.1.0",
            date: "2015-11-17",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "5.2.0",
            date: "2015-12-09",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "5.3.0",
            date: "2015-12-15",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "5.4.0",
            date: "2016-01-06",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "5.5.0",
            date: "2016-01-21",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "5.6.0",
            date: "2016-02-09",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "5.7.0",
            date: "2016-02-23",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "5.8.0",
            date: "2016-03-09",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "5.9.0",
            date: "2016-03-16",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "5.10.0",
            date: "2016-04-01",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "5.11.0",
            date: "2016-04-21",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "5.12.0",
            date: "2016-06-23",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "6.0.0",
            date: "2016-04-26",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "6.1.0",
            date: "2016-05-05",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "6.2.0",
            date: "2016-05-17",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "6.3.0",
            date: "2016-07-06",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "6.4.0",
            date: "2016-08-12",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "6.5.0",
            date: "2016-08-26",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "6.6.0",
            date: "2016-09-14",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "6.7.0",
            date: "2016-09-27",
            lts: false,
            security: true
        },
        {
            name: "nodejs",
            version: "6.8.0",
            date: "2016-10-12",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "6.9.0",
            date: "2016-10-18",
            lts: "Boron",
            security: false
        },
        {
            name: "nodejs",
            version: "6.10.0",
            date: "2017-02-21",
            lts: "Boron",
            security: false
        },
        {
            name: "nodejs",
            version: "6.11.0",
            date: "2017-06-06",
            lts: "Boron",
            security: false
        },
        {
            name: "nodejs",
            version: "6.12.0",
            date: "2017-11-06",
            lts: "Boron",
            security: false
        },
        {
            name: "nodejs",
            version: "6.13.0",
            date: "2018-02-10",
            lts: "Boron",
            security: false
        },
        {
            name: "nodejs",
            version: "6.14.0",
            date: "2018-03-28",
            lts: "Boron",
            security: true
        },
        {
            name: "nodejs",
            version: "6.15.0",
            date: "2018-11-27",
            lts: "Boron",
            security: true
        },
        {
            name: "nodejs",
            version: "6.16.0",
            date: "2018-12-26",
            lts: "Boron",
            security: false
        },
        {
            name: "nodejs",
            version: "6.17.0",
            date: "2019-02-28",
            lts: "Boron",
            security: true
        },
        {
            name: "nodejs",
            version: "7.0.0",
            date: "2016-10-25",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "7.1.0",
            date: "2016-11-08",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "7.2.0",
            date: "2016-11-22",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "7.3.0",
            date: "2016-12-20",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "7.4.0",
            date: "2017-01-04",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "7.5.0",
            date: "2017-01-31",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "7.6.0",
            date: "2017-02-21",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "7.7.0",
            date: "2017-02-28",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "7.8.0",
            date: "2017-03-29",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "7.9.0",
            date: "2017-04-11",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "7.10.0",
            date: "2017-05-02",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "8.0.0",
            date: "2017-05-30",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "8.1.0",
            date: "2017-06-08",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "8.2.0",
            date: "2017-07-19",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "8.3.0",
            date: "2017-08-08",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "8.4.0",
            date: "2017-08-15",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "8.5.0",
            date: "2017-09-12",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "8.6.0",
            date: "2017-09-26",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "8.7.0",
            date: "2017-10-11",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "8.8.0",
            date: "2017-10-24",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "8.9.0",
            date: "2017-10-31",
            lts: "Carbon",
            security: false
        },
        {
            name: "nodejs",
            version: "8.10.0",
            date: "2018-03-06",
            lts: "Carbon",
            security: false
        },
        {
            name: "nodejs",
            version: "8.11.0",
            date: "2018-03-28",
            lts: "Carbon",
            security: true
        },
        {
            name: "nodejs",
            version: "8.12.0",
            date: "2018-09-10",
            lts: "Carbon",
            security: false
        },
        {
            name: "nodejs",
            version: "8.13.0",
            date: "2018-11-20",
            lts: "Carbon",
            security: false
        },
        {
            name: "nodejs",
            version: "8.14.0",
            date: "2018-11-27",
            lts: "Carbon",
            security: true
        },
        {
            name: "nodejs",
            version: "8.15.0",
            date: "2018-12-26",
            lts: "Carbon",
            security: false
        },
        {
            name: "nodejs",
            version: "8.16.0",
            date: "2019-04-16",
            lts: "Carbon",
            security: false
        },
        {
            name: "nodejs",
            version: "8.17.0",
            date: "2019-12-17",
            lts: "Carbon",
            security: true
        },
        {
            name: "nodejs",
            version: "9.0.0",
            date: "2017-10-31",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "9.1.0",
            date: "2017-11-07",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "9.2.0",
            date: "2017-11-14",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "9.3.0",
            date: "2017-12-12",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "9.4.0",
            date: "2018-01-10",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "9.5.0",
            date: "2018-01-31",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "9.6.0",
            date: "2018-02-21",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "9.7.0",
            date: "2018-03-01",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "9.8.0",
            date: "2018-03-07",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "9.9.0",
            date: "2018-03-21",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "9.10.0",
            date: "2018-03-28",
            lts: false,
            security: true
        },
        {
            name: "nodejs",
            version: "9.11.0",
            date: "2018-04-04",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "10.0.0",
            date: "2018-04-24",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "10.1.0",
            date: "2018-05-08",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "10.2.0",
            date: "2018-05-23",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "10.3.0",
            date: "2018-05-29",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "10.4.0",
            date: "2018-06-06",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "10.5.0",
            date: "2018-06-20",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "10.6.0",
            date: "2018-07-04",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "10.7.0",
            date: "2018-07-18",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "10.8.0",
            date: "2018-08-01",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "10.9.0",
            date: "2018-08-15",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "10.10.0",
            date: "2018-09-06",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "10.11.0",
            date: "2018-09-19",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "10.12.0",
            date: "2018-10-10",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "10.13.0",
            date: "2018-10-30",
            lts: "Dubnium",
            security: false
        },
        {
            name: "nodejs",
            version: "10.14.0",
            date: "2018-11-27",
            lts: "Dubnium",
            security: true
        },
        {
            name: "nodejs",
            version: "10.15.0",
            date: "2018-12-26",
            lts: "Dubnium",
            security: false
        },
        {
            name: "nodejs",
            version: "10.16.0",
            date: "2019-05-28",
            lts: "Dubnium",
            security: false
        },
        {
            name: "nodejs",
            version: "10.17.0",
            date: "2019-10-22",
            lts: "Dubnium",
            security: false
        },
        {
            name: "nodejs",
            version: "10.18.0",
            date: "2019-12-17",
            lts: "Dubnium",
            security: true
        },
        {
            name: "nodejs",
            version: "10.19.0",
            date: "2020-02-05",
            lts: "Dubnium",
            security: true
        },
        {
            name: "nodejs",
            version: "10.20.0",
            date: "2020-03-26",
            lts: "Dubnium",
            security: false
        },
        {
            name: "nodejs",
            version: "10.21.0",
            date: "2020-06-02",
            lts: "Dubnium",
            security: true
        },
        {
            name: "nodejs",
            version: "10.22.0",
            date: "2020-07-21",
            lts: "Dubnium",
            security: false
        },
        {
            name: "nodejs",
            version: "10.23.0",
            date: "2020-10-27",
            lts: "Dubnium",
            security: false
        },
        {
            name: "nodejs",
            version: "10.24.0",
            date: "2021-02-23",
            lts: "Dubnium",
            security: true
        },
        {
            name: "nodejs",
            version: "11.0.0",
            date: "2018-10-23",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "11.1.0",
            date: "2018-10-30",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "11.2.0",
            date: "2018-11-15",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "11.3.0",
            date: "2018-11-27",
            lts: false,
            security: true
        },
        {
            name: "nodejs",
            version: "11.4.0",
            date: "2018-12-07",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "11.5.0",
            date: "2018-12-18",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "11.6.0",
            date: "2018-12-26",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "11.7.0",
            date: "2019-01-17",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "11.8.0",
            date: "2019-01-24",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "11.9.0",
            date: "2019-01-30",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "11.10.0",
            date: "2019-02-14",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "11.11.0",
            date: "2019-03-05",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "11.12.0",
            date: "2019-03-14",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "11.13.0",
            date: "2019-03-28",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "11.14.0",
            date: "2019-04-10",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "11.15.0",
            date: "2019-04-30",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "12.0.0",
            date: "2019-04-23",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "12.1.0",
            date: "2019-04-29",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "12.2.0",
            date: "2019-05-07",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "12.3.0",
            date: "2019-05-21",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "12.4.0",
            date: "2019-06-04",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "12.5.0",
            date: "2019-06-26",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "12.6.0",
            date: "2019-07-03",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "12.7.0",
            date: "2019-07-23",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "12.8.0",
            date: "2019-08-06",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "12.9.0",
            date: "2019-08-20",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "12.10.0",
            date: "2019-09-04",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "12.11.0",
            date: "2019-09-25",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "12.12.0",
            date: "2019-10-11",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "12.13.0",
            date: "2019-10-21",
            lts: "Erbium",
            security: false
        },
        {
            name: "nodejs",
            version: "12.14.0",
            date: "2019-12-17",
            lts: "Erbium",
            security: true
        },
        {
            name: "nodejs",
            version: "12.15.0",
            date: "2020-02-05",
            lts: "Erbium",
            security: true
        },
        {
            name: "nodejs",
            version: "12.16.0",
            date: "2020-02-11",
            lts: "Erbium",
            security: false
        },
        {
            name: "nodejs",
            version: "12.17.0",
            date: "2020-05-26",
            lts: "Erbium",
            security: false
        },
        {
            name: "nodejs",
            version: "12.18.0",
            date: "2020-06-02",
            lts: "Erbium",
            security: true
        },
        {
            name: "nodejs",
            version: "12.19.0",
            date: "2020-10-06",
            lts: "Erbium",
            security: false
        },
        {
            name: "nodejs",
            version: "12.20.0",
            date: "2020-11-24",
            lts: "Erbium",
            security: false
        },
        {
            name: "nodejs",
            version: "12.21.0",
            date: "2021-02-23",
            lts: "Erbium",
            security: true
        },
        {
            name: "nodejs",
            version: "12.22.0",
            date: "2021-03-30",
            lts: "Erbium",
            security: false
        },
        {
            name: "nodejs",
            version: "13.0.0",
            date: "2019-10-22",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "13.1.0",
            date: "2019-11-05",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "13.2.0",
            date: "2019-11-21",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "13.3.0",
            date: "2019-12-03",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "13.4.0",
            date: "2019-12-17",
            lts: false,
            security: true
        },
        {
            name: "nodejs",
            version: "13.5.0",
            date: "2019-12-18",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "13.6.0",
            date: "2020-01-07",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "13.7.0",
            date: "2020-01-21",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "13.8.0",
            date: "2020-02-05",
            lts: false,
            security: true
        },
        {
            name: "nodejs",
            version: "13.9.0",
            date: "2020-02-18",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "13.10.0",
            date: "2020-03-04",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "13.11.0",
            date: "2020-03-12",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "13.12.0",
            date: "2020-03-26",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "13.13.0",
            date: "2020-04-14",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "13.14.0",
            date: "2020-04-29",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "14.0.0",
            date: "2020-04-21",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "14.1.0",
            date: "2020-04-29",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "14.2.0",
            date: "2020-05-05",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "14.3.0",
            date: "2020-05-19",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "14.4.0",
            date: "2020-06-02",
            lts: false,
            security: true
        },
        {
            name: "nodejs",
            version: "14.5.0",
            date: "2020-06-30",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "14.6.0",
            date: "2020-07-20",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "14.7.0",
            date: "2020-07-29",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "14.8.0",
            date: "2020-08-11",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "14.9.0",
            date: "2020-08-27",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "14.10.0",
            date: "2020-09-08",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "14.11.0",
            date: "2020-09-15",
            lts: false,
            security: true
        },
        {
            name: "nodejs",
            version: "14.12.0",
            date: "2020-09-22",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "14.13.0",
            date: "2020-09-29",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "14.14.0",
            date: "2020-10-15",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "14.15.0",
            date: "2020-10-27",
            lts: "Fermium",
            security: false
        },
        {
            name: "nodejs",
            version: "14.16.0",
            date: "2021-02-23",
            lts: "Fermium",
            security: true
        },
        {
            name: "nodejs",
            version: "14.17.0",
            date: "2021-05-11",
            lts: "Fermium",
            security: false
        },
        {
            name: "nodejs",
            version: "14.18.0",
            date: "2021-09-28",
            lts: "Fermium",
            security: false
        },
        {
            name: "nodejs",
            version: "14.19.0",
            date: "2022-02-01",
            lts: "Fermium",
            security: false
        },
        {
            name: "nodejs",
            version: "14.20.0",
            date: "2022-07-07",
            lts: "Fermium",
            security: true
        },
        {
            name: "nodejs",
            version: "14.21.0",
            date: "2022-11-01",
            lts: "Fermium",
            security: false
        },
        {
            name: "nodejs",
            version: "15.0.0",
            date: "2020-10-20",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "15.1.0",
            date: "2020-11-04",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "15.2.0",
            date: "2020-11-10",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "15.3.0",
            date: "2020-11-24",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "15.4.0",
            date: "2020-12-09",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "15.5.0",
            date: "2020-12-22",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "15.6.0",
            date: "2021-01-14",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "15.7.0",
            date: "2021-01-25",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "15.8.0",
            date: "2021-02-02",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "15.9.0",
            date: "2021-02-18",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "15.10.0",
            date: "2021-02-23",
            lts: false,
            security: true
        },
        {
            name: "nodejs",
            version: "15.11.0",
            date: "2021-03-03",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "15.12.0",
            date: "2021-03-17",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "15.13.0",
            date: "2021-03-31",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "15.14.0",
            date: "2021-04-06",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "16.0.0",
            date: "2021-04-20",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "16.1.0",
            date: "2021-05-04",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "16.2.0",
            date: "2021-05-19",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "16.3.0",
            date: "2021-06-03",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "16.4.0",
            date: "2021-06-23",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "16.5.0",
            date: "2021-07-14",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "16.6.0",
            date: "2021-07-29",
            lts: false,
            security: true
        },
        {
            name: "nodejs",
            version: "16.7.0",
            date: "2021-08-18",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "16.8.0",
            date: "2021-08-25",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "16.9.0",
            date: "2021-09-07",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "16.10.0",
            date: "2021-09-22",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "16.11.0",
            date: "2021-10-08",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "16.12.0",
            date: "2021-10-20",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "16.13.0",
            date: "2021-10-26",
            lts: "Gallium",
            security: false
        },
        {
            name: "nodejs",
            version: "16.14.0",
            date: "2022-02-08",
            lts: "Gallium",
            security: false
        },
        {
            name: "nodejs",
            version: "16.15.0",
            date: "2022-04-26",
            lts: "Gallium",
            security: false
        },
        {
            name: "nodejs",
            version: "16.16.0",
            date: "2022-07-07",
            lts: "Gallium",
            security: true
        },
        {
            name: "nodejs",
            version: "16.17.0",
            date: "2022-08-16",
            lts: "Gallium",
            security: false
        },
        {
            name: "nodejs",
            version: "16.18.0",
            date: "2022-10-12",
            lts: "Gallium",
            security: false
        },
        {
            name: "nodejs",
            version: "16.19.0",
            date: "2022-12-13",
            lts: "Gallium",
            security: false
        },
        {
            name: "nodejs",
            version: "17.0.0",
            date: "2021-10-19",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "17.1.0",
            date: "2021-11-09",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "17.2.0",
            date: "2021-11-30",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "17.3.0",
            date: "2021-12-17",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "17.4.0",
            date: "2022-01-18",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "17.5.0",
            date: "2022-02-10",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "17.6.0",
            date: "2022-02-22",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "17.7.0",
            date: "2022-03-09",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "17.8.0",
            date: "2022-03-22",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "17.9.0",
            date: "2022-04-07",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "18.0.0",
            date: "2022-04-18",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "18.1.0",
            date: "2022-05-03",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "18.2.0",
            date: "2022-05-17",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "18.3.0",
            date: "2022-06-02",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "18.4.0",
            date: "2022-06-16",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "18.5.0",
            date: "2022-07-06",
            lts: false,
            security: true
        },
        {
            name: "nodejs",
            version: "18.6.0",
            date: "2022-07-13",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "18.7.0",
            date: "2022-07-26",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "18.8.0",
            date: "2022-08-24",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "18.9.0",
            date: "2022-09-07",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "18.10.0",
            date: "2022-09-28",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "18.11.0",
            date: "2022-10-13",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "18.12.0",
            date: "2022-10-25",
            lts: "Hydrogen",
            security: false
        },
        {
            name: "nodejs",
            version: "18.13.0",
            date: "2023-01-05",
            lts: "Hydrogen",
            security: false
        },
        {
            name: "nodejs",
            version: "18.14.0",
            date: "2023-02-01",
            lts: "Hydrogen",
            security: false
        },
        {
            name: "nodejs",
            version: "19.0.0",
            date: "2022-10-17",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "19.1.0",
            date: "2022-11-14",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "19.2.0",
            date: "2022-11-29",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "19.3.0",
            date: "2022-12-14",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "19.4.0",
            date: "2023-01-05",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "19.5.0",
            date: "2023-01-24",
            lts: false,
            security: false
        },
        {
            name: "nodejs",
            version: "19.6.0",
            date: "2023-02-01",
            lts: false,
            security: false
        }
    ];
  
    var agents$2 = {};
  
    var browsers$2 = {};
  
    var browsers$1 = {
      A: "ie",
      B: "edge",
      C: "firefox",
      D: "chrome",
      E: "safari",
      F: "opera",
      G: "ios_saf",
      H: "op_mini",
      I: "android",
      J: "bb",
      K: "op_mob",
      L: "and_chr",
      M: "and_ff",
      N: "ie_mob",
      O: "and_uc",
      P: "samsung",
      Q: "and_qq",
      R: "baidu",
      S: "kaios"
    };
  
    browsers$2.browsers = browsers$1;
  
    var browserVersions$1 = {};
  
    var browserVersions = {
      "0": "24",
      "1": "25",
      "2": "26",
      "3": "27",
      "4": "28",
      "5": "29",
      "6": "30",
      "7": "31",
      "8": "32",
      "9": "33",
      A: "10",
      B: "11",
      C: "12",
      D: "7",
      E: "8",
      F: "9",
      G: "15",
      H: "110",
      I: "4",
      J: "6",
      K: "13",
      L: "14",
      M: "16",
      N: "17",
      O: "18",
      P: "79",
      Q: "80",
      R: "81",
      S: "83",
      T: "84",
      U: "85",
      V: "86",
      W: "87",
      X: "88",
      Y: "89",
      Z: "90",
      a: "91",
      b: "92",
      c: "93",
      d: "94",
      e: "95",
      f: "109",
      g: "20",
      h: "73",
      i: "96",
      j: "97",
      k: "98",
      l: "99",
      m: "100",
      n: "101",
      o: "102",
      p: "103",
      q: "104",
      r: "105",
      s: "106",
      t: "107",
      u: "108",
      v: "5",
      w: "19",
      x: "21",
      y: "22",
      z: "23",
      AB: "34",
      BB: "35",
      CB: "36",
      DB: "37",
      EB: "38",
      FB: "39",
      GB: "40",
      HB: "41",
      IB: "42",
      JB: "43",
      KB: "44",
      LB: "45",
      MB: "46",
      NB: "47",
      OB: "48",
      PB: "49",
      QB: "50",
      RB: "51",
      SB: "52",
      TB: "53",
      UB: "54",
      VB: "55",
      WB: "56",
      XB: "57",
      YB: "58",
      ZB: "60",
      aB: "62",
      bB: "63",
      cB: "64",
      dB: "65",
      eB: "66",
      fB: "67",
      gB: "68",
      hB: "69",
      iB: "70",
      jB: "71",
      kB: "72",
      lB: "74",
      mB: "75",
      nB: "76",
      oB: "77",
      pB: "78",
      qB: "11.1",
      rB: "12.1",
      sB: "16.0",
      tB: "3",
      uB: "59",
      vB: "61",
      wB: "82",
      xB: "111",
      yB: "112",
      zB: "3.2",
      "0B": "10.1",
      "1B": "13.1",
      "2B": "15.2-15.3",
      "3B": "15.4",
      "4B": "15.5",
      "5B": "15.6",
      "6B": "16.1",
      "7B": "16.2",
      "8B": "16.3",
      "9B": "16.4",
      AC: "11.5",
      BC: "4.2-4.3",
      CC: "5.5",
      DC: "2",
      EC: "3.5",
      FC: "3.6",
      GC: "113",
      HC: "3.1",
      IC: "5.1",
      JC: "6.1",
      KC: "7.1",
      LC: "9.1",
      MC: "14.1",
      NC: "15.1",
      OC: "TP",
      PC: "9.5-9.6",
      QC: "10.0-10.1",
      RC: "10.5",
      SC: "10.6",
      TC: "11.6",
      UC: "4.0-4.1",
      VC: "5.0-5.1",
      WC: "6.0-6.1",
      XC: "7.0-7.1",
      YC: "8.1-8.4",
      ZC: "9.0-9.2",
      aC: "9.3",
      bC: "10.0-10.2",
      cC: "10.3",
      dC: "11.0-11.2",
      eC: "11.3-11.4",
      fC: "12.0-12.1",
      gC: "12.2-12.5",
      hC: "13.0-13.1",
      iC: "13.2",
      jC: "13.3",
      kC: "13.4-13.7",
      lC: "14.0-14.4",
      mC: "14.5-14.8",
      nC: "15.0-15.1",
      oC: "all",
      pC: "2.1",
      qC: "2.2",
      rC: "2.3",
      sC: "4.1",
      tC: "4.4",
      uC: "4.4.3-4.4.4",
      vC: "13.4",
      wC: "5.0-5.4",
      xC: "6.2-6.4",
      yC: "7.2-7.4",
      zC: "8.2",
      "0C": "9.2",
      "1C": "11.1-11.2",
      "2C": "12.0",
      "3C": "13.0",
      "4C": "14.0",
      "5C": "15.0",
      "6C": "17.0",
      "7C": "18.0",
      "8C": "19.0",
      "9C": "13.18",
      AD: "2.5",
      BD: "3.0-3.1"
    };
  
    browserVersions$1.browserVersions = browserVersions;
  
    var agents$1 = {
      A: {
        A: {
          J: 0.0131217,
          D: 0.00621152,
          E: 0.0478029,
          F: 0.0573634,
          A: 0.00956057,
          B: 0.487589,
          CC: 0.009298
        },
        B: "ms",
        C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "CC", "J", "D", "E", "F", "A", "B", "", "", ""],
        E: "IE",
        F: {
          CC: 962323200,
          J: 998870400,
          D: 1161129600,
          E: 1237420800,
          F: 1300060800,
          A: 1346716800,
          B: 1381968000
        }
      },
      B: {
        A: {
          C: 0.003861,
          K: 0.004267,
          L: 0.004268,
          G: 0.003861,
          M: 0.003702,
          N: 0.003861,
          O: 0.015444,
          P: 0,
          Q: 0.004298,
          R: 0.00944,
          S: 0.004043,
          T: 0.007722,
          U: 0.003861,
          V: 0.003861,
          W: 0.003861,
          X: 0.003943,
          Y: 0.007722,
          Z: 0.003943,
          a: 0.003943,
          b: 0.007722,
          c: 0.004118,
          d: 0.003939,
          e: 0.003943,
          i: 0.003943,
          j: 0.003943,
          k: 0.003929,
          l: 0.003901,
          m: 0.011829,
          n: 0.007886,
          o: 0.003943,
          p: 0.007722,
          q: 0.003861,
          r: 0.007722,
          s: 0.011583,
          t: 0.073359,
          u: 0.111969,
          f: 1.66023,
          H: 2.23552
        },
        B: "webkit",
        C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "C", "K", "L", "G", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "f", "H", "", "", ""],
        E: "Edge",
        F: {
          C: 1438128000,
          K: 1447286400,
          L: 1470096000,
          G: 1491868800,
          M: 1508198400,
          N: 1525046400,
          O: 1542067200,
          P: 1579046400,
          Q: 1581033600,
          R: 1586736000,
          S: 1590019200,
          T: 1594857600,
          U: 1598486400,
          V: 1602201600,
          W: 1605830400,
          X: 1611360000,
          Y: 1614816000,
          Z: 1618358400,
          a: 1622073600,
          b: 1626912000,
          c: 1630627200,
          d: 1632441600,
          e: 1634774400,
          i: 1637539200,
          j: 1641427200,
          k: 1643932800,
          l: 1646265600,
          m: 1649635200,
          n: 1651190400,
          o: 1653955200,
          p: 1655942400,
          q: 1659657600,
          r: 1661990400,
          s: 1664755200,
          t: 1666915200,
          u: 1670198400,
          f: 1673481600,
          H: 1675900800
        },
        D: {
          C: "ms",
          K: "ms",
          L: "ms",
          G: "ms",
          M: "ms",
          N: "ms",
          O: "ms"
        }
      },
      C: {
        A: {
          "0": 0.008786,
          "1": 0.004118,
          "2": 0.004317,
          "3": 0.004393,
          "4": 0.004418,
          "5": 0.008834,
          "6": 0.008322,
          "7": 0.008928,
          "8": 0.004471,
          "9": 0.009284,
          DC: 0.004118,
          tB: 0.004271,
          I: 0.011703,
          v: 0.004879,
          J: 0.020136,
          D: 0.005725,
          E: 0.004525,
          F: 0.00533,
          A: 0.004283,
          B: 0.007722,
          C: 0.004471,
          K: 0.004486,
          L: 0.00453,
          G: 0.008322,
          M: 0.004417,
          N: 0.004425,
          O: 0.004161,
          w: 0.004443,
          g: 0.004283,
          x: 0.008322,
          y: 0.013698,
          z: 0.004161,
          AB: 0.004707,
          BB: 0.009076,
          CB: 0.003861,
          DB: 0.004783,
          EB: 0.003929,
          FB: 0.004783,
          GB: 0.00487,
          HB: 0.005029,
          IB: 0.0047,
          JB: 0.019305,
          KB: 0.003861,
          LB: 0.003867,
          MB: 0.004525,
          NB: 0.004293,
          OB: 0.003861,
          PB: 0.004538,
          QB: 0.008282,
          RB: 0.011601,
          SB: 0.046332,
          TB: 0.011601,
          UB: 0.003929,
          VB: 0.003974,
          WB: 0.003861,
          XB: 0.011601,
          YB: 0.003939,
          uB: 0.003861,
          ZB: 0.003929,
          vB: 0.004356,
          aB: 0.004425,
          bB: 0.008322,
          cB: 0.00415,
          dB: 0.004267,
          eB: 0.003801,
          fB: 0.004267,
          gB: 0.003861,
          hB: 0.00415,
          iB: 0.004293,
          jB: 0.004425,
          kB: 0.003861,
          h: 0.00415,
          lB: 0.00415,
          mB: 0.004318,
          nB: 0.004356,
          oB: 0.003974,
          pB: 0.034749,
          P: 0.003861,
          Q: 0.003861,
          R: 0.003861,
          wB: 0.003861,
          S: 0.003861,
          T: 0.003929,
          U: 0.004268,
          V: 0.003801,
          W: 0.015444,
          X: 0.007722,
          Y: 0.003943,
          Z: 0.003943,
          a: 0.011583,
          b: 0.003801,
          c: 0.007722,
          d: 0.011583,
          e: 0.003773,
          i: 0.007886,
          j: 0.003901,
          k: 0.003901,
          l: 0.003861,
          m: 0.003861,
          n: 0.003861,
          o: 0.096525,
          p: 0.042471,
          q: 0.007722,
          r: 0.011583,
          s: 0.015444,
          t: 0.019305,
          u: 0.069498,
          f: 1.22008,
          H: 0.814671,
          xB: 0.007722,
          yB: 0,
          EC: 0.008786,
          FC: 0.00487
        },
        B: "moz",
        C: ["DC", "tB", "EC", "FC", "I", "v", "J", "D", "E", "F", "A", "B", "C", "K", "L", "G", "M", "N", "O", "w", "g", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "AB", "BB", "CB", "DB", "EB", "FB", "GB", "HB", "IB", "JB", "KB", "LB", "MB", "NB", "OB", "PB", "QB", "RB", "SB", "TB", "UB", "VB", "WB", "XB", "YB", "uB", "ZB", "vB", "aB", "bB", "cB", "dB", "eB", "fB", "gB", "hB", "iB", "jB", "kB", "h", "lB", "mB", "nB", "oB", "pB", "P", "Q", "R", "wB", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "f", "H", "xB", "yB", ""],
        E: "Firefox",
        F: {
          "0": 1375747200,
          "1": 1379376000,
          "2": 1386633600,
          "3": 1391472000,
          "4": 1395100800,
          "5": 1398729600,
          "6": 1402358400,
          "7": 1405987200,
          "8": 1409616000,
          "9": 1413244800,
          DC: 1161648000,
          tB: 1213660800,
          EC: 1246320000,
          FC: 1264032000,
          I: 1300752000,
          v: 1308614400,
          J: 1313452800,
          D: 1317081600,
          E: 1317081600,
          F: 1320710400,
          A: 1324339200,
          B: 1327968000,
          C: 1331596800,
          K: 1335225600,
          L: 1338854400,
          G: 1342483200,
          M: 1346112000,
          N: 1349740800,
          O: 1353628800,
          w: 1357603200,
          g: 1361232000,
          x: 1364860800,
          y: 1368489600,
          z: 1372118400,
          AB: 1417392000,
          BB: 1421107200,
          CB: 1424736000,
          DB: 1428278400,
          EB: 1431475200,
          FB: 1435881600,
          GB: 1439251200,
          HB: 1442880000,
          IB: 1446508800,
          JB: 1450137600,
          KB: 1453852800,
          LB: 1457395200,
          MB: 1461628800,
          NB: 1465257600,
          OB: 1470096000,
          PB: 1474329600,
          QB: 1479168000,
          RB: 1485216000,
          SB: 1488844800,
          TB: 1492560000,
          UB: 1497312000,
          VB: 1502150400,
          WB: 1506556800,
          XB: 1510617600,
          YB: 1516665600,
          uB: 1520985600,
          ZB: 1525824000,
          vB: 1529971200,
          aB: 1536105600,
          bB: 1540252800,
          cB: 1544486400,
          dB: 1548720000,
          eB: 1552953600,
          fB: 1558396800,
          gB: 1562630400,
          hB: 1567468800,
          iB: 1571788800,
          jB: 1575331200,
          kB: 1578355200,
          h: 1581379200,
          lB: 1583798400,
          mB: 1586304000,
          nB: 1588636800,
          oB: 1591056000,
          pB: 1593475200,
          P: 1595894400,
          Q: 1598313600,
          R: 1600732800,
          wB: 1603152000,
          S: 1605571200,
          T: 1607990400,
          U: 1611619200,
          V: 1614038400,
          W: 1616457600,
          X: 1618790400,
          Y: 1622505600,
          Z: 1626134400,
          a: 1628553600,
          b: 1630972800,
          c: 1633392000,
          d: 1635811200,
          e: 1638835200,
          i: 1641859200,
          j: 1644364800,
          k: 1646697600,
          l: 1649116800,
          m: 1651536000,
          n: 1653955200,
          o: 1656374400,
          p: 1658793600,
          q: 1661212800,
          r: 1663632000,
          s: 1666051200,
          t: 1668470400,
          u: 1670889600,
          f: 1673913600,
          H: 1676332800,
          xB: null,
          yB: null
        }
      },
      D: {
        A: {
          "0": 0.003939,
          "1": 0.004461,
          "2": 0.004141,
          "3": 0.004326,
          "4": 0.0047,
          "5": 0.004538,
          "6": 0.008322,
          "7": 0.008596,
          "8": 0.004566,
          "9": 0.004118,
          I: 0.004706,
          v: 0.004879,
          J: 0.004879,
          D: 0.005591,
          E: 0.005591,
          F: 0.005591,
          A: 0.004534,
          B: 0.004464,
          C: 0.010424,
          K: 0.0083,
          L: 0.004706,
          G: 0.015087,
          M: 0.004393,
          N: 0.004393,
          O: 0.008652,
          w: 0.008322,
          g: 0.004393,
          x: 0.004317,
          y: 0.003901,
          z: 0.008786,
          AB: 0.003861,
          BB: 0.003861,
          CB: 0.004335,
          DB: 0.004464,
          EB: 0.015444,
          FB: 0.003867,
          GB: 0.015444,
          HB: 0.003773,
          IB: 0.003974,
          JB: 0.007722,
          KB: 0.007948,
          LB: 0.003974,
          MB: 0.003867,
          NB: 0.007722,
          OB: 0.019305,
          PB: 0.03861,
          QB: 0.003867,
          RB: 0.003929,
          SB: 0.007722,
          TB: 0.007722,
          UB: 0.003867,
          VB: 0.007722,
          WB: 0.069498,
          XB: 0.003861,
          YB: 0.015772,
          uB: 0.003773,
          ZB: 0.015444,
          vB: 0.007722,
          aB: 0.003773,
          bB: 0.007722,
          cB: 0.003943,
          dB: 0.007722,
          eB: 0.027027,
          fB: 0.007722,
          gB: 0.011583,
          hB: 0.054054,
          iB: 0.019305,
          jB: 0.015444,
          kB: 0.023166,
          h: 0.011583,
          lB: 0.042471,
          mB: 0.046332,
          nB: 0.042471,
          oB: 0.015444,
          pB: 0.030888,
          P: 0.127413,
          Q: 0.03861,
          R: 0.042471,
          S: 0.073359,
          T: 0.042471,
          U: 0.088803,
          V: 0.07722,
          W: 0.081081,
          X: 0.027027,
          Y: 0.03861,
          Z: 0.046332,
          a: 0.084942,
          b: 0.050193,
          c: 0.065637,
          d: 0.046332,
          e: 0.019305,
          i: 0.03861,
          j: 0.050193,
          k: 0.092664,
          l: 0.050193,
          m: 0.057915,
          n: 0.061776,
          o: 0.084942,
          p: 0.235521,
          q: 0.084942,
          r: 0.131274,
          s: 0.100386,
          t: 0.19305,
          u: 0.984555,
          f: 12.4054,
          H: 7.25482,
          xB: 0.015444,
          yB: 0.019305,
          GC: 0
        },
        B: "webkit",
        C: ["", "", "", "", "", "I", "v", "J", "D", "E", "F", "A", "B", "C", "K", "L", "G", "M", "N", "O", "w", "g", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "AB", "BB", "CB", "DB", "EB", "FB", "GB", "HB", "IB", "JB", "KB", "LB", "MB", "NB", "OB", "PB", "QB", "RB", "SB", "TB", "UB", "VB", "WB", "XB", "YB", "uB", "ZB", "vB", "aB", "bB", "cB", "dB", "eB", "fB", "gB", "hB", "iB", "jB", "kB", "h", "lB", "mB", "nB", "oB", "pB", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "f", "H", "xB", "yB", "GC"],
        E: "Chrome",
        F: {
          "0": 1352246400,
          "1": 1357862400,
          "2": 1361404800,
          "3": 1364428800,
          "4": 1369094400,
          "5": 1374105600,
          "6": 1376956800,
          "7": 1384214400,
          "8": 1389657600,
          "9": 1392940800,
          I: 1264377600,
          v: 1274745600,
          J: 1283385600,
          D: 1287619200,
          E: 1291248000,
          F: 1296777600,
          A: 1299542400,
          B: 1303862400,
          C: 1307404800,
          K: 1312243200,
          L: 1316131200,
          G: 1316131200,
          M: 1319500800,
          N: 1323734400,
          O: 1328659200,
          w: 1332892800,
          g: 1337040000,
          x: 1340668800,
          y: 1343692800,
          z: 1348531200,
          AB: 1397001600,
          BB: 1400544000,
          CB: 1405468800,
          DB: 1409011200,
          EB: 1412640000,
          FB: 1416268800,
          GB: 1421798400,
          HB: 1425513600,
          IB: 1429401600,
          JB: 1432080000,
          KB: 1437523200,
          LB: 1441152000,
          MB: 1444780800,
          NB: 1449014400,
          OB: 1453248000,
          PB: 1456963200,
          QB: 1460592000,
          RB: 1464134400,
          SB: 1469059200,
          TB: 1472601600,
          UB: 1476230400,
          VB: 1480550400,
          WB: 1485302400,
          XB: 1489017600,
          YB: 1492560000,
          uB: 1496707200,
          ZB: 1500940800,
          vB: 1504569600,
          aB: 1508198400,
          bB: 1512518400,
          cB: 1516752000,
          dB: 1520294400,
          eB: 1523923200,
          fB: 1527552000,
          gB: 1532390400,
          hB: 1536019200,
          iB: 1539648000,
          jB: 1543968000,
          kB: 1548720000,
          h: 1552348800,
          lB: 1555977600,
          mB: 1559606400,
          nB: 1564444800,
          oB: 1568073600,
          pB: 1571702400,
          P: 1575936000,
          Q: 1580860800,
          R: 1586304000,
          S: 1589846400,
          T: 1594684800,
          U: 1598313600,
          V: 1601942400,
          W: 1605571200,
          X: 1611014400,
          Y: 1614556800,
          Z: 1618272000,
          a: 1621987200,
          b: 1626739200,
          c: 1630368000,
          d: 1632268800,
          e: 1634601600,
          i: 1637020800,
          j: 1641340800,
          k: 1643673600,
          l: 1646092800,
          m: 1648512000,
          n: 1650931200,
          o: 1653350400,
          p: 1655769600,
          q: 1659398400,
          r: 1661817600,
          s: 1664236800,
          t: 1666656000,
          u: 1669680000,
          f: 1673308800,
          H: 1675728000,
          xB: null,
          yB: null,
          GC: null
        }
      },
      E: {
        A: {
          I: 0,
          v: 0.008322,
          J: 0.004656,
          D: 0.004465,
          E: 0.003974,
          F: 0.003929,
          A: 0.004425,
          B: 0.004318,
          C: 0.003801,
          K: 0.019305,
          L: 0.096525,
          G: 0.023166,
          HC: 0,
          zB: 0.008692,
          IC: 0.007722,
          JC: 0.00456,
          KC: 0.004283,
          LC: 0.057915,
          "0B": 0.007802,
          qB: 0.007722,
          rB: 0.030888,
          "1B": 0.169884,
          MC: 0.258687,
          NC: 0.042471,
          "2B": 0.034749,
          "3B": 0.088803,
          "4B": 0.169884,
          "5B": 0.857142,
          sB: 0.088803,
          "6B": 0.293436,
          "7B": 0.922779,
          "8B": 0.621621,
          "9B": 0,
          OC: 0
        },
        B: "webkit",
        C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "HC", "zB", "I", "v", "IC", "J", "JC", "D", "KC", "E", "F", "LC", "A", "0B", "B", "qB", "C", "rB", "K", "1B", "L", "MC", "G", "NC", "2B", "3B", "4B", "5B", "sB", "6B", "7B", "8B", "9B", "OC", ""],
        E: "Safari",
        F: {
          HC: 1205798400,
          zB: 1226534400,
          I: 1244419200,
          v: 1275868800,
          IC: 1311120000,
          J: 1343174400,
          JC: 1382400000,
          D: 1382400000,
          KC: 1410998400,
          E: 1413417600,
          F: 1443657600,
          LC: 1458518400,
          A: 1474329600,
          "0B": 1490572800,
          B: 1505779200,
          qB: 1522281600,
          C: 1537142400,
          rB: 1553472000,
          K: 1568851200,
          "1B": 1585008000,
          L: 1600214400,
          MC: 1619395200,
          G: 1632096000,
          NC: 1635292800,
          "2B": 1639353600,
          "3B": 1647216000,
          "4B": 1652745600,
          "5B": 1658275200,
          sB: 1662940800,
          "6B": 1666569600,
          "7B": 1670889600,
          "8B": 1674432000,
          "9B": null,
          OC: null
        }
      },
      F: {
        A: {
          "0": 0.006702,
          "1": 0.006015,
          "2": 0.005595,
          "3": 0.004393,
          "4": 0.003861,
          "5": 0.004879,
          "6": 0.004879,
          "7": 0.003861,
          "8": 0.005152,
          "9": 0.005014,
          F: 0.0082,
          B: 0.016581,
          C: 0.004317,
          G: 0.00685,
          M: 0.00685,
          N: 0.00685,
          O: 0.005014,
          w: 0.006015,
          g: 0.004879,
          x: 0.006597,
          y: 0.006597,
          z: 0.013434,
          AB: 0.009758,
          BB: 0.004879,
          CB: 0.007722,
          DB: 0.004283,
          EB: 0.004367,
          FB: 0.004534,
          GB: 0.003861,
          HB: 0.004227,
          IB: 0.004418,
          JB: 0.004161,
          KB: 0.004227,
          LB: 0.004725,
          MB: 0.011583,
          NB: 0.008942,
          OB: 0.004707,
          PB: 0.004827,
          QB: 0.004707,
          RB: 0.004707,
          SB: 0.004326,
          TB: 0.008922,
          UB: 0.014349,
          VB: 0.004425,
          WB: 0.00472,
          XB: 0.004425,
          YB: 0.004425,
          ZB: 0.00472,
          aB: 0.004532,
          bB: 0.004566,
          cB: 0.02283,
          dB: 0.00867,
          eB: 0.004656,
          fB: 0.004642,
          gB: 0.003929,
          hB: 0.00944,
          iB: 0.004293,
          jB: 0.003929,
          kB: 0.004298,
          h: 0.096692,
          lB: 0.004201,
          mB: 0.004141,
          nB: 0.004257,
          oB: 0.003939,
          pB: 0.008236,
          P: 0.003855,
          Q: 0.003939,
          R: 0.008514,
          wB: 0.003939,
          S: 0.003939,
          T: 0.003702,
          U: 0.007722,
          V: 0.003855,
          W: 0.003855,
          X: 0.003929,
          Y: 0.003861,
          Z: 0.011703,
          a: 0.007546,
          b: 0.011829,
          c: 0.069498,
          d: 0.648648,
          e: 0.370656,
          PC: 0.00685,
          QC: 0,
          RC: 0.008392,
          SC: 0.004706,
          qB: 0.006229,
          AC: 0.004879,
          TC: 0.008786,
          rB: 0.00472
        },
        B: "webkit",
        C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "F", "PC", "QC", "RC", "SC", "B", "qB", "AC", "TC", "C", "rB", "G", "M", "N", "O", "w", "g", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "AB", "BB", "CB", "DB", "EB", "FB", "GB", "HB", "IB", "JB", "KB", "LB", "MB", "NB", "OB", "PB", "QB", "RB", "SB", "TB", "UB", "VB", "WB", "XB", "YB", "ZB", "aB", "bB", "cB", "dB", "eB", "fB", "gB", "hB", "iB", "jB", "kB", "h", "lB", "mB", "nB", "oB", "pB", "P", "Q", "R", "wB", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "", "", ""],
        E: "Opera",
        F: {
          "0": 1409616000,
          "1": 1413331200,
          "2": 1417132800,
          "3": 1422316800,
          "4": 1425945600,
          "5": 1430179200,
          "6": 1433808000,
          "7": 1438646400,
          "8": 1442448000,
          "9": 1445904000,
          F: 1150761600,
          PC: 1223424000,
          QC: 1251763200,
          RC: 1267488000,
          SC: 1277942400,
          B: 1292457600,
          qB: 1302566400,
          AC: 1309219200,
          TC: 1323129600,
          C: 1323129600,
          rB: 1352073600,
          G: 1372723200,
          M: 1377561600,
          N: 1381104000,
          O: 1386288000,
          w: 1390867200,
          g: 1393891200,
          x: 1399334400,
          y: 1401753600,
          z: 1405987200,
          AB: 1449100800,
          BB: 1454371200,
          CB: 1457308800,
          DB: 1462320000,
          EB: 1465344000,
          FB: 1470096000,
          GB: 1474329600,
          HB: 1477267200,
          IB: 1481587200,
          JB: 1486425600,
          KB: 1490054400,
          LB: 1494374400,
          MB: 1498003200,
          NB: 1502236800,
          OB: 1506470400,
          PB: 1510099200,
          QB: 1515024000,
          RB: 1517961600,
          SB: 1521676800,
          TB: 1525910400,
          UB: 1530144000,
          VB: 1534982400,
          WB: 1537833600,
          XB: 1543363200,
          YB: 1548201600,
          ZB: 1554768000,
          aB: 1561593600,
          bB: 1566259200,
          cB: 1570406400,
          dB: 1573689600,
          eB: 1578441600,
          fB: 1583971200,
          gB: 1587513600,
          hB: 1592956800,
          iB: 1595894400,
          jB: 1600128000,
          kB: 1603238400,
          h: 1613520000,
          lB: 1612224000,
          mB: 1616544000,
          nB: 1619568000,
          oB: 1623715200,
          pB: 1627948800,
          P: 1631577600,
          Q: 1633392000,
          R: 1635984000,
          wB: 1638403200,
          S: 1642550400,
          T: 1644969600,
          U: 1647993600,
          V: 1650412800,
          W: 1652745600,
          X: 1654646400,
          Y: 1657152000,
          Z: 1660780800,
          a: 1663113600,
          b: 1668816000,
          c: 1668643200,
          d: 1671062400,
          e: 1675209600
        },
        D: {
          F: "o",
          B: "o",
          C: "o",
          PC: "o",
          QC: "o",
          RC: "o",
          SC: "o",
          qB: "o",
          AC: "o",
          TC: "o",
          rB: "o"
        }
      },
      G: {
        A: {
          E: 0,
          zB: 0,
          UC: 0,
          BC: 0.00156679,
          VC: 0.00313358,
          WC: 0.00313358,
          XC: 0.0125343,
          YC: 0.00626717,
          ZC: 0.0172347,
          aC: 0.0564045,
          bC: 0.00470038,
          cC: 0.0987079,
          dC: 0.0250687,
          eC: 0.0235019,
          fC: 0.0219351,
          gC: 0.394832,
          hC: 0.0156679,
          iC: 0.0360362,
          jC: 0.0344694,
          kC: 0.108109,
          lC: 0.282023,
          mC: 0.532709,
          nC: 0.153546,
          "2B": 0.195849,
          "3B": 0.233452,
          "4B": 0.412066,
          "5B": 1.40071,
          sB: 1.43988,
          "6B": 3.51431,
          "7B": 3.62556,
          "8B": 2.04623,
          "9B": 0.00940075
        },
        B: "webkit",
        C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "zB", "UC", "BC", "VC", "WC", "XC", "E", "YC", "ZC", "aC", "bC", "cC", "dC", "eC", "fC", "gC", "hC", "iC", "jC", "kC", "lC", "mC", "nC", "2B", "3B", "4B", "5B", "sB", "6B", "7B", "8B", "9B", "", ""],
        E: "Safari on iOS",
        F: {
          zB: 1270252800,
          UC: 1283904000,
          BC: 1299628800,
          VC: 1331078400,
          WC: 1359331200,
          XC: 1394409600,
          E: 1410912000,
          YC: 1413763200,
          ZC: 1442361600,
          aC: 1458518400,
          bC: 1473724800,
          cC: 1490572800,
          dC: 1505779200,
          eC: 1522281600,
          fC: 1537142400,
          gC: 1553472000,
          hC: 1568851200,
          iC: 1572220800,
          jC: 1580169600,
          kC: 1585008000,
          lC: 1600214400,
          mC: 1619395200,
          nC: 1632096000,
          "2B": 1639353600,
          "3B": 1647216000,
          "4B": 1652659200,
          "5B": 1658275200,
          sB: 1662940800,
          "6B": 1666569600,
          "7B": 1670889600,
          "8B": 1674432000,
          "9B": null
        }
      },
      H: {
        A: {
          oC: 0.993853
        },
        B: "o",
        C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "oC", "", "", ""],
        E: "Opera Mini",
        F: {
          oC: 1426464000
        }
      },
      I: {
        A: {
          tB: 0,
          I: 0.019696,
          f: 0,
          pC: 0,
          qC: 0,
          rC: 0,
          sC: 0.0787838,
          BC: 0.0689359,
          tC: 0,
          uC: 0.305287
        },
        B: "webkit",
        C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "pC", "qC", "rC", "tB", "I", "sC", "BC", "tC", "uC", "f", "", "", ""],
        E: "Android Browser",
        F: {
          pC: 1256515200,
          qC: 1274313600,
          rC: 1291593600,
          tB: 1298332800,
          I: 1318896000,
          sC: 1341792000,
          BC: 1374624000,
          tC: 1386547200,
          uC: 1401667200,
          f: 1673568000
        }
      },
      J: {
        A: {
          D: 0,
          A: 0
        },
        B: "webkit",
        C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "D", "A", "", "", ""],
        E: "Blackberry Browser",
        F: {
          D: 1325376000,
          A: 1359504000
        }
      },
      K: {
        A: {
          A: 0,
          B: 0,
          C: 0,
          h: 0.0111391,
          qB: 0,
          AC: 0,
          rB: 0
        },
        B: "o",
        C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "A", "B", "qB", "AC", "C", "rB", "h", "", "", ""],
        E: "Opera Mobile",
        F: {
          A: 1287100800,
          B: 1300752000,
          qB: 1314835200,
          AC: 1318291200,
          C: 1330300800,
          rB: 1349740800,
          h: 1673827200
        },
        D: {
          h: "webkit"
        }
      },
      L: {
        A: {
          H: 42.629
        },
        B: "webkit",
        C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "H", "", "", ""],
        E: "Chrome for Android",
        F: {
          H: 1675728000
        }
      },
      M: {
        A: {
          H: 0.294672
        },
        B: "moz",
        C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "H", "", "", ""],
        E: "Firefox for Android",
        F: {
          H: 1676332800
        }
      },
      N: {
        A: {
          A: 0.0115934,
          B: 0.022664
        },
        B: "ms",
        C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "A", "B", "", "", ""],
        E: "IE Mobile",
        F: {
          A: 1340150400,
          B: 1353456000
        }
      },
      O: {
        A: {
          vC: 0.896294
        },
        B: "webkit",
        C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "vC", "", "", ""],
        E: "UC Browser for Android",
        F: {
          vC: 1634688000
        },
        D: {
          vC: "webkit"
        }
      },
      P: {
        A: {
          I: 0.166372,
          g: 0,
          wC: 0.0103543,
          xC: 0.010304,
          yC: 0.0519911,
          zC: 0.0103584,
          "0C": 0.0104443,
          "0B": 0.0105043,
          "1C": 0.0311947,
          "2C": 0.0103982,
          "3C": 0.0311947,
          "4C": 0.0311947,
          "5C": 0.0207965,
          sB: 0.0727876,
          "6C": 0.0727876,
          "7C": 0.0935841,
          "8C": 1.32057
        },
        B: "webkit",
        C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "I", "wC", "xC", "yC", "zC", "0C", "0B", "1C", "2C", "3C", "4C", "5C", "sB", "6C", "7C", "8C", "g", "", "", ""],
        E: "Samsung Internet",
        F: {
          I: 1461024000,
          wC: 1481846400,
          xC: 1509408000,
          yC: 1528329600,
          zC: 1546128000,
          "0C": 1554163200,
          "0B": 1567900800,
          "1C": 1582588800,
          "2C": 1593475200,
          "3C": 1605657600,
          "4C": 1618531200,
          "5C": 1629072000,
          sB: 1640736000,
          "6C": 1651708800,
          "7C": 1659657600,
          "8C": 1667260800,
          g: 1677369600
        }
      },
      Q: {
        A: {
          "1B": 0.12278
        },
        B: "webkit",
        C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "1B", "", "", ""],
        E: "QQ Browser",
        F: {
          "1B": 1663718400
        }
      },
      R: {
        A: {
          "9C": 0
        },
        B: "webkit",
        C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "9C", "", "", ""],
        E: "Baidu Browser",
        F: {
          "9C": 1663027200
        }
      },
      S: {
        A: {
          AD: 0.079807,
          BD: 0
        },
        B: "moz",
        C: ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "AD", "BD", "", "", ""],
        E: "KaiOS Browser",
        F: {
          AD: 1527811200,
          BD: 1631664000
        }
      }
    };
  
    var browsers = browsers$2.browsers;
    var versions$1 = browserVersions$1.browserVersions;
    var agentsData = agents$1;
    function unpackBrowserVersions(versionsData) {
      return Object.keys(versionsData).reduce(function (usage, version) {
        usage[versions$1[version]] = versionsData[version];
        return usage;
      }, {});
    }
    agents$2.agents = Object.keys(agentsData).reduce(function (map, key) {
      var versionsData = agentsData[key];
      map[browsers[key]] = Object.keys(versionsData).reduce(function (data, entry) {
        if (entry === 'A') {
          data.usage_global = unpackBrowserVersions(versionsData[entry]);
        } else if (entry === 'C') {
          data.versions = versionsData[entry].reduce(function (list, version) {
            if (version === '') {
              list.push(null);
            } else {
              list.push(versions$1[version]);
            }
            return list;
          }, []);
        } else if (entry === 'D') {
          data.prefix_exceptions = unpackBrowserVersions(versionsData[entry]);
        } else if (entry === 'E') {
          data.browser = versionsData[entry];
        } else if (entry === 'F') {
          data.release_date = Object.keys(versionsData[entry]).reduce(function (map2, key2) {
            map2[versions$1[key2]] = versionsData[entry][key2];
            return map2;
          }, {});
        } else {
          data.prefix = versionsData[entry];
        }
        return data;
      }, {});
      return map;
    }, {});
  
    var v4 = {
        start: "2015-09-08",
        lts: "2015-10-12",
        maintenance: "2017-04-01",
        end: "2018-04-30",
        codename: "Argon"
    };
    var v5 = {
        start: "2015-10-29",
        maintenance: "2016-04-30",
        end: "2016-06-30"
    };
    var v6 = {
        start: "2016-04-26",
        lts: "2016-10-18",
        maintenance: "2018-04-30",
        end: "2019-04-30",
        codename: "Boron"
    };
    var v7 = {
        start: "2016-10-25",
        maintenance: "2017-04-30",
        end: "2017-06-30"
    };
    var v8 = {
        start: "2017-05-30",
        lts: "2017-10-31",
        maintenance: "2019-01-01",
        end: "2019-12-31",
        codename: "Carbon"
    };
    var v9 = {
        start: "2017-10-01",
        maintenance: "2018-04-01",
        end: "2018-06-30"
    };
    var v10 = {
        start: "2018-04-24",
        lts: "2018-10-30",
        maintenance: "2020-05-19",
        end: "2021-04-30",
        codename: "Dubnium"
    };
    var v11 = {
        start: "2018-10-23",
        maintenance: "2019-04-22",
        end: "2019-06-01"
    };
    var v12 = {
        start: "2019-04-23",
        lts: "2019-10-21",
        maintenance: "2020-11-30",
        end: "2022-04-30",
        codename: "Erbium"
    };
    var v13 = {
        start: "2019-10-22",
        maintenance: "2020-04-01",
        end: "2020-06-01"
    };
    var v14 = {
        start: "2020-04-21",
        lts: "2020-10-27",
        maintenance: "2021-10-19",
        end: "2023-04-30",
        codename: "Fermium"
    };
    var v15 = {
        start: "2020-10-20",
        maintenance: "2021-04-01",
        end: "2021-06-01"
    };
    var v16 = {
        start: "2021-04-20",
        lts: "2021-10-26",
        maintenance: "2022-10-18",
        end: "2023-09-11",
        codename: "Gallium"
    };
    var v17 = {
        start: "2021-10-19",
        maintenance: "2022-04-01",
        end: "2022-06-01"
    };
    var v18 = {
        start: "2022-04-19",
        lts: "2022-10-25",
        maintenance: "2023-10-18",
        end: "2025-04-30",
        codename: "Hydrogen"
    };
    var v19 = {
        start: "2022-10-18",
        maintenance: "2023-04-01",
        end: "2023-06-01"
    };
    var v20 = {
        start: "2023-04-18",
        lts: "2023-10-24",
        maintenance: "2024-10-22",
        end: "2026-04-30",
        codename: ""
    };
    var require$$2$1 = {
        "v0.8": {
        start: "2012-06-25",
        end: "2014-07-31"
    },
        "v0.10": {
        start: "2013-03-11",
        end: "2016-10-31"
    },
        "v0.12": {
        start: "2015-02-06",
        end: "2016-12-31"
    },
        v4: v4,
        v5: v5,
        v6: v6,
        v7: v7,
        v8: v8,
        v9: v9,
        v10: v10,
        v11: v11,
        v12: v12,
        v13: v13,
        v14: v14,
        v15: v15,
        v16: v16,
        v17: v17,
        v18: v18,
        v19: v19,
        v20: v20
    };
  
    var _nodeResolve_empty = {};
  
    var _nodeResolve_empty$1 = /*#__PURE__*/Object.freeze({
      __proto__: null,
      'default': _nodeResolve_empty
    });
  
    var require$$0$8 = /*@__PURE__*/getAugmentedNamespace(_nodeResolve_empty$1);
  
    var versions = {
      "0.20": "39",
      "0.21": "41",
      "0.22": "41",
      "0.23": "41",
      "0.24": "41",
      "0.25": "42",
      "0.26": "42",
      "0.27": "43",
      "0.28": "43",
      "0.29": "43",
      "0.30": "44",
      "0.31": "45",
      "0.32": "45",
      "0.33": "45",
      "0.34": "45",
      "0.35": "45",
      "0.36": "47",
      "0.37": "49",
      "1.0": "49",
      "1.1": "50",
      "1.2": "51",
      "1.3": "52",
      "1.4": "53",
      "1.5": "54",
      "1.6": "56",
      "1.7": "58",
      "1.8": "59",
      "2.0": "61",
      "2.1": "61",
      "3.0": "66",
      "3.1": "66",
      "4.0": "69",
      "4.1": "69",
      "4.2": "69",
      "5.0": "73",
      "6.0": "76",
      "6.1": "76",
      "7.0": "78",
      "7.1": "78",
      "7.2": "78",
      "7.3": "78",
      "8.0": "80",
      "8.1": "80",
      "8.2": "80",
      "8.3": "80",
      "8.4": "80",
      "8.5": "80",
      "9.0": "83",
      "9.1": "83",
      "9.2": "83",
      "9.3": "83",
      "9.4": "83",
      "10.0": "85",
      "10.1": "85",
      "10.2": "85",
      "10.3": "85",
      "10.4": "85",
      "11.0": "87",
      "11.1": "87",
      "11.2": "87",
      "11.3": "87",
      "11.4": "87",
      "11.5": "87",
      "12.0": "89",
      "12.1": "89",
      "12.2": "89",
      "13.0": "91",
      "13.1": "91",
      "13.2": "91",
      "13.3": "91",
      "13.4": "91",
      "13.5": "91",
      "13.6": "91",
      "14.0": "93",
      "14.1": "93",
      "14.2": "93",
      "15.0": "94",
      "15.1": "94",
      "15.2": "94",
      "15.3": "94",
      "15.4": "94",
      "15.5": "94",
      "16.0": "96",
      "16.1": "96",
      "16.2": "96",
      "17.0": "98",
      "17.1": "98",
      "17.2": "98",
      "17.3": "98",
      "17.4": "98",
      "18.0": "100",
      "18.1": "100",
      "18.2": "100",
      "18.3": "100",
      "19.0": "102",
      "19.1": "102",
      "20.0": "104",
      "20.1": "104",
      "20.2": "104",
      "20.3": "104",
      "21.0": "106",
      "21.1": "106",
      "21.2": "106",
      "21.3": "106",
      "21.4": "106",
      "22.0": "108",
      "22.1": "108",
      "22.2": "108",
      "22.3": "108",
      "23.0": "110",
      "23.1": "110",
      "24.0": "111"
    };
  
    function BrowserslistError$2(message) {
      this.name = 'BrowserslistError';
      this.message = message;
      this.browserslist = true;
      if (Error.captureStackTrace) {
        Error.captureStackTrace(this, BrowserslistError$2);
      }
    }
    BrowserslistError$2.prototype = Error.prototype;
    var error = BrowserslistError$2;
  
    var AND_REGEXP = /^\s+and\s+(.*)/i;
    var OR_REGEXP = /^(?:,\s*|\s+or\s+)(.*)/i;
    function flatten(array) {
      if (!Array.isArray(array)) return [array];
      return array.reduce(function (a, b) {
        return a.concat(flatten(b));
      }, []);
    }
    function find(string, predicate) {
      for (var n = 1, max = string.length; n <= max; n++) {
        var parsed = string.substr(-n, n);
        if (predicate(parsed, n, max)) {
          return string.slice(0, -n);
        }
      }
      return '';
    }
    function matchQuery(all, query) {
      var node = {
        query: query
      };
      if (query.indexOf('not ') === 0) {
        node.not = true;
        query = query.slice(4);
      }
      for (var name in all) {
        var type = all[name];
        var match = query.match(type.regexp);
        if (match) {
          node.type = name;
          for (var i = 0; i < type.matches.length; i++) {
            node[type.matches[i]] = match[i + 1];
          }
          return node;
        }
      }
      node.type = 'unknown';
      return node;
    }
    function matchBlock(all, string, qs) {
      var node;
      return find(string, function (parsed, n, max) {
        if (AND_REGEXP.test(parsed)) {
          node = matchQuery(all, parsed.match(AND_REGEXP)[1]);
          node.compose = 'and';
          qs.unshift(node);
          return true;
        } else if (OR_REGEXP.test(parsed)) {
          node = matchQuery(all, parsed.match(OR_REGEXP)[1]);
          node.compose = 'or';
          qs.unshift(node);
          return true;
        } else if (n === max) {
          node = matchQuery(all, parsed.trim());
          node.compose = 'or';
          qs.unshift(node);
          return true;
        }
        return false;
      });
    }
    var parse$3 = function parse(all, queries) {
      if (!Array.isArray(queries)) queries = [queries];
      return flatten(queries.map(function (block) {
        var qs = [];
        do {
          block = matchBlock(all, block, qs);
        } while (block);
        return qs;
      }));
    };
  
    var BrowserslistError$1 = error;
    function noop() {}
    var browser = {
      loadQueries: function loadQueries() {
        throw new BrowserslistError$1('Sharable configs are not supported in client-side build of Browserslist');
      },
      getStat: function getStat(opts) {
        return opts.stats;
      },
      loadConfig: function loadConfig(opts) {
        if (opts.config) {
          throw new BrowserslistError$1('Browserslist config are not supported in client-side build');
        }
      },
      loadCountry: function loadCountry() {
        throw new BrowserslistError$1('Country statistics are not supported ' + 'in client-side build of Browserslist');
      },
      loadFeature: function loadFeature() {
        throw new BrowserslistError$1('Supports queries are not available in client-side build of Browserslist');
      },
      currentNode: function currentNode(resolve, context) {
        return resolve(['maintained node versions'], context)[0];
      },
      parseConfig: noop,
      readConfig: noop,
      findConfig: noop,
      clearCaches: noop,
      oldDataWarning: noop,
      env: {}
    };
  
    var jsReleases = require$$0$9;
    var agents = agents$2.agents;
    var jsEOL = require$$2$1;
    var path = require$$0$8;
    var e2c = versions;
    var BrowserslistError = error;
    var parse$2 = parse$3;
    var env = browser;
    var YEAR = 365.259641 * 24 * 60 * 60 * 1000;
    var ANDROID_EVERGREEN_FIRST = 37;
    function isVersionsMatch(versionA, versionB) {
      return (versionA + '.').indexOf(versionB + '.') === 0;
    }
    function isEolReleased(name) {
      var version = name.slice(1);
      return browserslist.nodeVersions.some(function (i) {
        return isVersionsMatch(i, version);
      });
    }
    function normalize$1(versions) {
      return versions.filter(function (version) {
        return typeof version === 'string';
      });
    }
    function normalizeElectron(version) {
      var versionToUse = version;
      if (version.split('.').length === 3) {
        versionToUse = version.split('.').slice(0, -1).join('.');
      }
      return versionToUse;
    }
    function nameMapper(name) {
      return function mapName(version) {
        return name + ' ' + version;
      };
    }
    function getMajor(version) {
      return parseInt(version.split('.')[0]);
    }
    function getMajorVersions(released, number) {
      if (released.length === 0) return [];
      var majorVersions = uniq(released.map(getMajor));
      var minimum = majorVersions[majorVersions.length - number];
      if (!minimum) {
        return released;
      }
      var selected = [];
      for (var i = released.length - 1; i >= 0; i--) {
        if (minimum > getMajor(released[i])) break;
        selected.unshift(released[i]);
      }
      return selected;
    }
    function uniq(array) {
      var filtered = [];
      for (var i = 0; i < array.length; i++) {
        if (filtered.indexOf(array[i]) === -1) filtered.push(array[i]);
      }
      return filtered;
    }
    function fillUsage(result, name, data) {
      for (var i in data) {
        result[name + ' ' + i] = data[i];
      }
    }
    function generateFilter(sign, version) {
      version = parseFloat(version);
      if (sign === '>') {
        return function (v) {
          return parseFloat(v) > version;
        };
      } else if (sign === '>=') {
        return function (v) {
          return parseFloat(v) >= version;
        };
      } else if (sign === '<') {
        return function (v) {
          return parseFloat(v) < version;
        };
      } else {
        return function (v) {
          return parseFloat(v) <= version;
        };
      }
    }
    function generateSemverFilter(sign, version) {
      version = version.split('.').map(parseSimpleInt);
      version[1] = version[1] || 0;
      version[2] = version[2] || 0;
      if (sign === '>') {
        return function (v) {
          v = v.split('.').map(parseSimpleInt);
          return compareSemver(v, version) > 0;
        };
      } else if (sign === '>=') {
        return function (v) {
          v = v.split('.').map(parseSimpleInt);
          return compareSemver(v, version) >= 0;
        };
      } else if (sign === '<') {
        return function (v) {
          v = v.split('.').map(parseSimpleInt);
          return compareSemver(version, v) > 0;
        };
      } else {
        return function (v) {
          v = v.split('.').map(parseSimpleInt);
          return compareSemver(version, v) >= 0;
        };
      }
    }
    function parseSimpleInt(x) {
      return parseInt(x);
    }
    function compare$2(a, b) {
      if (a < b) return -1;
      if (a > b) return +1;
      return 0;
    }
    function compareSemver(a, b) {
      return compare$2(parseInt(a[0]), parseInt(b[0])) || compare$2(parseInt(a[1] || '0'), parseInt(b[1] || '0')) || compare$2(parseInt(a[2] || '0'), parseInt(b[2] || '0'));
    }
    function semverFilterLoose(operator, range) {
      range = range.split('.').map(parseSimpleInt);
      if (typeof range[1] === 'undefined') {
        range[1] = 'x';
      }
      switch (operator) {
        case '<=':
          return function (version) {
            version = version.split('.').map(parseSimpleInt);
            return compareSemverLoose(version, range) <= 0;
          };
        case '>=':
        default:
          return function (version) {
            version = version.split('.').map(parseSimpleInt);
            return compareSemverLoose(version, range) >= 0;
          };
      }
    }
    function compareSemverLoose(version, range) {
      if (version[0] !== range[0]) {
        return version[0] < range[0] ? -1 : +1;
      }
      if (range[1] === 'x') {
        return 0;
      }
      if (version[1] !== range[1]) {
        return version[1] < range[1] ? -1 : +1;
      }
      return 0;
    }
    function resolveVersion(data, version) {
      if (data.versions.indexOf(version) !== -1) {
        return version;
      } else if (browserslist.versionAliases[data.name][version]) {
        return browserslist.versionAliases[data.name][version];
      } else {
        return false;
      }
    }
    function normalizeVersion(data, version) {
      var resolved = resolveVersion(data, version);
      if (resolved) {
        return resolved;
      } else if (data.versions.length === 1) {
        return data.versions[0];
      } else {
        return false;
      }
    }
    function filterByYear(since, context) {
      since = since / 1000;
      return Object.keys(agents).reduce(function (selected, name) {
        var data = byName(name, context);
        if (!data) return selected;
        var versions = Object.keys(data.releaseDate).filter(function (v) {
          var date = data.releaseDate[v];
          return date !== null && date >= since;
        });
        return selected.concat(versions.map(nameMapper(data.name)));
      }, []);
    }
    function cloneData(data) {
      return {
        name: data.name,
        versions: data.versions,
        released: data.released,
        releaseDate: data.releaseDate
      };
    }
    function mapVersions(data, map) {
      data.versions = data.versions.map(function (i) {
        return map[i] || i;
      });
      data.released = data.released.map(function (i) {
        return map[i] || i;
      });
      var fixedDate = {};
      for (var i in data.releaseDate) {
        fixedDate[map[i] || i] = data.releaseDate[i];
      }
      data.releaseDate = fixedDate;
      return data;
    }
    function byName(name, context) {
      name = name.toLowerCase();
      name = browserslist.aliases[name] || name;
      if (context.mobileToDesktop && browserslist.desktopNames[name]) {
        var desktop = browserslist.data[browserslist.desktopNames[name]];
        if (name === 'android') {
          return normalizeAndroidData(cloneData(browserslist.data[name]), desktop);
        } else {
          var cloned = cloneData(desktop);
          cloned.name = name;
          if (name === 'op_mob') {
            cloned = mapVersions(cloned, {
              '10.0-10.1': '10'
            });
          }
          return cloned;
        }
      }
      return browserslist.data[name];
    }
    function normalizeAndroidVersions(androidVersions, chromeVersions) {
      var firstEvergreen = ANDROID_EVERGREEN_FIRST;
      var last = chromeVersions[chromeVersions.length - 1];
      return androidVersions.filter(function (version) {
        return /^(?:[2-4]\.|[34]$)/.test(version);
      }).concat(chromeVersions.slice(firstEvergreen - last - 1));
    }
    function normalizeAndroidData(android, chrome) {
      android.released = normalizeAndroidVersions(android.released, chrome.released);
      android.versions = normalizeAndroidVersions(android.versions, chrome.versions);
      return android;
    }
    function checkName(name, context) {
      var data = byName(name, context);
      if (!data) throw new BrowserslistError('Unknown browser ' + name);
      return data;
    }
    function unknownQuery(query) {
      return new BrowserslistError('Unknown browser query `' + query + '`. ' + 'Maybe you are using old Browserslist or made typo in query.');
    }
    function filterAndroid(list, versions, context) {
      if (context.mobileToDesktop) return list;
      var released = browserslist.data.android.released;
      var last = released[released.length - 1];
      var diff = last - ANDROID_EVERGREEN_FIRST - versions;
      if (diff > 0) {
        return list.slice(-1);
      } else {
        return list.slice(diff - 1);
      }
    }
    function resolve$2(queries, context) {
      return parse$2(QUERIES, queries).reduce(function (result, node, index) {
        if (node.not && index === 0) {
          throw new BrowserslistError('Write any browsers query (for instance, `defaults`) ' + 'before `' + node.query + '`');
        }
        var type = QUERIES[node.type];
        var array = type.select.call(browserslist, context, node).map(function (j) {
          var parts = j.split(' ');
          if (parts[1] === '0') {
            return parts[0] + ' ' + byName(parts[0], context).versions[0];
          } else {
            return j;
          }
        });
        if (node.compose === 'and') {
          if (node.not) {
            return result.filter(function (j) {
              return array.indexOf(j) === -1;
            });
          } else {
            return result.filter(function (j) {
              return array.indexOf(j) !== -1;
            });
          }
        } else {
          if (node.not) {
            var filter = {};
            array.forEach(function (j) {
              filter[j] = true;
            });
            return result.filter(function (j) {
              return !filter[j];
            });
          }
          return result.concat(array);
        }
      }, []);
    }
    function prepareOpts(opts) {
      if (typeof opts === 'undefined') opts = {};
      if (typeof opts.path === 'undefined') {
        opts.path = path.resolve ? path.resolve('.') : '.';
      }
      return opts;
    }
    function prepareQueries(queries, opts) {
      if (typeof queries === 'undefined' || queries === null) {
        var config = browserslist.loadConfig(opts);
        if (config) {
          queries = config;
        } else {
          queries = browserslist.defaults;
        }
      }
      return queries;
    }
    function checkQueries(queries) {
      if (!(typeof queries === 'string' || Array.isArray(queries))) {
        throw new BrowserslistError('Browser queries must be an array or string. Got ' + typeof queries + '.');
      }
    }
    var cache = {};
    function browserslist(queries, opts) {
      opts = prepareOpts(opts);
      queries = prepareQueries(queries, opts);
      checkQueries(queries);
      var context = {
        ignoreUnknownVersions: opts.ignoreUnknownVersions,
        dangerousExtend: opts.dangerousExtend,
        mobileToDesktop: opts.mobileToDesktop,
        path: opts.path,
        env: opts.env
      };
      env.oldDataWarning(browserslist.data);
      var stats = env.getStat(opts, browserslist.data);
      if (stats) {
        context.customUsage = {};
        for (var browser in stats) {
          fillUsage(context.customUsage, browser, stats[browser]);
        }
      }
      var cacheKey = JSON.stringify([queries, context]);
      if (cache[cacheKey]) return cache[cacheKey];
      var result = uniq(resolve$2(queries, context)).sort(function (name1, name2) {
        name1 = name1.split(' ');
        name2 = name2.split(' ');
        if (name1[0] === name2[0]) {
          var version1 = name1[1].split('-')[0];
          var version2 = name2[1].split('-')[0];
          return compareSemver(version2.split('.'), version1.split('.'));
        } else {
          return compare$2(name1[0], name2[0]);
        }
      });
      if (!env.env.BROWSERSLIST_DISABLE_CACHE) {
        cache[cacheKey] = result;
      }
      return result;
    }
    browserslist.parse = function (queries, opts) {
      opts = prepareOpts(opts);
      queries = prepareQueries(queries, opts);
      checkQueries(queries);
      return parse$2(QUERIES, queries);
    };
    browserslist.cache = {};
    browserslist.data = {};
    browserslist.usage = {
      global: {},
      custom: null
    };
    browserslist.defaults = ['> 0.5%', 'last 2 versions', 'Firefox ESR', 'not dead'];
    browserslist.aliases = {
      fx: 'firefox',
      ff: 'firefox',
      ios: 'ios_saf',
      explorer: 'ie',
      blackberry: 'bb',
      explorermobile: 'ie_mob',
      operamini: 'op_mini',
      operamobile: 'op_mob',
      chromeandroid: 'and_chr',
      firefoxandroid: 'and_ff',
      ucandroid: 'and_uc',
      qqandroid: 'and_qq'
    };
    browserslist.desktopNames = {
      and_chr: 'chrome',
      and_ff: 'firefox',
      ie_mob: 'ie',
      op_mob: 'opera',
      android: 'chrome'
    };
    browserslist.versionAliases = {};
    browserslist.clearCaches = env.clearCaches;
    browserslist.parseConfig = env.parseConfig;
    browserslist.readConfig = env.readConfig;
    browserslist.findConfig = env.findConfig;
    browserslist.loadConfig = env.loadConfig;
    browserslist.coverage = function (browsers, stats) {
      var data;
      if (typeof stats === 'undefined') {
        data = browserslist.usage.global;
      } else if (stats === 'my stats') {
        var opts = {};
        opts.path = path.resolve ? path.resolve('.') : '.';
        var customStats = env.getStat(opts);
        if (!customStats) {
          throw new BrowserslistError('Custom usage statistics was not provided');
        }
        data = {};
        for (var browser in customStats) {
          fillUsage(data, browser, customStats[browser]);
        }
      } else if (typeof stats === 'string') {
        if (stats.length > 2) {
          stats = stats.toLowerCase();
        } else {
          stats = stats.toUpperCase();
        }
        env.loadCountry(browserslist.usage, stats, browserslist.data);
        data = browserslist.usage[stats];
      } else {
        if ('dataByBrowser' in stats) {
          stats = stats.dataByBrowser;
        }
        data = {};
        for (var name in stats) {
          for (var version in stats[name]) {
            data[name + ' ' + version] = stats[name][version];
          }
        }
      }
      return browsers.reduce(function (all, i) {
        var usage = data[i];
        if (usage === undefined) {
          usage = data[i.replace(/ \S+$/, ' 0')];
        }
        return all + (usage || 0);
      }, 0);
    };
    function nodeQuery(context, node) {
      var matched = browserslist.nodeVersions.filter(function (i) {
        return isVersionsMatch(i, node.version);
      });
      if (matched.length === 0) {
        if (context.ignoreUnknownVersions) {
          return [];
        } else {
          throw new BrowserslistError('Unknown version ' + node.version + ' of Node.js');
        }
      }
      return ['node ' + matched[matched.length - 1]];
    }
    function sinceQuery(context, node) {
      var year = parseInt(node.year);
      var month = parseInt(node.month || '01') - 1;
      var day = parseInt(node.day || '01');
      return filterByYear(Date.UTC(year, month, day, 0, 0, 0), context);
    }
    function coverQuery(context, node) {
      var coverage = parseFloat(node.coverage);
      var usage = browserslist.usage.global;
      if (node.place) {
        if (node.place.match(/^my\s+stats$/i)) {
          if (!context.customUsage) {
            throw new BrowserslistError('Custom usage statistics was not provided');
          }
          usage = context.customUsage;
        } else {
          var place;
          if (node.place.length === 2) {
            place = node.place.toUpperCase();
          } else {
            place = node.place.toLowerCase();
          }
          env.loadCountry(browserslist.usage, place, browserslist.data);
          usage = browserslist.usage[place];
        }
      }
      var versions = Object.keys(usage).sort(function (a, b) {
        return usage[b] - usage[a];
      });
      var coveraged = 0;
      var result = [];
      var version;
      for (var i = 0; i < versions.length; i++) {
        version = versions[i];
        if (usage[version] === 0) break;
        coveraged += usage[version];
        result.push(version);
        if (coveraged >= coverage) break;
      }
      return result;
    }
    var QUERIES = {
      last_major_versions: {
        matches: ['versions'],
        regexp: /^last\s+(\d+)\s+major\s+versions?$/i,
        select: function select(context, node) {
          return Object.keys(agents).reduce(function (selected, name) {
            var data = byName(name, context);
            if (!data) return selected;
            var list = getMajorVersions(data.released, node.versions);
            list = list.map(nameMapper(data.name));
            if (data.name === 'android') {
              list = filterAndroid(list, node.versions, context);
            }
            return selected.concat(list);
          }, []);
        }
      },
      last_versions: {
        matches: ['versions'],
        regexp: /^last\s+(\d+)\s+versions?$/i,
        select: function select(context, node) {
          return Object.keys(agents).reduce(function (selected, name) {
            var data = byName(name, context);
            if (!data) return selected;
            var list = data.released.slice(-node.versions);
            list = list.map(nameMapper(data.name));
            if (data.name === 'android') {
              list = filterAndroid(list, node.versions, context);
            }
            return selected.concat(list);
          }, []);
        }
      },
      last_electron_major_versions: {
        matches: ['versions'],
        regexp: /^last\s+(\d+)\s+electron\s+major\s+versions?$/i,
        select: function select(context, node) {
          var validVersions = getMajorVersions(Object.keys(e2c), node.versions);
          return validVersions.map(function (i) {
            return 'chrome ' + e2c[i];
          });
        }
      },
      last_node_major_versions: {
        matches: ['versions'],
        regexp: /^last\s+(\d+)\s+node\s+major\s+versions?$/i,
        select: function select(context, node) {
          return getMajorVersions(browserslist.nodeVersions, node.versions).map(function (version) {
            return 'node ' + version;
          });
        }
      },
      last_browser_major_versions: {
        matches: ['versions', 'browser'],
        regexp: /^last\s+(\d+)\s+(\w+)\s+major\s+versions?$/i,
        select: function select(context, node) {
          var data = checkName(node.browser, context);
          var validVersions = getMajorVersions(data.released, node.versions);
          var list = validVersions.map(nameMapper(data.name));
          if (data.name === 'android') {
            list = filterAndroid(list, node.versions, context);
          }
          return list;
        }
      },
      last_electron_versions: {
        matches: ['versions'],
        regexp: /^last\s+(\d+)\s+electron\s+versions?$/i,
        select: function select(context, node) {
          return Object.keys(e2c).slice(-node.versions).map(function (i) {
            return 'chrome ' + e2c[i];
          });
        }
      },
      last_node_versions: {
        matches: ['versions'],
        regexp: /^last\s+(\d+)\s+node\s+versions?$/i,
        select: function select(context, node) {
          return browserslist.nodeVersions.slice(-node.versions).map(function (version) {
            return 'node ' + version;
          });
        }
      },
      last_browser_versions: {
        matches: ['versions', 'browser'],
        regexp: /^last\s+(\d+)\s+(\w+)\s+versions?$/i,
        select: function select(context, node) {
          var data = checkName(node.browser, context);
          var list = data.released.slice(-node.versions).map(nameMapper(data.name));
          if (data.name === 'android') {
            list = filterAndroid(list, node.versions, context);
          }
          return list;
        }
      },
      unreleased_versions: {
        matches: [],
        regexp: /^unreleased\s+versions$/i,
        select: function select(context) {
          return Object.keys(agents).reduce(function (selected, name) {
            var data = byName(name, context);
            if (!data) return selected;
            var list = data.versions.filter(function (v) {
              return data.released.indexOf(v) === -1;
            });
            list = list.map(nameMapper(data.name));
            return selected.concat(list);
          }, []);
        }
      },
      unreleased_electron_versions: {
        matches: [],
        regexp: /^unreleased\s+electron\s+versions?$/i,
        select: function select() {
          return [];
        }
      },
      unreleased_browser_versions: {
        matches: ['browser'],
        regexp: /^unreleased\s+(\w+)\s+versions?$/i,
        select: function select(context, node) {
          var data = checkName(node.browser, context);
          return data.versions.filter(function (v) {
            return data.released.indexOf(v) === -1;
          }).map(nameMapper(data.name));
        }
      },
      last_years: {
        matches: ['years'],
        regexp: /^last\s+(\d*.?\d+)\s+years?$/i,
        select: function select(context, node) {
          return filterByYear(Date.now() - YEAR * node.years, context);
        }
      },
      since_y: {
        matches: ['year'],
        regexp: /^since (\d+)$/i,
        select: sinceQuery
      },
      since_y_m: {
        matches: ['year', 'month'],
        regexp: /^since (\d+)-(\d+)$/i,
        select: sinceQuery
      },
      since_y_m_d: {
        matches: ['year', 'month', 'day'],
        regexp: /^since (\d+)-(\d+)-(\d+)$/i,
        select: sinceQuery
      },
      popularity: {
        matches: ['sign', 'popularity'],
        regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%$/,
        select: function select(context, node) {
          var popularity = parseFloat(node.popularity);
          var usage = browserslist.usage.global;
          return Object.keys(usage).reduce(function (result, version) {
            if (node.sign === '>') {
              if (usage[version] > popularity) {
                result.push(version);
              }
            } else if (node.sign === '<') {
              if (usage[version] < popularity) {
                result.push(version);
              }
            } else if (node.sign === '<=') {
              if (usage[version] <= popularity) {
                result.push(version);
              }
            } else if (usage[version] >= popularity) {
              result.push(version);
            }
            return result;
          }, []);
        }
      },
      popularity_in_my_stats: {
        matches: ['sign', 'popularity'],
        regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+my\s+stats$/,
        select: function select(context, node) {
          var popularity = parseFloat(node.popularity);
          if (!context.customUsage) {
            throw new BrowserslistError('Custom usage statistics was not provided');
          }
          var usage = context.customUsage;
          return Object.keys(usage).reduce(function (result, version) {
            var percentage = usage[version];
            if (percentage == null) {
              return result;
            }
            if (node.sign === '>') {
              if (percentage > popularity) {
                result.push(version);
              }
            } else if (node.sign === '<') {
              if (percentage < popularity) {
                result.push(version);
              }
            } else if (node.sign === '<=') {
              if (percentage <= popularity) {
                result.push(version);
              }
            } else if (percentage >= popularity) {
              result.push(version);
            }
            return result;
          }, []);
        }
      },
      popularity_in_config_stats: {
        matches: ['sign', 'popularity', 'config'],
        regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+(\S+)\s+stats$/,
        select: function select(context, node) {
          var popularity = parseFloat(node.popularity);
          var stats = env.loadStat(context, node.config, browserslist.data);
          if (stats) {
            context.customUsage = {};
            for (var browser in stats) {
              fillUsage(context.customUsage, browser, stats[browser]);
            }
          }
          if (!context.customUsage) {
            throw new BrowserslistError('Custom usage statistics was not provided');
          }
          var usage = context.customUsage;
          return Object.keys(usage).reduce(function (result, version) {
            var percentage = usage[version];
            if (percentage == null) {
              return result;
            }
            if (node.sign === '>') {
              if (percentage > popularity) {
                result.push(version);
              }
            } else if (node.sign === '<') {
              if (percentage < popularity) {
                result.push(version);
              }
            } else if (node.sign === '<=') {
              if (percentage <= popularity) {
                result.push(version);
              }
            } else if (percentage >= popularity) {
              result.push(version);
            }
            return result;
          }, []);
        }
      },
      popularity_in_place: {
        matches: ['sign', 'popularity', 'place'],
        regexp: /^(>=?|<=?)\s*(\d+|\d+\.\d+|\.\d+)%\s+in\s+((alt-)?\w\w)$/,
        select: function select(context, node) {
          var popularity = parseFloat(node.popularity);
          var place = node.place;
          if (place.length === 2) {
            place = place.toUpperCase();
          } else {
            place = place.toLowerCase();
          }
          env.loadCountry(browserslist.usage, place, browserslist.data);
          var usage = browserslist.usage[place];
          return Object.keys(usage).reduce(function (result, version) {
            var percentage = usage[version];
            if (percentage == null) {
              return result;
            }
            if (node.sign === '>') {
              if (percentage > popularity) {
                result.push(version);
              }
            } else if (node.sign === '<') {
              if (percentage < popularity) {
                result.push(version);
              }
            } else if (node.sign === '<=') {
              if (percentage <= popularity) {
                result.push(version);
              }
            } else if (percentage >= popularity) {
              result.push(version);
            }
            return result;
          }, []);
        }
      },
      cover: {
        matches: ['coverage'],
        regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%$/i,
        select: coverQuery
      },
      cover_in: {
        matches: ['coverage', 'place'],
        regexp: /^cover\s+(\d+|\d+\.\d+|\.\d+)%\s+in\s+(my\s+stats|(alt-)?\w\w)$/i,
        select: coverQuery
      },
      supports: {
        matches: ['feature'],
        regexp: /^supports\s+([\w-]+)$/,
        select: function select(context, node) {
          env.loadFeature(browserslist.cache, node.feature);
          var features = browserslist.cache[node.feature];
          return Object.keys(features).reduce(function (result, version) {
            var flags = features[version];
            if (flags.indexOf('y') >= 0 || flags.indexOf('a') >= 0) {
              result.push(version);
            }
            return result;
          }, []);
        }
      },
      electron_range: {
        matches: ['from', 'to'],
        regexp: /^electron\s+([\d.]+)\s*-\s*([\d.]+)$/i,
        select: function select(context, node) {
          var fromToUse = normalizeElectron(node.from);
          var toToUse = normalizeElectron(node.to);
          var from = parseFloat(node.from);
          var to = parseFloat(node.to);
          if (!e2c[fromToUse]) {
            throw new BrowserslistError('Unknown version ' + from + ' of electron');
          }
          if (!e2c[toToUse]) {
            throw new BrowserslistError('Unknown version ' + to + ' of electron');
          }
          return Object.keys(e2c).filter(function (i) {
            var parsed = parseFloat(i);
            return parsed >= from && parsed <= to;
          }).map(function (i) {
            return 'chrome ' + e2c[i];
          });
        }
      },
      node_range: {
        matches: ['from', 'to'],
        regexp: /^node\s+([\d.]+)\s*-\s*([\d.]+)$/i,
        select: function select(context, node) {
          return browserslist.nodeVersions.filter(semverFilterLoose('>=', node.from)).filter(semverFilterLoose('<=', node.to)).map(function (v) {
            return 'node ' + v;
          });
        }
      },
      browser_range: {
        matches: ['browser', 'from', 'to'],
        regexp: /^(\w+)\s+([\d.]+)\s*-\s*([\d.]+)$/i,
        select: function select(context, node) {
          var data = checkName(node.browser, context);
          var from = parseFloat(normalizeVersion(data, node.from) || node.from);
          var to = parseFloat(normalizeVersion(data, node.to) || node.to);
          function filter(v) {
            var parsed = parseFloat(v);
            return parsed >= from && parsed <= to;
          }
          return data.released.filter(filter).map(nameMapper(data.name));
        }
      },
      electron_ray: {
        matches: ['sign', 'version'],
        regexp: /^electron\s*(>=?|<=?)\s*([\d.]+)$/i,
        select: function select(context, node) {
          var versionToUse = normalizeElectron(node.version);
          return Object.keys(e2c).filter(generateFilter(node.sign, versionToUse)).map(function (i) {
            return 'chrome ' + e2c[i];
          });
        }
      },
      node_ray: {
        matches: ['sign', 'version'],
        regexp: /^node\s*(>=?|<=?)\s*([\d.]+)$/i,
        select: function select(context, node) {
          return browserslist.nodeVersions.filter(generateSemverFilter(node.sign, node.version)).map(function (v) {
            return 'node ' + v;
          });
        }
      },
      browser_ray: {
        matches: ['browser', 'sign', 'version'],
        regexp: /^(\w+)\s*(>=?|<=?)\s*([\d.]+)$/,
        select: function select(context, node) {
          var version = node.version;
          var data = checkName(node.browser, context);
          var alias = browserslist.versionAliases[data.name][version];
          if (alias) version = alias;
          return data.released.filter(generateFilter(node.sign, version)).map(function (v) {
            return data.name + ' ' + v;
          });
        }
      },
      firefox_esr: {
        matches: [],
        regexp: /^(firefox|ff|fx)\s+esr$/i,
        select: function select() {
          return ['firefox 102'];
        }
      },
      opera_mini_all: {
        matches: [],
        regexp: /(operamini|op_mini)\s+all/i,
        select: function select() {
          return ['op_mini all'];
        }
      },
      electron_version: {
        matches: ['version'],
        regexp: /^electron\s+([\d.]+)$/i,
        select: function select(context, node) {
          var versionToUse = normalizeElectron(node.version);
          var chrome = e2c[versionToUse];
          if (!chrome) {
            throw new BrowserslistError('Unknown version ' + node.version + ' of electron');
          }
          return ['chrome ' + chrome];
        }
      },
      node_major_version: {
        matches: ['version'],
        regexp: /^node\s+(\d+)$/i,
        select: nodeQuery
      },
      node_minor_version: {
        matches: ['version'],
        regexp: /^node\s+(\d+\.\d+)$/i,
        select: nodeQuery
      },
      node_patch_version: {
        matches: ['version'],
        regexp: /^node\s+(\d+\.\d+\.\d+)$/i,
        select: nodeQuery
      },
      current_node: {
        matches: [],
        regexp: /^current\s+node$/i,
        select: function select(context) {
          return [env.currentNode(resolve$2, context)];
        }
      },
      maintained_node: {
        matches: [],
        regexp: /^maintained\s+node\s+versions$/i,
        select: function select(context) {
          var now = Date.now();
          var queries = Object.keys(jsEOL).filter(function (key) {
            return now < Date.parse(jsEOL[key].end) && now > Date.parse(jsEOL[key].start) && isEolReleased(key);
          }).map(function (key) {
            return 'node ' + key.slice(1);
          });
          return resolve$2(queries, context);
        }
      },
      phantomjs_1_9: {
        matches: [],
        regexp: /^phantomjs\s+1.9$/i,
        select: function select() {
          return ['safari 5'];
        }
      },
      phantomjs_2_1: {
        matches: [],
        regexp: /^phantomjs\s+2.1$/i,
        select: function select() {
          return ['safari 6'];
        }
      },
      browser_version: {
        matches: ['browser', 'version'],
        regexp: /^(\w+)\s+(tp|[\d.]+)$/i,
        select: function select(context, node) {
          var version = node.version;
          if (/^tp$/i.test(version)) version = 'TP';
          var data = checkName(node.browser, context);
          var alias = normalizeVersion(data, version);
          if (alias) {
            version = alias;
          } else {
            if (version.indexOf('.') === -1) {
              alias = version + '.0';
            } else {
              alias = version.replace(/\.0$/, '');
            }
            alias = normalizeVersion(data, alias);
            if (alias) {
              version = alias;
            } else if (context.ignoreUnknownVersions) {
              return [];
            } else {
              throw new BrowserslistError('Unknown version ' + version + ' of ' + node.browser);
            }
          }
          return [data.name + ' ' + version];
        }
      },
      browserslist_config: {
        matches: [],
        regexp: /^browserslist config$/i,
        select: function select(context) {
          return browserslist(undefined, context);
        }
      },
      "extends": {
        matches: ['config'],
        regexp: /^extends (.+)$/i,
        select: function select(context, node) {
          return resolve$2(env.loadQueries(context, node.config), context);
        }
      },
      defaults: {
        matches: [],
        regexp: /^defaults$/i,
        select: function select(context) {
          return resolve$2(browserslist.defaults, context);
        }
      },
      dead: {
        matches: [],
        regexp: /^dead$/i,
        select: function select(context) {
          var dead = ['Baidu >= 0', 'ie <= 11', 'ie_mob <= 11', 'bb <= 10', 'op_mob <= 12.1', 'samsung 4'];
          return resolve$2(dead, context);
        }
      },
      unknown: {
        matches: [],
        regexp: /^(\w+)$/i,
        select: function select(context, node) {
          if (byName(node.query, context)) {
            throw new BrowserslistError('Specify versions in Browserslist query for browser ' + node.query);
          } else {
            throw unknownQuery(node.query);
          }
        }
      }
    };
    (function () {
      for (var name in agents) {
        var browser = agents[name];
        browserslist.data[name] = {
          name: name,
          versions: normalize$1(agents[name].versions),
          released: normalize$1(agents[name].versions.slice(0, -3)),
          releaseDate: agents[name].release_date
        };
        fillUsage(browserslist.usage.global, name, browser.usage_global);
        browserslist.versionAliases[name] = {};
        for (var i = 0; i < browser.versions.length; i++) {
          var full = browser.versions[i];
          if (!full) continue;
          if (full.indexOf('-') !== -1) {
            var interval = full.split('-');
            for (var j = 0; j < interval.length; j++) {
              browserslist.versionAliases[name][interval[j]] = full;
            }
          }
        }
      }
      browserslist.versionAliases.op_mob['59'] = '58';
      browserslist.nodeVersions = jsReleases.map(function (release) {
        return release.version;
      });
    })();
    var browserslist_1 = browserslist;
  
    var min = Math.min;
    function levenshtein(a, b) {
      var t = [],
        u = [],
        i,
        j;
      var m = a.length,
        n = b.length;
      if (!m) {
        return n;
      }
      if (!n) {
        return m;
      }
      for (j = 0; j <= n; j++) {
        t[j] = j;
      }
      for (i = 1; i <= m; i++) {
        for (u = [i], j = 1; j <= n; j++) {
          u[j] = a[i - 1] === b[j - 1] ? t[j - 1] : min(t[j - 1], t[j], u[j - 1]) + 1;
        }
        t = u;
      }
      return u[n];
    }
    function findSuggestion(str, arr) {
      var distances = arr.map(function (el) {
        return levenshtein(el, str);
      });
      return arr[distances.indexOf(min.apply(void 0, _toConsumableArray(distances)))];
    }
  
    var OptionValidator = function () {
      function OptionValidator(descriptor) {
        this.descriptor = descriptor;
      }
      var _proto = OptionValidator.prototype;
      _proto.validateTopLevelOptions = function validateTopLevelOptions(options, TopLevelOptionShape) {
        var validOptionNames = Object.keys(TopLevelOptionShape);
        for (var _i = 0, _Object$keys = Object.keys(options); _i < _Object$keys.length; _i++) {
          var option = _Object$keys[_i];
          if (!validOptionNames.includes(option)) {
            throw new Error(this.formatMessage("'" + option + "' is not a valid top-level option.\n- Did you mean '" + findSuggestion(option, validOptionNames) + "'?"));
          }
        }
      };
      _proto.validateBooleanOption = function validateBooleanOption(name, value, defaultValue) {
        if (value === undefined) {
          return defaultValue;
        } else {
          this.invariant(typeof value === "boolean", "'" + name + "' option must be a boolean.");
        }
        return value;
      };
      _proto.validateStringOption = function validateStringOption(name, value, defaultValue) {
        if (value === undefined) {
          return defaultValue;
        } else {
          this.invariant(typeof value === "string", "'" + name + "' option must be a string.");
        }
        return value;
      };
      _proto.invariant = function invariant(condition, message) {
        if (!condition) {
          throw new Error(this.formatMessage(message));
        }
      };
      _proto.formatMessage = function formatMessage(message) {
        return this.descriptor + ": " + message;
      };
      return _createClass(OptionValidator);
    }();
  
    var require$$0$7 = {
        "es6.module": {
        chrome: "61",
        and_chr: "61",
        edge: "16",
        firefox: "60",
        and_ff: "60",
        node: "13.2.0",
        opera: "48",
        op_mob: "48",
        safari: "10.1",
        ios: "10.3",
        samsung: "8.2",
        android: "61",
        electron: "2.0",
        ios_saf: "10.3"
    }
    };
  
    var nativeModules = require$$0$7;
  
    var lruCacheBABEL_8_BREAKINGTrue;
    var hasRequiredLruCacheBABEL_8_BREAKINGTrue;
    function requireLruCacheBABEL_8_BREAKINGTrue() {
      if (hasRequiredLruCacheBABEL_8_BREAKINGTrue) return lruCacheBABEL_8_BREAKINGTrue;
      hasRequiredLruCacheBABEL_8_BREAKINGTrue = 1;
      var perf = typeof performance === 'object' && performance && typeof performance.now === 'function' ? performance : Date;
      var hasAbortController = typeof AbortController === 'function';
      var AC = hasAbortController ? AbortController : function () {
        function AbortController() {
          this.signal = new AS();
        }
        var _proto = AbortController.prototype;
        _proto.abort = function abort() {
          this.signal.dispatchEvent('abort');
        };
        return _createClass(AbortController);
      }();
      var hasAbortSignal = typeof AbortSignal === 'function';
      var hasACAbortSignal = typeof AC.AbortSignal === 'function';
      var AS = hasAbortSignal ? AbortSignal : hasACAbortSignal ? AC.AbortController : function () {
        function AbortSignal() {
          this.aborted = false;
          this._listeners = [];
        }
        var _proto2 = AbortSignal.prototype;
        _proto2.dispatchEvent = function dispatchEvent(type) {
          if (type === 'abort') {
            this.aborted = true;
            var e = {
              type: type,
              target: this
            };
            this.onabort(e);
            this._listeners.forEach(function (f) {
              return f(e);
            }, this);
          }
        };
        _proto2.onabort = function onabort() {};
        _proto2.addEventListener = function addEventListener(ev, fn) {
          if (ev === 'abort') {
            this._listeners.push(fn);
          }
        };
        _proto2.removeEventListener = function removeEventListener(ev, fn) {
          if (ev === 'abort') {
            this._listeners = this._listeners.filter(function (f) {
              return f !== fn;
            });
          }
        };
        return _createClass(AbortSignal);
      }();
      var warned = new Set();
      var deprecatedOption = function deprecatedOption(opt, instead) {
        var code = "LRU_CACHE_OPTION_" + opt;
        if (shouldWarn(code)) {
          warn(code, opt + " option", "options." + instead, LRUCache);
        }
      };
      var deprecatedMethod = function deprecatedMethod(method, instead) {
        var code = "LRU_CACHE_METHOD_" + method;
        if (shouldWarn(code)) {
          var prototype = LRUCache.prototype;
          var _Object$getOwnPropert = Object.getOwnPropertyDescriptor(prototype, method),
            get = _Object$getOwnPropert.get;
          warn(code, method + " method", "cache." + instead + "()", get);
        }
      };
      var deprecatedProperty = function deprecatedProperty(field, instead) {
        var code = "LRU_CACHE_PROPERTY_" + field;
        if (shouldWarn(code)) {
          var prototype = LRUCache.prototype;
          var _Object$getOwnPropert2 = Object.getOwnPropertyDescriptor(prototype, field),
            get = _Object$getOwnPropert2.get;
          warn(code, field + " property", "cache." + instead, get);
        }
      };
      var emitWarning = function emitWarning() {
        var _process, _console;
        typeof browser$1$1 === 'object' && browser$1$1 && typeof browser$1$1.emitWarning === 'function' ? (_process = browser$1$1).emitWarning.apply(_process, arguments) : (_console = console).error.apply(_console, arguments);
      };
      var shouldWarn = function shouldWarn(code) {
        return !warned.has(code);
      };
      var warn = function warn(code, what, instead, fn) {
        warned.add(code);
        var msg = "The " + what + " is deprecated. Please use " + instead + " instead.";
        emitWarning(msg, 'DeprecationWarning', code, fn);
      };
      var isPosInt = function isPosInt(n) {
        return n && n === Math.floor(n) && n > 0 && isFinite(n);
      };
      var getUintArray = function getUintArray(max) {
        return !isPosInt(max) ? null : max <= Math.pow(2, 8) ? Uint8Array : max <= Math.pow(2, 16) ? Uint16Array : max <= Math.pow(2, 32) ? Uint32Array : max <= Number.MAX_SAFE_INTEGER ? ZeroArray : null;
      };
      var ZeroArray = function (_Array) {
        _inherits(ZeroArray, _Array);
        function ZeroArray(size) {
          var _this;
          _this = _Array.call(this, size) || this;
          _this.fill(0);
          return _this;
        }
        return _createClass(ZeroArray);
      }(_wrapNativeSuper(Array));
      var Stack = function () {
        function Stack(max) {
          if (max === 0) {
            return [];
          }
          var UintArray = getUintArray(max);
          this.heap = new UintArray(max);
          this.length = 0;
        }
        var _proto3 = Stack.prototype;
        _proto3.push = function push(n) {
          this.heap[this.length++] = n;
        };
        _proto3.pop = function pop() {
          return this.heap[--this.length];
        };
        return _createClass(Stack);
      }();
      var LRUCache = function (_Symbol$iterator) {
        function LRUCache(options) {
          if (options === void 0) {
            options = {};
          }
          var _options = options,
            _options$max = _options.max,
            max = _options$max === void 0 ? 0 : _options$max,
            ttl = _options.ttl,
            _options$ttlResolutio = _options.ttlResolution,
            ttlResolution = _options$ttlResolutio === void 0 ? 1 : _options$ttlResolutio,
            ttlAutopurge = _options.ttlAutopurge,
            updateAgeOnGet = _options.updateAgeOnGet,
            updateAgeOnHas = _options.updateAgeOnHas,
            allowStale = _options.allowStale,
            dispose = _options.dispose,
            disposeAfter = _options.disposeAfter,
            noDisposeOnSet = _options.noDisposeOnSet,
            noUpdateTTL = _options.noUpdateTTL,
            _options$maxSize = _options.maxSize,
            maxSize = _options$maxSize === void 0 ? 0 : _options$maxSize,
            _options$maxEntrySize = _options.maxEntrySize,
            maxEntrySize = _options$maxEntrySize === void 0 ? 0 : _options$maxEntrySize,
            sizeCalculation = _options.sizeCalculation,
            fetchMethod = _options.fetchMethod,
            fetchContext = _options.fetchContext,
            noDeleteOnFetchRejection = _options.noDeleteOnFetchRejection,
            noDeleteOnStaleGet = _options.noDeleteOnStaleGet;
          var _ref = options instanceof LRUCache ? {} : options,
            length = _ref.length,
            maxAge = _ref.maxAge,
            stale = _ref.stale;
          if (max !== 0 && !isPosInt(max)) {
            throw new TypeError('max option must be a nonnegative integer');
          }
          var UintArray = max ? getUintArray(max) : Array;
          if (!UintArray) {
            throw new Error('invalid max value: ' + max);
          }
          this.max = max;
          this.maxSize = maxSize;
          this.maxEntrySize = maxEntrySize || this.maxSize;
          this.sizeCalculation = sizeCalculation || length;
          if (this.sizeCalculation) {
            if (!this.maxSize && !this.maxEntrySize) {
              throw new TypeError('cannot set sizeCalculation without setting maxSize or maxEntrySize');
            }
            if (typeof this.sizeCalculation !== 'function') {
              throw new TypeError('sizeCalculation set to non-function');
            }
          }
          this.fetchMethod = fetchMethod || null;
          if (this.fetchMethod && typeof this.fetchMethod !== 'function') {
            throw new TypeError('fetchMethod must be a function if specified');
          }
          this.fetchContext = fetchContext;
          if (!this.fetchMethod && fetchContext !== undefined) {
            throw new TypeError('cannot set fetchContext without fetchMethod');
          }
          this.keyMap = new Map();
          this.keyList = new Array(max).fill(null);
          this.valList = new Array(max).fill(null);
          this.next = new UintArray(max);
          this.prev = new UintArray(max);
          this.head = 0;
          this.tail = 0;
          this.free = new Stack(max);
          this.initialFill = 1;
          this.size = 0;
          if (typeof dispose === 'function') {
            this.dispose = dispose;
          }
          if (typeof disposeAfter === 'function') {
            this.disposeAfter = disposeAfter;
            this.disposed = [];
          } else {
            this.disposeAfter = null;
            this.disposed = null;
          }
          this.noDisposeOnSet = !!noDisposeOnSet;
          this.noUpdateTTL = !!noUpdateTTL;
          this.noDeleteOnFetchRejection = !!noDeleteOnFetchRejection;
          if (this.maxEntrySize !== 0) {
            if (this.maxSize !== 0) {
              if (!isPosInt(this.maxSize)) {
                throw new TypeError('maxSize must be a positive integer if specified');
              }
            }
            if (!isPosInt(this.maxEntrySize)) {
              throw new TypeError('maxEntrySize must be a positive integer if specified');
            }
            this.initializeSizeTracking();
          }
          this.allowStale = !!allowStale || !!stale;
          this.noDeleteOnStaleGet = !!noDeleteOnStaleGet;
          this.updateAgeOnGet = !!updateAgeOnGet;
          this.updateAgeOnHas = !!updateAgeOnHas;
          this.ttlResolution = isPosInt(ttlResolution) || ttlResolution === 0 ? ttlResolution : 1;
          this.ttlAutopurge = !!ttlAutopurge;
          this.ttl = ttl || maxAge || 0;
          if (this.ttl) {
            if (!isPosInt(this.ttl)) {
              throw new TypeError('ttl must be a positive integer if specified');
            }
            this.initializeTTLTracking();
          }
          if (this.max === 0 && this.ttl === 0 && this.maxSize === 0) {
            throw new TypeError('At least one of max, maxSize, or ttl is required');
          }
          if (!this.ttlAutopurge && !this.max && !this.maxSize) {
            var code = 'LRU_CACHE_UNBOUNDED';
            if (shouldWarn(code)) {
              warned.add(code);
              var msg = 'TTL caching without ttlAutopurge, max, or maxSize can ' + 'result in unbounded memory consumption.';
              emitWarning(msg, 'UnboundedCacheWarning', code, LRUCache);
            }
          }
          if (stale) {
            deprecatedOption('stale', 'allowStale');
          }
          if (maxAge) {
            deprecatedOption('maxAge', 'ttl');
          }
          if (length) {
            deprecatedOption('length', 'sizeCalculation');
          }
        }
        var _proto4 = LRUCache.prototype;
        _proto4.getRemainingTTL = function getRemainingTTL(key) {
          return this.has(key, {
            updateAgeOnHas: false
          }) ? Infinity : 0;
        };
        _proto4.initializeTTLTracking = function initializeTTLTracking() {
          var _this2 = this;
          this.ttls = new ZeroArray(this.max);
          this.starts = new ZeroArray(this.max);
          this.setItemTTL = function (index, ttl, start) {
            if (start === void 0) {
              start = perf.now();
            }
            _this2.starts[index] = ttl !== 0 ? start : 0;
            _this2.ttls[index] = ttl;
            if (ttl !== 0 && _this2.ttlAutopurge) {
              var t = setTimeout(function () {
                if (_this2.isStale(index)) {
                  _this2["delete"](_this2.keyList[index]);
                }
              }, ttl + 1);
              if (t.unref) {
                t.unref();
              }
            }
          };
          this.updateItemAge = function (index) {
            _this2.starts[index] = _this2.ttls[index] !== 0 ? perf.now() : 0;
          };
          var cachedNow = 0;
          var getNow = function getNow() {
            var n = perf.now();
            if (_this2.ttlResolution > 0) {
              cachedNow = n;
              var t = setTimeout(function () {
                return cachedNow = 0;
              }, _this2.ttlResolution);
              if (t.unref) {
                t.unref();
              }
            }
            return n;
          };
          this.getRemainingTTL = function (key) {
            var index = _this2.keyMap.get(key);
            if (index === undefined) {
              return 0;
            }
            return _this2.ttls[index] === 0 || _this2.starts[index] === 0 ? Infinity : _this2.starts[index] + _this2.ttls[index] - (cachedNow || getNow());
          };
          this.isStale = function (index) {
            return _this2.ttls[index] !== 0 && _this2.starts[index] !== 0 && (cachedNow || getNow()) - _this2.starts[index] > _this2.ttls[index];
          };
        };
        _proto4.updateItemAge = function updateItemAge(index) {};
        _proto4.setItemTTL = function setItemTTL(index, ttl, start) {};
        _proto4.isStale = function isStale(index) {
          return false;
        };
        _proto4.initializeSizeTracking = function initializeSizeTracking() {
          var _this3 = this;
          this.calculatedSize = 0;
          this.sizes = new ZeroArray(this.max);
          this.removeItemSize = function (index) {
            _this3.calculatedSize -= _this3.sizes[index];
            _this3.sizes[index] = 0;
          };
          this.requireSize = function (k, v, size, sizeCalculation) {
            if (_this3.isBackgroundFetch(v)) {
              return 0;
            }
            if (!isPosInt(size)) {
              if (sizeCalculation) {
                if (typeof sizeCalculation !== 'function') {
                  throw new TypeError('sizeCalculation must be a function');
                }
                size = sizeCalculation(v, k);
                if (!isPosInt(size)) {
                  throw new TypeError('sizeCalculation return invalid (expect positive integer)');
                }
              } else {
                throw new TypeError('invalid size value (must be positive integer)');
              }
            }
            return size;
          };
          this.addItemSize = function (index, size) {
            _this3.sizes[index] = size;
            if (_this3.maxSize) {
              var maxSize = _this3.maxSize - _this3.sizes[index];
              while (_this3.calculatedSize > maxSize) {
                _this3.evict(true);
              }
            }
            _this3.calculatedSize += _this3.sizes[index];
          };
        };
        _proto4.removeItemSize = function removeItemSize(index) {};
        _proto4.addItemSize = function addItemSize(index, size) {};
        _proto4.requireSize = function requireSize(k, v, size, sizeCalculation) {
          if (size || sizeCalculation) {
            throw new TypeError('cannot set size without setting maxSize or maxEntrySize on cache');
          }
        };
        _proto4.indexes = function indexes(_temp) {
          var _this4 = this;
          var _ref2 = _temp === void 0 ? {} : _temp,
            _ref2$allowStale = _ref2.allowStale,
            allowStale = _ref2$allowStale === void 0 ? this.allowStale : _ref2$allowStale;
          return _regeneratorRuntime().mark(function _callee() {
            var i;
            return _regeneratorRuntime().wrap(function _callee$(_context) {
              while (1) switch (_context.prev = _context.next) {
                case 0:
                  if (!_this4.size) {
                    _context.next = 15;
                    break;
                  }
                  i = _this4.tail;
                case 2:
                  if (_this4.isValidIndex(i)) {
                    _context.next = 5;
                    break;
                  }
                  return _context.abrupt("break", 15);
                case 5:
                  if (!(allowStale || !_this4.isStale(i))) {
                    _context.next = 8;
                    break;
                  }
                  _context.next = 8;
                  return i;
                case 8:
                  if (!(i === _this4.head)) {
                    _context.next = 12;
                    break;
                  }
                  return _context.abrupt("break", 15);
                case 12:
                  i = _this4.prev[i];
                case 13:
                  _context.next = 2;
                  break;
                case 15:
                case "end":
                  return _context.stop();
              }
            }, _callee);
          })();
        };
        _proto4.rindexes = function rindexes(_temp2) {
          var _this5 = this;
          var _ref3 = _temp2 === void 0 ? {} : _temp2,
            _ref3$allowStale = _ref3.allowStale,
            allowStale = _ref3$allowStale === void 0 ? this.allowStale : _ref3$allowStale;
          return _regeneratorRuntime().mark(function _callee2() {
            var i;
            return _regeneratorRuntime().wrap(function _callee2$(_context2) {
              while (1) switch (_context2.prev = _context2.next) {
                case 0:
                  if (!_this5.size) {
                    _context2.next = 15;
                    break;
                  }
                  i = _this5.head;
                case 2:
                  if (_this5.isValidIndex(i)) {
                    _context2.next = 5;
                    break;
                  }
                  return _context2.abrupt("break", 15);
                case 5:
                  if (!(allowStale || !_this5.isStale(i))) {
                    _context2.next = 8;
                    break;
                  }
                  _context2.next = 8;
                  return i;
                case 8:
                  if (!(i === _this5.tail)) {
                    _context2.next = 12;
                    break;
                  }
                  return _context2.abrupt("break", 15);
                case 12:
                  i = _this5.next[i];
                case 13:
                  _context2.next = 2;
                  break;
                case 15:
                case "end":
                  return _context2.stop();
              }
            }, _callee2);
          })();
        };
        _proto4.isValidIndex = function isValidIndex(index) {
          return this.keyMap.get(this.keyList[index]) === index;
        };
        _proto4.entries = _regeneratorRuntime().mark(function entries() {
          var _iterator, _step, i;
          return _regeneratorRuntime().wrap(function entries$(_context3) {
            while (1) switch (_context3.prev = _context3.next) {
              case 0:
                _iterator = _createForOfIteratorHelperLoose(this.indexes());
              case 1:
                if ((_step = _iterator()).done) {
                  _context3.next = 7;
                  break;
                }
                i = _step.value;
                _context3.next = 5;
                return [this.keyList[i], this.valList[i]];
              case 5:
                _context3.next = 1;
                break;
              case 7:
              case "end":
                return _context3.stop();
            }
          }, entries, this);
        });
        _proto4.rentries = _regeneratorRuntime().mark(function rentries() {
          var _iterator2, _step2, i;
          return _regeneratorRuntime().wrap(function rentries$(_context4) {
            while (1) switch (_context4.prev = _context4.next) {
              case 0:
                _iterator2 = _createForOfIteratorHelperLoose(this.rindexes());
              case 1:
                if ((_step2 = _iterator2()).done) {
                  _context4.next = 7;
                  break;
                }
                i = _step2.value;
                _context4.next = 5;
                return [this.keyList[i], this.valList[i]];
              case 5:
                _context4.next = 1;
                break;
              case 7:
              case "end":
                return _context4.stop();
            }
          }, rentries, this);
        });
        _proto4.keys = _regeneratorRuntime().mark(function keys() {
          var _iterator3, _step3, i;
          return _regeneratorRuntime().wrap(function keys$(_context5) {
            while (1) switch (_context5.prev = _context5.next) {
              case 0:
                _iterator3 = _createForOfIteratorHelperLoose(this.indexes());
              case 1:
                if ((_step3 = _iterator3()).done) {
                  _context5.next = 7;
                  break;
                }
                i = _step3.value;
                _context5.next = 5;
                return this.keyList[i];
              case 5:
                _context5.next = 1;
                break;
              case 7:
              case "end":
                return _context5.stop();
            }
          }, keys, this);
        });
        _proto4.rkeys = _regeneratorRuntime().mark(function rkeys() {
          var _iterator4, _step4, i;
          return _regeneratorRuntime().wrap(function rkeys$(_context6) {
            while (1) switch (_context6.prev = _context6.next) {
              case 0:
                _iterator4 = _createForOfIteratorHelperLoose(this.rindexes());
              case 1:
                if ((_step4 = _iterator4()).done) {
                  _context6.next = 7;
                  break;
                }
                i = _step4.value;
                _context6.next = 5;
                return this.keyList[i];
              case 5:
                _context6.next = 1;
                break;
              case 7:
              case "end":
                return _context6.stop();
            }
          }, rkeys, this);
        });
        _proto4.values = _regeneratorRuntime().mark(function values() {
          var _iterator5, _step5, i;
          return _regeneratorRuntime().wrap(function values$(_context7) {
            while (1) switch (_context7.prev = _context7.next) {
              case 0:
                _iterator5 = _createForOfIteratorHelperLoose(this.indexes());
              case 1:
                if ((_step5 = _iterator5()).done) {
                  _context7.next = 7;
                  break;
                }
                i = _step5.value;
                _context7.next = 5;
                return this.valList[i];
              case 5:
                _context7.next = 1;
                break;
              case 7:
              case "end":
                return _context7.stop();
            }
          }, values, this);
        });
        _proto4.rvalues = _regeneratorRuntime().mark(function rvalues() {
          var _iterator6, _step6, i;
          return _regeneratorRuntime().wrap(function rvalues$(_context8) {
            while (1) switch (_context8.prev = _context8.next) {
              case 0:
                _iterator6 = _createForOfIteratorHelperLoose(this.rindexes());
              case 1:
                if ((_step6 = _iterator6()).done) {
                  _context8.next = 7;
                  break;
                }
                i = _step6.value;
                _context8.next = 5;
                return this.valList[i];
              case 5:
                _context8.next = 1;
                break;
              case 7:
              case "end":
                return _context8.stop();
            }
          }, rvalues, this);
        });
        _proto4[_Symbol$iterator] = function () {
          return this.entries();
        };
        _proto4.find = function find(fn, getOptions) {
          if (getOptions === void 0) {
            getOptions = {};
          }
          for (var _iterator7 = _createForOfIteratorHelperLoose(this.indexes()), _step7; !(_step7 = _iterator7()).done;) {
            var i = _step7.value;
            if (fn(this.valList[i], this.keyList[i], this)) {
              return this.get(this.keyList[i], getOptions);
            }
          }
        };
        _proto4.forEach = function forEach(fn, thisp) {
          if (thisp === void 0) {
            thisp = this;
          }
          for (var _iterator8 = _createForOfIteratorHelperLoose(this.indexes()), _step8; !(_step8 = _iterator8()).done;) {
            var i = _step8.value;
            fn.call(thisp, this.valList[i], this.keyList[i], this);
          }
        };
        _proto4.rforEach = function rforEach(fn, thisp) {
          if (thisp === void 0) {
            thisp = this;
          }
          for (var _iterator9 = _createForOfIteratorHelperLoose(this.rindexes()), _step9; !(_step9 = _iterator9()).done;) {
            var i = _step9.value;
            fn.call(thisp, this.valList[i], this.keyList[i], this);
          }
        };
        _proto4.purgeStale = function purgeStale() {
          var deleted = false;
          for (var _iterator10 = _createForOfIteratorHelperLoose(this.rindexes({
              allowStale: true
            })), _step10; !(_step10 = _iterator10()).done;) {
            var i = _step10.value;
            if (this.isStale(i)) {
              this["delete"](this.keyList[i]);
              deleted = true;
            }
          }
          return deleted;
        };
        _proto4.dump = function dump() {
          var arr = [];
          for (var _iterator11 = _createForOfIteratorHelperLoose(this.indexes({
              allowStale: true
            })), _step11; !(_step11 = _iterator11()).done;) {
            var i = _step11.value;
            var key = this.keyList[i];
            var v = this.valList[i];
            var value = this.isBackgroundFetch(v) ? v.__staleWhileFetching : v;
            var entry = {
              value: value
            };
            if (this.ttls) {
              entry.ttl = this.ttls[i];
              var age = perf.now() - this.starts[i];
              entry.start = Math.floor(Date.now() - age);
            }
            if (this.sizes) {
              entry.size = this.sizes[i];
            }
            arr.unshift([key, entry]);
          }
          return arr;
        };
        _proto4.load = function load(arr) {
          this.clear();
          for (var _iterator12 = _createForOfIteratorHelperLoose(arr), _step12; !(_step12 = _iterator12()).done;) {
            var _step12$value = _slicedToArray(_step12.value, 2),
              key = _step12$value[0],
              entry = _step12$value[1];
            if (entry.start) {
              var age = Date.now() - entry.start;
              entry.start = perf.now() - age;
            }
            this.set(key, entry.value, entry);
          }
        };
        _proto4.dispose = function dispose(v, k, reason) {};
        _proto4.set = function set(k, v, _temp3) {
          var _ref4 = _temp3 === void 0 ? {} : _temp3,
            _ref4$ttl = _ref4.ttl,
            ttl = _ref4$ttl === void 0 ? this.ttl : _ref4$ttl,
            start = _ref4.start,
            _ref4$noDisposeOnSet = _ref4.noDisposeOnSet,
            noDisposeOnSet = _ref4$noDisposeOnSet === void 0 ? this.noDisposeOnSet : _ref4$noDisposeOnSet,
            _ref4$size = _ref4.size,
            size = _ref4$size === void 0 ? 0 : _ref4$size,
            _ref4$sizeCalculation = _ref4.sizeCalculation,
            sizeCalculation = _ref4$sizeCalculation === void 0 ? this.sizeCalculation : _ref4$sizeCalculation,
            _ref4$noUpdateTTL = _ref4.noUpdateTTL,
            noUpdateTTL = _ref4$noUpdateTTL === void 0 ? this.noUpdateTTL : _ref4$noUpdateTTL;
          size = this.requireSize(k, v, size, sizeCalculation);
          if (this.maxEntrySize && size > this.maxEntrySize) {
            this["delete"](k);
            return this;
          }
          var index = this.size === 0 ? undefined : this.keyMap.get(k);
          if (index === undefined) {
            index = this.newIndex();
            this.keyList[index] = k;
            this.valList[index] = v;
            this.keyMap.set(k, index);
            this.next[this.tail] = index;
            this.prev[index] = this.tail;
            this.tail = index;
            this.size++;
            this.addItemSize(index, size);
            noUpdateTTL = false;
          } else {
            var oldVal = this.valList[index];
            if (v !== oldVal) {
              if (this.isBackgroundFetch(oldVal)) {
                oldVal.__abortController.abort();
              } else {
                if (!noDisposeOnSet) {
                  this.dispose(oldVal, k, 'set');
                  if (this.disposeAfter) {
                    this.disposed.push([oldVal, k, 'set']);
                  }
                }
              }
              this.removeItemSize(index);
              this.valList[index] = v;
              this.addItemSize(index, size);
            }
            this.moveToTail(index);
          }
          if (ttl !== 0 && this.ttl === 0 && !this.ttls) {
            this.initializeTTLTracking();
          }
          if (!noUpdateTTL) {
            this.setItemTTL(index, ttl, start);
          }
          if (this.disposeAfter) {
            while (this.disposed.length) {
              this.disposeAfter.apply(this, _toConsumableArray(this.disposed.shift()));
            }
          }
          return this;
        };
        _proto4.newIndex = function newIndex() {
          if (this.size === 0) {
            return this.tail;
          }
          if (this.size === this.max && this.max !== 0) {
            return this.evict(false);
          }
          if (this.free.length !== 0) {
            return this.free.pop();
          }
          return this.initialFill++;
        };
        _proto4.pop = function pop() {
          if (this.size) {
            var val = this.valList[this.head];
            this.evict(true);
            return val;
          }
        };
        _proto4.evict = function evict(free) {
          var head = this.head;
          var k = this.keyList[head];
          var v = this.valList[head];
          if (this.isBackgroundFetch(v)) {
            v.__abortController.abort();
          } else {
            this.dispose(v, k, 'evict');
            if (this.disposeAfter) {
              this.disposed.push([v, k, 'evict']);
            }
          }
          this.removeItemSize(head);
          if (free) {
            this.keyList[head] = null;
            this.valList[head] = null;
            this.free.push(head);
          }
          this.head = this.next[head];
          this.keyMap["delete"](k);
          this.size--;
          return head;
        };
        _proto4.has = function has(k, _temp4) {
          var _ref5 = _temp4 === void 0 ? {} : _temp4,
            _ref5$updateAgeOnHas = _ref5.updateAgeOnHas,
            updateAgeOnHas = _ref5$updateAgeOnHas === void 0 ? this.updateAgeOnHas : _ref5$updateAgeOnHas;
          var index = this.keyMap.get(k);
          if (index !== undefined) {
            if (!this.isStale(index)) {
              if (updateAgeOnHas) {
                this.updateItemAge(index);
              }
              return true;
            }
          }
          return false;
        };
        _proto4.peek = function peek(k, _temp5) {
          var _ref6 = _temp5 === void 0 ? {} : _temp5,
            _ref6$allowStale = _ref6.allowStale,
            allowStale = _ref6$allowStale === void 0 ? this.allowStale : _ref6$allowStale;
          var index = this.keyMap.get(k);
          if (index !== undefined && (allowStale || !this.isStale(index))) {
            var v = this.valList[index];
            return this.isBackgroundFetch(v) ? v.__staleWhileFetching : v;
          }
        };
        _proto4.backgroundFetch = function backgroundFetch(k, index, options, context) {
          var _this6 = this;
          var v = index === undefined ? undefined : this.valList[index];
          if (this.isBackgroundFetch(v)) {
            return v;
          }
          var ac = new AC();
          var fetchOpts = {
            signal: ac.signal,
            options: options,
            context: context
          };
          var cb = function cb(v) {
            if (!ac.signal.aborted) {
              _this6.set(k, v, fetchOpts.options);
            }
            return v;
          };
          var eb = function eb(er) {
            if (_this6.valList[index] === p) {
              var del = !options.noDeleteOnFetchRejection || p.__staleWhileFetching === undefined;
              if (del) {
                _this6["delete"](k);
              } else {
                _this6.valList[index] = p.__staleWhileFetching;
              }
            }
            if (p.__returned === p) {
              throw er;
            }
          };
          var pcall = function pcall(res) {
            return res(_this6.fetchMethod(k, v, fetchOpts));
          };
          var p = new Promise(pcall).then(cb, eb);
          p.__abortController = ac;
          p.__staleWhileFetching = v;
          p.__returned = null;
          if (index === undefined) {
            this.set(k, p, fetchOpts.options);
            index = this.keyMap.get(k);
          } else {
            this.valList[index] = p;
          }
          return p;
        };
        _proto4.isBackgroundFetch = function isBackgroundFetch(p) {
          return p && typeof p === 'object' && typeof p.then === 'function' && Object.prototype.hasOwnProperty.call(p, '__staleWhileFetching') && Object.prototype.hasOwnProperty.call(p, '__returned') && (p.__returned === p || p.__returned === null);
        };
        _proto4.fetch = function () {
          var _fetch = _asyncToGenerator(_regeneratorRuntime().mark(function _callee3(k, _temp6) {
            var _ref7, _ref7$allowStale, allowStale, _ref7$updateAgeOnGet, updateAgeOnGet, _ref7$noDeleteOnStale, noDeleteOnStaleGet, _ref7$ttl, ttl, _ref7$noDisposeOnSet, noDisposeOnSet, _ref7$size, size, _ref7$sizeCalculation, sizeCalculation, _ref7$noUpdateTTL, noUpdateTTL, _ref7$noDeleteOnFetch, noDeleteOnFetchRejection, _ref7$fetchContext, fetchContext, _ref7$forceRefresh, forceRefresh, options, index, p, v, _p;
            return _regeneratorRuntime().wrap(function _callee3$(_context9) {
              while (1) switch (_context9.prev = _context9.next) {
                case 0:
                  _ref7 = _temp6 === void 0 ? {} : _temp6, _ref7$allowStale = _ref7.allowStale, allowStale = _ref7$allowStale === void 0 ? this.allowStale : _ref7$allowStale, _ref7$updateAgeOnGet = _ref7.updateAgeOnGet, updateAgeOnGet = _ref7$updateAgeOnGet === void 0 ? this.updateAgeOnGet : _ref7$updateAgeOnGet, _ref7$noDeleteOnStale = _ref7.noDeleteOnStaleGet, noDeleteOnStaleGet = _ref7$noDeleteOnStale === void 0 ? this.noDeleteOnStaleGet : _ref7$noDeleteOnStale, _ref7$ttl = _ref7.ttl, ttl = _ref7$ttl === void 0 ? this.ttl : _ref7$ttl, _ref7$noDisposeOnSet = _ref7.noDisposeOnSet, noDisposeOnSet = _ref7$noDisposeOnSet === void 0 ? this.noDisposeOnSet : _ref7$noDisposeOnSet, _ref7$size = _ref7.size, size = _ref7$size === void 0 ? 0 : _ref7$size, _ref7$sizeCalculation = _ref7.sizeCalculation, sizeCalculation = _ref7$sizeCalculation === void 0 ? this.sizeCalculation : _ref7$sizeCalculation, _ref7$noUpdateTTL = _ref7.noUpdateTTL, noUpdateTTL = _ref7$noUpdateTTL === void 0 ? this.noUpdateTTL : _ref7$noUpdateTTL, _ref7$noDeleteOnFetch = _ref7.noDeleteOnFetchRejection, noDeleteOnFetchRejection = _ref7$noDeleteOnFetch === void 0 ? this.noDeleteOnFetchRejection : _ref7$noDeleteOnFetch, _ref7$fetchContext = _ref7.fetchContext, fetchContext = _ref7$fetchContext === void 0 ? this.fetchContext : _ref7$fetchContext, _ref7$forceRefresh = _ref7.forceRefresh, forceRefresh = _ref7$forceRefresh === void 0 ? false : _ref7$forceRefresh;
                  if (this.fetchMethod) {
                    _context9.next = 3;
                    break;
                  }
                  return _context9.abrupt("return", this.get(k, {
                    allowStale: allowStale,
                    updateAgeOnGet: updateAgeOnGet,
                    noDeleteOnStaleGet: noDeleteOnStaleGet
                  }));
                case 3:
                  options = {
                    allowStale: allowStale,
                    updateAgeOnGet: updateAgeOnGet,
                    noDeleteOnStaleGet: noDeleteOnStaleGet,
                    ttl: ttl,
                    noDisposeOnSet: noDisposeOnSet,
                    size: size,
                    sizeCalculation: sizeCalculation,
                    noUpdateTTL: noUpdateTTL,
                    noDeleteOnFetchRejection: noDeleteOnFetchRejection
                  };
                  index = this.keyMap.get(k);
                  if (!(index === undefined)) {
                    _context9.next = 10;
                    break;
                  }
                  p = this.backgroundFetch(k, index, options, fetchContext);
                  return _context9.abrupt("return", p.__returned = p);
                case 10:
                  v = this.valList[index];
                  if (!this.isBackgroundFetch(v)) {
                    _context9.next = 13;
                    break;
                  }
                  return _context9.abrupt("return", allowStale && v.__staleWhileFetching !== undefined ? v.__staleWhileFetching : v.__returned = v);
                case 13:
                  if (!(!forceRefresh && !this.isStale(index))) {
                    _context9.next = 17;
                    break;
                  }
                  this.moveToTail(index);
                  if (updateAgeOnGet) {
                    this.updateItemAge(index);
                  }
                  return _context9.abrupt("return", v);
                case 17:
                  _p = this.backgroundFetch(k, index, options, fetchContext);
                  return _context9.abrupt("return", allowStale && _p.__staleWhileFetching !== undefined ? _p.__staleWhileFetching : _p.__returned = _p);
                case 19:
                case "end":
                  return _context9.stop();
              }
            }, _callee3, this);
          }));
          function fetch(_x, _x2) {
            return _fetch.apply(this, arguments);
          }
          return fetch;
        }();
        _proto4.get = function get(k, _temp7) {
          var _ref8 = _temp7 === void 0 ? {} : _temp7,
            _ref8$allowStale = _ref8.allowStale,
            allowStale = _ref8$allowStale === void 0 ? this.allowStale : _ref8$allowStale,
            _ref8$updateAgeOnGet = _ref8.updateAgeOnGet,
            updateAgeOnGet = _ref8$updateAgeOnGet === void 0 ? this.updateAgeOnGet : _ref8$updateAgeOnGet,
            _ref8$noDeleteOnStale = _ref8.noDeleteOnStaleGet,
            noDeleteOnStaleGet = _ref8$noDeleteOnStale === void 0 ? this.noDeleteOnStaleGet : _ref8$noDeleteOnStale;
          var index = this.keyMap.get(k);
          if (index !== undefined) {
            var value = this.valList[index];
            var fetching = this.isBackgroundFetch(value);
            if (this.isStale(index)) {
              if (!fetching) {
                if (!noDeleteOnStaleGet) {
                  this["delete"](k);
                }
                return allowStale ? value : undefined;
              } else {
                return allowStale ? value.__staleWhileFetching : undefined;
              }
            } else {
              if (fetching) {
                return undefined;
              }
              this.moveToTail(index);
              if (updateAgeOnGet) {
                this.updateItemAge(index);
              }
              return value;
            }
          }
        };
        _proto4.connect = function connect(p, n) {
          this.prev[n] = p;
          this.next[p] = n;
        };
        _proto4.moveToTail = function moveToTail(index) {
          if (index !== this.tail) {
            if (index === this.head) {
              this.head = this.next[index];
            } else {
              this.connect(this.prev[index], this.next[index]);
            }
            this.connect(this.tail, index);
            this.tail = index;
          }
        };
        _proto4["delete"] = function _delete(k) {
          var deleted = false;
          if (this.size !== 0) {
            var index = this.keyMap.get(k);
            if (index !== undefined) {
              deleted = true;
              if (this.size === 1) {
                this.clear();
              } else {
                this.removeItemSize(index);
                var v = this.valList[index];
                if (this.isBackgroundFetch(v)) {
                  v.__abortController.abort();
                } else {
                  this.dispose(v, k, 'delete');
                  if (this.disposeAfter) {
                    this.disposed.push([v, k, 'delete']);
                  }
                }
                this.keyMap["delete"](k);
                this.keyList[index] = null;
                this.valList[index] = null;
                if (index === this.tail) {
                  this.tail = this.prev[index];
                } else if (index === this.head) {
                  this.head = this.next[index];
                } else {
                  this.next[this.prev[index]] = this.next[index];
                  this.prev[this.next[index]] = this.prev[index];
                }
                this.size--;
                this.free.push(index);
              }
            }
          }
          if (this.disposed) {
            while (this.disposed.length) {
              this.disposeAfter.apply(this, _toConsumableArray(this.disposed.shift()));
            }
          }
          return deleted;
        };
        _proto4.clear = function clear() {
          for (var _iterator13 = _createForOfIteratorHelperLoose(this.rindexes({
              allowStale: true
            })), _step13; !(_step13 = _iterator13()).done;) {
            var index = _step13.value;
            var v = this.valList[index];
            if (this.isBackgroundFetch(v)) {
              v.__abortController.abort();
            } else {
              var k = this.keyList[index];
              this.dispose(v, k, 'delete');
              if (this.disposeAfter) {
                this.disposed.push([v, k, 'delete']);
              }
            }
          }
          this.keyMap.clear();
          this.valList.fill(null);
          this.keyList.fill(null);
          if (this.ttls) {
            this.ttls.fill(0);
            this.starts.fill(0);
          }
          if (this.sizes) {
            this.sizes.fill(0);
          }
          this.head = 0;
          this.tail = 0;
          this.initialFill = 1;
          this.free.length = 0;
          this.calculatedSize = 0;
          this.size = 0;
          if (this.disposed) {
            while (this.disposed.length) {
              this.disposeAfter.apply(this, _toConsumableArray(this.disposed.shift()));
            }
          }
        };
        _createClass(LRUCache, [{
          key: "prune",
          get: function get() {
            deprecatedMethod('prune', 'purgeStale');
            return this.purgeStale;
          }
        }, {
          key: "del",
          get: function get() {
            deprecatedMethod('del', 'delete');
            return this["delete"];
          }
        }, {
          key: "reset",
          get: function get() {
            deprecatedMethod('reset', 'clear');
            return this.clear;
          }
        }, {
          key: "length",
          get: function get() {
            deprecatedProperty('length', 'size');
            return this.size;
          }
        }], [{
          key: "AbortController",
          get: function get() {
            return AC;
          }
        }, {
          key: "AbortSignal",
          get: function get() {
            return AS;
          }
        }]);
        return LRUCache;
      }(Symbol.iterator);
      lruCacheBABEL_8_BREAKINGTrue = LRUCache;
      return lruCacheBABEL_8_BREAKINGTrue;
    }
  
    var iterator;
    var hasRequiredIterator;
    function requireIterator() {
      if (hasRequiredIterator) return iterator;
      hasRequiredIterator = 1;
      iterator = function iterator(Yallist) {
        Yallist.prototype[Symbol.iterator] = _regeneratorRuntime().mark(function _callee() {
          var walker;
          return _regeneratorRuntime().wrap(function _callee$(_context) {
            while (1) switch (_context.prev = _context.next) {
              case 0:
                walker = this.head;
              case 1:
                if (!walker) {
                  _context.next = 7;
                  break;
                }
                _context.next = 4;
                return walker.value;
              case 4:
                walker = walker.next;
                _context.next = 1;
                break;
              case 7:
              case "end":
                return _context.stop();
            }
          }, _callee, this);
        });
      };
      return iterator;
    }
  
    var yallist;
    var hasRequiredYallist;
    function requireYallist() {
      if (hasRequiredYallist) return yallist;
      hasRequiredYallist = 1;
      yallist = Yallist;
      Yallist.Node = Node;
      Yallist.create = Yallist;
      function Yallist(list) {
        var self = this;
        if (!(self instanceof Yallist)) {
          self = new Yallist();
        }
        self.tail = null;
        self.head = null;
        self.length = 0;
        if (list && typeof list.forEach === 'function') {
          list.forEach(function (item) {
            self.push(item);
          });
        } else if (arguments.length > 0) {
          for (var i = 0, l = arguments.length; i < l; i++) {
            self.push(arguments[i]);
          }
        }
        return self;
      }
      Yallist.prototype.removeNode = function (node) {
        if (node.list !== this) {
          throw new Error('removing node which does not belong to this list');
        }
        var next = node.next;
        var prev = node.prev;
        if (next) {
          next.prev = prev;
        }
        if (prev) {
          prev.next = next;
        }
        if (node === this.head) {
          this.head = next;
        }
        if (node === this.tail) {
          this.tail = prev;
        }
        node.list.length--;
        node.next = null;
        node.prev = null;
        node.list = null;
        return next;
      };
      Yallist.prototype.unshiftNode = function (node) {
        if (node === this.head) {
          return;
        }
        if (node.list) {
          node.list.removeNode(node);
        }
        var head = this.head;
        node.list = this;
        node.next = head;
        if (head) {
          head.prev = node;
        }
        this.head = node;
        if (!this.tail) {
          this.tail = node;
        }
        this.length++;
      };
      Yallist.prototype.pushNode = function (node) {
        if (node === this.tail) {
          return;
        }
        if (node.list) {
          node.list.removeNode(node);
        }
        var tail = this.tail;
        node.list = this;
        node.prev = tail;
        if (tail) {
          tail.next = node;
        }
        this.tail = node;
        if (!this.head) {
          this.head = node;
        }
        this.length++;
      };
      Yallist.prototype.push = function () {
        for (var i = 0, l = arguments.length; i < l; i++) {
          push(this, arguments[i]);
        }
        return this.length;
      };
      Yallist.prototype.unshift = function () {
        for (var i = 0, l = arguments.length; i < l; i++) {
          unshift(this, arguments[i]);
        }
        return this.length;
      };
      Yallist.prototype.pop = function () {
        if (!this.tail) {
          return undefined;
        }
        var res = this.tail.value;
        this.tail = this.tail.prev;
        if (this.tail) {
          this.tail.next = null;
        } else {
          this.head = null;
        }
        this.length--;
        return res;
      };
      Yallist.prototype.shift = function () {
        if (!this.head) {
          return undefined;
        }
        var res = this.head.value;
        this.head = this.head.next;
        if (this.head) {
          this.head.prev = null;
        } else {
          this.tail = null;
        }
        this.length--;
        return res;
      };
      Yallist.prototype.forEach = function (fn, thisp) {
        thisp = thisp || this;
        for (var walker = this.head, i = 0; walker !== null; i++) {
          fn.call(thisp, walker.value, i, this);
          walker = walker.next;
        }
      };
      Yallist.prototype.forEachReverse = function (fn, thisp) {
        thisp = thisp || this;
        for (var walker = this.tail, i = this.length - 1; walker !== null; i--) {
          fn.call(thisp, walker.value, i, this);
          walker = walker.prev;
        }
      };
      Yallist.prototype.get = function (n) {
        for (var i = 0, walker = this.head; walker !== null && i < n; i++) {
          walker = walker.next;
        }
        if (i === n && walker !== null) {
          return walker.value;
        }
      };
      Yallist.prototype.getReverse = function (n) {
        for (var i = 0, walker = this.tail; walker !== null && i < n; i++) {
          walker = walker.prev;
        }
        if (i === n && walker !== null) {
          return walker.value;
        }
      };
      Yallist.prototype.map = function (fn, thisp) {
        thisp = thisp || this;
        var res = new Yallist();
        for (var walker = this.head; walker !== null;) {
          res.push(fn.call(thisp, walker.value, this));
          walker = walker.next;
        }
        return res;
      };
      Yallist.prototype.mapReverse = function (fn, thisp) {
        thisp = thisp || this;
        var res = new Yallist();
        for (var walker = this.tail; walker !== null;) {
          res.push(fn.call(thisp, walker.value, this));
          walker = walker.prev;
        }
        return res;
      };
      Yallist.prototype.reduce = function (fn, initial) {
        var acc;
        var walker = this.head;
        if (arguments.length > 1) {
          acc = initial;
        } else if (this.head) {
          walker = this.head.next;
          acc = this.head.value;
        } else {
          throw new TypeError('Reduce of empty list with no initial value');
        }
        for (var i = 0; walker !== null; i++) {
          acc = fn(acc, walker.value, i);
          walker = walker.next;
        }
        return acc;
      };
      Yallist.prototype.reduceReverse = function (fn, initial) {
        var acc;
        var walker = this.tail;
        if (arguments.length > 1) {
          acc = initial;
        } else if (this.tail) {
          walker = this.tail.prev;
          acc = this.tail.value;
        } else {
          throw new TypeError('Reduce of empty list with no initial value');
        }
        for (var i = this.length - 1; walker !== null; i--) {
          acc = fn(acc, walker.value, i);
          walker = walker.prev;
        }
        return acc;
      };
      Yallist.prototype.toArray = function () {
        var arr = new Array(this.length);
        for (var i = 0, walker = this.head; walker !== null; i++) {
          arr[i] = walker.value;
          walker = walker.next;
        }
        return arr;
      };
      Yallist.prototype.toArrayReverse = function () {
        var arr = new Array(this.length);
        for (var i = 0, walker = this.tail; walker !== null; i++) {
          arr[i] = walker.value;
          walker = walker.prev;
        }
        return arr;
      };
      Yallist.prototype.slice = function (from, to) {
        to = to || this.length;
        if (to < 0) {
          to += this.length;
        }
        from = from || 0;
        if (from < 0) {
          from += this.length;
        }
        var ret = new Yallist();
        if (to < from || to < 0) {
          return ret;
        }
        if (from < 0) {
          from = 0;
        }
        if (to > this.length) {
          to = this.length;
        }
        for (var i = 0, walker = this.head; walker !== null && i < from; i++) {
          walker = walker.next;
        }
        for (; walker !== null && i < to; i++, walker = walker.next) {
          ret.push(walker.value);
        }
        return ret;
      };
      Yallist.prototype.sliceReverse = function (from, to) {
        to = to || this.length;
        if (to < 0) {
          to += this.length;
        }
        from = from || 0;
        if (from < 0) {
          from += this.length;
        }
        var ret = new Yallist();
        if (to < from || to < 0) {
          return ret;
        }
        if (from < 0) {
          from = 0;
        }
        if (to > this.length) {
          to = this.length;
        }
        for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) {
          walker = walker.prev;
        }
        for (; walker !== null && i > from; i--, walker = walker.prev) {
          ret.push(walker.value);
        }
        return ret;
      };
      Yallist.prototype.splice = function (start, deleteCount) {
        if (start > this.length) {
          start = this.length - 1;
        }
        if (start < 0) {
          start = this.length + start;
        }
        for (var i = 0, walker = this.head; walker !== null && i < start; i++) {
          walker = walker.next;
        }
        var ret = [];
        for (var i = 0; walker && i < deleteCount; i++) {
          ret.push(walker.value);
          walker = this.removeNode(walker);
        }
        if (walker === null) {
          walker = this.tail;
        }
        if (walker !== this.head && walker !== this.tail) {
          walker = walker.prev;
        }
        for (var i = 2; i < arguments.length; i++) {
          walker = insert(this, walker, arguments[i]);
        }
        return ret;
      };
      Yallist.prototype.reverse = function () {
        var head = this.head;
        var tail = this.tail;
        for (var walker = head; walker !== null; walker = walker.prev) {
          var p = walker.prev;
          walker.prev = walker.next;
          walker.next = p;
        }
        this.head = tail;
        this.tail = head;
        return this;
      };
      function insert(self, node, value) {
        var inserted = node === self.head ? new Node(value, null, node, self) : new Node(value, node, node.next, self);
        if (inserted.next === null) {
          self.tail = inserted;
        }
        if (inserted.prev === null) {
          self.head = inserted;
        }
        self.length++;
        return inserted;
      }
      function push(self, item) {
        self.tail = new Node(item, self.tail, null, self);
        if (!self.head) {
          self.head = self.tail;
        }
        self.length++;
      }
      function unshift(self, item) {
        self.head = new Node(item, null, self.head, self);
        if (!self.tail) {
          self.tail = self.head;
        }
        self.length++;
      }
      function Node(value, prev, next, list) {
        if (!(this instanceof Node)) {
          return new Node(value, prev, next, list);
        }
        this.list = list;
        this.value = value;
        if (prev) {
          prev.next = this;
          this.prev = prev;
        } else {
          this.prev = null;
        }
        if (next) {
          next.prev = this;
          this.next = next;
        } else {
          this.next = null;
        }
      }
      try {
        requireIterator()(Yallist);
      } catch (er) {}
      return yallist;
    }
  
    var lruCacheBABEL_8_BREAKINGFalse;
    var hasRequiredLruCacheBABEL_8_BREAKINGFalse;
    function requireLruCacheBABEL_8_BREAKINGFalse() {
      if (hasRequiredLruCacheBABEL_8_BREAKINGFalse) return lruCacheBABEL_8_BREAKINGFalse;
      hasRequiredLruCacheBABEL_8_BREAKINGFalse = 1;
      var Yallist = requireYallist();
      var MAX = Symbol('max');
      var LENGTH = Symbol('length');
      var LENGTH_CALCULATOR = Symbol('lengthCalculator');
      var ALLOW_STALE = Symbol('allowStale');
      var MAX_AGE = Symbol('maxAge');
      var DISPOSE = Symbol('dispose');
      var NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet');
      var LRU_LIST = Symbol('lruList');
      var CACHE = Symbol('cache');
      var UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet');
      var naiveLength = function naiveLength() {
        return 1;
      };
      var LRUCache = function () {
        function LRUCache(options) {
          if (typeof options === 'number') options = {
            max: options
          };
          if (!options) options = {};
          if (options.max && (typeof options.max !== 'number' || options.max < 0)) throw new TypeError('max must be a non-negative number');
          this[MAX] = options.max || Infinity;
          var lc = options.length || naiveLength;
          this[LENGTH_CALCULATOR] = typeof lc !== 'function' ? naiveLength : lc;
          this[ALLOW_STALE] = options.stale || false;
          if (options.maxAge && typeof options.maxAge !== 'number') throw new TypeError('maxAge must be a number');
          this[MAX_AGE] = options.maxAge || 0;
          this[DISPOSE] = options.dispose;
          this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false;
          this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false;
          this.reset();
        }
        var _proto = LRUCache.prototype;
        _proto.rforEach = function rforEach(fn, thisp) {
          thisp = thisp || this;
          for (var walker = this[LRU_LIST].tail; walker !== null;) {
            var prev = walker.prev;
            forEachStep(this, fn, walker, thisp);
            walker = prev;
          }
        };
        _proto.forEach = function forEach(fn, thisp) {
          thisp = thisp || this;
          for (var walker = this[LRU_LIST].head; walker !== null;) {
            var next = walker.next;
            forEachStep(this, fn, walker, thisp);
            walker = next;
          }
        };
        _proto.keys = function keys() {
          return this[LRU_LIST].toArray().map(function (k) {
            return k.key;
          });
        };
        _proto.values = function values() {
          return this[LRU_LIST].toArray().map(function (k) {
            return k.value;
          });
        };
        _proto.reset = function reset() {
          var _this = this;
          if (this[DISPOSE] && this[LRU_LIST] && this[LRU_LIST].length) {
            this[LRU_LIST].forEach(function (hit) {
              return _this[DISPOSE](hit.key, hit.value);
            });
          }
          this[CACHE] = new Map();
          this[LRU_LIST] = new Yallist();
          this[LENGTH] = 0;
        };
        _proto.dump = function dump() {
          var _this2 = this;
          return this[LRU_LIST].map(function (hit) {
            return isStale(_this2, hit) ? false : {
              k: hit.key,
              v: hit.value,
              e: hit.now + (hit.maxAge || 0)
            };
          }).toArray().filter(function (h) {
            return h;
          });
        };
        _proto.dumpLru = function dumpLru() {
          return this[LRU_LIST];
        };
        _proto.set = function set(key, value, maxAge) {
          maxAge = maxAge || this[MAX_AGE];
          if (maxAge && typeof maxAge !== 'number') throw new TypeError('maxAge must be a number');
          var now = maxAge ? Date.now() : 0;
          var len = this[LENGTH_CALCULATOR](value, key);
          if (this[CACHE].has(key)) {
            if (len > this[MAX]) {
              _del(this, this[CACHE].get(key));
              return false;
            }
            var node = this[CACHE].get(key);
            var item = node.value;
            if (this[DISPOSE]) {
              if (!this[NO_DISPOSE_ON_SET]) this[DISPOSE](key, item.value);
            }
            item.now = now;
            item.maxAge = maxAge;
            item.value = value;
            this[LENGTH] += len - item.length;
            item.length = len;
            this.get(key);
            trim(this);
            return true;
          }
          var hit = new Entry(key, value, len, now, maxAge);
          if (hit.length > this[MAX]) {
            if (this[DISPOSE]) this[DISPOSE](key, value);
            return false;
          }
          this[LENGTH] += hit.length;
          this[LRU_LIST].unshift(hit);
          this[CACHE].set(key, this[LRU_LIST].head);
          trim(this);
          return true;
        };
        _proto.has = function has(key) {
          if (!this[CACHE].has(key)) return false;
          var hit = this[CACHE].get(key).value;
          return !isStale(this, hit);
        };
        _proto.get = function get(key) {
          return _get(this, key, true);
        };
        _proto.peek = function peek(key) {
          return _get(this, key, false);
        };
        _proto.pop = function pop() {
          var node = this[LRU_LIST].tail;
          if (!node) return null;
          _del(this, node);
          return node.value;
        };
        _proto.del = function del(key) {
          _del(this, this[CACHE].get(key));
        };
        _proto.load = function load(arr) {
          this.reset();
          var now = Date.now();
          for (var l = arr.length - 1; l >= 0; l--) {
            var hit = arr[l];
            var expiresAt = hit.e || 0;
            if (expiresAt === 0) this.set(hit.k, hit.v);else {
              var maxAge = expiresAt - now;
              if (maxAge > 0) {
                this.set(hit.k, hit.v, maxAge);
              }
            }
          }
        };
        _proto.prune = function prune() {
          var _this3 = this;
          this[CACHE].forEach(function (value, key) {
            return _get(_this3, key, false);
          });
        };
        _createClass(LRUCache, [{
          key: "max",
          get: function get() {
            return this[MAX];
          },
          set: function set(mL) {
            if (typeof mL !== 'number' || mL < 0) throw new TypeError('max must be a non-negative number');
            this[MAX] = mL || Infinity;
            trim(this);
          }
        }, {
          key: "allowStale",
          get: function get() {
            return this[ALLOW_STALE];
          },
          set: function set(allowStale) {
            this[ALLOW_STALE] = !!allowStale;
          }
        }, {
          key: "maxAge",
          get: function get() {
            return this[MAX_AGE];
          },
          set: function set(mA) {
            if (typeof mA !== 'number') throw new TypeError('maxAge must be a non-negative number');
            this[MAX_AGE] = mA;
            trim(this);
          }
        }, {
          key: "lengthCalculator",
          get: function get() {
            return this[LENGTH_CALCULATOR];
          },
          set: function set(lC) {
            var _this4 = this;
            if (typeof lC !== 'function') lC = naiveLength;
            if (lC !== this[LENGTH_CALCULATOR]) {
              this[LENGTH_CALCULATOR] = lC;
              this[LENGTH] = 0;
              this[LRU_LIST].forEach(function (hit) {
                hit.length = _this4[LENGTH_CALCULATOR](hit.value, hit.key);
                _this4[LENGTH] += hit.length;
              });
            }
            trim(this);
          }
        }, {
          key: "length",
          get: function get() {
            return this[LENGTH];
          }
        }, {
          key: "itemCount",
          get: function get() {
            return this[LRU_LIST].length;
          }
        }]);
        return LRUCache;
      }();
      var _get = function _get(self, key, doUse) {
        var node = self[CACHE].get(key);
        if (node) {
          var hit = node.value;
          if (isStale(self, hit)) {
            _del(self, node);
            if (!self[ALLOW_STALE]) return undefined;
          } else {
            if (doUse) {
              if (self[UPDATE_AGE_ON_GET]) node.value.now = Date.now();
              self[LRU_LIST].unshiftNode(node);
            }
          }
          return hit.value;
        }
      };
      var isStale = function isStale(self, hit) {
        if (!hit || !hit.maxAge && !self[MAX_AGE]) return false;
        var diff = Date.now() - hit.now;
        return hit.maxAge ? diff > hit.maxAge : self[MAX_AGE] && diff > self[MAX_AGE];
      };
      var trim = function trim(self) {
        if (self[LENGTH] > self[MAX]) {
          for (var walker = self[LRU_LIST].tail; self[LENGTH] > self[MAX] && walker !== null;) {
            var prev = walker.prev;
            _del(self, walker);
            walker = prev;
          }
        }
      };
      var _del = function _del(self, node) {
        if (node) {
          var hit = node.value;
          if (self[DISPOSE]) self[DISPOSE](hit.key, hit.value);
          self[LENGTH] -= hit.length;
          self[CACHE]["delete"](hit.key);
          self[LRU_LIST].removeNode(node);
        }
      };
      var Entry = _createClass(function Entry(key, value, length, now, maxAge) {
        this.key = key;
        this.value = value;
        this.length = length;
        this.now = now;
        this.maxAge = maxAge || 0;
      });
      var forEachStep = function forEachStep(self, fn, node, thisp) {
        var hit = node.value;
        if (isStale(self, hit)) {
          _del(self, node);
          if (!self[ALLOW_STALE]) hit = undefined;
        }
        if (hit) fn.call(thisp, hit.value, hit.key, self);
      };
      lruCacheBABEL_8_BREAKINGFalse = LRUCache;
      return lruCacheBABEL_8_BREAKINGFalse;
    }
  
    function bool$5(value) {
      if (value == null) return false;
      return value && value !== "false" && value !== "0";
    }
    var lruCache = bool$5(browser$1$1.env["BABEL_8_BREAKING"]) ? requireLruCacheBABEL_8_BREAKINGTrue() : requireLruCacheBABEL_8_BREAKINGFalse();
  
    function bool$4(value) {
      if (value == null) return false;
      return value && value !== "false" && value !== "0";
    }
    var semver$a = bool$4(browser$1$1.env["BABEL_8_BREAKING"]) ? requireSemverBABEL_8_BREAKINGTrue() : requireSemver();
  
    var unreleasedLabels = {
      safari: "tp"
    };
    var browserNameMap = {
      and_chr: "chrome",
      and_ff: "firefox",
      android: "android",
      chrome: "chrome",
      edge: "edge",
      firefox: "firefox",
      ie: "ie",
      ie_mob: "ie",
      ios_saf: "ios",
      node: "node",
      deno: "deno",
      op_mob: "opera",
      opera: "opera",
      safari: "safari",
      samsung: "samsung"
    };
  
    var versionRegExp = /^(\d+|\d+.\d+)$/;
    var v$4 = new OptionValidator("@babel/helper-compilation-targets");
    function semverMin(first, second) {
      return first && semver$a.lt(first, second) ? first : second;
    }
    function semverify(version) {
      if (typeof version === "string" && semver$a.valid(version)) {
        return version;
      }
      v$4.invariant(typeof version === "number" || typeof version === "string" && versionRegExp.test(version), "'" + version + "' is not a valid version");
      version = version.toString();
      var pos = 0;
      var num = 0;
      while ((pos = version.indexOf(".", pos + 1)) > 0) {
        num++;
      }
      return version + ".0".repeat(2 - num);
    }
    function isUnreleasedVersion(version, env) {
      var unreleasedLabel = unreleasedLabels[env];
      return !!unreleasedLabel && unreleasedLabel === version.toString().toLowerCase();
    }
    function getLowestUnreleased(a, b, env) {
      var unreleasedLabel = unreleasedLabels[env];
      if (a === unreleasedLabel) {
        return b;
      }
      if (b === unreleasedLabel) {
        return a;
      }
      return semverMin(a, b);
    }
    function getHighestUnreleased(a, b, env) {
      return getLowestUnreleased(a, b, env) === a ? b : a;
    }
    function getLowestImplementedVersion(plugin, environment) {
      var result = plugin[environment];
      if (!result && environment === "android") {
        return plugin.chrome;
      }
      return result;
    }
  
    var TargetNames = {
      node: "node",
      deno: "deno",
      chrome: "chrome",
      opera: "opera",
      edge: "edge",
      firefox: "firefox",
      safari: "safari",
      ie: "ie",
      ios: "ios",
      android: "android",
      electron: "electron",
      samsung: "samsung",
      rhino: "rhino"
    };
  
    function prettifyVersion(version) {
      if (typeof version !== "string") {
        return version;
      }
      var _semver$parse = semver$a.parse(version),
        major = _semver$parse.major,
        minor = _semver$parse.minor,
        patch = _semver$parse.patch;
      var parts = [major];
      if (minor || patch) {
        parts.push(minor);
      }
      if (patch) {
        parts.push(patch);
      }
      return parts.join(".");
    }
    function prettifyTargets(targets) {
      return Object.keys(targets).reduce(function (results, target) {
        var value = targets[target];
        var unreleasedLabel = unreleasedLabels[target];
        if (typeof value === "string" && unreleasedLabel !== value) {
          value = prettifyVersion(value);
        }
        results[target] = value;
        return results;
      }, {});
    }
  
    function getInclusionReasons(item, targetVersions, list) {
      var minVersions = list[item] || {};
      return Object.keys(targetVersions).reduce(function (result, env) {
        var minVersion = getLowestImplementedVersion(minVersions, env);
        var targetVersion = targetVersions[env];
        if (!minVersion) {
          result[env] = prettifyVersion(targetVersion);
        } else {
          var minIsUnreleased = isUnreleasedVersion(minVersion, env);
          var targetIsUnreleased = isUnreleasedVersion(targetVersion, env);
          if (!targetIsUnreleased && (minIsUnreleased || semver$a.lt(targetVersion.toString(), semverify(minVersion)))) {
            result[env] = prettifyVersion(targetVersion);
          }
        }
        return result;
      }, {});
    }
  
    var require$$0$6 = {
        "transform-class-static-block": {
        chrome: "94",
        opera: "80",
        edge: "94",
        firefox: "93",
        node: "16.11",
        deno: "1.14",
        samsung: "17",
        electron: "15.0"
    },
        "proposal-class-static-block": {
        chrome: "94",
        opera: "80",
        edge: "94",
        firefox: "93",
        node: "16.11",
        deno: "1.14",
        samsung: "17",
        electron: "15.0"
    },
        "transform-private-property-in-object": {
        chrome: "91",
        opera: "77",
        edge: "91",
        firefox: "90",
        safari: "15",
        node: "16.9",
        deno: "1.9",
        ios: "15",
        samsung: "16",
        electron: "13.0"
    },
        "proposal-private-property-in-object": {
        chrome: "91",
        opera: "77",
        edge: "91",
        firefox: "90",
        safari: "15",
        node: "16.9",
        deno: "1.9",
        ios: "15",
        samsung: "16",
        electron: "13.0"
    },
        "transform-class-properties": {
        chrome: "74",
        opera: "62",
        edge: "79",
        firefox: "90",
        safari: "14.1",
        node: "12",
        deno: "1",
        ios: "15",
        samsung: "11",
        electron: "6.0"
    },
        "proposal-class-properties": {
        chrome: "74",
        opera: "62",
        edge: "79",
        firefox: "90",
        safari: "14.1",
        node: "12",
        deno: "1",
        ios: "15",
        samsung: "11",
        electron: "6.0"
    },
        "transform-private-methods": {
        chrome: "84",
        opera: "70",
        edge: "84",
        firefox: "90",
        safari: "15",
        node: "14.6",
        deno: "1",
        ios: "15",
        samsung: "14",
        electron: "10.0"
    },
        "proposal-private-methods": {
        chrome: "84",
        opera: "70",
        edge: "84",
        firefox: "90",
        safari: "15",
        node: "14.6",
        deno: "1",
        ios: "15",
        samsung: "14",
        electron: "10.0"
    },
        "transform-numeric-separator": {
        chrome: "75",
        opera: "62",
        edge: "79",
        firefox: "70",
        safari: "13",
        node: "12.5",
        deno: "1",
        ios: "13",
        samsung: "11",
        rhino: "1.7.14",
        electron: "6.0"
    },
        "proposal-numeric-separator": {
        chrome: "75",
        opera: "62",
        edge: "79",
        firefox: "70",
        safari: "13",
        node: "12.5",
        deno: "1",
        ios: "13",
        samsung: "11",
        rhino: "1.7.14",
        electron: "6.0"
    },
        "transform-logical-assignment-operators": {
        chrome: "85",
        opera: "71",
        edge: "85",
        firefox: "79",
        safari: "14",
        node: "15",
        deno: "1.2",
        ios: "14",
        samsung: "14",
        electron: "10.0"
    },
        "proposal-logical-assignment-operators": {
        chrome: "85",
        opera: "71",
        edge: "85",
        firefox: "79",
        safari: "14",
        node: "15",
        deno: "1.2",
        ios: "14",
        samsung: "14",
        electron: "10.0"
    },
        "transform-nullish-coalescing-operator": {
        chrome: "80",
        opera: "67",
        edge: "80",
        firefox: "72",
        safari: "13.1",
        node: "14",
        deno: "1",
        ios: "13.4",
        samsung: "13",
        electron: "8.0"
    },
        "proposal-nullish-coalescing-operator": {
        chrome: "80",
        opera: "67",
        edge: "80",
        firefox: "72",
        safari: "13.1",
        node: "14",
        deno: "1",
        ios: "13.4",
        samsung: "13",
        electron: "8.0"
    },
        "transform-optional-chaining": {
        chrome: "91",
        opera: "77",
        edge: "91",
        firefox: "74",
        safari: "13.1",
        node: "16.9",
        deno: "1.9",
        ios: "13.4",
        samsung: "16",
        electron: "13.0"
    },
        "proposal-optional-chaining": {
        chrome: "91",
        opera: "77",
        edge: "91",
        firefox: "74",
        safari: "13.1",
        node: "16.9",
        deno: "1.9",
        ios: "13.4",
        samsung: "16",
        electron: "13.0"
    },
        "transform-json-strings": {
        chrome: "66",
        opera: "53",
        edge: "79",
        firefox: "62",
        safari: "12",
        node: "10",
        deno: "1",
        ios: "12",
        samsung: "9",
        rhino: "1.7.14",
        electron: "3.0"
    },
        "proposal-json-strings": {
        chrome: "66",
        opera: "53",
        edge: "79",
        firefox: "62",
        safari: "12",
        node: "10",
        deno: "1",
        ios: "12",
        samsung: "9",
        rhino: "1.7.14",
        electron: "3.0"
    },
        "transform-optional-catch-binding": {
        chrome: "66",
        opera: "53",
        edge: "79",
        firefox: "58",
        safari: "11.1",
        node: "10",
        deno: "1",
        ios: "11.3",
        samsung: "9",
        electron: "3.0"
    },
        "proposal-optional-catch-binding": {
        chrome: "66",
        opera: "53",
        edge: "79",
        firefox: "58",
        safari: "11.1",
        node: "10",
        deno: "1",
        ios: "11.3",
        samsung: "9",
        electron: "3.0"
    },
        "transform-parameters": {
        chrome: "49",
        opera: "36",
        edge: "18",
        firefox: "53",
        node: "6",
        deno: "1",
        samsung: "5",
        electron: "0.37"
    },
        "transform-async-generator-functions": {
        chrome: "63",
        opera: "50",
        edge: "79",
        firefox: "57",
        safari: "12",
        node: "10",
        deno: "1",
        ios: "12",
        samsung: "8",
        electron: "3.0"
    },
        "proposal-async-generator-functions": {
        chrome: "63",
        opera: "50",
        edge: "79",
        firefox: "57",
        safari: "12",
        node: "10",
        deno: "1",
        ios: "12",
        samsung: "8",
        electron: "3.0"
    },
        "transform-object-rest-spread": {
        chrome: "60",
        opera: "47",
        edge: "79",
        firefox: "55",
        safari: "11.1",
        node: "8.3",
        deno: "1",
        ios: "11.3",
        samsung: "8",
        electron: "2.0"
    },
        "proposal-object-rest-spread": {
        chrome: "60",
        opera: "47",
        edge: "79",
        firefox: "55",
        safari: "11.1",
        node: "8.3",
        deno: "1",
        ios: "11.3",
        samsung: "8",
        electron: "2.0"
    },
        "transform-dotall-regex": {
        chrome: "62",
        opera: "49",
        edge: "79",
        firefox: "78",
        safari: "11.1",
        node: "8.10",
        deno: "1",
        ios: "11.3",
        samsung: "8",
        electron: "3.0"
    },
        "transform-unicode-property-regex": {
        chrome: "64",
        opera: "51",
        edge: "79",
        firefox: "78",
        safari: "11.1",
        node: "10",
        deno: "1",
        ios: "11.3",
        samsung: "9",
        electron: "3.0"
    },
        "proposal-unicode-property-regex": {
        chrome: "64",
        opera: "51",
        edge: "79",
        firefox: "78",
        safari: "11.1",
        node: "10",
        deno: "1",
        ios: "11.3",
        samsung: "9",
        electron: "3.0"
    },
        "transform-named-capturing-groups-regex": {
        chrome: "64",
        opera: "51",
        edge: "79",
        firefox: "78",
        safari: "11.1",
        node: "10",
        deno: "1",
        ios: "11.3",
        samsung: "9",
        electron: "3.0"
    },
        "transform-async-to-generator": {
        chrome: "55",
        opera: "42",
        edge: "15",
        firefox: "52",
        safari: "11",
        node: "7.6",
        deno: "1",
        ios: "11",
        samsung: "6",
        electron: "1.6"
    },
        "transform-exponentiation-operator": {
        chrome: "52",
        opera: "39",
        edge: "14",
        firefox: "52",
        safari: "10.1",
        node: "7",
        deno: "1",
        ios: "10.3",
        samsung: "6",
        rhino: "1.7.14",
        electron: "1.3"
    },
        "transform-template-literals": {
        chrome: "41",
        opera: "28",
        edge: "13",
        firefox: "34",
        safari: "13",
        node: "4",
        deno: "1",
        ios: "13",
        samsung: "3.4",
        electron: "0.21"
    },
        "transform-literals": {
        chrome: "44",
        opera: "31",
        edge: "12",
        firefox: "53",
        safari: "9",
        node: "4",
        deno: "1",
        ios: "9",
        samsung: "4",
        electron: "0.30"
    },
        "transform-function-name": {
        chrome: "51",
        opera: "38",
        edge: "79",
        firefox: "53",
        safari: "10",
        node: "6.5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.2"
    },
        "transform-arrow-functions": {
        chrome: "47",
        opera: "34",
        edge: "13",
        firefox: "43",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        rhino: "1.7.13",
        electron: "0.36"
    },
        "transform-block-scoped-functions": {
        chrome: "41",
        opera: "28",
        edge: "12",
        firefox: "46",
        safari: "10",
        node: "4",
        deno: "1",
        ie: "11",
        ios: "10",
        samsung: "3.4",
        electron: "0.21"
    },
        "transform-classes": {
        chrome: "46",
        opera: "33",
        edge: "13",
        firefox: "45",
        safari: "10",
        node: "5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "0.36"
    },
        "transform-object-super": {
        chrome: "46",
        opera: "33",
        edge: "13",
        firefox: "45",
        safari: "10",
        node: "5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "0.36"
    },
        "transform-shorthand-properties": {
        chrome: "43",
        opera: "30",
        edge: "12",
        firefox: "33",
        safari: "9",
        node: "4",
        deno: "1",
        ios: "9",
        samsung: "4",
        rhino: "1.7.14",
        electron: "0.27"
    },
        "transform-duplicate-keys": {
        chrome: "42",
        opera: "29",
        edge: "12",
        firefox: "34",
        safari: "9",
        node: "4",
        deno: "1",
        ios: "9",
        samsung: "3.4",
        electron: "0.25"
    },
        "transform-computed-properties": {
        chrome: "44",
        opera: "31",
        edge: "12",
        firefox: "34",
        safari: "7.1",
        node: "4",
        deno: "1",
        ios: "8",
        samsung: "4",
        electron: "0.30"
    },
        "transform-for-of": {
        chrome: "51",
        opera: "38",
        edge: "15",
        firefox: "53",
        safari: "10",
        node: "6.5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.2"
    },
        "transform-sticky-regex": {
        chrome: "49",
        opera: "36",
        edge: "13",
        firefox: "3",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "0.37"
    },
        "transform-unicode-escapes": {
        chrome: "44",
        opera: "31",
        edge: "12",
        firefox: "53",
        safari: "9",
        node: "4",
        deno: "1",
        ios: "9",
        samsung: "4",
        electron: "0.30"
    },
        "transform-unicode-regex": {
        chrome: "50",
        opera: "37",
        edge: "13",
        firefox: "46",
        safari: "12",
        node: "6",
        deno: "1",
        ios: "12",
        samsung: "5",
        electron: "1.1"
    },
        "transform-spread": {
        chrome: "46",
        opera: "33",
        edge: "13",
        firefox: "45",
        safari: "10",
        node: "5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "0.36"
    },
        "transform-destructuring": {
        chrome: "51",
        opera: "38",
        edge: "15",
        firefox: "53",
        safari: "10",
        node: "6.5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.2"
    },
        "transform-block-scoping": {
        chrome: "49",
        opera: "36",
        edge: "14",
        firefox: "51",
        safari: "11",
        node: "6",
        deno: "1",
        ios: "11",
        samsung: "5",
        electron: "0.37"
    },
        "transform-typeof-symbol": {
        chrome: "38",
        opera: "25",
        edge: "12",
        firefox: "36",
        safari: "9",
        node: "0.12",
        deno: "1",
        ios: "9",
        samsung: "3",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "transform-new-target": {
        chrome: "46",
        opera: "33",
        edge: "14",
        firefox: "41",
        safari: "10",
        node: "5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "0.36"
    },
        "transform-regenerator": {
        chrome: "50",
        opera: "37",
        edge: "13",
        firefox: "53",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.1"
    },
        "transform-member-expression-literals": {
        chrome: "7",
        opera: "12",
        edge: "12",
        firefox: "2",
        safari: "5.1",
        node: "0.4",
        deno: "1",
        ie: "9",
        android: "4",
        ios: "6",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "transform-property-literals": {
        chrome: "7",
        opera: "12",
        edge: "12",
        firefox: "2",
        safari: "5.1",
        node: "0.4",
        deno: "1",
        ie: "9",
        android: "4",
        ios: "6",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "transform-reserved-words": {
        chrome: "13",
        opera: "10.50",
        edge: "12",
        firefox: "2",
        safari: "3.1",
        node: "0.6",
        deno: "1",
        ie: "9",
        android: "4.4",
        ios: "6",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "transform-export-namespace-from": {
        chrome: "72",
        and_chr: "72",
        edge: "79",
        firefox: "80",
        and_ff: "80",
        node: "13.2",
        opera: "60",
        op_mob: "51",
        samsung: "11.0",
        android: "72",
        electron: "5.0"
    },
        "proposal-export-namespace-from": {
        chrome: "72",
        and_chr: "72",
        edge: "79",
        firefox: "80",
        and_ff: "80",
        node: "13.2",
        opera: "60",
        op_mob: "51",
        samsung: "11.0",
        android: "72",
        electron: "5.0"
    }
    };
  
    var plugins$1 = require$$0$6;
  
    function targetsSupported(target, support) {
      var targetEnvironments = Object.keys(target);
      if (targetEnvironments.length === 0) {
        return false;
      }
      var unsupportedEnvironments = targetEnvironments.filter(function (environment) {
        var lowestImplementedVersion = getLowestImplementedVersion(support, environment);
        if (!lowestImplementedVersion) {
          return true;
        }
        var lowestTargetedVersion = target[environment];
        if (isUnreleasedVersion(lowestTargetedVersion, environment)) {
          return false;
        }
        if (isUnreleasedVersion(lowestImplementedVersion, environment)) {
          return true;
        }
        if (!semver$a.valid(lowestTargetedVersion.toString())) {
          throw new Error("Invalid version passed for target \"" + environment + "\": \"" + lowestTargetedVersion + "\". " + "Versions must be in semver format (major.minor.patch)");
        }
        return semver$a.gt(semverify(lowestImplementedVersion), lowestTargetedVersion.toString());
      });
      return unsupportedEnvironments.length === 0;
    }
    function isRequired(name, targets, _temp) {
      var _ref = _temp === void 0 ? {} : _temp,
        _ref$compatData = _ref.compatData,
        compatData = _ref$compatData === void 0 ? plugins$1 : _ref$compatData,
        includes = _ref.includes,
        excludes = _ref.excludes;
      if (excludes != null && excludes.has(name)) return false;
      if (includes != null && includes.has(name)) return true;
      return !targetsSupported(targets, compatData[name]);
    }
    function filterItems(list, includes, excludes, targets, defaultIncludes, defaultExcludes, pluginSyntaxMap) {
      var result = new Set();
      var options = {
        compatData: list,
        includes: includes,
        excludes: excludes
      };
      for (var item in list) {
        if (isRequired(item, targets, options)) {
          result.add(item);
        } else if (pluginSyntaxMap) {
          var shippedProposalsSyntax = pluginSyntaxMap.get(item);
          if (shippedProposalsSyntax) {
            result.add(shippedProposalsSyntax);
          }
        }
      }
      if (defaultIncludes) {
        defaultIncludes.forEach(function (item) {
          return !excludes.has(item) && result.add(item);
        });
      }
      if (defaultExcludes) {
        defaultExcludes.forEach(function (item) {
          return !includes.has(item) && result["delete"](item);
        });
      }
      return result;
    }
  
    var ESM_SUPPORT = nativeModules["es6.module"];
    var v$3 = new OptionValidator("@babel/helper-compilation-targets");
    function validateTargetNames(targets) {
      var validTargets = Object.keys(TargetNames);
      for (var _i = 0, _Object$keys = Object.keys(targets); _i < _Object$keys.length; _i++) {
        var target = _Object$keys[_i];
        if (!(target in TargetNames)) {
          throw new Error(v$3.formatMessage("'" + target + "' is not a valid target\n- Did you mean '" + findSuggestion(target, validTargets) + "'?"));
        }
      }
      return targets;
    }
    function isBrowsersQueryValid(browsers) {
      return typeof browsers === "string" || Array.isArray(browsers) && browsers.every(function (b) {
        return typeof b === "string";
      });
    }
    function validateBrowsers(browsers) {
      v$3.invariant(browsers === undefined || isBrowsersQueryValid(browsers), "'" + String(browsers) + "' is not a valid browserslist query");
      return browsers;
    }
    function getLowestVersions(browsers) {
      return browsers.reduce(function (all, browser) {
        var _ref = browser.split(" "),
          _ref2 = _slicedToArray(_ref, 2),
          browserName = _ref2[0],
          browserVersion = _ref2[1];
        var target = browserNameMap[browserName];
        if (!target) {
          return all;
        }
        try {
          var splitVersion = browserVersion.split("-")[0].toLowerCase();
          var isSplitUnreleased = isUnreleasedVersion(splitVersion, target);
          if (!all[target]) {
            all[target] = isSplitUnreleased ? splitVersion : semverify(splitVersion);
            return all;
          }
          var version = all[target];
          var isUnreleased = isUnreleasedVersion(version, target);
          if (isUnreleased && isSplitUnreleased) {
            all[target] = getLowestUnreleased(version, splitVersion, target);
          } else if (isUnreleased) {
            all[target] = semverify(splitVersion);
          } else if (!isUnreleased && !isSplitUnreleased) {
            var parsedBrowserVersion = semverify(splitVersion);
            all[target] = semverMin(version, parsedBrowserVersion);
          }
        } catch (e) {}
        return all;
      }, {});
    }
    function outputDecimalWarning(decimalTargets) {
      if (!decimalTargets.length) {
        return;
      }
      console.warn("Warning, the following targets are using a decimal version:\n");
      decimalTargets.forEach(function (_ref3) {
        var target = _ref3.target,
          value = _ref3.value;
        return console.warn("  " + target + ": " + value);
      });
      console.warn("\nWe recommend using a string for minor/patch versions to avoid numbers like 6.10\ngetting parsed as 6.1, which can lead to unexpected behavior.\n");
    }
    function semverifyTarget(target, value) {
      try {
        return semverify(value);
      } catch (error) {
        throw new Error(v$3.formatMessage("'" + value + "' is not a valid value for 'targets." + target + "'."));
      }
    }
    function nodeTargetParser(value) {
      var parsed = value === true || value === "current" ? browser$1$1.versions.node : semverifyTarget("node", value);
      return ["node", parsed];
    }
    function defaultTargetParser(target, value) {
      var version = isUnreleasedVersion(value, target) ? value.toLowerCase() : semverifyTarget(target, value);
      return [target, version];
    }
    function generateTargets(inputTargets) {
      var input = Object.assign({}, inputTargets);
      delete input.esmodules;
      delete input.browsers;
      return input;
    }
    function resolveTargets$1(queries, env) {
      var resolved = browserslist_1(queries, {
        mobileToDesktop: true,
        env: env
      });
      return getLowestVersions(resolved);
    }
    var targetsCache = new lruCache({
      max: 64
    });
    function resolveTargetsCached(queries, env) {
      var cacheKey = typeof queries === "string" ? queries : queries.join() + env;
      var cached = targetsCache.get(cacheKey);
      if (!cached) {
        cached = resolveTargets$1(queries, env);
        targetsCache.set(cacheKey, cached);
      }
      return Object.assign({}, cached);
    }
    function getTargets$2(inputTargets, options) {
      var _browsers, _browsers2;
      if (inputTargets === void 0) {
        inputTargets = {};
      }
      if (options === void 0) {
        options = {};
      }
      var _inputTargets = inputTargets,
        browsers = _inputTargets.browsers,
        esmodules = _inputTargets.esmodules;
      var _options = options,
        _options$configPath = _options.configPath,
        configPath = _options$configPath === void 0 ? "." : _options$configPath;
      validateBrowsers(browsers);
      var input = generateTargets(inputTargets);
      var targets = validateTargetNames(input);
      var shouldParseBrowsers = !!browsers;
      var hasTargets = shouldParseBrowsers || Object.keys(targets).length > 0;
      var shouldSearchForConfig = !options.ignoreBrowserslistConfig && !hasTargets;
      if (!browsers && shouldSearchForConfig) {
        browsers = browserslist_1.loadConfig({
          config: options.configFile,
          path: configPath,
          env: options.browserslistEnv
        });
        if (browsers == null) {
          {
            browsers = [];
          }
        }
      }
      if (esmodules && (esmodules !== "intersect" || !((_browsers = browsers) != null && _browsers.length))) {
        browsers = Object.keys(ESM_SUPPORT).map(function (browser) {
          return browser + " >= " + ESM_SUPPORT[browser];
        }).join(", ");
        esmodules = false;
      }
      if ((_browsers2 = browsers) != null && _browsers2.length) {
        var queryBrowsers = resolveTargetsCached(browsers, options.browserslistEnv);
        if (esmodules === "intersect") {
          for (var _i2 = 0, _arr = Object.keys(queryBrowsers); _i2 < _arr.length; _i2++) {
            var browser = _arr[_i2];
            var version = queryBrowsers[browser];
            var esmSupportVersion = ESM_SUPPORT[browser];
            if (esmSupportVersion) {
              queryBrowsers[browser] = getHighestUnreleased(version, semverify(esmSupportVersion), browser);
            } else {
              delete queryBrowsers[browser];
            }
          }
        }
        targets = Object.assign(queryBrowsers, targets);
      }
      var result = {};
      var decimalWarnings = [];
      for (var _i3 = 0, _arr2 = Object.keys(targets).sort(); _i3 < _arr2.length; _i3++) {
        var target = _arr2[_i3];
        var value = targets[target];
        if (typeof value === "number" && value % 1 !== 0) {
          decimalWarnings.push({
            target: target,
            value: value
          });
        }
        var _ref4 = target === "node" ? nodeTargetParser(value) : defaultTargetParser(target, value),
          _ref5 = _slicedToArray(_ref4, 2),
          parsedTarget = _ref5[0],
          parsedValue = _ref5[1];
        if (parsedValue) {
          result[parsedTarget] = parsedValue;
        }
      }
      outputDecimalWarning(decimalWarnings);
      return result;
    }
  
    function resolveBrowserslistConfigFile(browserslistConfigFile, configFilePath) {
      return undefined;
    }
    function resolveTargets(options, root) {
      var optTargets = options.targets;
      var targets;
      if (typeof optTargets === "string" || Array.isArray(optTargets)) {
        targets = {
          browsers: optTargets
        };
      } else if (optTargets) {
        if ("esmodules" in optTargets) {
          targets = Object.assign({}, optTargets, {
            esmodules: "intersect"
          });
        } else {
          targets = optTargets;
        }
      }
      return getTargets$2(targets, {
        ignoreBrowserslistConfig: true,
        browserslistEnv: options.browserslistEnv
      });
    }
  
    var _marked$6 = _regeneratorRuntime().mark(handlerOf),
      _marked2$4 = _regeneratorRuntime().mark(createPresetDescriptors),
      _marked3$2 = _regeneratorRuntime().mark(createPluginDescriptors),
      _marked4$1 = _regeneratorRuntime().mark(createDescriptors);
    function isEqualDescriptor(a, b) {
      return a.name === b.name && a.value === b.value && a.options === b.options && a.dirname === b.dirname && a.alias === b.alias && a.ownPass === b.ownPass && (a.file && a.file.request) === (b.file && b.file.request) && (a.file && a.file.resolved) === (b.file && b.file.resolved);
    }
    function handlerOf(value) {
      return _regeneratorRuntime().wrap(function handlerOf$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            return _context.abrupt("return", value);
          case 1:
          case "end":
            return _context.stop();
        }
      }, _marked$6);
    }
    function optionsWithResolvedBrowserslistConfigFile(options, dirname) {
      if (typeof options.browserslistConfigFile === "string") {
        options.browserslistConfigFile = resolveBrowserslistConfigFile(options.browserslistConfigFile);
      }
      return options;
    }
    function createCachedDescriptors(dirname, options, alias) {
      var plugins = options.plugins,
        presets = options.presets,
        passPerPreset = options.passPerPreset;
      return {
        options: optionsWithResolvedBrowserslistConfigFile(options),
        plugins: plugins ? function () {
          return createCachedPluginDescriptors(plugins, dirname)(alias);
        } : function () {
          return handlerOf([]);
        },
        presets: presets ? function () {
          return createCachedPresetDescriptors(presets, dirname)(alias)(!!passPerPreset);
        } : function () {
          return handlerOf([]);
        }
      };
    }
    function createUncachedDescriptors(dirname, options, alias) {
      return {
        options: optionsWithResolvedBrowserslistConfigFile(options),
        plugins: once(function () {
          return createPluginDescriptors(options.plugins || [], dirname, alias);
        }),
        presets: once(function () {
          return createPresetDescriptors(options.presets || [], dirname, alias, !!options.passPerPreset);
        })
      };
    }
    var PRESET_DESCRIPTOR_CACHE = new WeakMap();
    var createCachedPresetDescriptors = makeWeakCacheSync(function (items, cache) {
      var dirname = cache.using(function (dir) {
        return dir;
      });
      return makeStrongCacheSync(function (alias) {
        return makeStrongCache(_regeneratorRuntime().mark(function _callee(passPerPreset) {
          var descriptors;
          return _regeneratorRuntime().wrap(function _callee$(_context2) {
            while (1) switch (_context2.prev = _context2.next) {
              case 0:
                return _context2.delegateYield(createPresetDescriptors(items, dirname, alias, passPerPreset), "t0", 1);
              case 1:
                descriptors = _context2.t0;
                return _context2.abrupt("return", descriptors.map(function (desc) {
                  return loadCachedDescriptor(PRESET_DESCRIPTOR_CACHE, desc);
                }));
              case 3:
              case "end":
                return _context2.stop();
            }
          }, _callee);
        }));
      });
    });
    var PLUGIN_DESCRIPTOR_CACHE = new WeakMap();
    var createCachedPluginDescriptors = makeWeakCacheSync(function (items, cache) {
      var dirname = cache.using(function (dir) {
        return dir;
      });
      return makeStrongCache(_regeneratorRuntime().mark(function _callee2(alias) {
        var descriptors;
        return _regeneratorRuntime().wrap(function _callee2$(_context3) {
          while (1) switch (_context3.prev = _context3.next) {
            case 0:
              return _context3.delegateYield(createPluginDescriptors(items, dirname, alias), "t0", 1);
            case 1:
              descriptors = _context3.t0;
              return _context3.abrupt("return", descriptors.map(function (desc) {
                return loadCachedDescriptor(PLUGIN_DESCRIPTOR_CACHE, desc);
              }));
            case 3:
            case "end":
              return _context3.stop();
          }
        }, _callee2);
      }));
    });
    var DEFAULT_OPTIONS = {};
    function loadCachedDescriptor(cache, desc) {
      var value = desc.value,
        _desc$options = desc.options,
        options = _desc$options === void 0 ? DEFAULT_OPTIONS : _desc$options;
      if (options === false) return desc;
      var cacheByOptions = cache.get(value);
      if (!cacheByOptions) {
        cacheByOptions = new WeakMap();
        cache.set(value, cacheByOptions);
      }
      var possibilities = cacheByOptions.get(options);
      if (!possibilities) {
        possibilities = [];
        cacheByOptions.set(options, possibilities);
      }
      if (possibilities.indexOf(desc) === -1) {
        var matches = possibilities.filter(function (possibility) {
          return isEqualDescriptor(possibility, desc);
        });
        if (matches.length > 0) {
          return matches[0];
        }
        possibilities.push(desc);
      }
      return desc;
    }
    function createPresetDescriptors(items, dirname, alias, passPerPreset) {
      return _regeneratorRuntime().wrap(function createPresetDescriptors$(_context4) {
        while (1) switch (_context4.prev = _context4.next) {
          case 0:
            return _context4.delegateYield(createDescriptors("preset", items, dirname, alias, passPerPreset), "t0", 1);
          case 1:
            return _context4.abrupt("return", _context4.t0);
          case 2:
          case "end":
            return _context4.stop();
        }
      }, _marked2$4);
    }
    function createPluginDescriptors(items, dirname, alias) {
      return _regeneratorRuntime().wrap(function createPluginDescriptors$(_context5) {
        while (1) switch (_context5.prev = _context5.next) {
          case 0:
            return _context5.delegateYield(createDescriptors("plugin", items, dirname, alias), "t0", 1);
          case 1:
            return _context5.abrupt("return", _context5.t0);
          case 2:
          case "end":
            return _context5.stop();
        }
      }, _marked3$2);
    }
    function createDescriptors(type, items, dirname, alias, ownPass) {
      var descriptors;
      return _regeneratorRuntime().wrap(function createDescriptors$(_context6) {
        while (1) switch (_context6.prev = _context6.next) {
          case 0:
            return _context6.delegateYield(gensync.all(items.map(function (item, index) {
              return createDescriptor(item, dirname, {
                type: type,
                alias: alias + "$" + index,
                ownPass: !!ownPass
              });
            })), "t0", 1);
          case 1:
            descriptors = _context6.t0;
            assertNoDuplicates(descriptors);
            return _context6.abrupt("return", descriptors);
          case 4:
          case "end":
            return _context6.stop();
        }
      }, _marked4$1);
    }
    function createDescriptor(pair, dirname, _ref) {
      var type = _ref.type,
        alias = _ref.alias,
        ownPass = _ref.ownPass;
      return _regeneratorRuntime().mark(function _callee3() {
        var desc, name, options, value, _value, _value2, _value3, _value4, file, filepath, resolver, request, _yield$resolver;
        return _regeneratorRuntime().wrap(function _callee3$(_context7) {
          while (1) switch (_context7.prev = _context7.next) {
            case 0:
              desc = getItemDescriptor(pair);
              if (!desc) {
                _context7.next = 3;
                break;
              }
              return _context7.abrupt("return", desc);
            case 3:
              value = pair;
              if (Array.isArray(value)) {
                if (value.length === 3) {
                  _value = value;
                  _value2 = _slicedToArray(_value, 3);
                  value = _value2[0];
                  options = _value2[1];
                  name = _value2[2];
                } else {
                  _value3 = value;
                  _value4 = _slicedToArray(_value3, 2);
                  value = _value4[0];
                  options = _value4[1];
                }
              }
              file = undefined;
              filepath = null;
              if (!(typeof value === "string")) {
                _context7.next = 17;
                break;
              }
              if (!(typeof type !== "string")) {
                _context7.next = 10;
                break;
              }
              throw new Error("To resolve a string-based item, the type of item must be given");
            case 10:
              resolver = type === "plugin" ? loadPlugin : loadPreset;
              request = value;
              return _context7.delegateYield(resolver(value, dirname), "t0", 13);
            case 13:
              _yield$resolver = _context7.t0;
              filepath = _yield$resolver.filepath;
              value = _yield$resolver.value;
              file = {
                request: request,
                resolved: filepath
              };
            case 17:
              if (value) {
                _context7.next = 19;
                break;
              }
              throw new Error("Unexpected falsy value: " + String(value));
            case 19:
              if (!(typeof value === "object" && value.__esModule)) {
                _context7.next = 25;
                break;
              }
              if (!value["default"]) {
                _context7.next = 24;
                break;
              }
              value = value["default"];
              _context7.next = 25;
              break;
            case 24:
              throw new Error("Must export a default export when using ES6 modules.");
            case 25:
              if (!(typeof value !== "object" && typeof value !== "function")) {
                _context7.next = 27;
                break;
              }
              throw new Error("Unsupported format: " + typeof value + ". Expected an object or a function.");
            case 27:
              if (!(filepath !== null && typeof value === "object" && value)) {
                _context7.next = 29;
                break;
              }
              throw new Error("Plugin/Preset files are not allowed to export objects, only functions. In " + filepath);
            case 29:
              return _context7.abrupt("return", {
                name: name,
                alias: filepath || alias,
                value: value,
                options: options,
                dirname: dirname,
                ownPass: ownPass,
                file: file
              });
            case 30:
            case "end":
              return _context7.stop();
          }
        }, _callee3);
      })();
    }
    function assertNoDuplicates(items) {
      var map = new Map();
      var _loop = function _loop() {
        var item = _step.value;
        if (typeof item.value !== "function") return "continue";
        var nameMap = map.get(item.value);
        if (!nameMap) {
          nameMap = new Set();
          map.set(item.value, nameMap);
        }
        if (nameMap.has(item.name)) {
          var conflicts = items.filter(function (i) {
            return i.value === item.value;
          });
          throw new Error(["Duplicate plugin/preset detected.", "If you'd like to use two separate instances of a plugin,", "they need separate names, e.g.", "", "  plugins: [", "    ['some-plugin', {}],", "    ['some-plugin', {}, 'some unique name'],", "  ]", "", "Duplicates detected are:", "" + JSON.stringify(conflicts, null, 2)].join("\n"));
        }
        nameMap.add(item.name);
      };
      for (var _iterator = _createForOfIteratorHelperLoose(items), _step; !(_step = _iterator()).done;) {
        var _ret = _loop();
        if (_ret === "continue") continue;
      }
    }
  
    function createItemFromDescriptor(desc) {
      return new ConfigItem(desc);
    }
    function createConfigItem$1(value, _temp) {
      var _ref = _temp === void 0 ? {} : _temp,
        _ref$dirname = _ref.dirname,
        dirname = _ref$dirname === void 0 ? "." : _ref$dirname,
        type = _ref.type;
      return _regeneratorRuntime().mark(function _callee() {
        var descriptor;
        return _regeneratorRuntime().wrap(function _callee$(_context) {
          while (1) switch (_context.prev = _context.next) {
            case 0:
              return _context.delegateYield(createDescriptor(value, path$1.resolve(dirname), {
                type: type,
                alias: "programmatic item"
              }), "t0", 1);
            case 1:
              descriptor = _context.t0;
              return _context.abrupt("return", createItemFromDescriptor(descriptor));
            case 3:
            case "end":
              return _context.stop();
          }
        }, _callee);
      })();
    }
    var CONFIG_ITEM_BRAND = Symbol["for"]("@babel/core@7 - ConfigItem");
    function getItemDescriptor(item) {
      if (item != null && item[CONFIG_ITEM_BRAND]) {
        return item._descriptor;
      }
      return undefined;
    }
    var ConfigItem = _createClass(function ConfigItem(descriptor) {
      this._descriptor = void 0;
      this[CONFIG_ITEM_BRAND] = true;
      this.value = void 0;
      this.options = void 0;
      this.dirname = void 0;
      this.name = void 0;
      this.file = void 0;
      this._descriptor = descriptor;
      Object.defineProperty(this, "_descriptor", {
        enumerable: false
      });
      Object.defineProperty(this, CONFIG_ITEM_BRAND, {
        enumerable: false
      });
      this.value = this._descriptor.value;
      this.options = this._descriptor.options;
      this.dirname = this._descriptor.dirname;
      this.name = this._descriptor.name;
      this.file = this._descriptor.file ? {
        request: this._descriptor.file.request,
        resolved: this._descriptor.file.resolved
      } : undefined;
      Object.freeze(this);
    });
    Object.freeze(ConfigItem.prototype);
  
    var removed = {
      auxiliaryComment: {
        message: "Use `auxiliaryCommentBefore` or `auxiliaryCommentAfter`"
      },
      blacklist: {
        message: "Put the specific transforms you want in the `plugins` option"
      },
      breakConfig: {
        message: "This is not a necessary option in Babel 6"
      },
      experimental: {
        message: "Put the specific transforms you want in the `plugins` option"
      },
      externalHelpers: {
        message: "Use the `external-helpers` plugin instead. " + "Check out http://babeljs.io/docs/plugins/external-helpers/"
      },
      extra: {
        message: ""
      },
      jsxPragma: {
        message: "use the `pragma` option in the `react-jsx` plugin. " + "Check out http://babeljs.io/docs/plugins/transform-react-jsx/"
      },
      loose: {
        message: "Specify the `loose` option for the relevant plugin you are using " + "or use a preset that sets the option."
      },
      metadataUsedHelpers: {
        message: "Not required anymore as this is enabled by default"
      },
      modules: {
        message: "Use the corresponding module transform plugin in the `plugins` option. " + "Check out http://babeljs.io/docs/plugins/#modules"
      },
      nonStandard: {
        message: "Use the `react-jsx` and `flow-strip-types` plugins to support JSX and Flow. " + "Also check out the react preset http://babeljs.io/docs/plugins/preset-react/"
      },
      optional: {
        message: "Put the specific transforms you want in the `plugins` option"
      },
      sourceMapName: {
        message: "The `sourceMapName` option has been removed because it makes more sense for the " + "tooling that calls Babel to assign `map.file` themselves."
      },
      stage: {
        message: "Check out the corresponding stage-x presets http://babeljs.io/docs/plugins/#presets"
      },
      whitelist: {
        message: "Put the specific transforms you want in the `plugins` option"
      },
      resolveModuleSource: {
        version: 6,
        message: "Use `babel-plugin-module-resolver@3`'s 'resolvePath' options"
      },
      metadata: {
        version: 6,
        message: "Generated plugin metadata is always included in the output result"
      },
      sourceMapTarget: {
        version: 6,
        message: "The `sourceMapTarget` option has been removed because it makes more sense for the tooling " + "that calls Babel to assign `map.file` themselves."
      }
    };
  
    function msg(loc) {
      switch (loc.type) {
        case "root":
          return "";
        case "env":
          return msg(loc.parent) + ".env[\"" + loc.name + "\"]";
        case "overrides":
          return msg(loc.parent) + ".overrides[" + loc.index + "]";
        case "option":
          return msg(loc.parent) + "." + loc.name;
        case "access":
          return msg(loc.parent) + "[" + JSON.stringify(loc.name) + "]";
        default:
          throw new Error("Assertion failure: Unknown type " + loc.type);
      }
    }
    function access(loc, name) {
      return {
        type: "access",
        name: name,
        parent: loc
      };
    }
    function assertRootMode(loc, value) {
      if (value !== undefined && value !== "root" && value !== "upward" && value !== "upward-optional") {
        throw new Error(msg(loc) + " must be a \"root\", \"upward\", \"upward-optional\" or undefined");
      }
      return value;
    }
    function assertSourceMaps(loc, value) {
      if (value !== undefined && typeof value !== "boolean" && value !== "inline" && value !== "both") {
        throw new Error(msg(loc) + " must be a boolean, \"inline\", \"both\", or undefined");
      }
      return value;
    }
    function assertCompact(loc, value) {
      if (value !== undefined && typeof value !== "boolean" && value !== "auto") {
        throw new Error(msg(loc) + " must be a boolean, \"auto\", or undefined");
      }
      return value;
    }
    function assertSourceType(loc, value) {
      if (value !== undefined && value !== "module" && value !== "script" && value !== "unambiguous") {
        throw new Error(msg(loc) + " must be \"module\", \"script\", \"unambiguous\", or undefined");
      }
      return value;
    }
    function assertCallerMetadata(loc, value) {
      var obj = assertObject(loc, value);
      if (obj) {
        if (typeof obj.name !== "string") {
          throw new Error(msg(loc) + " set but does not contain \"name\" property string");
        }
        for (var _i = 0, _Object$keys = Object.keys(obj); _i < _Object$keys.length; _i++) {
          var prop = _Object$keys[_i];
          var propLoc = access(loc, prop);
          var _value = obj[prop];
          if (_value != null && typeof _value !== "boolean" && typeof _value !== "string" && typeof _value !== "number") {
            throw new Error(msg(propLoc) + " must be null, undefined, a boolean, a string, or a number.");
          }
        }
      }
      return value;
    }
    function assertInputSourceMap(loc, value) {
      if (value !== undefined && typeof value !== "boolean" && (typeof value !== "object" || !value)) {
        throw new Error(msg(loc) + " must be a boolean, object, or undefined");
      }
      return value;
    }
    function assertString(loc, value) {
      if (value !== undefined && typeof value !== "string") {
        throw new Error(msg(loc) + " must be a string, or undefined");
      }
      return value;
    }
    function assertFunction(loc, value) {
      if (value !== undefined && typeof value !== "function") {
        throw new Error(msg(loc) + " must be a function, or undefined");
      }
      return value;
    }
    function assertBoolean(loc, value) {
      if (value !== undefined && typeof value !== "boolean") {
        throw new Error(msg(loc) + " must be a boolean, or undefined");
      }
      return value;
    }
    function assertObject(loc, value) {
      if (value !== undefined && (typeof value !== "object" || Array.isArray(value) || !value)) {
        throw new Error(msg(loc) + " must be an object, or undefined");
      }
      return value;
    }
    function assertArray(loc, value) {
      if (value != null && !Array.isArray(value)) {
        throw new Error(msg(loc) + " must be an array, or undefined");
      }
      return value;
    }
    function assertIgnoreList(loc, value) {
      var arr = assertArray(loc, value);
      if (arr) {
        arr.forEach(function (item, i) {
          return assertIgnoreItem(access(loc, i), item);
        });
      }
      return arr;
    }
    function assertIgnoreItem(loc, value) {
      if (typeof value !== "string" && typeof value !== "function" && !(value instanceof RegExp)) {
        throw new Error(msg(loc) + " must be an array of string/Function/RegExp values, or undefined");
      }
      return value;
    }
    function assertConfigApplicableTest(loc, value) {
      if (value === undefined) {
        return value;
      }
      if (Array.isArray(value)) {
        value.forEach(function (item, i) {
          if (!checkValidTest(item)) {
            throw new Error(msg(access(loc, i)) + " must be a string/Function/RegExp.");
          }
        });
      } else if (!checkValidTest(value)) {
        throw new Error(msg(loc) + " must be a string/Function/RegExp, or an array of those");
      }
      return value;
    }
    function checkValidTest(value) {
      return typeof value === "string" || typeof value === "function" || value instanceof RegExp;
    }
    function assertConfigFileSearch(loc, value) {
      if (value !== undefined && typeof value !== "boolean" && typeof value !== "string") {
        throw new Error(msg(loc) + " must be a undefined, a boolean, a string, " + ("got " + JSON.stringify(value)));
      }
      return value;
    }
    function assertBabelrcSearch(loc, value) {
      if (value === undefined || typeof value === "boolean") {
        return value;
      }
      if (Array.isArray(value)) {
        value.forEach(function (item, i) {
          if (!checkValidTest(item)) {
            throw new Error(msg(access(loc, i)) + " must be a string/Function/RegExp.");
          }
        });
      } else if (!checkValidTest(value)) {
        throw new Error(msg(loc) + " must be a undefined, a boolean, a string/Function/RegExp " + ("or an array of those, got " + JSON.stringify(value)));
      }
      return value;
    }
    function assertPluginList(loc, value) {
      var arr = assertArray(loc, value);
      if (arr) {
        arr.forEach(function (item, i) {
          return assertPluginItem(access(loc, i), item);
        });
      }
      return arr;
    }
    function assertPluginItem(loc, value) {
      if (Array.isArray(value)) {
        if (value.length === 0) {
          throw new Error(msg(loc) + " must include an object");
        }
        if (value.length > 3) {
          throw new Error(msg(loc) + " may only be a two-tuple or three-tuple");
        }
        assertPluginTarget(access(loc, 0), value[0]);
        if (value.length > 1) {
          var opts = value[1];
          if (opts !== undefined && opts !== false && (typeof opts !== "object" || Array.isArray(opts) || opts === null)) {
            throw new Error(msg(access(loc, 1)) + " must be an object, false, or undefined");
          }
        }
        if (value.length === 3) {
          var _name = value[2];
          if (_name !== undefined && typeof _name !== "string") {
            throw new Error(msg(access(loc, 2)) + " must be a string, or undefined");
          }
        }
      } else {
        assertPluginTarget(loc, value);
      }
      return value;
    }
    function assertPluginTarget(loc, value) {
      if ((typeof value !== "object" || !value) && typeof value !== "string" && typeof value !== "function") {
        throw new Error(msg(loc) + " must be a string, object, function");
      }
      return value;
    }
    function assertTargets(loc, value) {
      if (isBrowsersQueryValid(value)) return value;
      if (typeof value !== "object" || !value || Array.isArray(value)) {
        throw new Error(msg(loc) + " must be a string, an array of strings or an object");
      }
      var browsersLoc = access(loc, "browsers");
      var esmodulesLoc = access(loc, "esmodules");
      assertBrowsersList(browsersLoc, value.browsers);
      assertBoolean(esmodulesLoc, value.esmodules);
      for (var _i2 = 0, _Object$keys2 = Object.keys(value); _i2 < _Object$keys2.length; _i2++) {
        var _key = _Object$keys2[_i2];
        var val = value[_key];
        var subLoc = access(loc, _key);
        if (_key === "esmodules") assertBoolean(subLoc, val);else if (_key === "browsers") assertBrowsersList(subLoc, val);else if (!Object.hasOwnProperty.call(TargetNames, _key)) {
          var validTargets = Object.keys(TargetNames).join(", ");
          throw new Error(msg(subLoc) + " is not a valid target. Supported targets are " + validTargets);
        } else assertBrowserVersion(subLoc, val);
      }
      return value;
    }
    function assertBrowsersList(loc, value) {
      if (value !== undefined && !isBrowsersQueryValid(value)) {
        throw new Error(msg(loc) + " must be undefined, a string or an array of strings");
      }
    }
    function assertBrowserVersion(loc, value) {
      if (typeof value === "number" && Math.round(value) === value) return;
      if (typeof value === "string") return;
      throw new Error(msg(loc) + " must be a string or an integer number");
    }
    function assertAssumptions(loc, value) {
      if (value === undefined) return;
      if (typeof value !== "object" || value === null) {
        throw new Error(msg(loc) + " must be an object or undefined.");
      }
      var root = loc;
      do {
        root = root.parent;
      } while (root.type !== "root");
      var inPreset = root.source === "preset";
      for (var _i3 = 0, _Object$keys3 = Object.keys(value); _i3 < _Object$keys3.length; _i3++) {
        var _name2 = _Object$keys3[_i3];
        var subLoc = access(loc, _name2);
        if (!assumptionsNames.has(_name2)) {
          throw new Error(msg(subLoc) + " is not a supported assumption.");
        }
        if (typeof value[_name2] !== "boolean") {
          throw new Error(msg(subLoc) + " must be a boolean.");
        }
        if (inPreset && value[_name2] === false) {
          throw new Error(msg(subLoc) + " cannot be set to 'false' inside presets.");
        }
      }
      return value;
    }
  
    var ErrorToString = Function.call.bind(Error.prototype.toString);
    var SUPPORTED = !!Error.captureStackTrace;
    var START_HIDING = "startHiding - secret - don't use this - v1";
    var STOP_HIDING = "stopHiding - secret - don't use this - v1";
    var expectedErrors = new WeakSet();
    var virtualFrames = new WeakMap();
    function CallSite(filename) {
      return Object.create({
        isNative: function isNative() {
          return false;
        },
        isConstructor: function isConstructor() {
          return false;
        },
        isToplevel: function isToplevel() {
          return true;
        },
        getFileName: function getFileName() {
          return filename;
        },
        getLineNumber: function getLineNumber() {
          return undefined;
        },
        getColumnNumber: function getColumnNumber() {
          return undefined;
        },
        getFunctionName: function getFunctionName() {
          return undefined;
        },
        getMethodName: function getMethodName() {
          return undefined;
        },
        getTypeName: function getTypeName() {
          return undefined;
        },
        toString: function toString() {
          return filename;
        }
      });
    }
    function injectVirtualStackFrame(error, filename) {
      if (!SUPPORTED) return;
      var frames = virtualFrames.get(error);
      if (!frames) virtualFrames.set(error, frames = []);
      frames.push(CallSite(filename));
      return error;
    }
    function expectedError(error) {
      if (!SUPPORTED) return;
      expectedErrors.add(error);
      return error;
    }
    function beginHiddenCallStack(fn) {
      if (!SUPPORTED) return fn;
      return Object.defineProperty(function () {
        setupPrepareStackTrace();
        return fn.apply(void 0, arguments);
      }, "name", {
        value: STOP_HIDING
      });
    }
    function endHiddenCallStack(fn) {
      if (!SUPPORTED) return fn;
      return Object.defineProperty(function () {
        return fn.apply(void 0, arguments);
      }, "name", {
        value: START_HIDING
      });
    }
    function setupPrepareStackTrace() {
      setupPrepareStackTrace = function setupPrepareStackTrace() {};
      var _Error$prepareStackTr = Error.prepareStackTrace,
        prepareStackTrace = _Error$prepareStackTr === void 0 ? defaultPrepareStackTrace : _Error$prepareStackTr;
      var MIN_STACK_TRACE_LIMIT = 50;
      Error.stackTraceLimit && (Error.stackTraceLimit = Math.max(Error.stackTraceLimit, MIN_STACK_TRACE_LIMIT));
      Error.prepareStackTrace = function stackTraceRewriter(err, trace) {
        var newTrace = [];
        var isExpected = expectedErrors.has(err);
        var status = isExpected ? "hiding" : "unknown";
        for (var i = 0; i < trace.length; i++) {
          var name = trace[i].getFunctionName();
          if (name === START_HIDING) {
            status = "hiding";
          } else if (name === STOP_HIDING) {
            if (status === "hiding") {
              status = "showing";
              if (virtualFrames.has(err)) {
                var _newTrace;
                (_newTrace = newTrace).unshift.apply(_newTrace, _toConsumableArray(virtualFrames.get(err)));
              }
            } else if (status === "unknown") {
              newTrace = trace;
              break;
            }
          } else if (status !== "hiding") {
            newTrace.push(trace[i]);
          }
        }
        return prepareStackTrace(err, newTrace);
      };
    }
    function defaultPrepareStackTrace(err, trace) {
      if (trace.length === 0) return ErrorToString(err);
      return ErrorToString(err) + "\n    at " + trace.join("\n    at ");
    }
  
    var ConfigError = function (_Error) {
      _inherits(ConfigError, _Error);
      function ConfigError(message, filename) {
        var _this;
        _this = _Error.call(this, message) || this;
        expectedError(_assertThisInitialized(_this));
        if (filename) injectVirtualStackFrame(_assertThisInitialized(_this), filename);
        return _this;
      }
      return _createClass(ConfigError);
    }(_wrapNativeSuper(Error));
  
    var ROOT_VALIDATORS = {
      cwd: assertString,
      root: assertString,
      rootMode: assertRootMode,
      configFile: assertConfigFileSearch,
      caller: assertCallerMetadata,
      filename: assertString,
      filenameRelative: assertString,
      code: assertBoolean,
      ast: assertBoolean,
      cloneInputAst: assertBoolean,
      envName: assertString
    };
    var BABELRC_VALIDATORS = {
      babelrc: assertBoolean,
      babelrcRoots: assertBabelrcSearch
    };
    var NONPRESET_VALIDATORS = {
      "extends": assertString,
      ignore: assertIgnoreList,
      only: assertIgnoreList,
      targets: assertTargets,
      browserslistConfigFile: assertConfigFileSearch,
      browserslistEnv: assertString
    };
    var COMMON_VALIDATORS = {
      inputSourceMap: assertInputSourceMap,
      presets: assertPluginList,
      plugins: assertPluginList,
      passPerPreset: assertBoolean,
      assumptions: assertAssumptions,
      env: assertEnvSet,
      overrides: assertOverridesList,
      test: assertConfigApplicableTest,
      include: assertConfigApplicableTest,
      exclude: assertConfigApplicableTest,
      retainLines: assertBoolean,
      comments: assertBoolean,
      shouldPrintComment: assertFunction,
      compact: assertCompact,
      minified: assertBoolean,
      auxiliaryCommentBefore: assertString,
      auxiliaryCommentAfter: assertString,
      sourceType: assertSourceType,
      wrapPluginVisitorMethod: assertFunction,
      highlightCode: assertBoolean,
      sourceMaps: assertSourceMaps,
      sourceMap: assertSourceMaps,
      sourceFileName: assertString,
      sourceRoot: assertString,
      parserOpts: assertObject,
      generatorOpts: assertObject
    };
    {
      Object.assign(COMMON_VALIDATORS, {
        getModuleId: assertFunction,
        moduleRoot: assertString,
        moduleIds: assertBoolean,
        moduleId: assertString
      });
    }
    var knownAssumptions = ["arrayLikeIsIterable", "constantReexports", "constantSuper", "enumerableModuleMeta", "ignoreFunctionLength", "ignoreToPrimitiveHint", "iterableIsArray", "mutableTemplateObject", "noClassCalls", "noDocumentAll", "noIncompleteNsImportDetection", "noNewArrows", "objectRestNoSymbols", "privateFieldsAsSymbols", "privateFieldsAsProperties", "pureGetters", "setClassMethods", "setComputedProperties", "setPublicClassFields", "setSpreadProperties", "skipForOfIteratorClosing", "superIsCallableConstructor"];
    var assumptionsNames = new Set(knownAssumptions);
    function getSource(loc) {
      return loc.type === "root" ? loc.source : getSource(loc.parent);
    }
    function validate(type, opts, filename) {
      try {
        return validateNested({
          type: "root",
          source: type
        }, opts);
      } catch (error) {
        var configError = new ConfigError(error.message, filename);
        if (error.code) configError.code = error.code;
        throw configError;
      }
    }
    function validateNested(loc, opts) {
      var type = getSource(loc);
      assertNoDuplicateSourcemap(opts);
      Object.keys(opts).forEach(function (key) {
        var optLoc = {
          type: "option",
          name: key,
          parent: loc
        };
        if (type === "preset" && NONPRESET_VALIDATORS[key]) {
          throw new Error(msg(optLoc) + " is not allowed in preset options");
        }
        if (type !== "arguments" && ROOT_VALIDATORS[key]) {
          throw new Error(msg(optLoc) + " is only allowed in root programmatic options");
        }
        if (type !== "arguments" && type !== "configfile" && BABELRC_VALIDATORS[key]) {
          if (type === "babelrcfile" || type === "extendsfile") {
            throw new Error(msg(optLoc) + " is not allowed in .babelrc or \"extends\"ed files, only in root programmatic options, " + "or babel.config.js/config file options");
          }
          throw new Error(msg(optLoc) + " is only allowed in root programmatic options, or babel.config.js/config file options");
        }
        var validator = COMMON_VALIDATORS[key] || NONPRESET_VALIDATORS[key] || BABELRC_VALIDATORS[key] || ROOT_VALIDATORS[key] || throwUnknownError;
        validator(optLoc, opts[key]);
      });
      return opts;
    }
    function throwUnknownError(loc) {
      var key = loc.name;
      if (removed[key]) {
        var _removed$key = removed[key],
          message = _removed$key.message,
          _removed$key$version = _removed$key.version,
          version = _removed$key$version === void 0 ? 5 : _removed$key$version;
        throw new Error("Using removed Babel " + version + " option: " + msg(loc) + " - " + message);
      } else {
        var unknownOptErr = new Error("Unknown option: " + msg(loc) + ". Check out https://babeljs.io/docs/en/babel-core/#options for more information about options.");
        unknownOptErr.code = "BABEL_UNKNOWN_OPTION";
        throw unknownOptErr;
      }
    }
    function has$7(obj, key) {
      return Object.prototype.hasOwnProperty.call(obj, key);
    }
    function assertNoDuplicateSourcemap(opts) {
      if (has$7(opts, "sourceMap") && has$7(opts, "sourceMaps")) {
        throw new Error(".sourceMap is an alias for .sourceMaps, cannot use both");
      }
    }
    function assertEnvSet(loc, value) {
      if (loc.parent.type === "env") {
        throw new Error(msg(loc) + " is not allowed inside of another .env block");
      }
      var parent = loc.parent;
      var obj = assertObject(loc, value);
      if (obj) {
        for (var _i = 0, _Object$keys = Object.keys(obj); _i < _Object$keys.length; _i++) {
          var envName = _Object$keys[_i];
          var env = assertObject(access(loc, envName), obj[envName]);
          if (!env) continue;
          var envLoc = {
            type: "env",
            name: envName,
            parent: parent
          };
          validateNested(envLoc, env);
        }
      }
      return obj;
    }
    function assertOverridesList(loc, value) {
      if (loc.parent.type === "env") {
        throw new Error(msg(loc) + " is not allowed inside an .env block");
      }
      if (loc.parent.type === "overrides") {
        throw new Error(msg(loc) + " is not allowed inside an .overrides block");
      }
      var parent = loc.parent;
      var arr = assertArray(loc, value);
      if (arr) {
        for (var _iterator = _createForOfIteratorHelperLoose(arr.entries()), _step; !(_step = _iterator()).done;) {
          var _step$value = _slicedToArray(_step.value, 2),
            index = _step$value[0],
            item = _step$value[1];
          var objLoc = access(loc, index);
          var env = assertObject(objLoc, item);
          if (!env) throw new Error(msg(objLoc) + " must be an object");
          var overridesLoc = {
            type: "overrides",
            index: index,
            parent: parent
          };
          validateNested(overridesLoc, env);
        }
      }
      return arr;
    }
    function checkNoUnwrappedItemOptionPairs(items, index, type, e) {
      if (index === 0) return;
      var lastItem = items[index - 1];
      var thisItem = items[index];
      if (lastItem.file && lastItem.options === undefined && typeof thisItem.value === "object") {
        e.message += "\n- Maybe you meant to use\n" + ("\"" + type + "s\": [\n  [\"" + lastItem.file.request + "\", " + JSON.stringify(thisItem.value, undefined, 2) + "]\n]\n") + ("To be a valid " + type + ", its name and options should be wrapped in a pair of brackets");
      }
    }
  
    var sep = "\\" + path$1.sep;
    var endSep = "(?:" + sep + "|$)";
    var substitution = "[^" + sep + "]+";
    var starPat = "(?:" + substitution + sep + ")";
    var starPatLast = "(?:" + substitution + endSep + ")";
    var starStarPat = starPat + "*?";
    var starStarPatLast = starPat + "*?" + starPatLast + "?";
    function escapeRegExp(string) {
      return string.replace(/[|\\{}()[\]^$+*?.]/g, "\\$&");
    }
    function pathToPattern(pattern, dirname) {
      var parts = path$1.resolve(dirname, pattern).split(path$1.sep);
      return new RegExp(["^"].concat(_toConsumableArray(parts.map(function (part, i) {
        var last = i === parts.length - 1;
        if (part === "**") return last ? starStarPatLast : starStarPat;
        if (part === "*") return last ? starPatLast : starPat;
        if (part.indexOf("*.") === 0) {
          return substitution + escapeRegExp(part.slice(1)) + (last ? endSep : sep);
        }
        return escapeRegExp(part) + (last ? endSep : sep);
      }))).join(""));
    }
  
    var ChainFormatter = {
      Programmatic: 0,
      Config: 1
    };
    var Formatter = {
      title: function title(type, callerName, filepath) {
        var title = "";
        if (type === ChainFormatter.Programmatic) {
          title = "programmatic options";
          if (callerName) {
            title += " from " + callerName;
          }
        } else {
          title = "config " + filepath;
        }
        return title;
      },
      loc: function loc(index, envName) {
        var loc = "";
        if (index != null) {
          loc += ".overrides[" + index + "]";
        }
        if (envName != null) {
          loc += ".env[\"" + envName + "\"]";
        }
        return loc;
      },
      optionsAndDescriptors: _regeneratorRuntime().mark(function optionsAndDescriptors(opt) {
        var content, pluginDescriptors, presetDescriptors;
        return _regeneratorRuntime().wrap(function optionsAndDescriptors$(_context) {
          while (1) switch (_context.prev = _context.next) {
            case 0:
              content = Object.assign({}, opt.options);
              delete content.overrides;
              delete content.env;
              _context.t0 = _toConsumableArray;
              return _context.delegateYield(opt.plugins(), "t1", 5);
            case 5:
              _context.t2 = _context.t1;
              pluginDescriptors = (0, _context.t0)(_context.t2);
              if (pluginDescriptors.length) {
                content.plugins = pluginDescriptors.map(function (d) {
                  return descriptorToConfig(d);
                });
              }
              _context.t3 = _toConsumableArray;
              return _context.delegateYield(opt.presets(), "t4", 10);
            case 10:
              _context.t5 = _context.t4;
              presetDescriptors = (0, _context.t3)(_context.t5);
              if (presetDescriptors.length) {
                content.presets = _toConsumableArray(presetDescriptors).map(function (d) {
                  return descriptorToConfig(d);
                });
              }
              return _context.abrupt("return", JSON.stringify(content, undefined, 2));
            case 14:
            case "end":
              return _context.stop();
          }
        }, optionsAndDescriptors);
      })
    };
    function descriptorToConfig(d) {
      var _d$file;
      var name = (_d$file = d.file) == null ? void 0 : _d$file.request;
      if (name == null) {
        if (typeof d.value === "object") {
          name = d.value;
        } else if (typeof d.value === "function") {
          name = "[Function: " + d.value.toString().slice(0, 50) + " ... ]";
        }
      }
      if (name == null) {
        name = "[Unknown]";
      }
      if (d.options === undefined) {
        return name;
      } else if (d.name == null) {
        return [name, d.options];
      } else {
        return [name, d.options, d.name];
      }
    }
    var ConfigPrinter = function () {
      function ConfigPrinter() {
        this._stack = [];
      }
      var _proto = ConfigPrinter.prototype;
      _proto.configure = function configure(enabled, type, _ref) {
        var _this = this;
        var callerName = _ref.callerName,
          filepath = _ref.filepath;
        if (!enabled) return function () {};
        return function (content, index, envName) {
          _this._stack.push({
            type: type,
            callerName: callerName,
            filepath: filepath,
            content: content,
            index: index,
            envName: envName
          });
        };
      };
      ConfigPrinter.format = _regeneratorRuntime().mark(function format(config) {
        var title, loc, content;
        return _regeneratorRuntime().wrap(function format$(_context2) {
          while (1) switch (_context2.prev = _context2.next) {
            case 0:
              title = Formatter.title(config.type, config.callerName, config.filepath);
              loc = Formatter.loc(config.index, config.envName);
              if (loc) title += " " + loc;
              return _context2.delegateYield(Formatter.optionsAndDescriptors(config.content), "t0", 4);
            case 4:
              content = _context2.t0;
              return _context2.abrupt("return", title + "\n" + content);
            case 6:
            case "end":
              return _context2.stop();
          }
        }, format);
      });
      _proto.output = _regeneratorRuntime().mark(function output() {
        var configs;
        return _regeneratorRuntime().wrap(function output$(_context3) {
          while (1) switch (_context3.prev = _context3.next) {
            case 0:
              if (!(this._stack.length === 0)) {
                _context3.next = 2;
                break;
              }
              return _context3.abrupt("return", "");
            case 2:
              return _context3.delegateYield(gensync.all(this._stack.map(function (s) {
                return ConfigPrinter.format(s);
              })), "t0", 3);
            case 3:
              configs = _context3.t0;
              return _context3.abrupt("return", configs.join("\n\n"));
            case 5:
            case "end":
              return _context3.stop();
          }
        }, output, this);
      });
      return _createClass(ConfigPrinter);
    }();
  
    var _marked$5 = _regeneratorRuntime().mark(buildPresetChain),
      _marked2$3 = _regeneratorRuntime().mark(buildRootChain),
      _marked3$1 = _regeneratorRuntime().mark(loadFileChain),
      _marked4 = _regeneratorRuntime().mark(mergeExtendsChain);
    var debug$1 = buildDebug("babel:config:config-chain");
    function buildPresetChain(arg, context) {
      var chain;
      return _regeneratorRuntime().wrap(function buildPresetChain$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            return _context.delegateYield(buildPresetChainWalker(arg, context), "t0", 1);
          case 1:
            chain = _context.t0;
            if (chain) {
              _context.next = 4;
              break;
            }
            return _context.abrupt("return", null);
          case 4:
            return _context.abrupt("return", {
              plugins: dedupDescriptors(chain.plugins),
              presets: dedupDescriptors(chain.presets),
              options: chain.options.map(function (o) {
                return normalizeOptions$5(o);
              }),
              files: new Set()
            });
          case 5:
          case "end":
            return _context.stop();
        }
      }, _marked$5);
    }
    var buildPresetChainWalker = makeChainWalker({
      root: function root(preset) {
        return loadPresetDescriptors(preset);
      },
      env: function env(preset, envName) {
        return loadPresetEnvDescriptors(preset)(envName);
      },
      overrides: function overrides(preset, index) {
        return loadPresetOverridesDescriptors(preset)(index);
      },
      overridesEnv: function overridesEnv(preset, index, envName) {
        return loadPresetOverridesEnvDescriptors(preset)(index)(envName);
      },
      createLogger: function createLogger() {
        return function () {};
      }
    });
    var loadPresetDescriptors = makeWeakCacheSync(function (preset) {
      return buildRootDescriptors(preset, preset.alias, createUncachedDescriptors);
    });
    var loadPresetEnvDescriptors = makeWeakCacheSync(function (preset) {
      return makeStrongCacheSync(function (envName) {
        return buildEnvDescriptors(preset, preset.alias, createUncachedDescriptors, envName);
      });
    });
    var loadPresetOverridesDescriptors = makeWeakCacheSync(function (preset) {
      return makeStrongCacheSync(function (index) {
        return buildOverrideDescriptors(preset, preset.alias, createUncachedDescriptors, index);
      });
    });
    var loadPresetOverridesEnvDescriptors = makeWeakCacheSync(function (preset) {
      return makeStrongCacheSync(function (index) {
        return makeStrongCacheSync(function (envName) {
          return buildOverrideEnvDescriptors(preset, preset.alias, createUncachedDescriptors, index, envName);
        });
      });
    });
    function buildRootChain(opts, context) {
      var configReport, babelRcReport, programmaticLogger, programmaticChain, programmaticReport, configFile, babelrc, babelrcRoots, babelrcRootsDirectory, configFileChain, configFileLogger, validatedFile, result, ignoreFile, babelrcFile, isIgnored, fileChain, pkgData, _yield$findRelativeCo, _validatedFile, babelrcLogger, _result, chain;
      return _regeneratorRuntime().wrap(function buildRootChain$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            programmaticLogger = new ConfigPrinter();
            return _context2.delegateYield(loadProgrammaticChain({
              options: opts,
              dirname: context.cwd
            }, context, undefined, programmaticLogger), "t0", 2);
          case 2:
            programmaticChain = _context2.t0;
            if (programmaticChain) {
              _context2.next = 5;
              break;
            }
            return _context2.abrupt("return", null);
          case 5:
            return _context2.delegateYield(programmaticLogger.output(), "t1", 6);
          case 6:
            programmaticReport = _context2.t1;
            if (!(typeof opts.configFile === "string")) {
              _context2.next = 12;
              break;
            }
            return _context2.delegateYield(loadConfig$1(opts.configFile, context.cwd, context.envName, context.caller), "t2", 9);
          case 9:
            configFile = _context2.t2;
            _context2.next = 15;
            break;
          case 12:
            if (!(opts.configFile !== false)) {
              _context2.next = 15;
              break;
            }
            return _context2.delegateYield(findRootConfig(context.root, context.envName, context.caller), "t3", 14);
          case 14:
            configFile = _context2.t3;
          case 15:
            babelrc = opts.babelrc, babelrcRoots = opts.babelrcRoots;
            babelrcRootsDirectory = context.cwd;
            configFileChain = emptyChain();
            configFileLogger = new ConfigPrinter();
            if (!configFile) {
              _context2.next = 30;
              break;
            }
            validatedFile = validateConfigFile(configFile);
            return _context2.delegateYield(loadFileChain(validatedFile, context, undefined, configFileLogger), "t4", 22);
          case 22:
            result = _context2.t4;
            if (result) {
              _context2.next = 25;
              break;
            }
            return _context2.abrupt("return", null);
          case 25:
            return _context2.delegateYield(configFileLogger.output(), "t5", 26);
          case 26:
            configReport = _context2.t5;
            if (babelrc === undefined) {
              babelrc = validatedFile.options.babelrc;
            }
            if (babelrcRoots === undefined) {
              babelrcRootsDirectory = validatedFile.dirname;
              babelrcRoots = validatedFile.options.babelrcRoots;
            }
            mergeChain(configFileChain, result);
          case 30:
            isIgnored = false;
            fileChain = emptyChain();
            if (!((babelrc === true || babelrc === undefined) && typeof context.filename === "string")) {
              _context2.next = 55;
              break;
            }
            return _context2.delegateYield(findPackageData(context.filename), "t6", 34);
          case 34:
            pkgData = _context2.t6;
            if (!(pkgData && babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory))) {
              _context2.next = 55;
              break;
            }
            return _context2.delegateYield(findRelativeConfig(pkgData, context.envName, context.caller), "t7", 37);
          case 37:
            _yield$findRelativeCo = _context2.t7;
            ignoreFile = _yield$findRelativeCo.ignore;
            babelrcFile = _yield$findRelativeCo.config;
            if (ignoreFile) {
              fileChain.files.add(ignoreFile.filepath);
            }
            if (ignoreFile && shouldIgnore(context, ignoreFile.ignore, null, ignoreFile.dirname)) {
              isIgnored = true;
            }
            if (!(babelrcFile && !isIgnored)) {
              _context2.next = 54;
              break;
            }
            _validatedFile = validateBabelrcFile(babelrcFile);
            babelrcLogger = new ConfigPrinter();
            return _context2.delegateYield(loadFileChain(_validatedFile, context, undefined, babelrcLogger), "t8", 46);
          case 46:
            _result = _context2.t8;
            if (_result) {
              _context2.next = 51;
              break;
            }
            isIgnored = true;
            _context2.next = 54;
            break;
          case 51:
            return _context2.delegateYield(babelrcLogger.output(), "t9", 52);
          case 52:
            babelRcReport = _context2.t9;
            mergeChain(fileChain, _result);
          case 54:
            if (babelrcFile && isIgnored) {
              fileChain.files.add(babelrcFile.filepath);
            }
          case 55:
            if (context.showConfig) {
              console.log("Babel configs on \"" + context.filename + "\" (ascending priority):\n" + [configReport, babelRcReport, programmaticReport].filter(function (x) {
                return !!x;
              }).join("\n\n") + "\n-----End Babel configs-----");
            }
            chain = mergeChain(mergeChain(mergeChain(emptyChain(), configFileChain), fileChain), programmaticChain);
            return _context2.abrupt("return", {
              plugins: isIgnored ? [] : dedupDescriptors(chain.plugins),
              presets: isIgnored ? [] : dedupDescriptors(chain.presets),
              options: isIgnored ? [] : chain.options.map(function (o) {
                return normalizeOptions$5(o);
              }),
              fileHandling: isIgnored ? "ignored" : "transpile",
              ignore: ignoreFile || undefined,
              babelrc: babelrcFile || undefined,
              config: configFile || undefined,
              files: chain.files
            });
          case 58:
          case "end":
            return _context2.stop();
        }
      }, _marked2$3);
    }
    function babelrcLoadEnabled(context, pkgData, babelrcRoots, babelrcRootsDirectory) {
      if (typeof babelrcRoots === "boolean") return babelrcRoots;
      var absoluteRoot = context.root;
      if (babelrcRoots === undefined) {
        return pkgData.directories.indexOf(absoluteRoot) !== -1;
      }
      var babelrcPatterns = babelrcRoots;
      if (!Array.isArray(babelrcPatterns)) {
        babelrcPatterns = [babelrcPatterns];
      }
      babelrcPatterns = babelrcPatterns.map(function (pat) {
        return typeof pat === "string" ? path$1.resolve(babelrcRootsDirectory, pat) : pat;
      });
      if (babelrcPatterns.length === 1 && babelrcPatterns[0] === absoluteRoot) {
        return pkgData.directories.indexOf(absoluteRoot) !== -1;
      }
      return babelrcPatterns.some(function (pat) {
        if (typeof pat === "string") {
          pat = pathToPattern(pat, babelrcRootsDirectory);
        }
        return pkgData.directories.some(function (directory) {
          return matchPattern(pat, babelrcRootsDirectory, directory, context);
        });
      });
    }
    var validateConfigFile = makeWeakCacheSync(function (file) {
      return {
        filepath: file.filepath,
        dirname: file.dirname,
        options: validate("configfile", file.options, file.filepath)
      };
    });
    var validateBabelrcFile = makeWeakCacheSync(function (file) {
      return {
        filepath: file.filepath,
        dirname: file.dirname,
        options: validate("babelrcfile", file.options, file.filepath)
      };
    });
    var validateExtendFile = makeWeakCacheSync(function (file) {
      return {
        filepath: file.filepath,
        dirname: file.dirname,
        options: validate("extendsfile", file.options, file.filepath)
      };
    });
    var loadProgrammaticChain = makeChainWalker({
      root: function root(input) {
        return buildRootDescriptors(input, "base", createCachedDescriptors);
      },
      env: function env(input, envName) {
        return buildEnvDescriptors(input, "base", createCachedDescriptors, envName);
      },
      overrides: function overrides(input, index) {
        return buildOverrideDescriptors(input, "base", createCachedDescriptors, index);
      },
      overridesEnv: function overridesEnv(input, index, envName) {
        return buildOverrideEnvDescriptors(input, "base", createCachedDescriptors, index, envName);
      },
      createLogger: function createLogger(input, context, baseLogger) {
        return buildProgrammaticLogger(input, context, baseLogger);
      }
    });
    var loadFileChainWalker = makeChainWalker({
      root: function root(file) {
        return loadFileDescriptors(file);
      },
      env: function env(file, envName) {
        return loadFileEnvDescriptors(file)(envName);
      },
      overrides: function overrides(file, index) {
        return loadFileOverridesDescriptors(file)(index);
      },
      overridesEnv: function overridesEnv(file, index, envName) {
        return loadFileOverridesEnvDescriptors(file)(index)(envName);
      },
      createLogger: function createLogger(file, context, baseLogger) {
        return buildFileLogger(file.filepath, context, baseLogger);
      }
    });
    function loadFileChain(input, context, files, baseLogger) {
      var chain;
      return _regeneratorRuntime().wrap(function loadFileChain$(_context3) {
        while (1) switch (_context3.prev = _context3.next) {
          case 0:
            return _context3.delegateYield(loadFileChainWalker(input, context, files, baseLogger), "t0", 1);
          case 1:
            chain = _context3.t0;
            if (chain) {
              chain.files.add(input.filepath);
            }
            return _context3.abrupt("return", chain);
          case 4:
          case "end":
            return _context3.stop();
        }
      }, _marked3$1);
    }
    var loadFileDescriptors = makeWeakCacheSync(function (file) {
      return buildRootDescriptors(file, file.filepath, createUncachedDescriptors);
    });
    var loadFileEnvDescriptors = makeWeakCacheSync(function (file) {
      return makeStrongCacheSync(function (envName) {
        return buildEnvDescriptors(file, file.filepath, createUncachedDescriptors, envName);
      });
    });
    var loadFileOverridesDescriptors = makeWeakCacheSync(function (file) {
      return makeStrongCacheSync(function (index) {
        return buildOverrideDescriptors(file, file.filepath, createUncachedDescriptors, index);
      });
    });
    var loadFileOverridesEnvDescriptors = makeWeakCacheSync(function (file) {
      return makeStrongCacheSync(function (index) {
        return makeStrongCacheSync(function (envName) {
          return buildOverrideEnvDescriptors(file, file.filepath, createUncachedDescriptors, index, envName);
        });
      });
    });
    function buildFileLogger(filepath, context, baseLogger) {
      if (!baseLogger) {
        return function () {};
      }
      return baseLogger.configure(context.showConfig, ChainFormatter.Config, {
        filepath: filepath
      });
    }
    function buildRootDescriptors(_ref, alias, descriptors) {
      var dirname = _ref.dirname,
        options = _ref.options;
      return descriptors(dirname, options, alias);
    }
    function buildProgrammaticLogger(_, context, baseLogger) {
      var _context$caller;
      if (!baseLogger) {
        return function () {};
      }
      return baseLogger.configure(context.showConfig, ChainFormatter.Programmatic, {
        callerName: (_context$caller = context.caller) == null ? void 0 : _context$caller.name
      });
    }
    function buildEnvDescriptors(_ref2, alias, descriptors, envName) {
      var dirname = _ref2.dirname,
        options = _ref2.options;
      var opts = options.env && options.env[envName];
      return opts ? descriptors(dirname, opts, alias + ".env[\"" + envName + "\"]") : null;
    }
    function buildOverrideDescriptors(_ref3, alias, descriptors, index) {
      var dirname = _ref3.dirname,
        options = _ref3.options;
      var opts = options.overrides && options.overrides[index];
      if (!opts) throw new Error("Assertion failure - missing override");
      return descriptors(dirname, opts, alias + ".overrides[" + index + "]");
    }
    function buildOverrideEnvDescriptors(_ref4, alias, descriptors, index, envName) {
      var dirname = _ref4.dirname,
        options = _ref4.options;
      var override = options.overrides && options.overrides[index];
      if (!override) throw new Error("Assertion failure - missing override");
      var opts = override.env && override.env[envName];
      return opts ? descriptors(dirname, opts, alias + ".overrides[" + index + "].env[\"" + envName + "\"]") : null;
    }
    function makeChainWalker(_ref5) {
      var root = _ref5.root,
        env = _ref5.env,
        overrides = _ref5.overrides,
        overridesEnv = _ref5.overridesEnv,
        createLogger = _ref5.createLogger;
      return function chainWalker(input, context, files, baseLogger) {
        if (files === void 0) {
          files = new Set();
        }
        return _regeneratorRuntime().mark(function _callee() {
          var dirname, flattenedConfigs, rootOpts, envOpts, chain, logger, _i, _flattenedConfigs, _flattenedConfigs$_i, config, _index, envName;
          return _regeneratorRuntime().wrap(function _callee$(_context4) {
            while (1) switch (_context4.prev = _context4.next) {
              case 0:
                dirname = input.dirname;
                flattenedConfigs = [];
                rootOpts = root(input);
                if (configIsApplicable(rootOpts, dirname, context, input.filepath)) {
                  flattenedConfigs.push({
                    config: rootOpts,
                    envName: undefined,
                    index: undefined
                  });
                  envOpts = env(input, context.envName);
                  if (envOpts && configIsApplicable(envOpts, dirname, context, input.filepath)) {
                    flattenedConfigs.push({
                      config: envOpts,
                      envName: context.envName,
                      index: undefined
                    });
                  }
                  (rootOpts.options.overrides || []).forEach(function (_, index) {
                    var overrideOps = overrides(input, index);
                    if (configIsApplicable(overrideOps, dirname, context, input.filepath)) {
                      flattenedConfigs.push({
                        config: overrideOps,
                        index: index,
                        envName: undefined
                      });
                      var overrideEnvOpts = overridesEnv(input, index, context.envName);
                      if (overrideEnvOpts && configIsApplicable(overrideEnvOpts, dirname, context, input.filepath)) {
                        flattenedConfigs.push({
                          config: overrideEnvOpts,
                          index: index,
                          envName: context.envName
                        });
                      }
                    }
                  });
                }
                if (!flattenedConfigs.some(function (_ref6) {
                  var _ref6$config$options = _ref6.config.options,
                    ignore = _ref6$config$options.ignore,
                    only = _ref6$config$options.only;
                  return shouldIgnore(context, ignore, only, dirname);
                })) {
                  _context4.next = 6;
                  break;
                }
                return _context4.abrupt("return", null);
              case 6:
                chain = emptyChain();
                logger = createLogger(input, context, baseLogger);
                _i = 0, _flattenedConfigs = flattenedConfigs;
              case 9:
                if (!(_i < _flattenedConfigs.length)) {
                  _context4.next = 19;
                  break;
                }
                _flattenedConfigs$_i = _flattenedConfigs[_i], config = _flattenedConfigs$_i.config, _index = _flattenedConfigs$_i.index, envName = _flattenedConfigs$_i.envName;
                return _context4.delegateYield(mergeExtendsChain(chain, config.options, dirname, context, files, baseLogger), "t0", 12);
              case 12:
                if (_context4.t0) {
                  _context4.next = 14;
                  break;
                }
                return _context4.abrupt("return", null);
              case 14:
                logger(config, _index, envName);
                return _context4.delegateYield(mergeChainOpts(chain, config), "t1", 16);
              case 16:
                _i++;
                _context4.next = 9;
                break;
              case 19:
                return _context4.abrupt("return", chain);
              case 20:
              case "end":
                return _context4.stop();
            }
          }, _callee);
        })();
      };
    }
    function mergeExtendsChain(chain, opts, dirname, context, files, baseLogger) {
      var file, fileChain;
      return _regeneratorRuntime().wrap(function mergeExtendsChain$(_context5) {
        while (1) switch (_context5.prev = _context5.next) {
          case 0:
            if (!(opts["extends"] === undefined)) {
              _context5.next = 2;
              break;
            }
            return _context5.abrupt("return", true);
          case 2:
            return _context5.delegateYield(loadConfig$1(opts["extends"], dirname, context.envName, context.caller), "t0", 3);
          case 3:
            file = _context5.t0;
            if (!files.has(file)) {
              _context5.next = 6;
              break;
            }
            throw new Error("Configuration cycle detected loading " + file.filepath + ".\n" + "File already loaded following the config chain:\n" + Array.from(files, function (file) {
              return " - " + file.filepath;
            }).join("\n"));
          case 6:
            files.add(file);
            return _context5.delegateYield(loadFileChain(validateExtendFile(file), context, files, baseLogger), "t1", 8);
          case 8:
            fileChain = _context5.t1;
            files["delete"](file);
            if (fileChain) {
              _context5.next = 12;
              break;
            }
            return _context5.abrupt("return", false);
          case 12:
            mergeChain(chain, fileChain);
            return _context5.abrupt("return", true);
          case 14:
          case "end":
            return _context5.stop();
        }
      }, _marked4);
    }
    function mergeChain(target, source) {
      var _target$options, _target$plugins, _target$presets;
      (_target$options = target.options).push.apply(_target$options, _toConsumableArray(source.options));
      (_target$plugins = target.plugins).push.apply(_target$plugins, _toConsumableArray(source.plugins));
      (_target$presets = target.presets).push.apply(_target$presets, _toConsumableArray(source.presets));
      for (var _iterator = _createForOfIteratorHelperLoose(source.files), _step; !(_step = _iterator()).done;) {
        var file = _step.value;
        target.files.add(file);
      }
      return target;
    }
    function mergeChainOpts(target, _ref7) {
      var options = _ref7.options,
        plugins = _ref7.plugins,
        presets = _ref7.presets;
      return _regeneratorRuntime().mark(function _callee2() {
        var _target$plugins2, _target$presets2;
        return _regeneratorRuntime().wrap(function _callee2$(_context6) {
          while (1) switch (_context6.prev = _context6.next) {
            case 0:
              target.options.push(options);
              _context6.t0 = (_target$plugins2 = target.plugins).push;
              _context6.t1 = _target$plugins2;
              _context6.t2 = _toConsumableArray;
              return _context6.delegateYield(plugins(), "t3", 5);
            case 5:
              _context6.t4 = _context6.t3;
              _context6.t5 = (0, _context6.t2)(_context6.t4);
              _context6.t0.apply.call(_context6.t0, _context6.t1, _context6.t5);
              _context6.t6 = (_target$presets2 = target.presets).push;
              _context6.t7 = _target$presets2;
              _context6.t8 = _toConsumableArray;
              return _context6.delegateYield(presets(), "t9", 12);
            case 12:
              _context6.t10 = _context6.t9;
              _context6.t11 = (0, _context6.t8)(_context6.t10);
              _context6.t6.apply.call(_context6.t6, _context6.t7, _context6.t11);
              return _context6.abrupt("return", target);
            case 16:
            case "end":
              return _context6.stop();
          }
        }, _callee2);
      })();
    }
    function emptyChain() {
      return {
        options: [],
        presets: [],
        plugins: [],
        files: new Set()
      };
    }
    function normalizeOptions$5(opts) {
      var options = Object.assign({}, opts);
      delete options["extends"];
      delete options.env;
      delete options.overrides;
      delete options.plugins;
      delete options.presets;
      delete options.passPerPreset;
      delete options.ignore;
      delete options.only;
      delete options.test;
      delete options.include;
      delete options.exclude;
      if (Object.prototype.hasOwnProperty.call(options, "sourceMap")) {
        options.sourceMaps = options.sourceMap;
        delete options.sourceMap;
      }
      return options;
    }
    function dedupDescriptors(items) {
      var map = new Map();
      var descriptors = [];
      for (var _iterator2 = _createForOfIteratorHelperLoose(items), _step2; !(_step2 = _iterator2()).done;) {
        var item = _step2.value;
        if (typeof item.value === "function") {
          var fnKey = item.value;
          var nameMap = map.get(fnKey);
          if (!nameMap) {
            nameMap = new Map();
            map.set(fnKey, nameMap);
          }
          var desc = nameMap.get(item.name);
          if (!desc) {
            desc = {
              value: item
            };
            descriptors.push(desc);
            if (!item.ownPass) nameMap.set(item.name, desc);
          } else {
            desc.value = item;
          }
        } else {
          descriptors.push({
            value: item
          });
        }
      }
      return descriptors.reduce(function (acc, desc) {
        acc.push(desc.value);
        return acc;
      }, []);
    }
    function configIsApplicable(_ref8, dirname, context, configName) {
      var options = _ref8.options;
      return (options.test === undefined || configFieldIsApplicable(context, options.test, dirname, configName)) && (options.include === undefined || configFieldIsApplicable(context, options.include, dirname, configName)) && (options.exclude === undefined || !configFieldIsApplicable(context, options.exclude, dirname, configName));
    }
    function configFieldIsApplicable(context, test, dirname, configName) {
      var patterns = Array.isArray(test) ? test : [test];
      return matchesPatterns(context, patterns, dirname, configName);
    }
    function ignoreListReplacer(_key, value) {
      if (value instanceof RegExp) {
        return String(value);
      }
      return value;
    }
    function shouldIgnore(context, ignore, only, dirname) {
      if (ignore && matchesPatterns(context, ignore, dirname)) {
        var _context$filename;
        var message = "No config is applied to \"" + ((_context$filename = context.filename) != null ? _context$filename : "(unknown)") + "\" because it matches one of `ignore: " + JSON.stringify(ignore, ignoreListReplacer) + "` from \"" + dirname + "\"";
        debug$1(message);
        if (context.showConfig) {
          console.log(message);
        }
        return true;
      }
      if (only && !matchesPatterns(context, only, dirname)) {
        var _context$filename2;
        var _message = "No config is applied to \"" + ((_context$filename2 = context.filename) != null ? _context$filename2 : "(unknown)") + "\" because it fails to match one of `only: " + JSON.stringify(only, ignoreListReplacer) + "` from \"" + dirname + "\"";
        debug$1(_message);
        if (context.showConfig) {
          console.log(_message);
        }
        return true;
      }
      return false;
    }
    function matchesPatterns(context, patterns, dirname, configName) {
      return patterns.some(function (pattern) {
        return matchPattern(pattern, dirname, context.filename, context, configName);
      });
    }
    function matchPattern(pattern, dirname, pathToTest, context, configName) {
      if (typeof pattern === "function") {
        return !!endHiddenCallStack(pattern)(pathToTest, {
          dirname: dirname,
          envName: context.envName,
          caller: context.caller
        });
      }
      if (typeof pathToTest !== "string") {
        throw new ConfigError("Configuration contains string/RegExp pattern, but no filename was passed to Babel", configName);
      }
      if (typeof pattern === "string") {
        pattern = pathToPattern(pattern, dirname);
      }
      return pattern.test(pathToTest);
    }
  
    var VALIDATORS = {
      name: assertString,
      manipulateOptions: assertFunction,
      pre: assertFunction,
      post: assertFunction,
      inherits: assertFunction,
      visitor: assertVisitorMap,
      parserOverride: assertFunction,
      generatorOverride: assertFunction
    };
    function assertVisitorMap(loc, value) {
      var obj = assertObject(loc, value);
      if (obj) {
        Object.keys(obj).forEach(function (prop) {
          return assertVisitorHandler(prop, obj[prop]);
        });
        if (obj.enter || obj.exit) {
          throw new Error(msg(loc) + " cannot contain catch-all \"enter\" or \"exit\" handlers. Please target individual nodes.");
        }
      }
      return obj;
    }
    function assertVisitorHandler(key, value) {
      if (value && typeof value === "object") {
        Object.keys(value).forEach(function (handler) {
          if (handler !== "enter" && handler !== "exit") {
            throw new Error(".visitor[\"" + key + "\"] may only have .enter and/or .exit handlers.");
          }
        });
      } else if (typeof value !== "function") {
        throw new Error(".visitor[\"" + key + "\"] must be a function");
      }
      return value;
    }
    function validatePluginObject(obj) {
      var rootPath = {
        type: "root",
        source: "plugin"
      };
      Object.keys(obj).forEach(function (key) {
        var validator = VALIDATORS[key];
        if (validator) {
          var optLoc = {
            type: "option",
            name: key,
            parent: rootPath
          };
          validator(optLoc, obj[key]);
        } else {
          var invalidPluginPropertyError = new Error("." + key + " is not a valid Plugin property");
          invalidPluginPropertyError.code = "BABEL_UNKNOWN_PLUGIN_PROPERTY";
          throw invalidPluginPropertyError;
        }
      });
      return obj;
    }
  
    function makeConfigAPI(cache) {
      var env = function env(value) {
        return cache.using(function (data) {
          if (typeof value === "undefined") return data.envName;
          if (typeof value === "function") {
            return assertSimpleType(value(data.envName));
          }
          return (Array.isArray(value) ? value : [value]).some(function (entry) {
            if (typeof entry !== "string") {
              throw new Error("Unexpected non-string value");
            }
            return entry === data.envName;
          });
        });
      };
      var caller = function caller(cb) {
        return cache.using(function (data) {
          return assertSimpleType(cb(data.caller));
        });
      };
      return {
        version: version$1,
        cache: cache.simple(),
        env: env,
        async: function async() {
          return false;
        },
        caller: caller,
        assertVersion: assertVersion
      };
    }
    function makePresetAPI(cache, externalDependencies) {
      var targets = function targets() {
        return JSON.parse(cache.using(function (data) {
          return JSON.stringify(data.targets);
        }));
      };
      var addExternalDependency = function addExternalDependency(ref) {
        externalDependencies.push(ref);
      };
      return Object.assign({}, makeConfigAPI(cache), {
        targets: targets,
        addExternalDependency: addExternalDependency
      });
    }
    function makePluginAPI(cache, externalDependencies) {
      var assumption = function assumption(name) {
        return cache.using(function (data) {
          return data.assumptions[name];
        });
      };
      return Object.assign({}, makePresetAPI(cache, externalDependencies), {
        assumption: assumption
      });
    }
    function assertVersion(range) {
      if (typeof range === "number") {
        if (!Number.isInteger(range)) {
          throw new Error("Expected string or integer value.");
        }
        range = "^" + range + ".0.0-0";
      }
      if (typeof range !== "string") {
        throw new Error("Expected string or integer value.");
      }
      if (semver$b.satisfies(version$1, range)) return;
      var limit = Error.stackTraceLimit;
      if (typeof limit === "number" && limit < 25) {
        Error.stackTraceLimit = 25;
      }
      var err = new Error("Requires Babel \"" + range + "\", but was loaded with \"" + version$1 + "\". " + "If you are sure you have a compatible version of @babel/core, " + "it is likely that something in your build process is loading the " + "wrong version. Inspect the stack trace of this error to look for " + "the first entry that doesn't mention \"@babel/core\" or \"babel-core\" " + "to see what is calling Babel.");
      if (typeof limit === "number") {
        Error.stackTraceLimit = limit;
      }
      throw Object.assign(err, {
        code: "BABEL_VERSION_UNSUPPORTED",
        version: version$1,
        range: range
      });
    }
  
    var _excluded$2 = ["showIgnoredFiles"];
    var _marked$4 = _regeneratorRuntime().mark(loadPrivatePartialConfig);
    function resolveRootMode(rootDir, rootMode) {
      switch (rootMode) {
        case "root":
          return rootDir;
        case "upward-optional":
          {
            var upwardRootDir = findConfigUpwards();
            return upwardRootDir === null ? rootDir : upwardRootDir;
          }
        case "upward":
          {
            var _upwardRootDir = findConfigUpwards();
            if (_upwardRootDir !== null) return _upwardRootDir;
            throw Object.assign(new Error("Babel was run with rootMode:\"upward\" but a root could not " + ("be found when searching upward from \"" + rootDir + "\".\n") + "One of the following config files must be in the directory tree: " + ("\"" + ROOT_CONFIG_FILENAMES.join(", ") + "\".")), {
              code: "BABEL_ROOT_NOT_FOUND",
              dirname: rootDir
            });
          }
        default:
          throw new Error("Assertion failure - unknown rootMode value.");
      }
    }
    function loadPrivatePartialConfig(inputOpts) {
      var args, _args$envName, envName, _args$cwd, cwd, _args$root, rootDir, _args$rootMode, rootMode, caller, _args$cloneInputAst, cloneInputAst, absoluteCwd, absoluteRootDir, filename, showConfigPath, context, configChain, merged, options;
      return _regeneratorRuntime().wrap(function loadPrivatePartialConfig$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            if (!(inputOpts != null && (typeof inputOpts !== "object" || Array.isArray(inputOpts)))) {
              _context.next = 2;
              break;
            }
            throw new Error("Babel options must be an object, null, or undefined");
          case 2:
            args = inputOpts ? validate("arguments", inputOpts) : {};
            _args$envName = args.envName, envName = _args$envName === void 0 ? getEnv() : _args$envName, _args$cwd = args.cwd, cwd = _args$cwd === void 0 ? "." : _args$cwd, _args$root = args.root, rootDir = _args$root === void 0 ? "." : _args$root, _args$rootMode = args.rootMode, rootMode = _args$rootMode === void 0 ? "root" : _args$rootMode, caller = args.caller, _args$cloneInputAst = args.cloneInputAst, cloneInputAst = _args$cloneInputAst === void 0 ? true : _args$cloneInputAst;
            absoluteCwd = path$1.resolve(cwd);
            absoluteRootDir = resolveRootMode(path$1.resolve(absoluteCwd, rootDir), rootMode);
            filename = typeof args.filename === "string" ? path$1.resolve(cwd, args.filename) : undefined;
            return _context.delegateYield(resolveShowConfigPath(), "t0", 8);
          case 8:
            showConfigPath = _context.t0;
            context = {
              filename: filename,
              cwd: absoluteCwd,
              root: absoluteRootDir,
              envName: envName,
              caller: caller,
              showConfig: showConfigPath === filename
            };
            return _context.delegateYield(buildRootChain(args, context), "t1", 11);
          case 11:
            configChain = _context.t1;
            if (configChain) {
              _context.next = 14;
              break;
            }
            return _context.abrupt("return", null);
          case 14:
            merged = {
              assumptions: {}
            };
            configChain.options.forEach(function (opts) {
              mergeOptions(merged, opts);
            });
            options = Object.assign({}, merged, {
              targets: resolveTargets(merged),
              cloneInputAst: cloneInputAst,
              babelrc: false,
              configFile: false,
              browserslistConfigFile: false,
              passPerPreset: false,
              envName: context.envName,
              cwd: context.cwd,
              root: context.root,
              rootMode: "root",
              filename: typeof context.filename === "string" ? context.filename : undefined,
              plugins: configChain.plugins.map(function (descriptor) {
                return createItemFromDescriptor(descriptor);
              }),
              presets: configChain.presets.map(function (descriptor) {
                return createItemFromDescriptor(descriptor);
              })
            });
            return _context.abrupt("return", {
              options: options,
              context: context,
              fileHandling: configChain.fileHandling,
              ignore: configChain.ignore,
              babelrc: configChain.babelrc,
              config: configChain.config,
              files: configChain.files
            });
          case 18:
          case "end":
            return _context.stop();
        }
      }, _marked$4);
    }
    var loadPartialConfig$1 = gensync(_regeneratorRuntime().mark(function _callee(opts) {
      var showIgnoredFiles, _opts, result, options, babelrc, ignore, config, fileHandling, files;
      return _regeneratorRuntime().wrap(function _callee$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            showIgnoredFiles = false;
            if (typeof opts === "object" && opts !== null && !Array.isArray(opts)) {
              _opts = opts;
              showIgnoredFiles = _opts.showIgnoredFiles;
              opts = _objectWithoutPropertiesLoose(_opts, _excluded$2);
            }
            return _context2.delegateYield(loadPrivatePartialConfig(opts), "t0", 3);
          case 3:
            result = _context2.t0;
            if (result) {
              _context2.next = 6;
              break;
            }
            return _context2.abrupt("return", null);
          case 6:
            options = result.options, babelrc = result.babelrc, ignore = result.ignore, config = result.config, fileHandling = result.fileHandling, files = result.files;
            if (!(fileHandling === "ignored" && !showIgnoredFiles)) {
              _context2.next = 9;
              break;
            }
            return _context2.abrupt("return", null);
          case 9:
            (options.plugins || []).forEach(function (item) {
              if (item.value instanceof Plugin) {
                throw new Error("Passing cached plugin instances is not supported in " + "babel.loadPartialConfig()");
              }
            });
            return _context2.abrupt("return", new PartialConfig(options, babelrc ? babelrc.filepath : undefined, ignore ? ignore.filepath : undefined, config ? config.filepath : undefined, fileHandling, files));
          case 11:
          case "end":
            return _context2.stop();
        }
      }, _callee);
    }));
    var PartialConfig = function () {
      function PartialConfig(options, babelrc, ignore, config, fileHandling, files) {
        this.options = void 0;
        this.babelrc = void 0;
        this.babelignore = void 0;
        this.config = void 0;
        this.fileHandling = void 0;
        this.files = void 0;
        this.options = options;
        this.babelignore = ignore;
        this.babelrc = babelrc;
        this.config = config;
        this.fileHandling = fileHandling;
        this.files = files;
        Object.freeze(this);
      }
      var _proto = PartialConfig.prototype;
      _proto.hasFilesystemConfig = function hasFilesystemConfig() {
        return this.babelrc !== undefined || this.config !== undefined;
      };
      return _createClass(PartialConfig);
    }();
    Object.freeze(PartialConfig.prototype);
  
    var _marked$3 = _regeneratorRuntime().mark(loadPluginDescriptor),
      _marked2$2 = _regeneratorRuntime().mark(loadPresetDescriptor);
    var loadConfig = gensync(_regeneratorRuntime().mark(function loadFullConfig(inputOpts) {
      var _opts$assumptions;
      var result, options, context, fileHandling, optionDefaults, plugins, presets, presetContext, toDescriptor, presetsDescriptors, initialPluginsDescriptors, pluginDescriptorsByPass, passes, externalDependencies, ignored, opts, pluginContext;
      return _regeneratorRuntime().wrap(function loadFullConfig$(_context3) {
        while (1) switch (_context3.prev = _context3.next) {
          case 0:
            return _context3.delegateYield(loadPrivatePartialConfig(inputOpts), "t0", 1);
          case 1:
            result = _context3.t0;
            if (result) {
              _context3.next = 4;
              break;
            }
            return _context3.abrupt("return", null);
          case 4:
            options = result.options, context = result.context, fileHandling = result.fileHandling;
            if (!(fileHandling === "ignored")) {
              _context3.next = 7;
              break;
            }
            return _context3.abrupt("return", null);
          case 7:
            optionDefaults = {};
            plugins = options.plugins, presets = options.presets;
            if (!(!plugins || !presets)) {
              _context3.next = 11;
              break;
            }
            throw new Error("Assertion failure - plugins and presets exist");
          case 11:
            presetContext = Object.assign({}, context, {
              targets: options.targets
            });
            toDescriptor = function toDescriptor(item) {
              var desc = getItemDescriptor(item);
              if (!desc) {
                throw new Error("Assertion failure - must be config item");
              }
              return desc;
            };
            presetsDescriptors = presets.map(toDescriptor);
            initialPluginsDescriptors = plugins.map(toDescriptor);
            pluginDescriptorsByPass = [[]];
            passes = [];
            externalDependencies = [];
            return _context3.delegateYield(enhanceError(context, _regeneratorRuntime().mark(function recursePresetDescriptors(rawPresets, pluginDescriptorsPass) {
              var presets, i, descriptor, preset, _iterator, _step, _step$value, _preset, pass, _ignored;
              return _regeneratorRuntime().wrap(function recursePresetDescriptors$(_context) {
                while (1) switch (_context.prev = _context.next) {
                  case 0:
                    presets = [];
                    i = 0;
                  case 2:
                    if (!(i < rawPresets.length)) {
                      _context.next = 19;
                      break;
                    }
                    descriptor = rawPresets[i];
                    if (!(descriptor.options !== false)) {
                      _context.next = 16;
                      break;
                    }
                    _context.prev = 5;
                    return _context.delegateYield(loadPresetDescriptor(descriptor, presetContext), "t0", 7);
                  case 7:
                    preset = _context.t0;
                    _context.next = 14;
                    break;
                  case 10:
                    _context.prev = 10;
                    _context.t1 = _context["catch"](5);
                    if (_context.t1.code === "BABEL_UNKNOWN_OPTION") {
                      checkNoUnwrappedItemOptionPairs(rawPresets, i, "preset", _context.t1);
                    }
                    throw _context.t1;
                  case 14:
                    externalDependencies.push(preset.externalDependencies);
                    if (descriptor.ownPass) {
                      presets.push({
                        preset: preset.chain,
                        pass: []
                      });
                    } else {
                      presets.unshift({
                        preset: preset.chain,
                        pass: pluginDescriptorsPass
                      });
                    }
                  case 16:
                    i++;
                    _context.next = 2;
                    break;
                  case 19:
                    if (!(presets.length > 0)) {
                      _context.next = 34;
                      break;
                    }
                    pluginDescriptorsByPass.splice.apply(pluginDescriptorsByPass, [1, 0].concat(_toConsumableArray(presets.map(function (o) {
                      return o.pass;
                    }).filter(function (p) {
                      return p !== pluginDescriptorsPass;
                    }))));
                    _iterator = _createForOfIteratorHelperLoose(presets);
                  case 22:
                    if ((_step = _iterator()).done) {
                      _context.next = 34;
                      break;
                    }
                    _step$value = _step.value, _preset = _step$value.preset, pass = _step$value.pass;
                    if (_preset) {
                      _context.next = 26;
                      break;
                    }
                    return _context.abrupt("return", true);
                  case 26:
                    pass.push.apply(pass, _toConsumableArray(_preset.plugins));
                    return _context.delegateYield(recursePresetDescriptors(_preset.presets, pass), "t2", 28);
                  case 28:
                    _ignored = _context.t2;
                    if (!_ignored) {
                      _context.next = 31;
                      break;
                    }
                    return _context.abrupt("return", true);
                  case 31:
                    _preset.options.forEach(function (opts) {
                      mergeOptions(optionDefaults, opts);
                    });
                  case 32:
                    _context.next = 22;
                    break;
                  case 34:
                  case "end":
                    return _context.stop();
                }
              }, recursePresetDescriptors, null, [[5, 10]]);
            }))(presetsDescriptors, pluginDescriptorsByPass[0]), "t1", 19);
          case 19:
            ignored = _context3.t1;
            if (!ignored) {
              _context3.next = 22;
              break;
            }
            return _context3.abrupt("return", null);
          case 22:
            opts = optionDefaults;
            mergeOptions(opts, options);
            pluginContext = Object.assign({}, presetContext, {
              assumptions: (_opts$assumptions = opts.assumptions) != null ? _opts$assumptions : {}
            });
            return _context3.delegateYield(enhanceError(context, _regeneratorRuntime().mark(function loadPluginDescriptors() {
              var _pluginDescriptorsByP;
              var _i, _pluginDescriptorsByP2, descs, pass, i, descriptor, plugin;
              return _regeneratorRuntime().wrap(function loadPluginDescriptors$(_context2) {
                while (1) switch (_context2.prev = _context2.next) {
                  case 0:
                    (_pluginDescriptorsByP = pluginDescriptorsByPass[0]).unshift.apply(_pluginDescriptorsByP, _toConsumableArray(initialPluginsDescriptors));
                    _i = 0, _pluginDescriptorsByP2 = pluginDescriptorsByPass;
                  case 2:
                    if (!(_i < _pluginDescriptorsByP2.length)) {
                      _context2.next = 27;
                      break;
                    }
                    descs = _pluginDescriptorsByP2[_i];
                    pass = [];
                    passes.push(pass);
                    i = 0;
                  case 7:
                    if (!(i < descs.length)) {
                      _context2.next = 24;
                      break;
                    }
                    descriptor = descs[i];
                    if (!(descriptor.options !== false)) {
                      _context2.next = 21;
                      break;
                    }
                    _context2.prev = 10;
                    return _context2.delegateYield(loadPluginDescriptor(descriptor, pluginContext), "t0", 12);
                  case 12:
                    plugin = _context2.t0;
                    _context2.next = 19;
                    break;
                  case 15:
                    _context2.prev = 15;
                    _context2.t1 = _context2["catch"](10);
                    if (_context2.t1.code === "BABEL_UNKNOWN_PLUGIN_PROPERTY") {
                      checkNoUnwrappedItemOptionPairs(descs, i, "plugin", _context2.t1);
                    }
                    throw _context2.t1;
                  case 19:
                    pass.push(plugin);
                    externalDependencies.push(plugin.externalDependencies);
                  case 21:
                    i++;
                    _context2.next = 7;
                    break;
                  case 24:
                    _i++;
                    _context2.next = 2;
                    break;
                  case 27:
                  case "end":
                    return _context2.stop();
                }
              }, loadPluginDescriptors, null, [[10, 15]]);
            }))(), "t2", 26);
          case 26:
            opts.plugins = passes[0];
            opts.presets = passes.slice(1).filter(function (plugins) {
              return plugins.length > 0;
            }).map(function (plugins) {
              return {
                plugins: plugins
              };
            });
            opts.passPerPreset = opts.presets.length > 0;
            return _context3.abrupt("return", {
              options: opts,
              passes: passes,
              externalDependencies: finalize(externalDependencies)
            });
          case 30:
          case "end":
            return _context3.stop();
        }
      }, loadFullConfig);
    }));
    function enhanceError(context, fn) {
      return _regeneratorRuntime().mark(function _callee(arg1, arg2) {
        var _context$filename;
        return _regeneratorRuntime().wrap(function _callee$(_context4) {
          while (1) switch (_context4.prev = _context4.next) {
            case 0:
              _context4.prev = 0;
              return _context4.delegateYield(fn(arg1, arg2), "t0", 2);
            case 2:
              return _context4.abrupt("return", _context4.t0);
            case 5:
              _context4.prev = 5;
              _context4.t1 = _context4["catch"](0);
              if (!/^\[BABEL\]/.test(_context4.t1.message)) {
                _context4.t1.message = "[BABEL] " + ((_context$filename = context.filename) != null ? _context$filename : "unknown file") + ": " + _context4.t1.message;
              }
              throw _context4.t1;
            case 9:
            case "end":
              return _context4.stop();
          }
        }, _callee, null, [[0, 5]]);
      });
    }
    var makeDescriptorLoader = function makeDescriptorLoader(apiFactory) {
      return makeWeakCache(function (_ref, cache) {
        var value = _ref.value,
          options = _ref.options,
          dirname = _ref.dirname,
          alias = _ref.alias;
        return _regeneratorRuntime().mark(function _callee2() {
          var externalDependencies, item, factory, api, error;
          return _regeneratorRuntime().wrap(function _callee2$(_context5) {
            while (1) switch (_context5.prev = _context5.next) {
              case 0:
                if (!(options === false)) {
                  _context5.next = 2;
                  break;
                }
                throw new Error("Assertion failure");
              case 2:
                options = options || {};
                externalDependencies = [];
                item = value;
                if (!(typeof value === "function")) {
                  _context5.next = 17;
                  break;
                }
                factory = maybeAsync(value, "You appear to be using an async plugin/preset, but Babel has been called synchronously");
                api = Object.assign({}, _babel, apiFactory(cache, externalDependencies));
                _context5.prev = 8;
                return _context5.delegateYield(factory(api, options, dirname), "t0", 10);
              case 10:
                item = _context5.t0;
                _context5.next = 17;
                break;
              case 13:
                _context5.prev = 13;
                _context5.t1 = _context5["catch"](8);
                if (alias) {
                  _context5.t1.message += " (While processing: " + JSON.stringify(alias) + ")";
                }
                throw _context5.t1;
              case 17:
                if (!(!item || typeof item !== "object")) {
                  _context5.next = 19;
                  break;
                }
                throw new Error("Plugin/Preset did not return an object.");
              case 19:
                if (!isThenable$1(item)) {
                  _context5.next = 22;
                  break;
                }
                return _context5.delegateYield([], "t2", 21);
              case 21:
                throw new Error("You appear to be using a promise as a plugin, " + "which your current version of Babel does not support. " + "If you're using a published plugin, " + "you may need to upgrade your @babel/core version. " + "As an alternative, you can prefix the promise with \"await\". " + ("(While processing: " + JSON.stringify(alias) + ")"));
              case 22:
                if (!(externalDependencies.length > 0 && (!cache.configured() || cache.mode() === "forever"))) {
                  _context5.next = 27;
                  break;
                }
                error = "A plugin/preset has external untracked dependencies " + ("(" + externalDependencies[0] + "), but the cache ");
                if (!cache.configured()) {
                  error += "has not been configured to be invalidated when the external dependencies change. ";
                } else {
                  error += " has been configured to never be invalidated. ";
                }
                error += "Plugins/presets should configure their cache to be invalidated when the external " + "dependencies change, for example using `api.cache.invalidate(() => " + "statSync(filepath).mtimeMs)` or `api.cache.never()`\n" + ("(While processing: " + JSON.stringify(alias) + ")");
                throw new Error(error);
              case 27:
                return _context5.abrupt("return", {
                  value: item,
                  options: options,
                  dirname: dirname,
                  alias: alias,
                  externalDependencies: finalize(externalDependencies)
                });
              case 28:
              case "end":
                return _context5.stop();
            }
          }, _callee2, null, [[8, 13]]);
        })();
      });
    };
    var pluginDescriptorLoader = makeDescriptorLoader(makePluginAPI);
    var presetDescriptorLoader = makeDescriptorLoader(makePresetAPI);
    var instantiatePlugin = makeWeakCache(function (_ref2, cache) {
      var value = _ref2.value,
        options = _ref2.options,
        dirname = _ref2.dirname,
        alias = _ref2.alias,
        externalDependencies = _ref2.externalDependencies;
      return _regeneratorRuntime().mark(function _callee3() {
        var pluginObj, plugin, inheritsDescriptor, inherits;
        return _regeneratorRuntime().wrap(function _callee3$(_context6) {
          while (1) switch (_context6.prev = _context6.next) {
            case 0:
              pluginObj = validatePluginObject(value);
              plugin = Object.assign({}, pluginObj);
              if (plugin.visitor) {
                plugin.visitor = traverse.explode(Object.assign({}, plugin.visitor));
              }
              if (!plugin.inherits) {
                _context6.next = 12;
                break;
              }
              inheritsDescriptor = {
                name: undefined,
                alias: alias + "$inherits",
                value: plugin.inherits,
                options: options,
                dirname: dirname
              };
              return _context6.delegateYield(forwardAsync(loadPluginDescriptor, function (run) {
                return cache.invalidate(function (data) {
                  return run(inheritsDescriptor, data);
                });
              }), "t0", 6);
            case 6:
              inherits = _context6.t0;
              plugin.pre = chain(inherits.pre, plugin.pre);
              plugin.post = chain(inherits.post, plugin.post);
              plugin.manipulateOptions = chain(inherits.manipulateOptions, plugin.manipulateOptions);
              plugin.visitor = traverse.visitors.merge([inherits.visitor || {}, plugin.visitor || {}]);
              if (inherits.externalDependencies.length > 0) {
                if (externalDependencies.length === 0) {
                  externalDependencies = inherits.externalDependencies;
                } else {
                  externalDependencies = finalize([externalDependencies, inherits.externalDependencies]);
                }
              }
            case 12:
              return _context6.abrupt("return", new Plugin(plugin, options, alias, externalDependencies));
            case 13:
            case "end":
              return _context6.stop();
          }
        }, _callee3);
      })();
    });
    function loadPluginDescriptor(descriptor, context) {
      return _regeneratorRuntime().wrap(function loadPluginDescriptor$(_context7) {
        while (1) switch (_context7.prev = _context7.next) {
          case 0:
            if (!(descriptor.value instanceof Plugin)) {
              _context7.next = 4;
              break;
            }
            if (!descriptor.options) {
              _context7.next = 3;
              break;
            }
            throw new Error("Passed options to an existing Plugin instance will not work.");
          case 3:
            return _context7.abrupt("return", descriptor.value);
          case 4:
            _context7.t0 = instantiatePlugin;
            return _context7.delegateYield(pluginDescriptorLoader(descriptor, context), "t1", 6);
          case 6:
            _context7.t2 = _context7.t1;
            _context7.t3 = context;
            return _context7.delegateYield((0, _context7.t0)(_context7.t2, _context7.t3), "t4", 9);
          case 9:
            return _context7.abrupt("return", _context7.t4);
          case 10:
          case "end":
            return _context7.stop();
        }
      }, _marked$3);
    }
    var needsFilename = function needsFilename(val) {
      return val && typeof val !== "function";
    };
    var validateIfOptionNeedsFilename = function validateIfOptionNeedsFilename(options, descriptor) {
      if (needsFilename(options.test) || needsFilename(options.include) || needsFilename(options.exclude)) {
        var formattedPresetName = descriptor.name ? "\"" + descriptor.name + "\"" : "/* your preset */";
        throw new ConfigError(["Preset " + formattedPresetName + " requires a filename to be set when babel is called directly,", "```", "babel.transformSync(code, { filename: 'file.ts', presets: [" + formattedPresetName + "] });", "```", "See https://babeljs.io/docs/en/options#filename for more information."].join("\n"));
      }
    };
    var validatePreset = function validatePreset(preset, context, descriptor) {
      if (!context.filename) {
        var options = preset.options;
        validateIfOptionNeedsFilename(options, descriptor);
        if (options.overrides) {
          options.overrides.forEach(function (overrideOptions) {
            return validateIfOptionNeedsFilename(overrideOptions, descriptor);
          });
        }
      }
    };
    var instantiatePreset = makeWeakCacheSync(function (_ref3) {
      var value = _ref3.value,
        dirname = _ref3.dirname,
        alias = _ref3.alias,
        externalDependencies = _ref3.externalDependencies;
      return {
        options: validate("preset", value),
        alias: alias,
        dirname: dirname,
        externalDependencies: externalDependencies
      };
    });
    function loadPresetDescriptor(descriptor, context) {
      var preset;
      return _regeneratorRuntime().wrap(function loadPresetDescriptor$(_context8) {
        while (1) switch (_context8.prev = _context8.next) {
          case 0:
            _context8.t0 = instantiatePreset;
            return _context8.delegateYield(presetDescriptorLoader(descriptor, context), "t1", 2);
          case 2:
            _context8.t2 = _context8.t1;
            preset = (0, _context8.t0)(_context8.t2);
            validatePreset(preset, context, descriptor);
            return _context8.delegateYield(buildPresetChain(preset, context), "t3", 6);
          case 6:
            _context8.t4 = _context8.t3;
            _context8.t5 = preset.externalDependencies;
            return _context8.abrupt("return", {
              chain: _context8.t4,
              externalDependencies: _context8.t5
            });
          case 9:
          case "end":
            return _context8.stop();
        }
      }, _marked2$2);
    }
    function chain(a, b) {
      var fns = [a, b].filter(Boolean);
      if (fns.length <= 1) return fns[0];
      return function () {
        for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
          args[_key] = arguments[_key];
        }
        for (var _iterator2 = _createForOfIteratorHelperLoose(fns), _step2; !(_step2 = _iterator2()).done;) {
          var fn = _step2.value;
          fn.apply(this, args);
        }
      };
    }
  
    var loadOptionsRunner = gensync(_regeneratorRuntime().mark(function _callee(opts) {
      var _config$options;
      var config;
      return _regeneratorRuntime().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            return _context.delegateYield(loadConfig(opts), "t0", 1);
          case 1:
            config = _context.t0;
            return _context.abrupt("return", (_config$options = config == null ? void 0 : config.options) != null ? _config$options : null);
          case 3:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    var createConfigItemRunner = gensync(createConfigItem$1);
    var maybeErrback = function maybeErrback(runner) {
      return function (argOrCallback, maybeCallback) {
        var arg;
        var callback;
        if (maybeCallback === undefined && typeof argOrCallback === "function") {
          callback = argOrCallback;
          arg = undefined;
        } else {
          callback = maybeCallback;
          arg = argOrCallback;
        }
        if (!callback) {
          return runner.sync(arg);
        }
        runner.errback(arg, callback);
      };
    };
    var loadPartialConfig = maybeErrback(loadPartialConfig$1);
    var loadPartialConfigSync = loadPartialConfig$1.sync;
    var loadPartialConfigAsync = loadPartialConfig$1.async;
    var loadOptions = maybeErrback(loadOptionsRunner);
    var loadOptionsSync = loadOptionsRunner.sync;
    var loadOptionsAsync = loadOptionsRunner.async;
    var createConfigItemSync = createConfigItemRunner.sync;
    var createConfigItemAsync = createConfigItemRunner.async;
    function createConfigItem(target, options, callback) {
      if (callback !== undefined) {
        createConfigItemRunner.errback(target, options, callback);
      } else if (typeof options === "function") {
        createConfigItemRunner.errback(target, undefined, callback);
      } else {
        return createConfigItemRunner.sync(target, options);
      }
    }
  
    var PluginPass = function () {
      function PluginPass(file, key, options) {
        this._map = new Map();
        this.key = void 0;
        this.file = void 0;
        this.opts = void 0;
        this.cwd = void 0;
        this.filename = void 0;
        this.key = key;
        this.file = file;
        this.opts = options || {};
        this.cwd = file.opts.cwd;
        this.filename = file.opts.filename;
      }
      var _proto = PluginPass.prototype;
      _proto.set = function set(key, val) {
        this._map.set(key, val);
      };
      _proto.get = function get(key) {
        return this._map.get(key);
      };
      _proto.availableHelper = function availableHelper(name, versionRange) {
        return this.file.availableHelper(name, versionRange);
      };
      _proto.addHelper = function addHelper(name) {
        return this.file.addHelper(name);
      };
      _proto.buildCodeFrameError = function buildCodeFrameError(node, msg, _Error) {
        return this.file.buildCodeFrameError(node, msg, _Error);
      };
      return _createClass(PluginPass);
    }();
    {
      PluginPass.prototype.getModuleName = function getModuleName() {
        return this.file.getModuleName();
      };
      PluginPass.prototype.addImport = function addImport() {
        this.file.addImport();
      };
    }
  
    var LOADED_PLUGIN;
    var blockHoistPlugin = {
      name: "internal.blockHoist",
      visitor: {
        Block: {
          exit: function exit(_ref) {
            var node = _ref.node;
            var body = node.body;
            var max = Math.pow(2, 30) - 1;
            var hasChange = false;
            for (var i = 0; i < body.length; i++) {
              var n = body[i];
              var p = priority(n);
              if (p > max) {
                hasChange = true;
                break;
              }
              max = p;
            }
            if (!hasChange) return;
            node.body = stableSort(body.slice());
          }
        }
      }
    };
    function loadBlockHoistPlugin() {
      if (!LOADED_PLUGIN) {
        LOADED_PLUGIN = new Plugin(Object.assign({}, blockHoistPlugin, {
          visitor: traverse.explode(blockHoistPlugin.visitor)
        }), {});
      }
      return LOADED_PLUGIN;
    }
    function priority(bodyNode) {
      var priority = bodyNode == null ? void 0 : bodyNode._blockHoist;
      if (priority == null) return 1;
      if (priority === true) return 2;
      return priority;
    }
    function stableSort(body) {
      var buckets = Object.create(null);
      for (var i = 0; i < body.length; i++) {
        var n = body[i];
        var p = priority(n);
        var bucket = buckets[p] || (buckets[p] = []);
        bucket.push(n);
      }
      var keys = Object.keys(buckets).map(function (k) {
        return +k;
      }).sort(function (a, b) {
        return b - a;
      });
      var index = 0;
      for (var _iterator = _createForOfIteratorHelperLoose(keys), _step; !(_step = _iterator()).done;) {
        var key = _step.value;
        var _bucket = buckets[key];
        for (var _iterator2 = _createForOfIteratorHelperLoose(_bucket), _step2; !(_step2 = _iterator2()).done;) {
          var _n = _step2.value;
          body[index++] = _n;
        }
      }
      return body;
    }
  
    function normalizeOptions$4(config) {
      var _config$options = config.options,
        filename = _config$options.filename,
        cwd = _config$options.cwd,
        _config$options$filen = _config$options.filenameRelative,
        filenameRelative = _config$options$filen === void 0 ? typeof filename === "string" ? path$1.relative(cwd, filename) : "unknown" : _config$options$filen,
        _config$options$sourc = _config$options.sourceType,
        sourceType = _config$options$sourc === void 0 ? "module" : _config$options$sourc,
        inputSourceMap = _config$options.inputSourceMap,
        _config$options$sourc2 = _config$options.sourceMaps,
        sourceMaps = _config$options$sourc2 === void 0 ? !!inputSourceMap : _config$options$sourc2,
        _config$options$sourc3 = _config$options.sourceRoot,
        sourceRoot = _config$options$sourc3 === void 0 ? config.options.moduleRoot : _config$options$sourc3,
        _config$options$sourc4 = _config$options.sourceFileName,
        sourceFileName = _config$options$sourc4 === void 0 ? path$1.basename(filenameRelative) : _config$options$sourc4,
        _config$options$comme = _config$options.comments,
        comments = _config$options$comme === void 0 ? true : _config$options$comme,
        _config$options$compa = _config$options.compact,
        compact = _config$options$compa === void 0 ? "auto" : _config$options$compa;
      var opts = config.options;
      var options = Object.assign({}, opts, {
        parserOpts: Object.assign({
          sourceType: path$1.extname(filenameRelative) === ".mjs" ? "module" : sourceType,
          sourceFileName: filename,
          plugins: []
        }, opts.parserOpts),
        generatorOpts: Object.assign({
          filename: filename,
          auxiliaryCommentBefore: opts.auxiliaryCommentBefore,
          auxiliaryCommentAfter: opts.auxiliaryCommentAfter,
          retainLines: opts.retainLines,
          comments: comments,
          shouldPrintComment: opts.shouldPrintComment,
          compact: compact,
          minified: opts.minified,
          sourceMaps: sourceMaps,
          sourceRoot: sourceRoot,
          sourceFileName: sourceFileName
        }, opts.generatorOpts)
      });
      for (var _iterator = _createForOfIteratorHelperLoose(config.passes), _step; !(_step = _iterator()).done;) {
        var plugins = _step.value;
        for (var _iterator2 = _createForOfIteratorHelperLoose(plugins), _step2; !(_step2 = _iterator2()).done;) {
          var plugin = _step2.value;
          if (plugin.manipulateOptions) {
            plugin.manipulateOptions(options, options.parserOpts);
          }
        }
      }
      return options;
    }
  
    var fs = {};
  
    var convertSourceMap = {};
  
    var require$$1$1 = /*@__PURE__*/getAugmentedNamespace(_polyfillNode_path);
  
    var safeBuffer = {exports: {}};
  
    var buffer = {};
  
    var base64Js = {};
  
    base64Js.byteLength = byteLength;
    base64Js.toByteArray = toByteArray;
    base64Js.fromByteArray = fromByteArray;
    var lookup = [];
    var revLookup = [];
    var Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;
    var code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
    for (var i = 0, len = code.length; i < len; ++i) {
      lookup[i] = code[i];
      revLookup[code.charCodeAt(i)] = i;
    }
    revLookup['-'.charCodeAt(0)] = 62;
    revLookup['_'.charCodeAt(0)] = 63;
    function getLens(b64) {
      var len = b64.length;
      if (len % 4 > 0) {
        throw new Error('Invalid string. Length must be a multiple of 4');
      }
      var validLen = b64.indexOf('=');
      if (validLen === -1) validLen = len;
      var placeHoldersLen = validLen === len ? 0 : 4 - validLen % 4;
      return [validLen, placeHoldersLen];
    }
    function byteLength(b64) {
      var lens = getLens(b64);
      var validLen = lens[0];
      var placeHoldersLen = lens[1];
      return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;
    }
    function _byteLength(b64, validLen, placeHoldersLen) {
      return (validLen + placeHoldersLen) * 3 / 4 - placeHoldersLen;
    }
    function toByteArray(b64) {
      var tmp;
      var lens = getLens(b64);
      var validLen = lens[0];
      var placeHoldersLen = lens[1];
      var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));
      var curByte = 0;
      var len = placeHoldersLen > 0 ? validLen - 4 : validLen;
      var i;
      for (i = 0; i < len; i += 4) {
        tmp = revLookup[b64.charCodeAt(i)] << 18 | revLookup[b64.charCodeAt(i + 1)] << 12 | revLookup[b64.charCodeAt(i + 2)] << 6 | revLookup[b64.charCodeAt(i + 3)];
        arr[curByte++] = tmp >> 16 & 0xFF;
        arr[curByte++] = tmp >> 8 & 0xFF;
        arr[curByte++] = tmp & 0xFF;
      }
      if (placeHoldersLen === 2) {
        tmp = revLookup[b64.charCodeAt(i)] << 2 | revLookup[b64.charCodeAt(i + 1)] >> 4;
        arr[curByte++] = tmp & 0xFF;
      }
      if (placeHoldersLen === 1) {
        tmp = revLookup[b64.charCodeAt(i)] << 10 | revLookup[b64.charCodeAt(i + 1)] << 4 | revLookup[b64.charCodeAt(i + 2)] >> 2;
        arr[curByte++] = tmp >> 8 & 0xFF;
        arr[curByte++] = tmp & 0xFF;
      }
      return arr;
    }
    function tripletToBase64(num) {
      return lookup[num >> 18 & 0x3F] + lookup[num >> 12 & 0x3F] + lookup[num >> 6 & 0x3F] + lookup[num & 0x3F];
    }
    function encodeChunk(uint8, start, end) {
      var tmp;
      var output = [];
      for (var i = start; i < end; i += 3) {
        tmp = (uint8[i] << 16 & 0xFF0000) + (uint8[i + 1] << 8 & 0xFF00) + (uint8[i + 2] & 0xFF);
        output.push(tripletToBase64(tmp));
      }
      return output.join('');
    }
    function fromByteArray(uint8) {
      var tmp;
      var len = uint8.length;
      var extraBytes = len % 3;
      var parts = [];
      var maxChunkLength = 16383;
      for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {
        parts.push(encodeChunk(uint8, i, i + maxChunkLength > len2 ? len2 : i + maxChunkLength));
      }
      if (extraBytes === 1) {
        tmp = uint8[len - 1];
        parts.push(lookup[tmp >> 2] + lookup[tmp << 4 & 0x3F] + '==');
      } else if (extraBytes === 2) {
        tmp = (uint8[len - 2] << 8) + uint8[len - 1];
        parts.push(lookup[tmp >> 10] + lookup[tmp >> 4 & 0x3F] + lookup[tmp << 2 & 0x3F] + '=');
      }
      return parts.join('');
    }
  
    var ieee754 = {};
  
    ieee754.read = function (buffer, offset, isLE, mLen, nBytes) {
      var e, m;
      var eLen = nBytes * 8 - mLen - 1;
      var eMax = (1 << eLen) - 1;
      var eBias = eMax >> 1;
      var nBits = -7;
      var i = isLE ? nBytes - 1 : 0;
      var d = isLE ? -1 : 1;
      var s = buffer[offset + i];
      i += d;
      e = s & (1 << -nBits) - 1;
      s >>= -nBits;
      nBits += eLen;
      for (; nBits > 0; e = e * 256 + buffer[offset + i], i += d, nBits -= 8) {}
      m = e & (1 << -nBits) - 1;
      e >>= -nBits;
      nBits += mLen;
      for (; nBits > 0; m = m * 256 + buffer[offset + i], i += d, nBits -= 8) {}
      if (e === 0) {
        e = 1 - eBias;
      } else if (e === eMax) {
        return m ? NaN : (s ? -1 : 1) * Infinity;
      } else {
        m = m + Math.pow(2, mLen);
        e = e - eBias;
      }
      return (s ? -1 : 1) * m * Math.pow(2, e - mLen);
    };
    ieee754.write = function (buffer, value, offset, isLE, mLen, nBytes) {
      var e, m, c;
      var eLen = nBytes * 8 - mLen - 1;
      var eMax = (1 << eLen) - 1;
      var eBias = eMax >> 1;
      var rt = mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0;
      var i = isLE ? 0 : nBytes - 1;
      var d = isLE ? 1 : -1;
      var s = value < 0 || value === 0 && 1 / value < 0 ? 1 : 0;
      value = Math.abs(value);
      if (isNaN(value) || value === Infinity) {
        m = isNaN(value) ? 1 : 0;
        e = eMax;
      } else {
        e = Math.floor(Math.log(value) / Math.LN2);
        if (value * (c = Math.pow(2, -e)) < 1) {
          e--;
          c *= 2;
        }
        if (e + eBias >= 1) {
          value += rt / c;
        } else {
          value += rt * Math.pow(2, 1 - eBias);
        }
        if (value * c >= 2) {
          e++;
          c /= 2;
        }
        if (e + eBias >= eMax) {
          m = 0;
          e = eMax;
        } else if (e + eBias >= 1) {
          m = (value * c - 1) * Math.pow(2, mLen);
          e = e + eBias;
        } else {
          m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);
          e = 0;
        }
      }
      for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}
      e = e << mLen | m;
      eLen += mLen;
      for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}
      buffer[offset + i - d] |= s * 128;
    };
  
    /*!
     * The buffer module from node.js, for the browser.
     *
     * @author   Feross Aboukhadijeh <https://feross.org>
     * @license  MIT
     */
    (function (exports) {
  
      var base64 = base64Js;
      var ieee754$1 = ieee754;
      exports.Buffer = Buffer;
      exports.SlowBuffer = SlowBuffer;
      exports.INSPECT_MAX_BYTES = 50;
      var K_MAX_LENGTH = 0x7fffffff;
      exports.kMaxLength = K_MAX_LENGTH;
      Buffer.TYPED_ARRAY_SUPPORT = typedArraySupport();
      if (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' && typeof console.error === 'function') {
        console.error('This browser lacks typed array (Uint8Array) support which is required by ' + '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.');
      }
      function typedArraySupport() {
        try {
          var arr = new Uint8Array(1);
          arr.__proto__ = {
            __proto__: Uint8Array.prototype,
            foo: function foo() {
              return 42;
            }
          };
          return arr.foo() === 42;
        } catch (e) {
          return false;
        }
      }
      Object.defineProperty(Buffer.prototype, 'parent', {
        enumerable: true,
        get: function get() {
          if (!Buffer.isBuffer(this)) return undefined;
          return this.buffer;
        }
      });
      Object.defineProperty(Buffer.prototype, 'offset', {
        enumerable: true,
        get: function get() {
          if (!Buffer.isBuffer(this)) return undefined;
          return this.byteOffset;
        }
      });
      function createBuffer(length) {
        if (length > K_MAX_LENGTH) {
          throw new RangeError('The value "' + length + '" is invalid for option "size"');
        }
        var buf = new Uint8Array(length);
        buf.__proto__ = Buffer.prototype;
        return buf;
      }
      function Buffer(arg, encodingOrOffset, length) {
        if (typeof arg === 'number') {
          if (typeof encodingOrOffset === 'string') {
            throw new TypeError('The "string" argument must be of type string. Received type number');
          }
          return allocUnsafe(arg);
        }
        return from(arg, encodingOrOffset, length);
      }
      if (typeof Symbol !== 'undefined' && Symbol.species != null && Buffer[Symbol.species] === Buffer) {
        Object.defineProperty(Buffer, Symbol.species, {
          value: null,
          configurable: true,
          enumerable: false,
          writable: false
        });
      }
      Buffer.poolSize = 8192;
      function from(value, encodingOrOffset, length) {
        if (typeof value === 'string') {
          return fromString(value, encodingOrOffset);
        }
        if (ArrayBuffer.isView(value)) {
          return fromArrayLike(value);
        }
        if (value == null) {
          throw TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + typeof value);
        }
        if (isInstance(value, ArrayBuffer) || value && isInstance(value.buffer, ArrayBuffer)) {
          return fromArrayBuffer(value, encodingOrOffset, length);
        }
        if (typeof value === 'number') {
          throw new TypeError('The "value" argument must not be of type number. Received type number');
        }
        var valueOf = value.valueOf && value.valueOf();
        if (valueOf != null && valueOf !== value) {
          return Buffer.from(valueOf, encodingOrOffset, length);
        }
        var b = fromObject(value);
        if (b) return b;
        if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null && typeof value[Symbol.toPrimitive] === 'function') {
          return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length);
        }
        throw new TypeError('The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' + 'or Array-like Object. Received type ' + typeof value);
      }
      Buffer.from = function (value, encodingOrOffset, length) {
        return from(value, encodingOrOffset, length);
      };
      Buffer.prototype.__proto__ = Uint8Array.prototype;
      Buffer.__proto__ = Uint8Array;
      function assertSize(size) {
        if (typeof size !== 'number') {
          throw new TypeError('"size" argument must be of type number');
        } else if (size < 0) {
          throw new RangeError('The value "' + size + '" is invalid for option "size"');
        }
      }
      function alloc(size, fill, encoding) {
        assertSize(size);
        if (size <= 0) {
          return createBuffer(size);
        }
        if (fill !== undefined) {
          return typeof encoding === 'string' ? createBuffer(size).fill(fill, encoding) : createBuffer(size).fill(fill);
        }
        return createBuffer(size);
      }
      Buffer.alloc = function (size, fill, encoding) {
        return alloc(size, fill, encoding);
      };
      function allocUnsafe(size) {
        assertSize(size);
        return createBuffer(size < 0 ? 0 : checked(size) | 0);
      }
      Buffer.allocUnsafe = function (size) {
        return allocUnsafe(size);
      };
      Buffer.allocUnsafeSlow = function (size) {
        return allocUnsafe(size);
      };
      function fromString(string, encoding) {
        if (typeof encoding !== 'string' || encoding === '') {
          encoding = 'utf8';
        }
        if (!Buffer.isEncoding(encoding)) {
          throw new TypeError('Unknown encoding: ' + encoding);
        }
        var length = byteLength(string, encoding) | 0;
        var buf = createBuffer(length);
        var actual = buf.write(string, encoding);
        if (actual !== length) {
          buf = buf.slice(0, actual);
        }
        return buf;
      }
      function fromArrayLike(array) {
        var length = array.length < 0 ? 0 : checked(array.length) | 0;
        var buf = createBuffer(length);
        for (var i = 0; i < length; i += 1) {
          buf[i] = array[i] & 255;
        }
        return buf;
      }
      function fromArrayBuffer(array, byteOffset, length) {
        if (byteOffset < 0 || array.byteLength < byteOffset) {
          throw new RangeError('"offset" is outside of buffer bounds');
        }
        if (array.byteLength < byteOffset + (length || 0)) {
          throw new RangeError('"length" is outside of buffer bounds');
        }
        var buf;
        if (byteOffset === undefined && length === undefined) {
          buf = new Uint8Array(array);
        } else if (length === undefined) {
          buf = new Uint8Array(array, byteOffset);
        } else {
          buf = new Uint8Array(array, byteOffset, length);
        }
        buf.__proto__ = Buffer.prototype;
        return buf;
      }
      function fromObject(obj) {
        if (Buffer.isBuffer(obj)) {
          var len = checked(obj.length) | 0;
          var buf = createBuffer(len);
          if (buf.length === 0) {
            return buf;
          }
          obj.copy(buf, 0, 0, len);
          return buf;
        }
        if (obj.length !== undefined) {
          if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {
            return createBuffer(0);
          }
          return fromArrayLike(obj);
        }
        if (obj.type === 'Buffer' && Array.isArray(obj.data)) {
          return fromArrayLike(obj.data);
        }
      }
      function checked(length) {
        if (length >= K_MAX_LENGTH) {
          throw new RangeError('Attempt to allocate Buffer larger than maximum ' + 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes');
        }
        return length | 0;
      }
      function SlowBuffer(length) {
        if (+length != length) {
          length = 0;
        }
        return Buffer.alloc(+length);
      }
      Buffer.isBuffer = function isBuffer(b) {
        return b != null && b._isBuffer === true && b !== Buffer.prototype;
      };
      Buffer.compare = function compare(a, b) {
        if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength);
        if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength);
        if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {
          throw new TypeError('The "buf1", "buf2" arguments must be one of type Buffer or Uint8Array');
        }
        if (a === b) return 0;
        var x = a.length;
        var y = b.length;
        for (var i = 0, len = Math.min(x, y); i < len; ++i) {
          if (a[i] !== b[i]) {
            x = a[i];
            y = b[i];
            break;
          }
        }
        if (x < y) return -1;
        if (y < x) return 1;
        return 0;
      };
      Buffer.isEncoding = function isEncoding(encoding) {
        switch (String(encoding).toLowerCase()) {
          case 'hex':
          case 'utf8':
          case 'utf-8':
          case 'ascii':
          case 'latin1':
          case 'binary':
          case 'base64':
          case 'ucs2':
          case 'ucs-2':
          case 'utf16le':
          case 'utf-16le':
            return true;
          default:
            return false;
        }
      };
      Buffer.concat = function concat(list, length) {
        if (!Array.isArray(list)) {
          throw new TypeError('"list" argument must be an Array of Buffers');
        }
        if (list.length === 0) {
          return Buffer.alloc(0);
        }
        var i;
        if (length === undefined) {
          length = 0;
          for (i = 0; i < list.length; ++i) {
            length += list[i].length;
          }
        }
        var buffer = Buffer.allocUnsafe(length);
        var pos = 0;
        for (i = 0; i < list.length; ++i) {
          var buf = list[i];
          if (isInstance(buf, Uint8Array)) {
            buf = Buffer.from(buf);
          }
          if (!Buffer.isBuffer(buf)) {
            throw new TypeError('"list" argument must be an Array of Buffers');
          }
          buf.copy(buffer, pos);
          pos += buf.length;
        }
        return buffer;
      };
      function byteLength(string, encoding) {
        if (Buffer.isBuffer(string)) {
          return string.length;
        }
        if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {
          return string.byteLength;
        }
        if (typeof string !== 'string') {
          throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. ' + 'Received type ' + typeof string);
        }
        var len = string.length;
        var mustMatch = arguments.length > 2 && arguments[2] === true;
        if (!mustMatch && len === 0) return 0;
        var loweredCase = false;
        for (;;) {
          switch (encoding) {
            case 'ascii':
            case 'latin1':
            case 'binary':
              return len;
            case 'utf8':
            case 'utf-8':
              return utf8ToBytes(string).length;
            case 'ucs2':
            case 'ucs-2':
            case 'utf16le':
            case 'utf-16le':
              return len * 2;
            case 'hex':
              return len >>> 1;
            case 'base64':
              return base64ToBytes(string).length;
            default:
              if (loweredCase) {
                return mustMatch ? -1 : utf8ToBytes(string).length;
              }
              encoding = ('' + encoding).toLowerCase();
              loweredCase = true;
          }
        }
      }
      Buffer.byteLength = byteLength;
      function slowToString(encoding, start, end) {
        var loweredCase = false;
        if (start === undefined || start < 0) {
          start = 0;
        }
        if (start > this.length) {
          return '';
        }
        if (end === undefined || end > this.length) {
          end = this.length;
        }
        if (end <= 0) {
          return '';
        }
        end >>>= 0;
        start >>>= 0;
        if (end <= start) {
          return '';
        }
        if (!encoding) encoding = 'utf8';
        while (true) {
          switch (encoding) {
            case 'hex':
              return hexSlice(this, start, end);
            case 'utf8':
            case 'utf-8':
              return utf8Slice(this, start, end);
            case 'ascii':
              return asciiSlice(this, start, end);
            case 'latin1':
            case 'binary':
              return latin1Slice(this, start, end);
            case 'base64':
              return base64Slice(this, start, end);
            case 'ucs2':
            case 'ucs-2':
            case 'utf16le':
            case 'utf-16le':
              return utf16leSlice(this, start, end);
            default:
              if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);
              encoding = (encoding + '').toLowerCase();
              loweredCase = true;
          }
        }
      }
      Buffer.prototype._isBuffer = true;
      function swap(b, n, m) {
        var i = b[n];
        b[n] = b[m];
        b[m] = i;
      }
      Buffer.prototype.swap16 = function swap16() {
        var len = this.length;
        if (len % 2 !== 0) {
          throw new RangeError('Buffer size must be a multiple of 16-bits');
        }
        for (var i = 0; i < len; i += 2) {
          swap(this, i, i + 1);
        }
        return this;
      };
      Buffer.prototype.swap32 = function swap32() {
        var len = this.length;
        if (len % 4 !== 0) {
          throw new RangeError('Buffer size must be a multiple of 32-bits');
        }
        for (var i = 0; i < len; i += 4) {
          swap(this, i, i + 3);
          swap(this, i + 1, i + 2);
        }
        return this;
      };
      Buffer.prototype.swap64 = function swap64() {
        var len = this.length;
        if (len % 8 !== 0) {
          throw new RangeError('Buffer size must be a multiple of 64-bits');
        }
        for (var i = 0; i < len; i += 8) {
          swap(this, i, i + 7);
          swap(this, i + 1, i + 6);
          swap(this, i + 2, i + 5);
          swap(this, i + 3, i + 4);
        }
        return this;
      };
      Buffer.prototype.toString = function toString() {
        var length = this.length;
        if (length === 0) return '';
        if (arguments.length === 0) return utf8Slice(this, 0, length);
        return slowToString.apply(this, arguments);
      };
      Buffer.prototype.toLocaleString = Buffer.prototype.toString;
      Buffer.prototype.equals = function equals(b) {
        if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer');
        if (this === b) return true;
        return Buffer.compare(this, b) === 0;
      };
      Buffer.prototype.inspect = function inspect() {
        var str = '';
        var max = exports.INSPECT_MAX_BYTES;
        str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim();
        if (this.length > max) str += ' ... ';
        return '<Buffer ' + str + '>';
      };
      Buffer.prototype.compare = function compare(target, start, end, thisStart, thisEnd) {
        if (isInstance(target, Uint8Array)) {
          target = Buffer.from(target, target.offset, target.byteLength);
        }
        if (!Buffer.isBuffer(target)) {
          throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. ' + 'Received type ' + typeof target);
        }
        if (start === undefined) {
          start = 0;
        }
        if (end === undefined) {
          end = target ? target.length : 0;
        }
        if (thisStart === undefined) {
          thisStart = 0;
        }
        if (thisEnd === undefined) {
          thisEnd = this.length;
        }
        if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {
          throw new RangeError('out of range index');
        }
        if (thisStart >= thisEnd && start >= end) {
          return 0;
        }
        if (thisStart >= thisEnd) {
          return -1;
        }
        if (start >= end) {
          return 1;
        }
        start >>>= 0;
        end >>>= 0;
        thisStart >>>= 0;
        thisEnd >>>= 0;
        if (this === target) return 0;
        var x = thisEnd - thisStart;
        var y = end - start;
        var len = Math.min(x, y);
        var thisCopy = this.slice(thisStart, thisEnd);
        var targetCopy = target.slice(start, end);
        for (var i = 0; i < len; ++i) {
          if (thisCopy[i] !== targetCopy[i]) {
            x = thisCopy[i];
            y = targetCopy[i];
            break;
          }
        }
        if (x < y) return -1;
        if (y < x) return 1;
        return 0;
      };
      function bidirectionalIndexOf(buffer, val, byteOffset, encoding, dir) {
        if (buffer.length === 0) return -1;
        if (typeof byteOffset === 'string') {
          encoding = byteOffset;
          byteOffset = 0;
        } else if (byteOffset > 0x7fffffff) {
          byteOffset = 0x7fffffff;
        } else if (byteOffset < -0x80000000) {
          byteOffset = -0x80000000;
        }
        byteOffset = +byteOffset;
        if (numberIsNaN(byteOffset)) {
          byteOffset = dir ? 0 : buffer.length - 1;
        }
        if (byteOffset < 0) byteOffset = buffer.length + byteOffset;
        if (byteOffset >= buffer.length) {
          if (dir) return -1;else byteOffset = buffer.length - 1;
        } else if (byteOffset < 0) {
          if (dir) byteOffset = 0;else return -1;
        }
        if (typeof val === 'string') {
          val = Buffer.from(val, encoding);
        }
        if (Buffer.isBuffer(val)) {
          if (val.length === 0) {
            return -1;
          }
          return arrayIndexOf(buffer, val, byteOffset, encoding, dir);
        } else if (typeof val === 'number') {
          val = val & 0xFF;
          if (typeof Uint8Array.prototype.indexOf === 'function') {
            if (dir) {
              return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset);
            } else {
              return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset);
            }
          }
          return arrayIndexOf(buffer, [val], byteOffset, encoding, dir);
        }
        throw new TypeError('val must be string, number or Buffer');
      }
      function arrayIndexOf(arr, val, byteOffset, encoding, dir) {
        var indexSize = 1;
        var arrLength = arr.length;
        var valLength = val.length;
        if (encoding !== undefined) {
          encoding = String(encoding).toLowerCase();
          if (encoding === 'ucs2' || encoding === 'ucs-2' || encoding === 'utf16le' || encoding === 'utf-16le') {
            if (arr.length < 2 || val.length < 2) {
              return -1;
            }
            indexSize = 2;
            arrLength /= 2;
            valLength /= 2;
            byteOffset /= 2;
          }
        }
        function read(buf, i) {
          if (indexSize === 1) {
            return buf[i];
          } else {
            return buf.readUInt16BE(i * indexSize);
          }
        }
        var i;
        if (dir) {
          var foundIndex = -1;
          for (i = byteOffset; i < arrLength; i++) {
            if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {
              if (foundIndex === -1) foundIndex = i;
              if (i - foundIndex + 1 === valLength) return foundIndex * indexSize;
            } else {
              if (foundIndex !== -1) i -= i - foundIndex;
              foundIndex = -1;
            }
          }
        } else {
          if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;
          for (i = byteOffset; i >= 0; i--) {
            var found = true;
            for (var j = 0; j < valLength; j++) {
              if (read(arr, i + j) !== read(val, j)) {
                found = false;
                break;
              }
            }
            if (found) return i;
          }
        }
        return -1;
      }
      Buffer.prototype.includes = function includes(val, byteOffset, encoding) {
        return this.indexOf(val, byteOffset, encoding) !== -1;
      };
      Buffer.prototype.indexOf = function indexOf(val, byteOffset, encoding) {
        return bidirectionalIndexOf(this, val, byteOffset, encoding, true);
      };
      Buffer.prototype.lastIndexOf = function lastIndexOf(val, byteOffset, encoding) {
        return bidirectionalIndexOf(this, val, byteOffset, encoding, false);
      };
      function hexWrite(buf, string, offset, length) {
        offset = Number(offset) || 0;
        var remaining = buf.length - offset;
        if (!length) {
          length = remaining;
        } else {
          length = Number(length);
          if (length > remaining) {
            length = remaining;
          }
        }
        var strLen = string.length;
        if (length > strLen / 2) {
          length = strLen / 2;
        }
        for (var i = 0; i < length; ++i) {
          var parsed = parseInt(string.substr(i * 2, 2), 16);
          if (numberIsNaN(parsed)) return i;
          buf[offset + i] = parsed;
        }
        return i;
      }
      function utf8Write(buf, string, offset, length) {
        return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length);
      }
      function asciiWrite(buf, string, offset, length) {
        return blitBuffer(asciiToBytes(string), buf, offset, length);
      }
      function latin1Write(buf, string, offset, length) {
        return asciiWrite(buf, string, offset, length);
      }
      function base64Write(buf, string, offset, length) {
        return blitBuffer(base64ToBytes(string), buf, offset, length);
      }
      function ucs2Write(buf, string, offset, length) {
        return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length);
      }
      Buffer.prototype.write = function write(string, offset, length, encoding) {
        if (offset === undefined) {
          encoding = 'utf8';
          length = this.length;
          offset = 0;
        } else if (length === undefined && typeof offset === 'string') {
          encoding = offset;
          length = this.length;
          offset = 0;
        } else if (isFinite(offset)) {
          offset = offset >>> 0;
          if (isFinite(length)) {
            length = length >>> 0;
            if (encoding === undefined) encoding = 'utf8';
          } else {
            encoding = length;
            length = undefined;
          }
        } else {
          throw new Error('Buffer.write(string, encoding, offset[, length]) is no longer supported');
        }
        var remaining = this.length - offset;
        if (length === undefined || length > remaining) length = remaining;
        if (string.length > 0 && (length < 0 || offset < 0) || offset > this.length) {
          throw new RangeError('Attempt to write outside buffer bounds');
        }
        if (!encoding) encoding = 'utf8';
        var loweredCase = false;
        for (;;) {
          switch (encoding) {
            case 'hex':
              return hexWrite(this, string, offset, length);
            case 'utf8':
            case 'utf-8':
              return utf8Write(this, string, offset, length);
            case 'ascii':
              return asciiWrite(this, string, offset, length);
            case 'latin1':
            case 'binary':
              return latin1Write(this, string, offset, length);
            case 'base64':
              return base64Write(this, string, offset, length);
            case 'ucs2':
            case 'ucs-2':
            case 'utf16le':
            case 'utf-16le':
              return ucs2Write(this, string, offset, length);
            default:
              if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding);
              encoding = ('' + encoding).toLowerCase();
              loweredCase = true;
          }
        }
      };
      Buffer.prototype.toJSON = function toJSON() {
        return {
          type: 'Buffer',
          data: Array.prototype.slice.call(this._arr || this, 0)
        };
      };
      function base64Slice(buf, start, end) {
        if (start === 0 && end === buf.length) {
          return base64.fromByteArray(buf);
        } else {
          return base64.fromByteArray(buf.slice(start, end));
        }
      }
      function utf8Slice(buf, start, end) {
        end = Math.min(buf.length, end);
        var res = [];
        var i = start;
        while (i < end) {
          var firstByte = buf[i];
          var codePoint = null;
          var bytesPerSequence = firstByte > 0xEF ? 4 : firstByte > 0xDF ? 3 : firstByte > 0xBF ? 2 : 1;
          if (i + bytesPerSequence <= end) {
            var secondByte, thirdByte, fourthByte, tempCodePoint;
            switch (bytesPerSequence) {
              case 1:
                if (firstByte < 0x80) {
                  codePoint = firstByte;
                }
                break;
              case 2:
                secondByte = buf[i + 1];
                if ((secondByte & 0xC0) === 0x80) {
                  tempCodePoint = (firstByte & 0x1F) << 0x6 | secondByte & 0x3F;
                  if (tempCodePoint > 0x7F) {
                    codePoint = tempCodePoint;
                  }
                }
                break;
              case 3:
                secondByte = buf[i + 1];
                thirdByte = buf[i + 2];
                if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {
                  tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | thirdByte & 0x3F;
                  if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {
                    codePoint = tempCodePoint;
                  }
                }
                break;
              case 4:
                secondByte = buf[i + 1];
                thirdByte = buf[i + 2];
                fourthByte = buf[i + 3];
                if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {
                  tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | fourthByte & 0x3F;
                  if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {
                    codePoint = tempCodePoint;
                  }
                }
            }
          }
          if (codePoint === null) {
            codePoint = 0xFFFD;
            bytesPerSequence = 1;
          } else if (codePoint > 0xFFFF) {
            codePoint -= 0x10000;
            res.push(codePoint >>> 10 & 0x3FF | 0xD800);
            codePoint = 0xDC00 | codePoint & 0x3FF;
          }
          res.push(codePoint);
          i += bytesPerSequence;
        }
        return decodeCodePointsArray(res);
      }
      var MAX_ARGUMENTS_LENGTH = 0x1000;
      function decodeCodePointsArray(codePoints) {
        var len = codePoints.length;
        if (len <= MAX_ARGUMENTS_LENGTH) {
          return String.fromCharCode.apply(String, codePoints);
        }
        var res = '';
        var i = 0;
        while (i < len) {
          res += String.fromCharCode.apply(String, codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH));
        }
        return res;
      }
      function asciiSlice(buf, start, end) {
        var ret = '';
        end = Math.min(buf.length, end);
        for (var i = start; i < end; ++i) {
          ret += String.fromCharCode(buf[i] & 0x7F);
        }
        return ret;
      }
      function latin1Slice(buf, start, end) {
        var ret = '';
        end = Math.min(buf.length, end);
        for (var i = start; i < end; ++i) {
          ret += String.fromCharCode(buf[i]);
        }
        return ret;
      }
      function hexSlice(buf, start, end) {
        var len = buf.length;
        if (!start || start < 0) start = 0;
        if (!end || end < 0 || end > len) end = len;
        var out = '';
        for (var i = start; i < end; ++i) {
          out += toHex(buf[i]);
        }
        return out;
      }
      function utf16leSlice(buf, start, end) {
        var bytes = buf.slice(start, end);
        var res = '';
        for (var i = 0; i < bytes.length; i += 2) {
          res += String.fromCharCode(bytes[i] + bytes[i + 1] * 256);
        }
        return res;
      }
      Buffer.prototype.slice = function slice(start, end) {
        var len = this.length;
        start = ~~start;
        end = end === undefined ? len : ~~end;
        if (start < 0) {
          start += len;
          if (start < 0) start = 0;
        } else if (start > len) {
          start = len;
        }
        if (end < 0) {
          end += len;
          if (end < 0) end = 0;
        } else if (end > len) {
          end = len;
        }
        if (end < start) end = start;
        var newBuf = this.subarray(start, end);
        newBuf.__proto__ = Buffer.prototype;
        return newBuf;
      };
      function checkOffset(offset, ext, length) {
        if (offset % 1 !== 0 || offset < 0) throw new RangeError('offset is not uint');
        if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length');
      }
      Buffer.prototype.readUIntLE = function readUIntLE(offset, byteLength, noAssert) {
        offset = offset >>> 0;
        byteLength = byteLength >>> 0;
        if (!noAssert) checkOffset(offset, byteLength, this.length);
        var val = this[offset];
        var mul = 1;
        var i = 0;
        while (++i < byteLength && (mul *= 0x100)) {
          val += this[offset + i] * mul;
        }
        return val;
      };
      Buffer.prototype.readUIntBE = function readUIntBE(offset, byteLength, noAssert) {
        offset = offset >>> 0;
        byteLength = byteLength >>> 0;
        if (!noAssert) {
          checkOffset(offset, byteLength, this.length);
        }
        var val = this[offset + --byteLength];
        var mul = 1;
        while (byteLength > 0 && (mul *= 0x100)) {
          val += this[offset + --byteLength] * mul;
        }
        return val;
      };
      Buffer.prototype.readUInt8 = function readUInt8(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 1, this.length);
        return this[offset];
      };
      Buffer.prototype.readUInt16LE = function readUInt16LE(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 2, this.length);
        return this[offset] | this[offset + 1] << 8;
      };
      Buffer.prototype.readUInt16BE = function readUInt16BE(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 2, this.length);
        return this[offset] << 8 | this[offset + 1];
      };
      Buffer.prototype.readUInt32LE = function readUInt32LE(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 4, this.length);
        return (this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16) + this[offset + 3] * 0x1000000;
      };
      Buffer.prototype.readUInt32BE = function readUInt32BE(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 4, this.length);
        return this[offset] * 0x1000000 + (this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3]);
      };
      Buffer.prototype.readIntLE = function readIntLE(offset, byteLength, noAssert) {
        offset = offset >>> 0;
        byteLength = byteLength >>> 0;
        if (!noAssert) checkOffset(offset, byteLength, this.length);
        var val = this[offset];
        var mul = 1;
        var i = 0;
        while (++i < byteLength && (mul *= 0x100)) {
          val += this[offset + i] * mul;
        }
        mul *= 0x80;
        if (val >= mul) val -= Math.pow(2, 8 * byteLength);
        return val;
      };
      Buffer.prototype.readIntBE = function readIntBE(offset, byteLength, noAssert) {
        offset = offset >>> 0;
        byteLength = byteLength >>> 0;
        if (!noAssert) checkOffset(offset, byteLength, this.length);
        var i = byteLength;
        var mul = 1;
        var val = this[offset + --i];
        while (i > 0 && (mul *= 0x100)) {
          val += this[offset + --i] * mul;
        }
        mul *= 0x80;
        if (val >= mul) val -= Math.pow(2, 8 * byteLength);
        return val;
      };
      Buffer.prototype.readInt8 = function readInt8(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 1, this.length);
        if (!(this[offset] & 0x80)) return this[offset];
        return (0xff - this[offset] + 1) * -1;
      };
      Buffer.prototype.readInt16LE = function readInt16LE(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 2, this.length);
        var val = this[offset] | this[offset + 1] << 8;
        return val & 0x8000 ? val | 0xFFFF0000 : val;
      };
      Buffer.prototype.readInt16BE = function readInt16BE(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 2, this.length);
        var val = this[offset + 1] | this[offset] << 8;
        return val & 0x8000 ? val | 0xFFFF0000 : val;
      };
      Buffer.prototype.readInt32LE = function readInt32LE(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 4, this.length);
        return this[offset] | this[offset + 1] << 8 | this[offset + 2] << 16 | this[offset + 3] << 24;
      };
      Buffer.prototype.readInt32BE = function readInt32BE(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 4, this.length);
        return this[offset] << 24 | this[offset + 1] << 16 | this[offset + 2] << 8 | this[offset + 3];
      };
      Buffer.prototype.readFloatLE = function readFloatLE(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 4, this.length);
        return ieee754$1.read(this, offset, true, 23, 4);
      };
      Buffer.prototype.readFloatBE = function readFloatBE(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 4, this.length);
        return ieee754$1.read(this, offset, false, 23, 4);
      };
      Buffer.prototype.readDoubleLE = function readDoubleLE(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 8, this.length);
        return ieee754$1.read(this, offset, true, 52, 8);
      };
      Buffer.prototype.readDoubleBE = function readDoubleBE(offset, noAssert) {
        offset = offset >>> 0;
        if (!noAssert) checkOffset(offset, 8, this.length);
        return ieee754$1.read(this, offset, false, 52, 8);
      };
      function checkInt(buf, value, offset, ext, max, min) {
        if (!Buffer.isBuffer(buf)) throw new TypeError('"buffer" argument must be a Buffer instance');
        if (value > max || value < min) throw new RangeError('"value" argument is out of bounds');
        if (offset + ext > buf.length) throw new RangeError('Index out of range');
      }
      Buffer.prototype.writeUIntLE = function writeUIntLE(value, offset, byteLength, noAssert) {
        value = +value;
        offset = offset >>> 0;
        byteLength = byteLength >>> 0;
        if (!noAssert) {
          var maxBytes = Math.pow(2, 8 * byteLength) - 1;
          checkInt(this, value, offset, byteLength, maxBytes, 0);
        }
        var mul = 1;
        var i = 0;
        this[offset] = value & 0xFF;
        while (++i < byteLength && (mul *= 0x100)) {
          this[offset + i] = value / mul & 0xFF;
        }
        return offset + byteLength;
      };
      Buffer.prototype.writeUIntBE = function writeUIntBE(value, offset, byteLength, noAssert) {
        value = +value;
        offset = offset >>> 0;
        byteLength = byteLength >>> 0;
        if (!noAssert) {
          var maxBytes = Math.pow(2, 8 * byteLength) - 1;
          checkInt(this, value, offset, byteLength, maxBytes, 0);
        }
        var i = byteLength - 1;
        var mul = 1;
        this[offset + i] = value & 0xFF;
        while (--i >= 0 && (mul *= 0x100)) {
          this[offset + i] = value / mul & 0xFF;
        }
        return offset + byteLength;
      };
      Buffer.prototype.writeUInt8 = function writeUInt8(value, offset, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);
        this[offset] = value & 0xff;
        return offset + 1;
      };
      Buffer.prototype.writeUInt16LE = function writeUInt16LE(value, offset, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);
        this[offset] = value & 0xff;
        this[offset + 1] = value >>> 8;
        return offset + 2;
      };
      Buffer.prototype.writeUInt16BE = function writeUInt16BE(value, offset, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);
        this[offset] = value >>> 8;
        this[offset + 1] = value & 0xff;
        return offset + 2;
      };
      Buffer.prototype.writeUInt32LE = function writeUInt32LE(value, offset, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);
        this[offset + 3] = value >>> 24;
        this[offset + 2] = value >>> 16;
        this[offset + 1] = value >>> 8;
        this[offset] = value & 0xff;
        return offset + 4;
      };
      Buffer.prototype.writeUInt32BE = function writeUInt32BE(value, offset, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);
        this[offset] = value >>> 24;
        this[offset + 1] = value >>> 16;
        this[offset + 2] = value >>> 8;
        this[offset + 3] = value & 0xff;
        return offset + 4;
      };
      Buffer.prototype.writeIntLE = function writeIntLE(value, offset, byteLength, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) {
          var limit = Math.pow(2, 8 * byteLength - 1);
          checkInt(this, value, offset, byteLength, limit - 1, -limit);
        }
        var i = 0;
        var mul = 1;
        var sub = 0;
        this[offset] = value & 0xFF;
        while (++i < byteLength && (mul *= 0x100)) {
          if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {
            sub = 1;
          }
          this[offset + i] = (value / mul >> 0) - sub & 0xFF;
        }
        return offset + byteLength;
      };
      Buffer.prototype.writeIntBE = function writeIntBE(value, offset, byteLength, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) {
          var limit = Math.pow(2, 8 * byteLength - 1);
          checkInt(this, value, offset, byteLength, limit - 1, -limit);
        }
        var i = byteLength - 1;
        var mul = 1;
        var sub = 0;
        this[offset + i] = value & 0xFF;
        while (--i >= 0 && (mul *= 0x100)) {
          if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {
            sub = 1;
          }
          this[offset + i] = (value / mul >> 0) - sub & 0xFF;
        }
        return offset + byteLength;
      };
      Buffer.prototype.writeInt8 = function writeInt8(value, offset, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);
        if (value < 0) value = 0xff + value + 1;
        this[offset] = value & 0xff;
        return offset + 1;
      };
      Buffer.prototype.writeInt16LE = function writeInt16LE(value, offset, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);
        this[offset] = value & 0xff;
        this[offset + 1] = value >>> 8;
        return offset + 2;
      };
      Buffer.prototype.writeInt16BE = function writeInt16BE(value, offset, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);
        this[offset] = value >>> 8;
        this[offset + 1] = value & 0xff;
        return offset + 2;
      };
      Buffer.prototype.writeInt32LE = function writeInt32LE(value, offset, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);
        this[offset] = value & 0xff;
        this[offset + 1] = value >>> 8;
        this[offset + 2] = value >>> 16;
        this[offset + 3] = value >>> 24;
        return offset + 4;
      };
      Buffer.prototype.writeInt32BE = function writeInt32BE(value, offset, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);
        if (value < 0) value = 0xffffffff + value + 1;
        this[offset] = value >>> 24;
        this[offset + 1] = value >>> 16;
        this[offset + 2] = value >>> 8;
        this[offset + 3] = value & 0xff;
        return offset + 4;
      };
      function checkIEEE754(buf, value, offset, ext, max, min) {
        if (offset + ext > buf.length) throw new RangeError('Index out of range');
        if (offset < 0) throw new RangeError('Index out of range');
      }
      function writeFloat(buf, value, offset, littleEndian, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) {
          checkIEEE754(buf, value, offset, 4);
        }
        ieee754$1.write(buf, value, offset, littleEndian, 23, 4);
        return offset + 4;
      }
      Buffer.prototype.writeFloatLE = function writeFloatLE(value, offset, noAssert) {
        return writeFloat(this, value, offset, true, noAssert);
      };
      Buffer.prototype.writeFloatBE = function writeFloatBE(value, offset, noAssert) {
        return writeFloat(this, value, offset, false, noAssert);
      };
      function writeDouble(buf, value, offset, littleEndian, noAssert) {
        value = +value;
        offset = offset >>> 0;
        if (!noAssert) {
          checkIEEE754(buf, value, offset, 8);
        }
        ieee754$1.write(buf, value, offset, littleEndian, 52, 8);
        return offset + 8;
      }
      Buffer.prototype.writeDoubleLE = function writeDoubleLE(value, offset, noAssert) {
        return writeDouble(this, value, offset, true, noAssert);
      };
      Buffer.prototype.writeDoubleBE = function writeDoubleBE(value, offset, noAssert) {
        return writeDouble(this, value, offset, false, noAssert);
      };
      Buffer.prototype.copy = function copy(target, targetStart, start, end) {
        if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer');
        if (!start) start = 0;
        if (!end && end !== 0) end = this.length;
        if (targetStart >= target.length) targetStart = target.length;
        if (!targetStart) targetStart = 0;
        if (end > 0 && end < start) end = start;
        if (end === start) return 0;
        if (target.length === 0 || this.length === 0) return 0;
        if (targetStart < 0) {
          throw new RangeError('targetStart out of bounds');
        }
        if (start < 0 || start >= this.length) throw new RangeError('Index out of range');
        if (end < 0) throw new RangeError('sourceEnd out of bounds');
        if (end > this.length) end = this.length;
        if (target.length - targetStart < end - start) {
          end = target.length - targetStart + start;
        }
        var len = end - start;
        if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {
          this.copyWithin(targetStart, start, end);
        } else if (this === target && start < targetStart && targetStart < end) {
          for (var i = len - 1; i >= 0; --i) {
            target[i + targetStart] = this[i + start];
          }
        } else {
          Uint8Array.prototype.set.call(target, this.subarray(start, end), targetStart);
        }
        return len;
      };
      Buffer.prototype.fill = function fill(val, start, end, encoding) {
        if (typeof val === 'string') {
          if (typeof start === 'string') {
            encoding = start;
            start = 0;
            end = this.length;
          } else if (typeof end === 'string') {
            encoding = end;
            end = this.length;
          }
          if (encoding !== undefined && typeof encoding !== 'string') {
            throw new TypeError('encoding must be a string');
          }
          if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {
            throw new TypeError('Unknown encoding: ' + encoding);
          }
          if (val.length === 1) {
            var code = val.charCodeAt(0);
            if (encoding === 'utf8' && code < 128 || encoding === 'latin1') {
              val = code;
            }
          }
        } else if (typeof val === 'number') {
          val = val & 255;
        }
        if (start < 0 || this.length < start || this.length < end) {
          throw new RangeError('Out of range index');
        }
        if (end <= start) {
          return this;
        }
        start = start >>> 0;
        end = end === undefined ? this.length : end >>> 0;
        if (!val) val = 0;
        var i;
        if (typeof val === 'number') {
          for (i = start; i < end; ++i) {
            this[i] = val;
          }
        } else {
          var bytes = Buffer.isBuffer(val) ? val : Buffer.from(val, encoding);
          var len = bytes.length;
          if (len === 0) {
            throw new TypeError('The value "' + val + '" is invalid for argument "value"');
          }
          for (i = 0; i < end - start; ++i) {
            this[i + start] = bytes[i % len];
          }
        }
        return this;
      };
      var INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;
      function base64clean(str) {
        str = str.split('=')[0];
        str = str.trim().replace(INVALID_BASE64_RE, '');
        if (str.length < 2) return '';
        while (str.length % 4 !== 0) {
          str = str + '=';
        }
        return str;
      }
      function toHex(n) {
        if (n < 16) return '0' + n.toString(16);
        return n.toString(16);
      }
      function utf8ToBytes(string, units) {
        units = units || Infinity;
        var codePoint;
        var length = string.length;
        var leadSurrogate = null;
        var bytes = [];
        for (var i = 0; i < length; ++i) {
          codePoint = string.charCodeAt(i);
          if (codePoint > 0xD7FF && codePoint < 0xE000) {
            if (!leadSurrogate) {
              if (codePoint > 0xDBFF) {
                if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
                continue;
              } else if (i + 1 === length) {
                if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
                continue;
              }
              leadSurrogate = codePoint;
              continue;
            }
            if (codePoint < 0xDC00) {
              if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
              leadSurrogate = codePoint;
              continue;
            }
            codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;
          } else if (leadSurrogate) {
            if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);
          }
          leadSurrogate = null;
          if (codePoint < 0x80) {
            if ((units -= 1) < 0) break;
            bytes.push(codePoint);
          } else if (codePoint < 0x800) {
            if ((units -= 2) < 0) break;
            bytes.push(codePoint >> 0x6 | 0xC0, codePoint & 0x3F | 0x80);
          } else if (codePoint < 0x10000) {
            if ((units -= 3) < 0) break;
            bytes.push(codePoint >> 0xC | 0xE0, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);
          } else if (codePoint < 0x110000) {
            if ((units -= 4) < 0) break;
            bytes.push(codePoint >> 0x12 | 0xF0, codePoint >> 0xC & 0x3F | 0x80, codePoint >> 0x6 & 0x3F | 0x80, codePoint & 0x3F | 0x80);
          } else {
            throw new Error('Invalid code point');
          }
        }
        return bytes;
      }
      function asciiToBytes(str) {
        var byteArray = [];
        for (var i = 0; i < str.length; ++i) {
          byteArray.push(str.charCodeAt(i) & 0xFF);
        }
        return byteArray;
      }
      function utf16leToBytes(str, units) {
        var c, hi, lo;
        var byteArray = [];
        for (var i = 0; i < str.length; ++i) {
          if ((units -= 2) < 0) break;
          c = str.charCodeAt(i);
          hi = c >> 8;
          lo = c % 256;
          byteArray.push(lo);
          byteArray.push(hi);
        }
        return byteArray;
      }
      function base64ToBytes(str) {
        return base64.toByteArray(base64clean(str));
      }
      function blitBuffer(src, dst, offset, length) {
        for (var i = 0; i < length; ++i) {
          if (i + offset >= dst.length || i >= src.length) break;
          dst[i + offset] = src[i];
        }
        return i;
      }
      function isInstance(obj, type) {
        return obj instanceof type || obj != null && obj.constructor != null && obj.constructor.name != null && obj.constructor.name === type.name;
      }
      function numberIsNaN(obj) {
        return obj !== obj;
      }
    })(buffer);
  
    (function (module, exports) {
      var buffer$1 = buffer;
      var Buffer = buffer$1.Buffer;
      function copyProps(src, dst) {
        for (var key in src) {
          dst[key] = src[key];
        }
      }
      if (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {
        module.exports = buffer$1;
      } else {
        copyProps(buffer$1, exports);
        exports.Buffer = SafeBuffer;
      }
      function SafeBuffer(arg, encodingOrOffset, length) {
        return Buffer(arg, encodingOrOffset, length);
      }
      copyProps(Buffer, SafeBuffer);
      SafeBuffer.from = function (arg, encodingOrOffset, length) {
        if (typeof arg === 'number') {
          throw new TypeError('Argument must not be a number');
        }
        return Buffer(arg, encodingOrOffset, length);
      };
      SafeBuffer.alloc = function (size, fill, encoding) {
        if (typeof size !== 'number') {
          throw new TypeError('Argument must be a number');
        }
        var buf = Buffer(size);
        if (fill !== undefined) {
          if (typeof encoding === 'string') {
            buf.fill(fill, encoding);
          } else {
            buf.fill(fill);
          }
        } else {
          buf.fill(0);
        }
        return buf;
      };
      SafeBuffer.allocUnsafe = function (size) {
        if (typeof size !== 'number') {
          throw new TypeError('Argument must be a number');
        }
        return Buffer(size);
      };
      SafeBuffer.allocUnsafeSlow = function (size) {
        if (typeof size !== 'number') {
          throw new TypeError('Argument must be a number');
        }
        return buffer$1.SlowBuffer(size);
      };
    })(safeBuffer, safeBuffer.exports);
  
    (function (exports) {
  
      var fs = require$$0$8;
      var path = require$$1$1;
      var SafeBuffer = safeBuffer.exports;
      Object.defineProperty(exports, 'commentRegex', {
        get: function getCommentRegex() {
          return /^\s*\/(?:\/|\*)[@#]\s+sourceMappingURL=data:(?:application|text)\/json;(?:charset[:=]\S+?;)?base64,(?:.*)$/mg;
        }
      });
      Object.defineProperty(exports, 'mapFileCommentRegex', {
        get: function getMapFileCommentRegex() {
          return /(?:\/\/[@#][ \t]+sourceMappingURL=([^\s'"`]+?)[ \t]*$)|(?:\/\*[@#][ \t]+sourceMappingURL=([^\*]+?)[ \t]*(?:\*\/){1}[ \t]*$)/mg;
        }
      });
      function decodeBase64(base64) {
        return SafeBuffer.Buffer.from(base64, 'base64').toString();
      }
      function stripComment(sm) {
        return sm.split(',').pop();
      }
      function readFromFileMap(sm, dir) {
        var r = exports.mapFileCommentRegex.exec(sm);
        var filename = r[1] || r[2];
        var filepath = path.resolve(dir, filename);
        try {
          return fs.readFileSync(filepath, 'utf8');
        } catch (e) {
          throw new Error('An error occurred while trying to read the map file at ' + filepath + '\n' + e);
        }
      }
      function Converter(sm, opts) {
        opts = opts || {};
        if (opts.isFileComment) sm = readFromFileMap(sm, opts.commentFileDir);
        if (opts.hasComment) sm = stripComment(sm);
        if (opts.isEncoded) sm = decodeBase64(sm);
        if (opts.isJSON || opts.isEncoded) sm = JSON.parse(sm);
        this.sourcemap = sm;
      }
      Converter.prototype.toJSON = function (space) {
        return JSON.stringify(this.sourcemap, null, space);
      };
      Converter.prototype.toBase64 = function () {
        var json = this.toJSON();
        return SafeBuffer.Buffer.from(json, 'utf8').toString('base64');
      };
      Converter.prototype.toComment = function (options) {
        var base64 = this.toBase64();
        var data = 'sourceMappingURL=data:application/json;charset=utf-8;base64,' + base64;
        return options && options.multiline ? '/*# ' + data + ' */' : '//# ' + data;
      };
      Converter.prototype.toObject = function () {
        return JSON.parse(this.toJSON());
      };
      Converter.prototype.addProperty = function (key, value) {
        if (this.sourcemap.hasOwnProperty(key)) throw new Error('property "' + key + '" already exists on the sourcemap, use set property instead');
        return this.setProperty(key, value);
      };
      Converter.prototype.setProperty = function (key, value) {
        this.sourcemap[key] = value;
        return this;
      };
      Converter.prototype.getProperty = function (key) {
        return this.sourcemap[key];
      };
      exports.fromObject = function (obj) {
        return new Converter(obj);
      };
      exports.fromJSON = function (json) {
        return new Converter(json, {
          isJSON: true
        });
      };
      exports.fromBase64 = function (base64) {
        return new Converter(base64, {
          isEncoded: true
        });
      };
      exports.fromComment = function (comment) {
        comment = comment.replace(/^\/\*/g, '//').replace(/\*\/$/g, '');
        return new Converter(comment, {
          isEncoded: true,
          hasComment: true
        });
      };
      exports.fromMapFileComment = function (comment, dir) {
        return new Converter(comment, {
          commentFileDir: dir,
          isFileComment: true,
          isJSON: true
        });
      };
      exports.fromSource = function (content) {
        var m = content.match(exports.commentRegex);
        return m ? exports.fromComment(m.pop()) : null;
      };
      exports.fromMapFileSource = function (content, dir) {
        var m = content.match(exports.mapFileCommentRegex);
        return m ? exports.fromMapFileComment(m.pop(), dir) : null;
      };
      exports.removeComments = function (src) {
        return src.replace(exports.commentRegex, '');
      };
      exports.removeMapFileComments = function (src) {
        return src.replace(exports.mapFileCommentRegex, '');
      };
      exports.generateMapFileComment = function (file, options) {
        var data = 'sourceMappingURL=' + file;
        return options && options.multiline ? '/*# ' + data + ' */' : '//# ' + data;
      };
    })(convertSourceMap);
  
    var pluginNameMap = {
      asyncDoExpressions: {
        syntax: {
          name: "@babel/plugin-syntax-async-do-expressions",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-async-do-expressions"
        }
      },
      decimal: {
        syntax: {
          name: "@babel/plugin-syntax-decimal",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-decimal"
        }
      },
      decorators: {
        syntax: {
          name: "@babel/plugin-syntax-decorators",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-decorators"
        },
        transform: {
          name: "@babel/plugin-proposal-decorators",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-decorators"
        }
      },
      doExpressions: {
        syntax: {
          name: "@babel/plugin-syntax-do-expressions",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-do-expressions"
        },
        transform: {
          name: "@babel/plugin-proposal-do-expressions",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-do-expressions"
        }
      },
      exportDefaultFrom: {
        syntax: {
          name: "@babel/plugin-syntax-export-default-from",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-export-default-from"
        },
        transform: {
          name: "@babel/plugin-proposal-export-default-from",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-export-default-from"
        }
      },
      flow: {
        syntax: {
          name: "@babel/plugin-syntax-flow",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-flow"
        },
        transform: {
          name: "@babel/preset-flow",
          url: "https://github.com/babel/babel/tree/main/packages/babel-preset-flow"
        }
      },
      functionBind: {
        syntax: {
          name: "@babel/plugin-syntax-function-bind",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-function-bind"
        },
        transform: {
          name: "@babel/plugin-proposal-function-bind",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-function-bind"
        }
      },
      functionSent: {
        syntax: {
          name: "@babel/plugin-syntax-function-sent",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-function-sent"
        },
        transform: {
          name: "@babel/plugin-proposal-function-sent",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-function-sent"
        }
      },
      jsx: {
        syntax: {
          name: "@babel/plugin-syntax-jsx",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-jsx"
        },
        transform: {
          name: "@babel/preset-react",
          url: "https://github.com/babel/babel/tree/main/packages/babel-preset-react"
        }
      },
      importAssertions: {
        syntax: {
          name: "@babel/plugin-syntax-import-assertions",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-import-assertions"
        }
      },
      pipelineOperator: {
        syntax: {
          name: "@babel/plugin-syntax-pipeline-operator",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-pipeline-operator"
        },
        transform: {
          name: "@babel/plugin-proposal-pipeline-operator",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-pipeline-operator"
        }
      },
      recordAndTuple: {
        syntax: {
          name: "@babel/plugin-syntax-record-and-tuple",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-record-and-tuple"
        }
      },
      regexpUnicodeSets: {
        syntax: {
          name: "@babel/plugin-syntax-unicode-sets-regex",
          url: "https://github.com/babel/babel/blob/main/packages/babel-plugin-syntax-unicode-sets-regex/README.md"
        },
        transform: {
          name: "@babel/plugin-proposal-unicode-sets-regex",
          url: "https://github.com/babel/babel/blob/main/packages/babel-plugin-proposalunicode-sets-regex/README.md"
        }
      },
      throwExpressions: {
        syntax: {
          name: "@babel/plugin-syntax-throw-expressions",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-throw-expressions"
        },
        transform: {
          name: "@babel/plugin-proposal-throw-expressions",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-throw-expressions"
        }
      },
      typescript: {
        syntax: {
          name: "@babel/plugin-syntax-typescript",
          url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-typescript"
        },
        transform: {
          name: "@babel/preset-typescript",
          url: "https://github.com/babel/babel/tree/main/packages/babel-preset-typescript"
        }
      }
    };
    {
      Object.assign(pluginNameMap, {
        asyncGenerators: {
          syntax: {
            name: "@babel/plugin-syntax-async-generators",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-async-generators"
          },
          transform: {
            name: "@babel/plugin-proposal-async-generator-functions",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-async-generator-functions"
          }
        },
        classProperties: {
          syntax: {
            name: "@babel/plugin-syntax-class-properties",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-class-properties"
          },
          transform: {
            name: "@babel/plugin-proposal-class-properties",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-class-properties"
          }
        },
        classPrivateProperties: {
          syntax: {
            name: "@babel/plugin-syntax-class-properties",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-class-properties"
          },
          transform: {
            name: "@babel/plugin-proposal-class-properties",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-class-properties"
          }
        },
        classPrivateMethods: {
          syntax: {
            name: "@babel/plugin-syntax-class-properties",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-class-properties"
          },
          transform: {
            name: "@babel/plugin-proposal-private-methods",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-private-methods"
          }
        },
        classStaticBlock: {
          syntax: {
            name: "@babel/plugin-syntax-class-static-block",
            url: "https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-syntax-class-static-block"
          },
          transform: {
            name: "@babel/plugin-proposal-class-static-block",
            url: "https://github.com/babel/babel/tree/HEAD/packages/babel-plugin-proposal-class-static-block"
          }
        },
        dynamicImport: {
          syntax: {
            name: "@babel/plugin-syntax-dynamic-import",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-dynamic-import"
          }
        },
        exportNamespaceFrom: {
          syntax: {
            name: "@babel/plugin-syntax-export-namespace-from",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-export-namespace-from"
          },
          transform: {
            name: "@babel/plugin-proposal-export-namespace-from",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-export-namespace-from"
          }
        },
        importMeta: {
          syntax: {
            name: "@babel/plugin-syntax-import-meta",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-import-meta"
          }
        },
        logicalAssignment: {
          syntax: {
            name: "@babel/plugin-syntax-logical-assignment-operators",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-logical-assignment-operators"
          },
          transform: {
            name: "@babel/plugin-proposal-logical-assignment-operators",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-logical-assignment-operators"
          }
        },
        moduleStringNames: {
          syntax: {
            name: "@babel/plugin-syntax-module-string-names",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-module-string-names"
          }
        },
        numericSeparator: {
          syntax: {
            name: "@babel/plugin-syntax-numeric-separator",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-numeric-separator"
          },
          transform: {
            name: "@babel/plugin-proposal-numeric-separator",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-numeric-separator"
          }
        },
        nullishCoalescingOperator: {
          syntax: {
            name: "@babel/plugin-syntax-nullish-coalescing-operator",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-nullish-coalescing-operator"
          },
          transform: {
            name: "@babel/plugin-proposal-nullish-coalescing-operator",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-transform-nullish-coalescing-opearator"
          }
        },
        objectRestSpread: {
          syntax: {
            name: "@babel/plugin-syntax-object-rest-spread",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-object-rest-spread"
          },
          transform: {
            name: "@babel/plugin-proposal-object-rest-spread",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-object-rest-spread"
          }
        },
        optionalCatchBinding: {
          syntax: {
            name: "@babel/plugin-syntax-optional-catch-binding",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-optional-catch-binding"
          },
          transform: {
            name: "@babel/plugin-proposal-optional-catch-binding",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-optional-catch-binding"
          }
        },
        optionalChaining: {
          syntax: {
            name: "@babel/plugin-syntax-optional-chaining",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-optional-chaining"
          },
          transform: {
            name: "@babel/plugin-proposal-optional-chaining",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-optional-chaining"
          }
        },
        privateIn: {
          syntax: {
            name: "@babel/plugin-syntax-private-property-in-object",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-syntax-private-property-in-object"
          },
          transform: {
            name: "@babel/plugin-proposal-private-property-in-object",
            url: "https://github.com/babel/babel/tree/main/packages/babel-plugin-proposal-private-property-in-object"
          }
        }
      });
    }
    var getNameURLCombination = function getNameURLCombination(_ref) {
      var name = _ref.name,
        url = _ref.url;
      return name + " (" + url + ")";
    };
    function generateMissingPluginMessage(missingPluginName, loc, codeFrame) {
      var helpMessage = "Support for the experimental syntax '" + missingPluginName + "' isn't currently enabled " + ("(" + loc.line + ":" + (loc.column + 1) + "):\n\n") + codeFrame;
      var pluginInfo = pluginNameMap[missingPluginName];
      if (pluginInfo) {
        var syntaxPlugin = pluginInfo.syntax,
          transformPlugin = pluginInfo.transform;
        if (syntaxPlugin) {
          var syntaxPluginInfo = getNameURLCombination(syntaxPlugin);
          if (transformPlugin) {
            var transformPluginInfo = getNameURLCombination(transformPlugin);
            var sectionType = transformPlugin.name.startsWith("@babel/plugin") ? "plugins" : "presets";
            helpMessage += "\n\nAdd " + transformPluginInfo + " to the '" + sectionType + "' section of your Babel config to enable transformation.\nIf you want to leave it as-is, add " + syntaxPluginInfo + " to the 'plugins' section to enable parsing.";
          } else {
            helpMessage += "\n\nAdd " + syntaxPluginInfo + " to the 'plugins' section of your Babel config " + "to enable parsing.";
          }
        }
      }
      return helpMessage;
    }
  
    function parser$1(pluginPasses, _ref, code) {
      var parserOpts = _ref.parserOpts,
        _ref$highlightCode = _ref.highlightCode,
        highlightCode = _ref$highlightCode === void 0 ? true : _ref$highlightCode,
        _ref$filename = _ref.filename,
        filename = _ref$filename === void 0 ? "unknown" : _ref$filename;
      return _regeneratorRuntime().mark(function _callee() {
        var results, _iterator, _step, plugins, _iterator2, _step2, plugin, parserOverride, ast, loc, missingPlugin, codeFrame;
        return _regeneratorRuntime().wrap(function _callee$(_context) {
          while (1) switch (_context.prev = _context.next) {
            case 0:
              _context.prev = 0;
              results = [];
              for (_iterator = _createForOfIteratorHelperLoose(pluginPasses); !(_step = _iterator()).done;) {
                plugins = _step.value;
                for (_iterator2 = _createForOfIteratorHelperLoose(plugins); !(_step2 = _iterator2()).done;) {
                  plugin = _step2.value;
                  parserOverride = plugin.parserOverride;
                  if (parserOverride) {
                    ast = parserOverride(code, parserOpts, parse$4);
                    if (ast !== undefined) results.push(ast);
                  }
                }
              }
              if (!(results.length === 0)) {
                _context.next = 7;
                break;
              }
              return _context.abrupt("return", parse$4(code, parserOpts));
            case 7:
              if (!(results.length === 1)) {
                _context.next = 12;
                break;
              }
              return _context.delegateYield([], "t0", 9);
            case 9:
              if (!(typeof results[0].then === "function")) {
                _context.next = 11;
                break;
              }
              throw new Error("You appear to be using an async parser plugin, " + "which your current version of Babel does not support. " + "If you're using a published plugin, you may need to upgrade " + "your @babel/core version.");
            case 11:
              return _context.abrupt("return", results[0]);
            case 12:
              throw new Error("More than one plugin attempted to override parsing.");
            case 15:
              _context.prev = 15;
              _context.t1 = _context["catch"](0);
              if (_context.t1.code === "BABEL_PARSER_SOURCETYPE_MODULE_REQUIRED") {
                _context.t1.message += "\nConsider renaming the file to '.mjs', or setting sourceType:module " + "or sourceType:unambiguous in your Babel config for this file.";
              }
              loc = _context.t1.loc, missingPlugin = _context.t1.missingPlugin;
              if (loc) {
                codeFrame = codeFrameColumns(code, {
                  start: {
                    line: loc.line,
                    column: loc.column + 1
                  }
                }, {
                  highlightCode: highlightCode
                });
                if (missingPlugin) {
                  _context.t1.message = filename + ": " + generateMissingPluginMessage(missingPlugin[0], loc, codeFrame);
                } else {
                  _context.t1.message = filename + ": " + _context.t1.message + "\n\n" + codeFrame;
                }
                _context.t1.code = "BABEL_PARSE_ERROR";
              }
              throw _context.t1;
            case 21:
            case "end":
              return _context.stop();
          }
        }, _callee, null, [[0, 15]]);
      })();
    }
  
    function deepClone(value, cache) {
      if (value !== null) {
        if (cache.has(value)) return cache.get(value);
        var cloned;
        if (Array.isArray(value)) {
          cloned = new Array(value.length);
          cache.set(value, cloned);
          for (var i = 0; i < value.length; i++) {
            cloned[i] = typeof value[i] !== "object" ? value[i] : deepClone(value[i], cache);
          }
        } else {
          cloned = {};
          cache.set(value, cloned);
          var keys = Object.keys(value);
          for (var _i = 0; _i < keys.length; _i++) {
            var key = keys[_i];
            cloned[key] = typeof value[key] !== "object" ? value[key] : deepClone(value[key], cache);
          }
        }
        return cloned;
      }
      return value;
    }
    function cloneDeep (value) {
      if (typeof value !== "object") return value;
      return deepClone(value, new Map());
    }
  
    var _marked$2 = _regeneratorRuntime().mark(normalizeFile);
    var file = file$2,
      traverseFast = traverseFast$2;
    var debug = buildDebug("babel:transform:file");
    var INLINE_SOURCEMAP_REGEX = /^[@#]\s+sourceMappingURL=data:(?:application|text)\/json;(?:charset[:=]\S+?;)?base64,(?:.*)$/;
    var EXTERNAL_SOURCEMAP_REGEX = /^[@#][ \t]+sourceMappingURL=([^\s'"`]+)[ \t]*$/;
    function normalizeFile(pluginPasses, options, code, ast) {
      var inputMap, lastComment, _lastComment, match, inputMapContent;
      return _regeneratorRuntime().wrap(function normalizeFile$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            code = "" + (code || "");
            if (!ast) {
              _context.next = 11;
              break;
            }
            if (!(ast.type === "Program")) {
              _context.next = 6;
              break;
            }
            ast = file(ast, [], []);
            _context.next = 8;
            break;
          case 6:
            if (!(ast.type !== "File")) {
              _context.next = 8;
              break;
            }
            throw new Error("AST root must be a Program or File node");
          case 8:
            if (options.cloneInputAst) {
              ast = cloneDeep(ast);
            }
            _context.next = 13;
            break;
          case 11:
            return _context.delegateYield(parser$1(pluginPasses, options, code), "t0", 12);
          case 12:
            ast = _context.t0;
          case 13:
            inputMap = null;
            if (options.inputSourceMap !== false) {
              if (typeof options.inputSourceMap === "object") {
                inputMap = convertSourceMap.fromObject(options.inputSourceMap);
              }
              if (!inputMap) {
                lastComment = extractComments(INLINE_SOURCEMAP_REGEX, ast);
                if (lastComment) {
                  try {
                    inputMap = convertSourceMap.fromComment(lastComment);
                  } catch (err) {
                    debug("discarding unknown inline input sourcemap", err);
                  }
                }
              }
              if (!inputMap) {
                _lastComment = extractComments(EXTERNAL_SOURCEMAP_REGEX, ast);
                if (typeof options.filename === "string" && _lastComment) {
                  try {
                    match = EXTERNAL_SOURCEMAP_REGEX.exec(_lastComment);
                    inputMapContent = fs.readFileSync(path$1.resolve(path$1.dirname(options.filename), match[1]), "utf8");
                    inputMap = convertSourceMap.fromJSON(inputMapContent);
                  } catch (err) {
                    debug("discarding unknown file input sourcemap", err);
                  }
                } else if (_lastComment) {
                  debug("discarding un-loadable file input sourcemap");
                }
              }
            }
            return _context.abrupt("return", new File(options, {
              code: code,
              ast: ast,
              inputMap: inputMap
            }));
          case 16:
          case "end":
            return _context.stop();
        }
      }, _marked$2);
    }
    function extractCommentsFromList(regex, comments, lastComment) {
      if (comments) {
        comments = comments.filter(function (_ref) {
          var value = _ref.value;
          if (regex.test(value)) {
            lastComment = value;
            return false;
          }
          return true;
        });
      }
      return [comments, lastComment];
    }
    function extractComments(regex, ast) {
      var lastComment = null;
      traverseFast(ast, function (node) {
        var _extractCommentsFromL = extractCommentsFromList(regex, node.leadingComments, lastComment);
        var _extractCommentsFromL2 = _slicedToArray(_extractCommentsFromL, 2);
        node.leadingComments = _extractCommentsFromL2[0];
        lastComment = _extractCommentsFromL2[1];
        var _extractCommentsFromL3 = extractCommentsFromList(regex, node.innerComments, lastComment);
        var _extractCommentsFromL4 = _slicedToArray(_extractCommentsFromL3, 2);
        node.innerComments = _extractCommentsFromL4[0];
        lastComment = _extractCommentsFromL4[1];
        var _extractCommentsFromL5 = extractCommentsFromList(regex, node.trailingComments, lastComment);
        var _extractCommentsFromL6 = _slicedToArray(_extractCommentsFromL5, 2);
        node.trailingComments = _extractCommentsFromL6[0];
        lastComment = _extractCommentsFromL6[1];
      });
      return lastComment;
    }
  
    var genMapping_umd = {exports: {}};
  
    (function (module, exports) {
      (function (global, factory) {
        factory(exports, requireSetArray_umd(), requireSourcemapCodec_umd()) ;
      })(commonjsGlobal, function (exports, setArray, sourcemapCodec) {
        exports.addSegment = void 0;
        exports.addMapping = void 0;
        exports.setSourceContent = void 0;
        exports.decodedMap = void 0;
        exports.encodedMap = void 0;
        exports.allMappings = void 0;
        var GenMapping = _createClass(function GenMapping(_temp) {
          var _ref = _temp === void 0 ? {} : _temp,
            file = _ref.file,
            sourceRoot = _ref.sourceRoot;
          this._names = new setArray.SetArray();
          this._sources = new setArray.SetArray();
          this._sourcesContent = [];
          this._mappings = [];
          this.file = file;
          this.sourceRoot = sourceRoot;
        });
        (function () {
          exports.addSegment = function (map, genLine, genColumn, source, sourceLine, sourceColumn, name) {
            var mappings = map._mappings,
              sources = map._sources,
              sourcesContent = map._sourcesContent,
              names = map._names;
            var line = getLine(mappings, genLine);
            if (source == null) {
              var _seg = [genColumn];
              var _index = getColumnIndex(line, genColumn, _seg);
              return insert(line, _index, _seg);
            }
            var sourcesIndex = setArray.put(sources, source);
            var seg = name ? [genColumn, sourcesIndex, sourceLine, sourceColumn, setArray.put(names, name)] : [genColumn, sourcesIndex, sourceLine, sourceColumn];
            var index = getColumnIndex(line, genColumn, seg);
            if (sourcesIndex === sourcesContent.length) sourcesContent[sourcesIndex] = null;
            insert(line, index, seg);
          };
          exports.addMapping = function (map, mapping) {
            var generated = mapping.generated,
              source = mapping.source,
              original = mapping.original,
              name = mapping.name;
            return exports.addSegment(map, generated.line - 1, generated.column, source, original == null ? undefined : original.line - 1, original === null || original === void 0 ? void 0 : original.column, name);
          };
          exports.setSourceContent = function (map, source, content) {
            var sources = map._sources,
              sourcesContent = map._sourcesContent;
            sourcesContent[setArray.put(sources, source)] = content;
          };
          exports.decodedMap = function (map) {
            var file = map.file,
              sourceRoot = map.sourceRoot,
              mappings = map._mappings,
              sources = map._sources,
              sourcesContent = map._sourcesContent,
              names = map._names;
            return {
              version: 3,
              file: file,
              names: names.array,
              sourceRoot: sourceRoot || undefined,
              sources: sources.array,
              sourcesContent: sourcesContent,
              mappings: mappings
            };
          };
          exports.encodedMap = function (map) {
            var decoded = exports.decodedMap(map);
            return Object.assign(Object.assign({}, decoded), {
              mappings: sourcemapCodec.encode(decoded.mappings)
            });
          };
          exports.allMappings = function (map) {
            var out = [];
            var mappings = map._mappings,
              sources = map._sources,
              names = map._names;
            for (var i = 0; i < mappings.length; i++) {
              var line = mappings[i];
              for (var j = 0; j < line.length; j++) {
                var seg = line[j];
                var generated = {
                  line: i + 1,
                  column: seg[0]
                };
                var source = undefined;
                var original = undefined;
                var name = undefined;
                if (seg.length !== 1) {
                  source = sources.array[seg[1]];
                  original = {
                    line: seg[2] + 1,
                    column: seg[3]
                  };
                  if (seg.length === 5) name = names.array[seg[4]];
                }
                out.push({
                  generated: generated,
                  source: source,
                  original: original,
                  name: name
                });
              }
            }
            return out;
          };
        })();
        function getLine(mappings, index) {
          for (var i = mappings.length; i <= index; i++) {
            mappings[i] = [];
          }
          return mappings[index];
        }
        function getColumnIndex(line, column, seg) {
          var index = line.length;
          for (var i = index - 1; i >= 0; i--, index--) {
            var current = line[i];
            var col = current[0];
            if (col > column) continue;
            if (col < column) break;
            var cmp = compare(current, seg);
            if (cmp === 0) return index;
            if (cmp < 0) break;
          }
          return index;
        }
        function compare(a, b) {
          var cmp = compareNum(a.length, b.length);
          if (cmp !== 0) return cmp;
          if (a.length === 1) return 0;
          cmp = compareNum(a[1], b[1]);
          if (cmp !== 0) return cmp;
          cmp = compareNum(a[2], b[2]);
          if (cmp !== 0) return cmp;
          cmp = compareNum(a[3], b[3]);
          if (cmp !== 0) return cmp;
          if (a.length === 4) return 0;
          return compareNum(a[4], b[4]);
        }
        function compareNum(a, b) {
          return a - b;
        }
        function insert(array, index, value) {
          if (index === -1) return;
          for (var i = array.length; i > index; i--) {
            array[i] = array[i - 1];
          }
          array[index] = value;
        }
        exports.GenMapping = GenMapping;
        Object.defineProperty(exports, '__esModule', {
          value: true
        });
      });
    })(genMapping_umd, genMapping_umd.exports);
  
    var SOURCELESS_MAPPING = {
      source: null,
      column: null,
      line: null,
      name: null,
      content: null
    };
    var EMPTY_SOURCES = [];
    function Source(map, sources, source, content) {
      return {
        map: map,
        sources: sources,
        source: source,
        content: content
      };
    }
    function MapSource(map, sources) {
      return Source(map, sources, '', null);
    }
    function OriginalSource(source, content) {
      return Source(null, EMPTY_SOURCES, source, content);
    }
    function traceMappings(tree) {
      var gen = new genMapping_umd.exports.GenMapping({
        file: tree.map.file
      });
      var rootSources = tree.sources,
        map = tree.map;
      var rootNames = map.names;
      var rootMappings = traceMapping_umd.exports.decodedMappings(map);
      for (var i = 0; i < rootMappings.length; i++) {
        var segments = rootMappings[i];
        var lastSource = null;
        var lastSourceLine = null;
        var lastSourceColumn = null;
        for (var j = 0; j < segments.length; j++) {
          var segment = segments[j];
          var genCol = segment[0];
          var traced = SOURCELESS_MAPPING;
          if (segment.length !== 1) {
            var _source = rootSources[segment[1]];
            traced = originalPositionFor(_source, segment[2], segment[3], segment.length === 5 ? rootNames[segment[4]] : '');
            if (traced == null) continue;
          }
          var _traced = traced,
            column = _traced.column,
            line = _traced.line,
            name = _traced.name,
            content = _traced.content,
            source = _traced.source;
          if (line === lastSourceLine && column === lastSourceColumn && source === lastSource) {
            continue;
          }
          lastSourceLine = line;
          lastSourceColumn = column;
          lastSource = source;
          genMapping_umd.exports.addSegment(gen, i, genCol, source, line, column, name);
          if (content != null) genMapping_umd.exports.setSourceContent(gen, source, content);
        }
      }
      return gen;
    }
    function originalPositionFor(source, line, column, name) {
      if (!source.map) {
        return {
          column: column,
          line: line,
          name: name,
          source: source.source,
          content: source.content
        };
      }
      var segment = traceMapping_umd.exports.traceSegment(source.map, line, column);
      if (segment == null) return null;
      if (segment.length === 1) return SOURCELESS_MAPPING;
      return originalPositionFor(source.sources[segment[1]], segment[2], segment[3], segment.length === 5 ? source.map.names[segment[4]] : name);
    }
    function asArray(value) {
      if (Array.isArray(value)) return value;
      return [value];
    }
    function buildSourceMapTree(input, loader) {
      var maps = asArray(input).map(function (m) {
        return new traceMapping_umd.exports.TraceMap(m, '');
      });
      var map = maps.pop();
      for (var i = 0; i < maps.length; i++) {
        if (maps[i].sources.length > 1) {
          throw new Error("Transformation map " + i + " must have exactly one source file.\n" + 'Did you specify these with the most recent transformation maps first?');
        }
      }
      var tree = build$1(map, loader, '', 0);
      for (var _i = maps.length - 1; _i >= 0; _i--) {
        tree = MapSource(maps[_i], [tree]);
      }
      return tree;
    }
    function build$1(map, loader, importer, importerDepth) {
      var resolvedSources = map.resolvedSources,
        sourcesContent = map.sourcesContent;
      var depth = importerDepth + 1;
      var children = resolvedSources.map(function (sourceFile, i) {
        var ctx = {
          importer: importer,
          depth: depth,
          source: sourceFile || '',
          content: undefined
        };
        var sourceMap = loader(ctx.source, ctx);
        var source = ctx.source,
          content = ctx.content;
        if (sourceMap) return build$1(new traceMapping_umd.exports.TraceMap(sourceMap, source), loader, source, depth);
        var sourceContent = content !== undefined ? content : sourcesContent ? sourcesContent[i] : null;
        return OriginalSource(source, sourceContent);
      });
      return MapSource(map, children);
    }
    var SourceMap = function () {
      function SourceMap(map, options) {
        var out = options.decodedMappings ? genMapping_umd.exports.decodedMap(map) : genMapping_umd.exports.encodedMap(map);
        this.version = out.version;
        this.file = out.file;
        this.mappings = out.mappings;
        this.names = out.names;
        this.sourceRoot = out.sourceRoot;
        this.sources = out.sources;
        if (!options.excludeContent) {
          this.sourcesContent = out.sourcesContent;
        }
      }
      var _proto = SourceMap.prototype;
      _proto.toString = function toString() {
        return JSON.stringify(this);
      };
      return _createClass(SourceMap);
    }();
    function remapping(input, loader, options) {
      var opts = typeof options === 'object' ? options : {
        excludeContent: !!options,
        decodedMappings: false
      };
      var tree = buildSourceMapTree(input, loader);
      return new SourceMap(traceMappings(tree), opts);
    }
  
    function mergeSourceMap(inputMap, map, sourceFileName) {
      var source = sourceFileName.replace(/\\/g, "/");
      var found = false;
      var result = remapping(rootless(map), function (s, ctx) {
        if (s === source && !found) {
          found = true;
          ctx.source = "";
          return rootless(inputMap);
        }
        return null;
      });
      if (typeof inputMap.sourceRoot === "string") {
        result.sourceRoot = inputMap.sourceRoot;
      }
      return Object.assign({}, result);
    }
    function rootless(map) {
      return Object.assign({}, map, {
        sourceRoot: null
      });
    }
  
    function generateCode(pluginPasses, file) {
      var opts = file.opts,
        ast = file.ast,
        code = file.code,
        inputMap = file.inputMap;
      var generatorOpts = opts.generatorOpts;
      generatorOpts.inputSourceMap = inputMap == null ? void 0 : inputMap.toObject();
      var results = [];
      for (var _iterator = _createForOfIteratorHelperLoose(pluginPasses), _step; !(_step = _iterator()).done;) {
        var plugins = _step.value;
        for (var _iterator2 = _createForOfIteratorHelperLoose(plugins), _step2; !(_step2 = _iterator2()).done;) {
          var plugin = _step2.value;
          var generatorOverride = plugin.generatorOverride;
          if (generatorOverride) {
            var _result2 = generatorOverride(ast, generatorOpts, code, generate$1);
            if (_result2 !== undefined) results.push(_result2);
          }
        }
      }
      var result;
      if (results.length === 0) {
        result = generate$1(ast, generatorOpts, code);
      } else if (results.length === 1) {
        result = results[0];
        if (typeof result.then === "function") {
          throw new Error("You appear to be using an async codegen plugin, " + "which your current version of Babel does not support. " + "If you're using a published plugin, " + "you may need to upgrade your @babel/core version.");
        }
      } else {
        throw new Error("More than one plugin attempted to override codegen.");
      }
      var _result = result,
        outputCode = _result.code,
        _result$decodedMap = _result.decodedMap,
        outputMap = _result$decodedMap === void 0 ? result.map : _result$decodedMap;
      if (result.__mergedMap) {
        outputMap = Object.assign({}, result.map);
      } else {
        if (outputMap) {
          if (inputMap) {
            outputMap = mergeSourceMap(inputMap.toObject(), outputMap, generatorOpts.sourceFileName);
          } else {
            outputMap = result.map;
          }
        }
      }
      if (opts.sourceMaps === "inline" || opts.sourceMaps === "both") {
        outputCode += "\n" + convertSourceMap.fromObject(outputMap).toComment();
      }
      if (opts.sourceMaps === "inline") {
        outputMap = null;
      }
      return {
        outputCode: outputCode,
        outputMap: outputMap
      };
    }
  
    var _marked$1 = _regeneratorRuntime().mark(run$1),
      _marked2$1 = _regeneratorRuntime().mark(transformFile$1);
    function run$1(config, code, ast) {
      var file, opts, _opts$filename, outputCode, outputMap, _generateCode, _opts$filename2;
      return _regeneratorRuntime().wrap(function run$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            return _context.delegateYield(normalizeFile(config.passes, normalizeOptions$4(config), code, ast), "t0", 1);
          case 1:
            file = _context.t0;
            opts = file.opts;
            _context.prev = 3;
            return _context.delegateYield(transformFile$1(file, config.passes), "t1", 5);
          case 5:
            _context.next = 12;
            break;
          case 7:
            _context.prev = 7;
            _context.t2 = _context["catch"](3);
            _context.t2.message = ((_opts$filename = opts.filename) != null ? _opts$filename : "unknown file") + ": " + _context.t2.message;
            if (!_context.t2.code) {
              _context.t2.code = "BABEL_TRANSFORM_ERROR";
            }
            throw _context.t2;
          case 12:
            _context.prev = 12;
            if (opts.code !== false) {
              _generateCode = generateCode(config.passes, file);
              outputCode = _generateCode.outputCode;
              outputMap = _generateCode.outputMap;
            }
            _context.next = 21;
            break;
          case 16:
            _context.prev = 16;
            _context.t3 = _context["catch"](12);
            _context.t3.message = ((_opts$filename2 = opts.filename) != null ? _opts$filename2 : "unknown file") + ": " + _context.t3.message;
            if (!_context.t3.code) {
              _context.t3.code = "BABEL_GENERATE_ERROR";
            }
            throw _context.t3;
          case 21:
            return _context.abrupt("return", {
              metadata: file.metadata,
              options: opts,
              ast: opts.ast === true ? file.ast : null,
              code: outputCode === undefined ? null : outputCode,
              map: outputMap === undefined ? null : outputMap,
              sourceType: file.ast.program.sourceType,
              externalDependencies: flattenToSet(config.externalDependencies)
            });
          case 22:
          case "end":
            return _context.stop();
        }
      }, _marked$1, null, [[3, 7], [12, 16]]);
    }
    function transformFile$1(file, pluginPasses) {
      var _iterator, _step, pluginPairs, passPairs, passes, visitors, _iterator2, _step2, _plugin2, _pass2, _i, _passPairs, _passPairs$_i, plugin, pass, fn, result, visitor, _i2, _passPairs2, _passPairs2$_i, _plugin, _pass, _fn, _result;
      return _regeneratorRuntime().wrap(function transformFile$(_context2) {
        while (1) switch (_context2.prev = _context2.next) {
          case 0:
            _iterator = _createForOfIteratorHelperLoose(pluginPasses);
          case 1:
            if ((_step = _iterator()).done) {
              _context2.next = 35;
              break;
            }
            pluginPairs = _step.value;
            passPairs = [];
            passes = [];
            visitors = [];
            for (_iterator2 = _createForOfIteratorHelperLoose(pluginPairs.concat([loadBlockHoistPlugin()])); !(_step2 = _iterator2()).done;) {
              _plugin2 = _step2.value;
              _pass2 = new PluginPass(file, _plugin2.key, _plugin2.options);
              passPairs.push([_plugin2, _pass2]);
              passes.push(_pass2);
              visitors.push(_plugin2.visitor);
            }
            _i = 0, _passPairs = passPairs;
          case 8:
            if (!(_i < _passPairs.length)) {
              _context2.next = 19;
              break;
            }
            _passPairs$_i = _slicedToArray(_passPairs[_i], 2), plugin = _passPairs$_i[0], pass = _passPairs$_i[1];
            fn = plugin.pre;
            if (!fn) {
              _context2.next = 16;
              break;
            }
            result = fn.call(pass, file);
            return _context2.delegateYield([], "t0", 14);
          case 14:
            if (!isThenable(result)) {
              _context2.next = 16;
              break;
            }
            throw new Error("You appear to be using an plugin with an async .pre, " + "which your current version of Babel does not support. " + "If you're using a published plugin, you may need to upgrade " + "your @babel/core version.");
          case 16:
            _i++;
            _context2.next = 8;
            break;
          case 19:
            visitor = traverse.visitors.merge(visitors, passes, file.opts.wrapPluginVisitorMethod);
            traverse(file.ast, visitor, file.scope);
            _i2 = 0, _passPairs2 = passPairs;
          case 22:
            if (!(_i2 < _passPairs2.length)) {
              _context2.next = 33;
              break;
            }
            _passPairs2$_i = _slicedToArray(_passPairs2[_i2], 2), _plugin = _passPairs2$_i[0], _pass = _passPairs2$_i[1];
            _fn = _plugin.post;
            if (!_fn) {
              _context2.next = 30;
              break;
            }
            _result = _fn.call(_pass, file);
            return _context2.delegateYield([], "t1", 28);
          case 28:
            if (!isThenable(_result)) {
              _context2.next = 30;
              break;
            }
            throw new Error("You appear to be using an plugin with an async .post, " + "which your current version of Babel does not support. " + "If you're using a published plugin, you may need to upgrade " + "your @babel/core version.");
          case 30:
            _i2++;
            _context2.next = 22;
            break;
          case 33:
            _context2.next = 1;
            break;
          case 35:
          case "end":
            return _context2.stop();
        }
      }, _marked2$1);
    }
    function isThenable(val) {
      return !!val && (typeof val === "object" || typeof val === "function") && !!val.then && typeof val.then === "function";
    }
  
    var transformRunner = gensync(_regeneratorRuntime().mark(function transform(code, opts) {
      var config;
      return _regeneratorRuntime().wrap(function transform$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            return _context.delegateYield(loadConfig(opts), "t0", 1);
          case 1:
            config = _context.t0;
            if (!(config === null)) {
              _context.next = 4;
              break;
            }
            return _context.abrupt("return", null);
          case 4:
            return _context.delegateYield(run$1(config, code), "t1", 5);
          case 5:
            return _context.abrupt("return", _context.t1);
          case 6:
          case "end":
            return _context.stop();
        }
      }, transform);
    }));
    var transform$3 = function transform(code, optsOrCallback, maybeCallback) {
      var opts;
      var callback;
      if (typeof optsOrCallback === "function") {
        callback = optsOrCallback;
        opts = undefined;
      } else {
        opts = optsOrCallback;
        callback = maybeCallback;
      }
      if (callback === undefined) {
        {
          return beginHiddenCallStack(transformRunner.sync)(code, opts);
        }
      }
      beginHiddenCallStack(transformRunner.errback)(code, opts, callback);
    };
    function transformSync() {
      return beginHiddenCallStack(transformRunner.sync).apply(void 0, arguments);
    }
    function transformAsync() {
      return beginHiddenCallStack(transformRunner.async).apply(void 0, arguments);
    }
  
    var transformFile = function transformFile(filename, opts, callback) {
      if (typeof opts === "function") {
        callback = opts;
      }
      callback(new Error("Transforming files is not supported in browsers"), null);
    };
    function transformFileSync() {
      throw new Error("Transforming files is not supported in browsers");
    }
    function transformFileAsync() {
      return Promise.reject(new Error("Transforming files is not supported in browsers"));
    }
  
    var transformFromAstRunner = gensync(_regeneratorRuntime().mark(function _callee(ast, code, opts) {
      var config;
      return _regeneratorRuntime().wrap(function _callee$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            return _context.delegateYield(loadConfig(opts), "t0", 1);
          case 1:
            config = _context.t0;
            if (!(config === null)) {
              _context.next = 4;
              break;
            }
            return _context.abrupt("return", null);
          case 4:
            if (ast) {
              _context.next = 6;
              break;
            }
            throw new Error("No AST given");
          case 6:
            return _context.delegateYield(run$1(config, code, ast), "t1", 7);
          case 7:
            return _context.abrupt("return", _context.t1);
          case 8:
          case "end":
            return _context.stop();
        }
      }, _callee);
    }));
    var transformFromAst$1 = function transformFromAst(ast, code, optsOrCallback, maybeCallback) {
      var opts;
      var callback;
      if (typeof optsOrCallback === "function") {
        callback = optsOrCallback;
        opts = undefined;
      } else {
        opts = optsOrCallback;
        callback = maybeCallback;
      }
      if (callback === undefined) {
        {
          return beginHiddenCallStack(transformFromAstRunner.sync)(ast, code, opts);
        }
      }
      beginHiddenCallStack(transformFromAstRunner.errback)(ast, code, opts, callback);
    };
    function transformFromAstSync() {
      return beginHiddenCallStack(transformFromAstRunner.sync).apply(void 0, arguments);
    }
    function transformFromAstAsync() {
      return beginHiddenCallStack(transformFromAstRunner.async).apply(void 0, arguments);
    }
  
    var parseRunner = gensync(_regeneratorRuntime().mark(function parse(code, opts) {
      var config;
      return _regeneratorRuntime().wrap(function parse$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            return _context.delegateYield(loadConfig(opts), "t0", 1);
          case 1:
            config = _context.t0;
            if (!(config === null)) {
              _context.next = 4;
              break;
            }
            return _context.abrupt("return", null);
          case 4:
            return _context.delegateYield(parser$1(config.passes, normalizeOptions$4(config), code), "t1", 5);
          case 5:
            return _context.abrupt("return", _context.t1);
          case 6:
          case "end":
            return _context.stop();
        }
      }, parse);
    }));
    var parse$1 = function parse(code, opts, callback) {
      if (typeof opts === "function") {
        callback = opts;
        opts = undefined;
      }
      if (callback === undefined) {
        {
          return beginHiddenCallStack(parseRunner.sync)(code, opts);
        }
      }
      beginHiddenCallStack(parseRunner.errback)(code, opts, callback);
    };
    function parseSync() {
      return beginHiddenCallStack(parseRunner.sync).apply(void 0, arguments);
    }
    function parseAsync() {
      return beginHiddenCallStack(parseRunner.async).apply(void 0, arguments);
    }
  
    var version$1 = "7.21.8";
    var DEFAULT_EXTENSIONS = Object.freeze([".js", ".jsx", ".es6", ".es", ".mjs", ".cjs"]);
    {
      {
        exports.OptionManager = function () {
          function OptionManager() {}
          var _proto = OptionManager.prototype;
          _proto.init = function init(opts) {
            return loadOptionsSync(opts);
          };
          return _createClass(OptionManager);
        }();
        exports.Plugin = function Plugin(alias) {
          throw new Error("The (" + alias + ") Babel 5 plugin is being run with an unsupported Babel version.");
        };
      }
    }
  
    function makeNoopPlugin() {
      var p;
      return (p = function p() {
        return {};
      })["default"] = p;
    }
  
    function declare(x) {
      return x;
    }
  
    var pluginUtilsShim = /*#__PURE__*/Object.freeze({
      __proto__: null,
      declare: declare,
      declarePreset: declare
    });
  
    var externalHelpers = declare(function (api, options) {
      api.assertVersion(7);
      var _options$helperVersio = options.helperVersion,
        helperVersion = _options$helperVersio === void 0 ? "7.0.0-beta.0" : _options$helperVersio,
        _options$whitelist = options.whitelist,
        whitelist = _options$whitelist === void 0 ? false : _options$whitelist;
      if (whitelist !== false && (!Array.isArray(whitelist) || whitelist.some(function (w) {
        return typeof w !== "string";
      }))) {
        throw new Error(".whitelist must be undefined, false, or an array of strings");
      }
      var helperWhitelist = whitelist ? new Set(whitelist) : null;
      return {
        name: "external-helpers",
        pre: function pre(file) {
          file.set("helperGenerator", function (name) {
            if (file.availableHelper && !file.availableHelper(name, helperVersion)) {
              return;
            }
            if (helperWhitelist && !helperWhitelist.has(name)) return;
            return memberExpression$c(identifier$i("babelHelpers"), identifier$i(name));
          });
        }
      };
    });
  
    var syntaxDecimal = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "syntax-decimal",
        manipulateOptions: function manipulateOptions(opts, parserOpts) {
          parserOpts.plugins.push("decimal");
        }
      };
    });
  
    var syntaxDecorators = declare(function (api, options) {
      api.assertVersion(7);
      var version = options.version;
      {
        var legacy = options.legacy;
        if (legacy !== undefined) {
          if (typeof legacy !== "boolean") {
            throw new Error(".legacy must be a boolean.");
          }
          if (version !== undefined) {
            throw new Error("You can either use the .legacy or the .version option, not both.");
          }
        }
        if (version === undefined) {
          version = legacy ? "legacy" : "2018-09";
        } else if (version !== "2023-01" && version !== "2022-03" && version !== "2021-12" && version !== "2018-09" && version !== "legacy") {
          throw new Error("Unsupported decorators version: " + version);
        }
        var decoratorsBeforeExport = options.decoratorsBeforeExport;
        if (decoratorsBeforeExport === undefined) {
          if (version === "2021-12" || version === "2022-03") {
            decoratorsBeforeExport = false;
          } else if (version === "2018-09") {
            throw new Error("The decorators plugin, when .version is '2018-09' or not specified," + " requires a 'decoratorsBeforeExport' option, whose value must be a boolean.");
          }
        } else {
          if (version === "legacy" || version === "2022-03" || version === "2023-01") {
            throw new Error("'decoratorsBeforeExport' can't be used with " + version + " decorators.");
          }
          if (typeof decoratorsBeforeExport !== "boolean") {
            throw new Error("'decoratorsBeforeExport' must be a boolean.");
          }
        }
      }
      return {
        name: "syntax-decorators",
        manipulateOptions: function manipulateOptions(_ref, parserOpts) {
          var generatorOpts = _ref.generatorOpts;
          if (version === "legacy") {
            parserOpts.plugins.push("decorators-legacy");
          } else {
            if (version === "2023-01") {
              parserOpts.plugins.push(["decorators", {
                allowCallParenthesized: false
              }], "decoratorAutoAccessors");
            } else if (version === "2022-03") {
              parserOpts.plugins.push(["decorators", {
                decoratorsBeforeExport: false,
                allowCallParenthesized: false
              }], "decoratorAutoAccessors");
            } else if (version === "2021-12") {
              parserOpts.plugins.push(["decorators", {
                decoratorsBeforeExport: decoratorsBeforeExport
              }], "decoratorAutoAccessors");
              generatorOpts.decoratorsBeforeExport = decoratorsBeforeExport;
            } else if (version === "2018-09") {
              parserOpts.plugins.push(["decorators", {
                decoratorsBeforeExport: decoratorsBeforeExport
              }]);
              generatorOpts.decoratorsBeforeExport = decoratorsBeforeExport;
            }
          }
        }
      };
    });
  
    var syntaxDestructuringPrivate = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "syntax-destructuring-private",
        manipulateOptions: function manipulateOptions(_, parserOpts) {
          parserOpts.plugins.push("destructuringPrivate");
        }
      };
    });
  
    var syntaxDoExpressions = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "syntax-do-expressions",
        manipulateOptions: function manipulateOptions(opts, parserOpts) {
          parserOpts.plugins.push("doExpressions");
        }
      };
    });
  
    var syntaxExplicitResourceManagement = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "syntax-explicit-resource-management",
        manipulateOptions: function manipulateOptions(opts, parserOpts) {
          parserOpts.plugins.push("explicitResourceManagement");
        }
      };
    });
  
    var syntaxExportDefaultFrom = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "syntax-export-default-from",
        manipulateOptions: function manipulateOptions(opts, parserOpts) {
          parserOpts.plugins.push("exportDefaultFrom");
        }
      };
    });
  
    var syntaxFlow = declare(function (api, options) {
      api.assertVersion(7);
      var all = options.all,
        enums = options.enums;
      if (typeof all !== "boolean" && typeof all !== "undefined") {
        throw new Error(".all must be a boolean, or undefined");
      }
      if (typeof enums !== "boolean" && typeof enums !== "undefined") {
        throw new Error(".enums must be a boolean, or undefined");
      }
      return {
        name: "syntax-flow",
        manipulateOptions: function manipulateOptions(opts, parserOpts) {
          {
            if (parserOpts.plugins.some(function (p) {
              return (Array.isArray(p) ? p[0] : p) === "typescript";
            })) {
              return;
            }
          }
          parserOpts.plugins.push(["flow", {
            all: all,
            enums: enums
          }]);
        }
      };
    });
  
    var syntaxFunctionBind = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "syntax-function-bind",
        manipulateOptions: function manipulateOptions(opts, parserOpts) {
          parserOpts.plugins.push("functionBind");
        }
      };
    });
  
    var syntaxFunctionSent = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "syntax-function-sent",
        manipulateOptions: function manipulateOptions(opts, parserOpts) {
          parserOpts.plugins.push("functionSent");
        }
      };
    });
  
    var _syntaxImportAssertions = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "syntax-import-assertions",
        manipulateOptions: function manipulateOptions(opts, parserOpts) {
          parserOpts.plugins.push("importAssertions");
        }
      };
    });
  
    var syntaxImportReflection = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "syntax-import-reflection",
        manipulateOptions: function manipulateOptions(_, parserOpts) {
          parserOpts.plugins.push("importReflection");
        }
      };
    });
  
    var syntaxModuleBlocks = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "syntax-module-blocks",
        manipulateOptions: function manipulateOptions(opts, parserOpts) {
          parserOpts.plugins.push("moduleBlocks");
        }
      };
    });
  
    var syntaxJsx = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "syntax-jsx",
        manipulateOptions: function manipulateOptions(opts, parserOpts) {
          {
            if (parserOpts.plugins.some(function (p) {
              return (Array.isArray(p) ? p[0] : p) === "typescript";
            })) {
              return;
            }
          }
          parserOpts.plugins.push("jsx");
        }
      };
    });
  
    var PIPELINE_PROPOSALS = ["minimal", "fsharp", "hack", "smart"];
    var TOPIC_TOKENS = ["^^", "@@", "^", "%", "#"];
    var documentationURL = "https://babeljs.io/docs/en/babel-plugin-proposal-pipeline-operator";
    var syntaxPipelineOperator = declare(function (api, _ref) {
      var proposal = _ref.proposal,
        topicToken = _ref.topicToken;
      api.assertVersion(7);
      if (typeof proposal !== "string" || !PIPELINE_PROPOSALS.includes(proposal)) {
        var proposalList = PIPELINE_PROPOSALS.map(function (p) {
          return "\"" + p + "\"";
        }).join(", ");
        throw new Error("The pipeline plugin requires a \"proposal\" option. \"proposal\" must be one of: " + proposalList + ". See <" + documentationURL + ">.");
      }
      if (proposal === "hack" && !TOPIC_TOKENS.includes(topicToken)) {
        var topicTokenList = TOPIC_TOKENS.map(function (t) {
          return "\"" + t + "\"";
        }).join(", ");
        throw new Error("The pipeline plugin in \"proposal\": \"hack\" mode also requires a \"topicToken\" option. \"topicToken\" must be one of: " + topicTokenList + ". See <" + documentationURL + ">.");
      }
      return {
        name: "syntax-pipeline-operator",
        manipulateOptions: function manipulateOptions(opts, parserOpts) {
          parserOpts.plugins.push(["pipelineOperator", {
            proposal: proposal,
            topicToken: topicToken
          }]);
          opts.generatorOpts.topicToken = topicToken;
        }
      };
    });
  
    var syntaxRecordAndTuple = declare(function (api, options) {
      api.assertVersion(7);
      return {
        name: "syntax-record-and-tuple",
        manipulateOptions: function manipulateOptions(opts, parserOpts) {
          opts.generatorOpts.recordAndTupleSyntaxType = options.syntaxType;
          parserOpts.plugins.push(["recordAndTuple", {
            syntaxType: options.syntaxType
          }]);
        }
      };
    });
  
    {
      var removePlugin = function removePlugin(plugins, name) {
        var indices = [];
        plugins.forEach(function (plugin, i) {
          var n = Array.isArray(plugin) ? plugin[0] : plugin;
          if (n === name) {
            indices.unshift(i);
          }
        });
        for (var _i = 0, _indices = indices; _i < _indices.length; _i++) {
          var i = _indices[_i];
          plugins.splice(i, 1);
        }
      };
    }
    var syntaxTypescript = declare(function (api, opts) {
      api.assertVersion(7);
      var disallowAmbiguousJSXLike = opts.disallowAmbiguousJSXLike,
        dts = opts.dts;
      {
        var isTSX = opts.isTSX;
      }
      return {
        name: "syntax-typescript",
        manipulateOptions: function manipulateOptions(opts, parserOpts) {
          {
            var plugins = parserOpts.plugins;
            removePlugin(plugins, "flow");
            removePlugin(plugins, "jsx");
            plugins.push("objectRestSpread", "classProperties");
            if (isTSX) {
              plugins.push("jsx");
            }
          }
          parserOpts.plugins.push(["typescript", {
            disallowAmbiguousJSXLike: disallowAmbiguousJSXLike,
            dts: dts
          }]);
        }
      };
    });
  
    var blockStatement = blockStatement$6,
      callExpression$5 = callExpression$e,
      functionExpression = functionExpression$2,
      isAssignmentPattern$2 = isAssignmentPattern$5,
      isFunctionDeclaration = isFunctionDeclaration$2,
      isRestElement$1 = isRestElement$3,
      returnStatement = returnStatement$3,
      isCallExpression$1 = isCallExpression$8;
    var buildAnonymousExpressionWrapper = template$2.expression("\n  (function () {\n    var REF = FUNCTION;\n    return function NAME(PARAMS) {\n      return REF.apply(this, arguments);\n    };\n  })()\n");
    var buildNamedExpressionWrapper = template$2.expression("\n  (function () {\n    var REF = FUNCTION;\n    function NAME(PARAMS) {\n      return REF.apply(this, arguments);\n    }\n    return NAME;\n  })()\n");
    var buildDeclarationWrapper = template$2.statements("\n  function NAME(PARAMS) { return REF.apply(this, arguments); }\n  function REF() {\n    REF = FUNCTION;\n    return REF.apply(this, arguments);\n  }\n");
    function classOrObjectMethod(path, callId) {
      var node = path.node;
      var body = node.body;
      var container = functionExpression(null, [], blockStatement(body.body), true);
      body.body = [returnStatement(callExpression$5(callExpression$5(callId, [container]), []))];
      node.async = false;
      node.generator = false;
      path.get("body.body.0.argument.callee.arguments.0").unwrapFunctionEnvironment();
    }
    function plainFunction(inPath, callId, noNewArrows, ignoreFunctionLength) {
      var path = inPath;
      var node;
      var functionId = null;
      var nodeParams = inPath.node.params;
      if (path.isArrowFunctionExpression()) {
        {
          var _path$arrowFunctionTo;
          path = (_path$arrowFunctionTo = path.arrowFunctionToExpression({
            noNewArrows: noNewArrows
          })) != null ? _path$arrowFunctionTo : path;
        }
        node = path.node;
      } else {
        node = path.node;
      }
      var isDeclaration = isFunctionDeclaration(node);
      var built = node;
      if (!isCallExpression$1(node)) {
        functionId = node.id;
        node.id = null;
        node.type = "FunctionExpression";
        built = callExpression$5(callId, [node]);
      }
      var params = [];
      for (var _iterator = _createForOfIteratorHelperLoose(nodeParams), _step; !(_step = _iterator()).done;) {
        var param = _step.value;
        if (isAssignmentPattern$2(param) || isRestElement$1(param)) {
          break;
        }
        params.push(path.scope.generateUidIdentifier("x"));
      }
      var wrapperArgs = {
        NAME: functionId || null,
        REF: path.scope.generateUidIdentifier(functionId ? functionId.name : "ref"),
        FUNCTION: built,
        PARAMS: params
      };
      if (isDeclaration) {
        var container = buildDeclarationWrapper(wrapperArgs);
        path.replaceWith(container[0]);
        path.insertAfter(container[1]);
      } else {
        var _container;
        if (functionId) {
          _container = buildNamedExpressionWrapper(wrapperArgs);
        } else {
          _container = buildAnonymousExpressionWrapper(wrapperArgs);
          var returnFn = _container.callee.body.body[1].argument;
          nameFunction({
            node: returnFn,
            parent: path.parent,
            scope: path.scope
          });
          functionId = returnFn.id;
        }
        if (functionId || !ignoreFunctionLength && params.length) {
          path.replaceWith(_container);
        } else {
          path.replaceWith(built);
        }
      }
    }
    function wrapFunction(path, callId, noNewArrows, ignoreFunctionLength) {
      if (noNewArrows === void 0) {
        noNewArrows = true;
      }
      if (ignoreFunctionLength === void 0) {
        ignoreFunctionLength = false;
      }
      if (path.isMethod()) {
        classOrObjectMethod(path, callId);
      } else {
        plainFunction(path, callId, noNewArrows, ignoreFunctionLength);
      }
    }
  
    var addComment = addComment$2;
    var PURE_ANNOTATION = "#__PURE__";
    var isPureAnnotated = function isPureAnnotated(_ref) {
      var leadingComments = _ref.leadingComments;
      return !!leadingComments && leadingComments.some(function (comment) {
        return /[@#]__PURE__/.test(comment.value);
      });
    };
    function annotateAsPure(pathOrNode) {
      var node = pathOrNode["node"] || pathOrNode;
      if (isPureAnnotated(node)) {
        return;
      }
      addComment(node, "leading", PURE_ANNOTATION);
    }
  
    var callExpression$4 = callExpression$e,
      cloneNode$4 = cloneNode$j,
      isIdentifier$5 = isIdentifier$j,
      isThisExpression = isThisExpression$2,
      yieldExpression = yieldExpression$2;
    var awaitVisitor$1 = traverse.visitors.merge([{
      ArrowFunctionExpression: function ArrowFunctionExpression(path) {
        path.skip();
      },
      AwaitExpression: function AwaitExpression(path, _ref) {
        var wrapAwait = _ref.wrapAwait;
        var argument = path.get("argument");
        path.replaceWith(yieldExpression(wrapAwait ? callExpression$4(cloneNode$4(wrapAwait), [argument.node]) : argument.node));
      }
    }, visitor$5]);
    function remapAsyncToGenerator (path, helpers, noNewArrows, ignoreFunctionLength) {
      path.traverse(awaitVisitor$1, {
        wrapAwait: helpers.wrapAwait
      });
      var isIIFE = checkIsIIFE(path);
      path.node.async = false;
      path.node.generator = true;
      wrapFunction(path, cloneNode$4(helpers.wrapAsync), noNewArrows, ignoreFunctionLength);
      var isProperty = path.isObjectMethod() || path.isClassMethod() || path.parentPath.isObjectProperty() || path.parentPath.isClassProperty();
      if (!isProperty && !isIIFE && path.isExpression()) {
        annotateAsPure(path);
      }
      function checkIsIIFE(path) {
        if (path.parentPath.isCallExpression({
          callee: path.node
        })) {
          return true;
        }
        var parentPath = path.parentPath;
        if (parentPath.isMemberExpression() && isIdentifier$5(parentPath.node.property, {
          name: "bind"
        })) {
          var bindCall = parentPath.parentPath;
          return bindCall.isCallExpression() && bindCall.node.arguments.length === 1 && isThisExpression(bindCall.node.arguments[0]) && bindCall.parentPath.isCallExpression({
            callee: bindCall.node
          });
        }
        return false;
      }
    }
  
    var buildForAwait = template$2("\n  async function wrapper() {\n    var ITERATOR_ABRUPT_COMPLETION = false;\n    var ITERATOR_HAD_ERROR_KEY = false;\n    var ITERATOR_ERROR_KEY;\n    try {\n      for (\n        var ITERATOR_KEY = GET_ITERATOR(OBJECT), STEP_KEY;\n        ITERATOR_ABRUPT_COMPLETION = !(STEP_KEY = await ITERATOR_KEY.next()).done;\n        ITERATOR_ABRUPT_COMPLETION = false\n      ) {\n      }\n    } catch (err) {\n      ITERATOR_HAD_ERROR_KEY = true;\n      ITERATOR_ERROR_KEY = err;\n    } finally {\n      try {\n        if (ITERATOR_ABRUPT_COMPLETION && ITERATOR_KEY.return != null) {\n          await ITERATOR_KEY.return();\n        }\n      } finally {\n        if (ITERATOR_HAD_ERROR_KEY) {\n          throw ITERATOR_ERROR_KEY;\n        }\n      }\n    }\n  }\n");
    function rewriteForAwait (path, _ref) {
      var getAsyncIterator = _ref.getAsyncIterator;
      var node = path.node,
        scope = path.scope,
        parent = path.parent;
      var stepKey = scope.generateUidIdentifier("step");
      var stepValue = memberExpression$c(stepKey, identifier$i("value"));
      var left = node.left;
      var declar;
      if (isIdentifier$j(left) || isPattern(left) || isMemberExpression$8(left)) {
        declar = expressionStatement$a(assignmentExpression$d("=", left, stepValue));
      } else if (isVariableDeclaration$3(left)) {
        declar = variableDeclaration$8(left.kind, [variableDeclarator$8(left.declarations[0].id, stepValue)]);
      }
      var template = buildForAwait({
        ITERATOR_HAD_ERROR_KEY: scope.generateUidIdentifier("didIteratorError"),
        ITERATOR_ABRUPT_COMPLETION: scope.generateUidIdentifier("iteratorAbruptCompletion"),
        ITERATOR_ERROR_KEY: scope.generateUidIdentifier("iteratorError"),
        ITERATOR_KEY: scope.generateUidIdentifier("iterator"),
        GET_ITERATOR: getAsyncIterator,
        OBJECT: node.right,
        STEP_KEY: cloneNode$j(stepKey)
      });
      template = template.body.body;
      var isLabeledParent = isLabeledStatement(parent);
      var tryBody = template[3].block.body;
      var loop = tryBody[0];
      if (isLabeledParent) {
        tryBody[0] = labeledStatement(parent.label, loop);
      }
      return {
        replaceParent: isLabeledParent,
        node: template,
        declar: declar,
        loop: loop
      };
    }
  
    var proposalAsyncGeneratorFunctions = declare(function (api) {
      api.assertVersion(7);
      var yieldStarVisitor = traverse.visitors.merge([{
        ArrowFunctionExpression: function ArrowFunctionExpression(path) {
          path.skip();
        },
        YieldExpression: function YieldExpression(_ref, state) {
          var node = _ref.node;
          if (!node.delegate) return;
          var asyncIter = callExpression$e(state.addHelper("asyncIterator"), [node.argument]);
          node.argument = callExpression$e(state.addHelper("asyncGeneratorDelegate"), [asyncIter, state.addHelper("awaitAsyncGenerator")]);
        }
      }, visitor$5]);
      var forAwaitVisitor = traverse.visitors.merge([{
        ArrowFunctionExpression: function ArrowFunctionExpression(path) {
          path.skip();
        },
        ForOfStatement: function (_ForOfStatement) {
          function ForOfStatement(_x, _x2) {
            return _ForOfStatement.apply(this, arguments);
          }
          ForOfStatement.toString = function () {
            return _ForOfStatement.toString();
          };
          return ForOfStatement;
        }(function (path, _ref2) {
          var file = _ref2.file;
          var node = path.node;
          if (!node["await"]) return;
          var build = rewriteForAwait(path, {
            getAsyncIterator: file.addHelper("asyncIterator")
          });
          var declar = build.declar,
            loop = build.loop;
          var block = loop.body;
          path.ensureBlock();
          if (declar) {
            block.body.push(declar);
            if (path.node.body.body.length) {
              block.body.push(blockStatement$6(path.node.body.body));
            }
          } else {
            var _block$body;
            (_block$body = block.body).push.apply(_block$body, _toConsumableArray(path.node.body.body));
          }
          inherits$1(loop, node);
          inherits$1(loop.body, node.body);
          var p = build.replaceParent ? path.parentPath : path;
          p.replaceWithMultiple(build.node);
          p.scope.parent.crawl();
        })
      }, visitor$5]);
      var visitor = {
        Function: function Function(path, state) {
          if (!path.node.async) return;
          path.traverse(forAwaitVisitor, state);
          if (!path.node.generator) return;
          path.traverse(yieldStarVisitor, state);
          remapAsyncToGenerator(path, {
            wrapAsync: state.addHelper("wrapAsyncGenerator"),
            wrapAwait: state.addHelper("awaitAsyncGenerator")
          });
        }
      };
      return {
        name: "proposal-async-generator-functions",
        inherits: syntaxAsyncGenerators["default"],
        visitor: {
          Program: function Program(path, state) {
            path.traverse(visitor, state);
          }
        }
      };
    });
  
    function bool$3(value) {
      if (value == null) return false;
      return value && value !== "false" && value !== "0";
    }
    var semver$9 = bool$3(browser$1$1.env["BABEL_8_BREAKING"]) ? requireSemverBABEL_8_BREAKINGTrue() : requireSemver();
  
    function willPathCastToBoolean$1(path) {
      var maybeWrapped = path;
      var node = maybeWrapped.node,
        parentPath = maybeWrapped.parentPath;
      if (parentPath.isLogicalExpression()) {
        var _parentPath$node = parentPath.node,
          operator = _parentPath$node.operator,
          right = _parentPath$node.right;
        if (operator === "&&" || operator === "||" || operator === "??" && node === right) {
          return willPathCastToBoolean$1(parentPath);
        }
      }
      if (parentPath.isSequenceExpression()) {
        var expressions = parentPath.node.expressions;
        if (expressions[expressions.length - 1] === node) {
          return willPathCastToBoolean$1(parentPath);
        } else {
          return true;
        }
      }
      return parentPath.isConditional({
        test: node
      }) || parentPath.isUnaryExpression({
        operator: "!"
      }) || parentPath.isLoop({
        test: node
      });
    }
  
    var LOGICAL_OPERATORS = LOGICAL_OPERATORS$3,
      arrowFunctionExpression = arrowFunctionExpression$4,
      assignmentExpression$4 = assignmentExpression$d,
      binaryExpression$1 = binaryExpression$5,
      booleanLiteral$2 = booleanLiteral$4,
      callExpression$3 = callExpression$e,
      cloneNode$3 = cloneNode$j,
      conditionalExpression$1 = conditionalExpression$4,
      identifier$3 = identifier$i,
      isMemberExpression$1 = isMemberExpression$8,
      isOptionalCallExpression = isOptionalCallExpression$3,
      isOptionalMemberExpression = isOptionalMemberExpression$3,
      isUpdateExpression = isUpdateExpression$2,
      logicalExpression = logicalExpression$3,
      memberExpression$5 = memberExpression$c,
      nullLiteral$1 = nullLiteral$2,
      optionalCallExpression$1 = optionalCallExpression$2,
      optionalMemberExpression$1 = optionalMemberExpression$2,
      sequenceExpression$2 = sequenceExpression$7,
      updateExpression = updateExpression$1;
    var AssignmentMemoiser = function () {
      function AssignmentMemoiser() {
        this._map = void 0;
        this._map = new WeakMap();
      }
      var _proto = AssignmentMemoiser.prototype;
      _proto.has = function has(key) {
        return this._map.has(key);
      };
      _proto.get = function get(key) {
        if (!this.has(key)) return;
        var record = this._map.get(key);
        var value = record.value;
        record.count--;
        if (record.count === 0) {
          return assignmentExpression$4("=", value, key);
        }
        return value;
      };
      _proto.set = function set(key, value, count) {
        return this._map.set(key, {
          count: count,
          value: value
        });
      };
      return _createClass(AssignmentMemoiser);
    }();
    function toNonOptional(path, base) {
      var node = path.node;
      if (isOptionalMemberExpression(node)) {
        return memberExpression$5(base, node.property, node.computed);
      }
      if (path.isOptionalCallExpression()) {
        var callee = path.get("callee");
        if (path.node.optional && callee.isOptionalMemberExpression()) {
          var object = callee.node.object;
          var context = path.scope.maybeGenerateMemoised(object);
          callee.get("object").replaceWith(assignmentExpression$4("=", context, object));
          return callExpression$3(memberExpression$5(base, identifier$3("call")), [context].concat(_toConsumableArray(path.node.arguments)));
        }
        return callExpression$3(base, path.node.arguments);
      }
      return path.node;
    }
    function isInDetachedTree(path) {
      while (path) {
        if (path.isProgram()) break;
        var _path = path,
          parentPath = _path.parentPath,
          container = _path.container,
          listKey = _path.listKey;
        var parentNode = parentPath.node;
        if (listKey) {
          if (container !== parentNode[listKey]) {
            return true;
          }
        } else {
          if (container !== parentNode) return true;
        }
        path = parentPath;
      }
      return false;
    }
    var handle = {
      memoise: function memoise() {},
      handle: function handle(member, noDocumentAll) {
        var node = member.node,
          parent = member.parent,
          parentPath = member.parentPath,
          scope = member.scope;
        if (member.isOptionalMemberExpression()) {
          if (isInDetachedTree(member)) return;
          var endPath = member.find(function (_ref) {
            var node = _ref.node,
              parent = _ref.parent;
            if (isOptionalMemberExpression(parent)) {
              return parent.optional || parent.object !== node;
            }
            if (isOptionalCallExpression(parent)) {
              return node !== member.node && parent.optional || parent.callee !== node;
            }
            return true;
          });
          if (scope.path.isPattern()) {
            endPath.replaceWith(callExpression$3(arrowFunctionExpression([], endPath.node), []));
            return;
          }
          var willEndPathCastToBoolean = willPathCastToBoolean$1(endPath);
          var rootParentPath = endPath.parentPath;
          if (rootParentPath.isUpdateExpression({
            argument: node
          }) || rootParentPath.isAssignmentExpression({
            left: node
          })) {
            throw member.buildCodeFrameError("can't handle assignment");
          }
          var isDeleteOperation = rootParentPath.isUnaryExpression({
            operator: "delete"
          });
          if (isDeleteOperation && endPath.isOptionalMemberExpression() && endPath.get("property").isPrivateName()) {
            throw member.buildCodeFrameError("can't delete a private class element");
          }
          var startingOptional = member;
          for (;;) {
            if (startingOptional.isOptionalMemberExpression()) {
              if (startingOptional.node.optional) break;
              startingOptional = startingOptional.get("object");
              continue;
            } else if (startingOptional.isOptionalCallExpression()) {
              if (startingOptional.node.optional) break;
              startingOptional = startingOptional.get("callee");
              continue;
            }
            throw new Error("Internal error: unexpected " + startingOptional.node.type);
          }
          var startingNode = startingOptional.isOptionalMemberExpression() ? startingOptional.node.object : startingOptional.node.callee;
          var baseNeedsMemoised = scope.maybeGenerateMemoised(startingNode);
          var baseRef = baseNeedsMemoised != null ? baseNeedsMemoised : startingNode;
          var parentIsOptionalCall = parentPath.isOptionalCallExpression({
            callee: node
          });
          var isOptionalCall = function isOptionalCall(parent) {
            return parentIsOptionalCall;
          };
          var parentIsCall = parentPath.isCallExpression({
            callee: node
          });
          startingOptional.replaceWith(toNonOptional(startingOptional, baseRef));
          if (isOptionalCall(parent)) {
            if (parent.optional) {
              parentPath.replaceWith(this.optionalCall(member, parent.arguments));
            } else {
              parentPath.replaceWith(this.call(member, parent.arguments));
            }
          } else if (parentIsCall) {
            member.replaceWith(this.boundGet(member));
          } else if (this["delete"] && parentPath.isUnaryExpression({
            operator: "delete"
          })) {
            parentPath.replaceWith(this["delete"](member));
          } else {
            member.replaceWith(this.get(member));
          }
          var regular = member.node;
          for (var current = member; current !== endPath;) {
            var _parentPath = current.parentPath;
            if (_parentPath === endPath && isOptionalCall(parent) && parent.optional) {
              regular = _parentPath.node;
              break;
            }
            regular = toNonOptional(_parentPath, regular);
            current = _parentPath;
          }
          var context;
          var endParentPath = endPath.parentPath;
          if (isMemberExpression$1(regular) && endParentPath.isOptionalCallExpression({
            callee: endPath.node,
            optional: true
          })) {
            var _regular = regular,
              object = _regular.object;
            context = member.scope.maybeGenerateMemoised(object);
            if (context) {
              regular.object = assignmentExpression$4("=", context, object);
            }
          }
          var replacementPath = endPath;
          if (isDeleteOperation) {
            replacementPath = endParentPath;
            regular = endParentPath.node;
          }
          var baseMemoised = baseNeedsMemoised ? assignmentExpression$4("=", cloneNode$3(baseRef), cloneNode$3(startingNode)) : cloneNode$3(baseRef);
          if (willEndPathCastToBoolean) {
            var nonNullishCheck;
            if (noDocumentAll) {
              nonNullishCheck = binaryExpression$1("!=", baseMemoised, nullLiteral$1());
            } else {
              nonNullishCheck = logicalExpression("&&", binaryExpression$1("!==", baseMemoised, nullLiteral$1()), binaryExpression$1("!==", cloneNode$3(baseRef), scope.buildUndefinedNode()));
            }
            replacementPath.replaceWith(logicalExpression("&&", nonNullishCheck, regular));
          } else {
            var nullishCheck;
            if (noDocumentAll) {
              nullishCheck = binaryExpression$1("==", baseMemoised, nullLiteral$1());
            } else {
              nullishCheck = logicalExpression("||", binaryExpression$1("===", baseMemoised, nullLiteral$1()), binaryExpression$1("===", cloneNode$3(baseRef), scope.buildUndefinedNode()));
            }
            replacementPath.replaceWith(conditionalExpression$1(nullishCheck, isDeleteOperation ? booleanLiteral$2(true) : scope.buildUndefinedNode(), regular));
          }
          if (context) {
            var endParent = endParentPath.node;
            endParentPath.replaceWith(optionalCallExpression$1(optionalMemberExpression$1(endParent.callee, identifier$3("call"), false, true), [cloneNode$3(context)].concat(_toConsumableArray(endParent.arguments)), false));
          }
          return;
        }
        if (isUpdateExpression(parent, {
          argument: node
        })) {
          if (this.simpleSet) {
            member.replaceWith(this.simpleSet(member));
            return;
          }
          var operator = parent.operator,
            prefix = parent.prefix;
          this.memoise(member, 2);
          var ref = scope.generateUidIdentifierBasedOnNode(node);
          scope.push({
            id: ref
          });
          var seq = [assignmentExpression$4("=", cloneNode$3(ref), this.get(member))];
          if (prefix) {
            seq.push(updateExpression(operator, cloneNode$3(ref), prefix));
            var _value = sequenceExpression$2(seq);
            parentPath.replaceWith(this.set(member, _value));
            return;
          } else {
            var ref2 = scope.generateUidIdentifierBasedOnNode(node);
            scope.push({
              id: ref2
            });
            seq.push(assignmentExpression$4("=", cloneNode$3(ref2), updateExpression(operator, cloneNode$3(ref), prefix)), cloneNode$3(ref));
            var _value2 = sequenceExpression$2(seq);
            parentPath.replaceWith(sequenceExpression$2([this.set(member, _value2), cloneNode$3(ref2)]));
            return;
          }
        }
        if (parentPath.isAssignmentExpression({
          left: node
        })) {
          if (this.simpleSet) {
            member.replaceWith(this.simpleSet(member));
            return;
          }
          var _parentPath$node = parentPath.node,
            _operator = _parentPath$node.operator,
            _value3 = _parentPath$node.right;
          if (_operator === "=") {
            parentPath.replaceWith(this.set(member, _value3));
          } else {
            var operatorTrunc = _operator.slice(0, -1);
            if (LOGICAL_OPERATORS.includes(operatorTrunc)) {
              this.memoise(member, 1);
              parentPath.replaceWith(logicalExpression(operatorTrunc, this.get(member), this.set(member, _value3)));
            } else {
              this.memoise(member, 2);
              parentPath.replaceWith(this.set(member, binaryExpression$1(operatorTrunc, this.get(member), _value3)));
            }
          }
          return;
        }
        if (parentPath.isCallExpression({
          callee: node
        })) {
          parentPath.replaceWith(this.call(member, parentPath.node.arguments));
          return;
        }
        if (parentPath.isOptionalCallExpression({
          callee: node
        })) {
          if (scope.path.isPattern()) {
            parentPath.replaceWith(callExpression$3(arrowFunctionExpression([], parentPath.node), []));
            return;
          }
          parentPath.replaceWith(this.optionalCall(member, parentPath.node.arguments));
          return;
        }
        if (this["delete"] && parentPath.isUnaryExpression({
          operator: "delete"
        })) {
          parentPath.replaceWith(this["delete"](member));
          return;
        }
        if (parentPath.isForXStatement({
          left: node
        }) || parentPath.isObjectProperty({
          value: node
        }) && parentPath.parentPath.isObjectPattern() || parentPath.isAssignmentPattern({
          left: node
        }) && parentPath.parentPath.isObjectProperty({
          value: parent
        }) && parentPath.parentPath.parentPath.isObjectPattern() || parentPath.isArrayPattern() || parentPath.isAssignmentPattern({
          left: node
        }) && parentPath.parentPath.isArrayPattern() || parentPath.isRestElement()) {
          member.replaceWith(this.destructureSet(member));
          return;
        }
        if (parentPath.isTaggedTemplateExpression()) {
          member.replaceWith(this.boundGet(member));
        } else {
          member.replaceWith(this.get(member));
        }
      }
    };
    function memberExpressionToFunctions(path, visitor, state) {
      path.traverse(visitor, Object.assign({}, handle, state, {
        memoiser: new AssignmentMemoiser()
      }));
    }
  
    var callExpression$2 = callExpression$e,
      identifier$2 = identifier$i,
      isIdentifier$4 = isIdentifier$j,
      isSpreadElement = isSpreadElement$1,
      memberExpression$4 = memberExpression$c,
      optionalCallExpression = optionalCallExpression$2,
      optionalMemberExpression = optionalMemberExpression$2;
    function optimiseCallExpression(callee, thisNode, args, optional) {
      if (args.length === 1 && isSpreadElement(args[0]) && isIdentifier$4(args[0].argument, {
        name: "arguments"
      })) {
        if (optional) {
          return optionalCallExpression(optionalMemberExpression(callee, identifier$2("apply"), false, true), [thisNode, args[0].argument], false);
        }
        return callExpression$2(memberExpression$4(callee, identifier$2("apply")), [thisNode, args[0].argument]);
      } else {
        if (optional) {
          return optionalCallExpression(optionalMemberExpression(callee, identifier$2("call"), false, true), [thisNode].concat(_toConsumableArray(args)), false);
        }
        return callExpression$2(memberExpression$4(callee, identifier$2("call")), [thisNode].concat(_toConsumableArray(args)));
      }
    }
  
    var _templateObject$q, _templateObject2$c;
    var assignmentExpression$3 = assignmentExpression$d,
      booleanLiteral$1 = booleanLiteral$4,
      callExpression$1 = callExpression$e,
      cloneNode$2 = cloneNode$j,
      identifier$1 = identifier$i,
      memberExpression$3 = memberExpression$c,
      sequenceExpression$1 = sequenceExpression$7,
      stringLiteral$1 = stringLiteral$8,
      thisExpression$1 = thisExpression$4;
    function getPrototypeOfExpression(objectRef, isStatic, file, isPrivateMethod) {
      objectRef = cloneNode$2(objectRef);
      var targetRef = isStatic || isPrivateMethod ? objectRef : memberExpression$3(objectRef, identifier$1("prototype"));
      return callExpression$1(file.addHelper("getPrototypeOf"), [targetRef]);
    }
    var visitor$2 = traverse.visitors.merge([visitor$5, {
      Super: function Super(path, state) {
        var node = path.node,
          parentPath = path.parentPath;
        if (!parentPath.isMemberExpression({
          object: node
        })) return;
        state.handle(parentPath);
      }
    }]);
    var unshadowSuperBindingVisitor = traverse.visitors.merge([visitor$5, {
      Scopable: function Scopable(path, _ref) {
        var refName = _ref.refName;
        var binding = path.scope.getOwnBinding(refName);
        if (binding && binding.identifier.name === refName) {
          path.scope.rename(refName);
        }
      }
    }]);
    var specHandlers = {
      memoise: function memoise(superMember, count) {
        var scope = superMember.scope,
          node = superMember.node;
        var computed = node.computed,
          property = node.property;
        if (!computed) {
          return;
        }
        var memo = scope.maybeGenerateMemoised(property);
        if (!memo) {
          return;
        }
        this.memoiser.set(property, memo, count);
      },
      prop: function prop(superMember) {
        var _superMember$node = superMember.node,
          computed = _superMember$node.computed,
          property = _superMember$node.property;
        if (this.memoiser.has(property)) {
          return cloneNode$2(this.memoiser.get(property));
        }
        if (computed) {
          return cloneNode$2(property);
        }
        return stringLiteral$1(property.name);
      },
      get: function get(superMember) {
        return this._get(superMember, this._getThisRefs());
      },
      _get: function _get(superMember, thisRefs) {
        var proto = getPrototypeOfExpression(this.getObjectRef(), this.isStatic, this.file, this.isPrivateMethod);
        return callExpression$1(this.file.addHelper("get"), [thisRefs.memo ? sequenceExpression$1([thisRefs.memo, proto]) : proto, this.prop(superMember), thisRefs["this"]]);
      },
      _getThisRefs: function _getThisRefs() {
        if (!this.isDerivedConstructor) {
          return {
            "this": thisExpression$1()
          };
        }
        var thisRef = this.scope.generateDeclaredUidIdentifier("thisSuper");
        return {
          memo: assignmentExpression$3("=", thisRef, thisExpression$1()),
          "this": cloneNode$2(thisRef)
        };
      },
      set: function set(superMember, value) {
        var thisRefs = this._getThisRefs();
        var proto = getPrototypeOfExpression(this.getObjectRef(), this.isStatic, this.file, this.isPrivateMethod);
        return callExpression$1(this.file.addHelper("set"), [thisRefs.memo ? sequenceExpression$1([thisRefs.memo, proto]) : proto, this.prop(superMember), value, thisRefs["this"], booleanLiteral$1(superMember.isInStrictMode())]);
      },
      destructureSet: function destructureSet(superMember) {
        throw superMember.buildCodeFrameError("Destructuring to a super field is not supported yet.");
      },
      call: function call(superMember, args) {
        var thisRefs = this._getThisRefs();
        return optimiseCallExpression(this._get(superMember, thisRefs), cloneNode$2(thisRefs["this"]), args, false);
      },
      optionalCall: function optionalCall(superMember, args) {
        var thisRefs = this._getThisRefs();
        return optimiseCallExpression(this._get(superMember, thisRefs), cloneNode$2(thisRefs["this"]), args, true);
      },
      "delete": function _delete(superMember) {
        if (superMember.node.computed) {
          return sequenceExpression$1([callExpression$1(this.file.addHelper("toPropertyKey"), [cloneNode$2(superMember.node.property)]), template$2.expression.ast(_templateObject$q || (_templateObject$q = _taggedTemplateLiteralLoose(["\n          function () { throw new ReferenceError(\"'delete super[expr]' is invalid\"); }()\n        "])))]);
        } else {
          return template$2.expression.ast(_templateObject2$c || (_templateObject2$c = _taggedTemplateLiteralLoose(["\n        function () { throw new ReferenceError(\"'delete super.prop' is invalid\"); }()\n      "])));
        }
      }
    };
    var looseHandlers = Object.assign({}, specHandlers, {
      prop: function prop(superMember) {
        var property = superMember.node.property;
        if (this.memoiser.has(property)) {
          return cloneNode$2(this.memoiser.get(property));
        }
        return cloneNode$2(property);
      },
      get: function get(superMember) {
        var isStatic = this.isStatic,
          getSuperRef = this.getSuperRef;
        var computed = superMember.node.computed;
        var prop = this.prop(superMember);
        var object;
        if (isStatic) {
          var _getSuperRef;
          object = (_getSuperRef = getSuperRef()) != null ? _getSuperRef : memberExpression$3(identifier$1("Function"), identifier$1("prototype"));
        } else {
          var _getSuperRef2;
          object = memberExpression$3((_getSuperRef2 = getSuperRef()) != null ? _getSuperRef2 : identifier$1("Object"), identifier$1("prototype"));
        }
        return memberExpression$3(object, prop, computed);
      },
      set: function set(superMember, value) {
        var computed = superMember.node.computed;
        var prop = this.prop(superMember);
        return assignmentExpression$3("=", memberExpression$3(thisExpression$1(), prop, computed), value);
      },
      destructureSet: function destructureSet(superMember) {
        var computed = superMember.node.computed;
        var prop = this.prop(superMember);
        return memberExpression$3(thisExpression$1(), prop, computed);
      },
      call: function call(superMember, args) {
        return optimiseCallExpression(this.get(superMember), thisExpression$1(), args, false);
      },
      optionalCall: function optionalCall(superMember, args) {
        return optimiseCallExpression(this.get(superMember), thisExpression$1(), args, true);
      }
    });
    var ReplaceSupers = function () {
      function ReplaceSupers(opts) {
        var _opts$constantSuper;
        var path = opts.methodPath;
        this.methodPath = path;
        this.isDerivedConstructor = path.isClassMethod({
          kind: "constructor"
        }) && !!opts.superRef;
        this.isStatic = path.isObjectMethod() || path.node["static"] || (path.isStaticBlock == null ? void 0 : path.isStaticBlock());
        this.isPrivateMethod = path.isPrivate() && path.isMethod();
        this.file = opts.file;
        this.constantSuper = (_opts$constantSuper = opts.constantSuper) != null ? _opts$constantSuper : opts.isLoose;
        this.opts = opts;
      }
      var _proto = ReplaceSupers.prototype;
      _proto.getObjectRef = function getObjectRef() {
        return cloneNode$2(this.opts.objectRef || this.opts.getObjectRef());
      };
      _proto.getSuperRef = function getSuperRef() {
        if (this.opts.superRef) return cloneNode$2(this.opts.superRef);
        if (this.opts.getSuperRef) {
          return cloneNode$2(this.opts.getSuperRef());
        }
      };
      _proto.replace = function replace() {
        if (this.opts.refToPreserve) {
          this.methodPath.traverse(unshadowSuperBindingVisitor, {
            refName: this.opts.refToPreserve.name
          });
        }
        var handler = this.constantSuper ? looseHandlers : specHandlers;
        memberExpressionToFunctions(this.methodPath, visitor$2, Object.assign({
          file: this.file,
          scope: this.methodPath.scope,
          isDerivedConstructor: this.isDerivedConstructor,
          isStatic: this.isStatic,
          isPrivateMethod: this.isPrivateMethod,
          getObjectRef: this.getObjectRef.bind(this),
          getSuperRef: this.getSuperRef.bind(this),
          boundGet: handler.get
        }, handler));
      };
      return _createClass(ReplaceSupers);
    }();
  
    var isParenthesizedExpression = isParenthesizedExpression$1,
      isTSAsExpression = isTSAsExpression$2,
      isTSNonNullExpression = isTSNonNullExpression$2,
      isTSSatisfiesExpression = isTSSatisfiesExpression$2,
      isTSTypeAssertion = isTSTypeAssertion$2,
      isTypeCastExpression = isTypeCastExpression$1;
    function isTransparentExprWrapper(node) {
      return isTSAsExpression(node) || isTSSatisfiesExpression(node) || isTSTypeAssertion(node) || isTSNonNullExpression(node) || isTypeCastExpression(node) || isParenthesizedExpression(node);
    }
    function skipTransparentExprWrappers(path) {
      while (isTransparentExprWrapper(path.node)) {
        path = path.get("expression");
      }
      return path;
    }
    function skipTransparentExprWrapperNodes(node) {
      while (isTransparentExprWrapper(node)) {
        node = node.expression;
      }
      return node;
    }
  
    function assertFieldTransformed(path) {
      if (path.node.declare || false) {
        throw path.buildCodeFrameError("TypeScript 'declare' fields must first be transformed by " + "@babel/plugin-transform-typescript.\n" + "If you have already enabled that plugin (or '@babel/preset-typescript'), make sure " + "that it runs before any plugin related to additional class features:\n" + " - @babel/plugin-proposal-class-properties\n" + " - @babel/plugin-proposal-private-methods\n" + " - @babel/plugin-proposal-decorators");
      }
    }
  
    var _templateObject$p, _templateObject2$b, _templateObject3$a, _templateObject4$5, _templateObject5$3, _templateObject6$3, _templateObject7$1, _templateObject8, _templateObject9, _templateObject10, _templateObject11, _templateObject12, _templateObject13, _templateObject14, _templateObject15, _templateObject16, _templateObject17, _templateObject18, _templateObject19;
    function buildPrivateNamesMap(props) {
      var privateNamesMap = new Map();
      for (var _iterator = _createForOfIteratorHelperLoose(props), _step; !(_step = _iterator()).done;) {
        var prop = _step.value;
        if (prop.isPrivate()) {
          var name = prop.node.key.id.name;
          var update = privateNamesMap.has(name) ? privateNamesMap.get(name) : {
            id: prop.scope.generateUidIdentifier(name),
            "static": prop.node["static"],
            method: !prop.isProperty()
          };
          if (prop.isClassPrivateMethod()) {
            if (prop.node.kind === "get") {
              update.getId = prop.scope.generateUidIdentifier("get_" + name);
            } else if (prop.node.kind === "set") {
              update.setId = prop.scope.generateUidIdentifier("set_" + name);
            } else if (prop.node.kind === "method") {
              update.methodId = prop.scope.generateUidIdentifier(name);
            }
          }
          privateNamesMap.set(name, update);
        }
      }
      return privateNamesMap;
    }
    function buildPrivateNamesNodes(privateNamesMap, privateFieldsAsProperties, privateFieldsAsSymbols, state) {
      var initNodes = [];
      for (var _iterator2 = _createForOfIteratorHelperLoose(privateNamesMap), _step2; !(_step2 = _iterator2()).done;) {
        var _step2$value = _slicedToArray(_step2.value, 2),
          name = _step2$value[0],
          value = _step2$value[1];
        var isStatic = value["static"],
          isMethod = value.method,
          getId = value.getId,
          setId = value.setId;
        var isAccessor = getId || setId;
        var id = cloneNode$j(value.id);
        var init = void 0;
        if (privateFieldsAsProperties) {
          init = callExpression$e(state.addHelper("classPrivateFieldLooseKey"), [stringLiteral$8(name)]);
        } else if (privateFieldsAsSymbols) {
          init = callExpression$e(identifier$i("Symbol"), [stringLiteral$8(name)]);
        } else if (!isStatic) {
          init = newExpression(identifier$i(!isMethod || isAccessor ? "WeakMap" : "WeakSet"), []);
        }
        if (init) {
          annotateAsPure(init);
          initNodes.push(template$2.statement.ast(_templateObject$p || (_templateObject$p = _taggedTemplateLiteralLoose(["var ", " = ", ""])), id, init));
        }
      }
      return initNodes;
    }
    function privateNameVisitorFactory(visitor) {
      var nestedVisitor = traverse.visitors.merge([Object.assign({}, visitor), visitor$5]);
      var privateNameVisitor = Object.assign({}, visitor, {
        Class: function Class(path) {
          var privateNamesMap = this.privateNamesMap;
          var body = path.get("body.body");
          var visiblePrivateNames = new Map(privateNamesMap);
          var redeclared = [];
          for (var _iterator3 = _createForOfIteratorHelperLoose(body), _step3; !(_step3 = _iterator3()).done;) {
            var prop = _step3.value;
            if (!prop.isPrivate()) continue;
            var name = prop.node.key.id.name;
            visiblePrivateNames["delete"](name);
            redeclared.push(name);
          }
          if (!redeclared.length) {
            return;
          }
          path.get("body").traverse(nestedVisitor, Object.assign({}, this, {
            redeclared: redeclared
          }));
          path.traverse(privateNameVisitor, Object.assign({}, this, {
            privateNamesMap: visiblePrivateNames
          }));
          path.skipKey("body");
        }
      });
      return privateNameVisitor;
    }
    var privateNameVisitor = privateNameVisitorFactory({
      PrivateName: function PrivateName(path, _ref) {
        var noDocumentAll = _ref.noDocumentAll;
        var privateNamesMap = this.privateNamesMap,
          redeclared = this.redeclared;
        var node = path.node,
          parentPath = path.parentPath;
        if (!parentPath.isMemberExpression({
          property: node
        }) && !parentPath.isOptionalMemberExpression({
          property: node
        })) {
          return;
        }
        var name = node.id.name;
        if (!privateNamesMap.has(name)) return;
        if (redeclared && redeclared.includes(name)) return;
        this.handle(parentPath, noDocumentAll);
      }
    });
    function unshadow(name, scope, innerBinding) {
      while ((_scope = scope) != null && _scope.hasBinding(name) && !scope.bindingIdentifierEquals(name, innerBinding)) {
        var _scope;
        scope.rename(name);
        scope = scope.parent;
      }
    }
    function buildCheckInRHS(rhs, file, inRHSIsObject) {
      if (inRHSIsObject || !(file.availableHelper != null && file.availableHelper("checkInRHS"))) return rhs;
      return callExpression$e(file.addHelper("checkInRHS"), [rhs]);
    }
    var privateInVisitor = privateNameVisitorFactory({
      BinaryExpression: function BinaryExpression(path, _ref2) {
        var file = _ref2.file;
        var _path$node = path.node,
          operator = _path$node.operator,
          left = _path$node.left,
          right = _path$node.right;
        if (operator !== "in") return;
        if (!isPrivateName$3(left)) return;
        var privateFieldsAsProperties = this.privateFieldsAsProperties,
          privateNamesMap = this.privateNamesMap,
          redeclared = this.redeclared;
        var name = left.id.name;
        if (!privateNamesMap.has(name)) return;
        if (redeclared && redeclared.includes(name)) return;
        unshadow(this.classRef.name, path.scope, this.innerBinding);
        if (privateFieldsAsProperties) {
          var _privateNamesMap$get = privateNamesMap.get(name),
            _id = _privateNamesMap$get.id;
          path.replaceWith(template$2.expression.ast(_templateObject2$b || (_templateObject2$b = _taggedTemplateLiteralLoose(["\n        Object.prototype.hasOwnProperty.call(", ", ", ")\n      "])), buildCheckInRHS(right, file), cloneNode$j(_id)));
          return;
        }
        var _privateNamesMap$get2 = privateNamesMap.get(name),
          id = _privateNamesMap$get2.id,
          isStatic = _privateNamesMap$get2["static"];
        if (isStatic) {
          path.replaceWith(template$2.expression.ast(_templateObject3$a || (_templateObject3$a = _taggedTemplateLiteralLoose(["", " === ", ""])), buildCheckInRHS(right, file), cloneNode$j(this.classRef)));
          return;
        }
        path.replaceWith(template$2.expression.ast(_templateObject4$5 || (_templateObject4$5 = _taggedTemplateLiteralLoose(["", ".has(", ")"])), cloneNode$j(id), buildCheckInRHS(right, file)));
      }
    });
    var privateNameHandlerSpec = {
      memoise: function memoise(member, count) {
        var scope = member.scope;
        var _ref3 = member.node,
          object = _ref3.object;
        var memo = scope.maybeGenerateMemoised(object);
        if (!memo) {
          return;
        }
        this.memoiser.set(object, memo, count);
      },
      receiver: function receiver(member) {
        var _ref4 = member.node,
          object = _ref4.object;
        if (this.memoiser.has(object)) {
          return cloneNode$j(this.memoiser.get(object));
        }
        return cloneNode$j(object);
      },
      get: function get(member) {
        var classRef = this.classRef,
          privateNamesMap = this.privateNamesMap,
          file = this.file,
          innerBinding = this.innerBinding;
        var name = member.node.property.id.name;
        var _privateNamesMap$get3 = privateNamesMap.get(name),
          id = _privateNamesMap$get3.id,
          isStatic = _privateNamesMap$get3["static"],
          isMethod = _privateNamesMap$get3.method,
          methodId = _privateNamesMap$get3.methodId,
          getId = _privateNamesMap$get3.getId,
          setId = _privateNamesMap$get3.setId;
        var isAccessor = getId || setId;
        if (isStatic) {
          var helperName = isMethod && !isAccessor ? "classStaticPrivateMethodGet" : "classStaticPrivateFieldSpecGet";
          unshadow(classRef.name, member.scope, innerBinding);
          return callExpression$e(file.addHelper(helperName), [this.receiver(member), cloneNode$j(classRef), cloneNode$j(id)]);
        }
        if (isMethod) {
          if (isAccessor) {
            if (!getId && setId) {
              if (file.availableHelper("writeOnlyError")) {
                return sequenceExpression$7([this.receiver(member), callExpression$e(file.addHelper("writeOnlyError"), [stringLiteral$8("#" + name)])]);
              }
              console.warn("@babel/helpers is outdated, update it to silence this warning.");
            }
            return callExpression$e(file.addHelper("classPrivateFieldGet"), [this.receiver(member), cloneNode$j(id)]);
          }
          return callExpression$e(file.addHelper("classPrivateMethodGet"), [this.receiver(member), cloneNode$j(id), cloneNode$j(methodId)]);
        }
        return callExpression$e(file.addHelper("classPrivateFieldGet"), [this.receiver(member), cloneNode$j(id)]);
      },
      boundGet: function boundGet(member) {
        this.memoise(member, 1);
        return callExpression$e(memberExpression$c(this.get(member), identifier$i("bind")), [this.receiver(member)]);
      },
      set: function set(member, value) {
        var classRef = this.classRef,
          privateNamesMap = this.privateNamesMap,
          file = this.file;
        var name = member.node.property.id.name;
        var _privateNamesMap$get4 = privateNamesMap.get(name),
          id = _privateNamesMap$get4.id,
          isStatic = _privateNamesMap$get4["static"],
          isMethod = _privateNamesMap$get4.method,
          setId = _privateNamesMap$get4.setId,
          getId = _privateNamesMap$get4.getId;
        var isAccessor = getId || setId;
        if (isStatic) {
          var helperName = isMethod && !isAccessor ? "classStaticPrivateMethodSet" : "classStaticPrivateFieldSpecSet";
          return callExpression$e(file.addHelper(helperName), [this.receiver(member), cloneNode$j(classRef), cloneNode$j(id), value]);
        }
        if (isMethod) {
          if (setId) {
            return callExpression$e(file.addHelper("classPrivateFieldSet"), [this.receiver(member), cloneNode$j(id), value]);
          }
          return sequenceExpression$7([this.receiver(member), value, callExpression$e(file.addHelper("readOnlyError"), [stringLiteral$8("#" + name)])]);
        }
        return callExpression$e(file.addHelper("classPrivateFieldSet"), [this.receiver(member), cloneNode$j(id), value]);
      },
      destructureSet: function destructureSet(member) {
        var classRef = this.classRef,
          privateNamesMap = this.privateNamesMap,
          file = this.file;
        var name = member.node.property.id.name;
        var _privateNamesMap$get5 = privateNamesMap.get(name),
          id = _privateNamesMap$get5.id,
          isStatic = _privateNamesMap$get5["static"];
        if (isStatic) {
          try {
            var helper = file.addHelper("classStaticPrivateFieldDestructureSet");
          } catch (_unused) {
            throw new Error("Babel can not transpile `[C.#p] = [0]` with @babel/helpers < 7.13.10, \n" + "please update @babel/helpers to the latest version.");
          }
          return memberExpression$c(callExpression$e(helper, [this.receiver(member), cloneNode$j(classRef), cloneNode$j(id)]), identifier$i("value"));
        }
        return memberExpression$c(callExpression$e(file.addHelper("classPrivateFieldDestructureSet"), [this.receiver(member), cloneNode$j(id)]), identifier$i("value"));
      },
      call: function call(member, args) {
        this.memoise(member, 1);
        return optimiseCallExpression(this.get(member), this.receiver(member), args, false);
      },
      optionalCall: function optionalCall(member, args) {
        this.memoise(member, 1);
        return optimiseCallExpression(this.get(member), this.receiver(member), args, true);
      },
      "delete": function _delete() {
        throw new Error("Internal Babel error: deleting private elements is a parsing error.");
      }
    };
    var privateNameHandlerLoose = {
      get: function get(member) {
        var privateNamesMap = this.privateNamesMap,
          file = this.file;
        var object = member.node.object;
        var name = member.node.property.id.name;
        return template$2.expression(_templateObject5$3 || (_templateObject5$3 = _taggedTemplateLiteralLoose(["BASE(REF, PROP)[PROP]"])))({
          BASE: file.addHelper("classPrivateFieldLooseBase"),
          REF: cloneNode$j(object),
          PROP: cloneNode$j(privateNamesMap.get(name).id)
        });
      },
      set: function set() {
        throw new Error("private name handler with loose = true don't need set()");
      },
      boundGet: function boundGet(member) {
        return callExpression$e(memberExpression$c(this.get(member), identifier$i("bind")), [cloneNode$j(member.node.object)]);
      },
      simpleSet: function simpleSet(member) {
        return this.get(member);
      },
      destructureSet: function destructureSet(member) {
        return this.get(member);
      },
      call: function call(member, args) {
        return callExpression$e(this.get(member), args);
      },
      optionalCall: function optionalCall(member, args) {
        return optionalCallExpression$2(this.get(member), args, true);
      },
      "delete": function _delete() {
        throw new Error("Internal Babel error: deleting private elements is a parsing error.");
      }
    };
    function transformPrivateNamesUsage(ref, path, privateNamesMap, _ref5, state) {
      var privateFieldsAsProperties = _ref5.privateFieldsAsProperties,
        noDocumentAll = _ref5.noDocumentAll,
        innerBinding = _ref5.innerBinding;
      if (!privateNamesMap.size) return;
      var body = path.get("body");
      var handler = privateFieldsAsProperties ? privateNameHandlerLoose : privateNameHandlerSpec;
      memberExpressionToFunctions(body, privateNameVisitor, Object.assign({
        privateNamesMap: privateNamesMap,
        classRef: ref,
        file: state
      }, handler, {
        noDocumentAll: noDocumentAll,
        innerBinding: innerBinding
      }));
      body.traverse(privateInVisitor, {
        privateNamesMap: privateNamesMap,
        classRef: ref,
        file: state,
        privateFieldsAsProperties: privateFieldsAsProperties,
        innerBinding: innerBinding
      });
    }
    function buildPrivateFieldInitLoose(ref, prop, privateNamesMap) {
      var _privateNamesMap$get6 = privateNamesMap.get(prop.node.key.id.name),
        id = _privateNamesMap$get6.id;
      var value = prop.node.value || prop.scope.buildUndefinedNode();
      return inheritPropComments(template$2.statement.ast(_templateObject6$3 || (_templateObject6$3 = _taggedTemplateLiteralLoose(["\n      Object.defineProperty(", ", ", ", {\n        // configurable is false by default\n        // enumerable is false by default\n        writable: true,\n        value: ", "\n      });\n    "])), ref, cloneNode$j(id), value), prop);
    }
    function buildPrivateInstanceFieldInitSpec(ref, prop, privateNamesMap, state) {
      var _privateNamesMap$get7 = privateNamesMap.get(prop.node.key.id.name),
        id = _privateNamesMap$get7.id;
      var value = prop.node.value || prop.scope.buildUndefinedNode();
      {
        if (!state.availableHelper("classPrivateFieldInitSpec")) {
          return inheritPropComments(template$2.statement.ast(_templateObject7$1 || (_templateObject7$1 = _taggedTemplateLiteralLoose(["", ".set(", ", {\n          // configurable is always false for private elements\n          // enumerable is always false for private elements\n          writable: true,\n          value: ", ",\n        })"])), cloneNode$j(id), ref, value), prop);
        }
      }
      var helper = state.addHelper("classPrivateFieldInitSpec");
      return inheritPropComments(template$2.statement.ast(_templateObject8 || (_templateObject8 = _taggedTemplateLiteralLoose(["", "(\n      ", ",\n      ", ",\n      {\n        writable: true,\n        value: ", "\n      },\n    )"])), helper, thisExpression$4(), cloneNode$j(id), value), prop);
    }
    function buildPrivateStaticFieldInitSpec(prop, privateNamesMap) {
      var privateName = privateNamesMap.get(prop.node.key.id.name);
      var id = privateName.id,
        getId = privateName.getId,
        setId = privateName.setId,
        initAdded = privateName.initAdded;
      var isAccessor = getId || setId;
      if (!prop.isProperty() && (initAdded || !isAccessor)) return;
      if (isAccessor) {
        privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
          initAdded: true
        }));
        return inheritPropComments(template$2.statement.ast(_templateObject9 || (_templateObject9 = _taggedTemplateLiteralLoose(["\n        var ", " = {\n          // configurable is false by default\n          // enumerable is false by default\n          // writable is false by default\n          get: ", ",\n          set: ", "\n        }\n      "])), cloneNode$j(id), getId ? getId.name : prop.scope.buildUndefinedNode(), setId ? setId.name : prop.scope.buildUndefinedNode()), prop);
      }
      var value = prop.node.value || prop.scope.buildUndefinedNode();
      return inheritPropComments(template$2.statement.ast(_templateObject10 || (_templateObject10 = _taggedTemplateLiteralLoose(["\n      var ", " = {\n        // configurable is false by default\n        // enumerable is false by default\n        writable: true,\n        value: ", "\n      };\n    "])), cloneNode$j(id), value), prop);
    }
    function buildPrivateMethodInitLoose(ref, prop, privateNamesMap) {
      var privateName = privateNamesMap.get(prop.node.key.id.name);
      var methodId = privateName.methodId,
        id = privateName.id,
        getId = privateName.getId,
        setId = privateName.setId,
        initAdded = privateName.initAdded;
      if (initAdded) return;
      if (methodId) {
        return inheritPropComments(template$2.statement.ast(_templateObject11 || (_templateObject11 = _taggedTemplateLiteralLoose(["\n        Object.defineProperty(", ", ", ", {\n          // configurable is false by default\n          // enumerable is false by default\n          // writable is false by default\n          value: ", "\n        });\n      "])), ref, id, methodId.name), prop);
      }
      var isAccessor = getId || setId;
      if (isAccessor) {
        privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
          initAdded: true
        }));
        return inheritPropComments(template$2.statement.ast(_templateObject12 || (_templateObject12 = _taggedTemplateLiteralLoose(["\n        Object.defineProperty(", ", ", ", {\n          // configurable is false by default\n          // enumerable is false by default\n          // writable is false by default\n          get: ", ",\n          set: ", "\n        });\n      "])), ref, id, getId ? getId.name : prop.scope.buildUndefinedNode(), setId ? setId.name : prop.scope.buildUndefinedNode()), prop);
      }
    }
    function buildPrivateInstanceMethodInitSpec(ref, prop, privateNamesMap, state) {
      var privateName = privateNamesMap.get(prop.node.key.id.name);
      var getId = privateName.getId,
        setId = privateName.setId,
        initAdded = privateName.initAdded;
      if (initAdded) return;
      var isAccessor = getId || setId;
      if (isAccessor) {
        return buildPrivateAccessorInitialization(ref, prop, privateNamesMap, state);
      }
      return buildPrivateInstanceMethodInitialization(ref, prop, privateNamesMap, state);
    }
    function buildPrivateAccessorInitialization(ref, prop, privateNamesMap, state) {
      var privateName = privateNamesMap.get(prop.node.key.id.name);
      var id = privateName.id,
        getId = privateName.getId,
        setId = privateName.setId;
      privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
        initAdded: true
      }));
      {
        if (!state.availableHelper("classPrivateFieldInitSpec")) {
          return inheritPropComments(template$2.statement.ast(_templateObject13 || (_templateObject13 = _taggedTemplateLiteralLoose(["\n          ", ".set(", ", {\n            get: ", ",\n            set: ", "\n          });\n        "])), id, ref, getId ? getId.name : prop.scope.buildUndefinedNode(), setId ? setId.name : prop.scope.buildUndefinedNode()), prop);
        }
      }
      var helper = state.addHelper("classPrivateFieldInitSpec");
      return inheritPropComments(template$2.statement.ast(_templateObject14 || (_templateObject14 = _taggedTemplateLiteralLoose(["", "(\n      ", ",\n      ", ",\n      {\n        get: ", ",\n        set: ", "\n      },\n    )"])), helper, thisExpression$4(), cloneNode$j(id), getId ? getId.name : prop.scope.buildUndefinedNode(), setId ? setId.name : prop.scope.buildUndefinedNode()), prop);
    }
    function buildPrivateInstanceMethodInitialization(ref, prop, privateNamesMap, state) {
      var privateName = privateNamesMap.get(prop.node.key.id.name);
      var id = privateName.id;
      {
        if (!state.availableHelper("classPrivateMethodInitSpec")) {
          return inheritPropComments(template$2.statement.ast(_templateObject15 || (_templateObject15 = _taggedTemplateLiteralLoose(["", ".add(", ")"])), id, ref), prop);
        }
      }
      var helper = state.addHelper("classPrivateMethodInitSpec");
      return inheritPropComments(template$2.statement.ast(_templateObject16 || (_templateObject16 = _taggedTemplateLiteralLoose(["", "(\n      ", ",\n      ", "\n    )"])), helper, thisExpression$4(), cloneNode$j(id)), prop);
    }
    function buildPublicFieldInitLoose(ref, prop) {
      var _prop$node = prop.node,
        key = _prop$node.key,
        computed = _prop$node.computed;
      var value = prop.node.value || prop.scope.buildUndefinedNode();
      return inheritPropComments(expressionStatement$a(assignmentExpression$d("=", memberExpression$c(ref, key, computed || isLiteral$6(key)), value)), prop);
    }
    function buildPublicFieldInitSpec(ref, prop, state) {
      var _prop$node2 = prop.node,
        key = _prop$node2.key,
        computed = _prop$node2.computed;
      var value = prop.node.value || prop.scope.buildUndefinedNode();
      return inheritPropComments(expressionStatement$a(callExpression$e(state.addHelper("defineProperty"), [ref, computed || isLiteral$6(key) ? key : stringLiteral$8(key.name), value])), prop);
    }
    function buildPrivateStaticMethodInitLoose(ref, prop, state, privateNamesMap) {
      var privateName = privateNamesMap.get(prop.node.key.id.name);
      var id = privateName.id,
        methodId = privateName.methodId,
        getId = privateName.getId,
        setId = privateName.setId,
        initAdded = privateName.initAdded;
      if (initAdded) return;
      var isAccessor = getId || setId;
      if (isAccessor) {
        privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
          initAdded: true
        }));
        return inheritPropComments(template$2.statement.ast(_templateObject17 || (_templateObject17 = _taggedTemplateLiteralLoose(["\n        Object.defineProperty(", ", ", ", {\n          // configurable is false by default\n          // enumerable is false by default\n          // writable is false by default\n          get: ", ",\n          set: ", "\n        })\n      "])), ref, id, getId ? getId.name : prop.scope.buildUndefinedNode(), setId ? setId.name : prop.scope.buildUndefinedNode()), prop);
      }
      return inheritPropComments(template$2.statement.ast(_templateObject18 || (_templateObject18 = _taggedTemplateLiteralLoose(["\n      Object.defineProperty(", ", ", ", {\n        // configurable is false by default\n        // enumerable is false by default\n        // writable is false by default\n        value: ", "\n      });\n    "])), ref, id, methodId.name), prop);
    }
    function buildPrivateMethodDeclaration(prop, privateNamesMap, privateFieldsAsProperties) {
      if (privateFieldsAsProperties === void 0) {
        privateFieldsAsProperties = false;
      }
      var privateName = privateNamesMap.get(prop.node.key.id.name);
      var id = privateName.id,
        methodId = privateName.methodId,
        getId = privateName.getId,
        setId = privateName.setId,
        getterDeclared = privateName.getterDeclared,
        setterDeclared = privateName.setterDeclared,
        isStatic = privateName["static"];
      var _prop$node3 = prop.node,
        params = _prop$node3.params,
        body = _prop$node3.body,
        generator = _prop$node3.generator,
        async = _prop$node3.async;
      var isGetter = getId && !getterDeclared && params.length === 0;
      var isSetter = setId && !setterDeclared && params.length > 0;
      var declId = methodId;
      if (isGetter) {
        privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
          getterDeclared: true
        }));
        declId = getId;
      } else if (isSetter) {
        privateNamesMap.set(prop.node.key.id.name, Object.assign({}, privateName, {
          setterDeclared: true
        }));
        declId = setId;
      } else if (isStatic && !privateFieldsAsProperties) {
        declId = id;
      }
      return inheritPropComments(functionDeclaration(cloneNode$j(declId), params, body, generator, async), prop);
    }
    var thisContextVisitor = traverse.visitors.merge([{
      ThisExpression: function ThisExpression(path, state) {
        var parent = path.findParent(function (path) {
          return !isTransparentExprWrapper(path.node);
        });
        if (isUnaryExpression$1(parent.node, {
          operator: "delete"
        })) {
          path.parentPath.replaceWith(booleanLiteral$4(true));
          return;
        }
        state.needsClassRef = true;
        path.replaceWith(cloneNode$j(state.classRef));
      },
      MetaProperty: function MetaProperty(path) {
        var meta = path.get("meta");
        var property = path.get("property");
        var scope = path.scope;
        if (meta.isIdentifier({
          name: "new"
        }) && property.isIdentifier({
          name: "target"
        })) {
          path.replaceWith(scope.buildUndefinedNode());
        }
      }
    }, visitor$5]);
    var innerReferencesVisitor = {
      ReferencedIdentifier: function ReferencedIdentifier(path, state) {
        if (path.scope.bindingIdentifierEquals(path.node.name, state.innerBinding)) {
          state.needsClassRef = true;
          path.node.name = state.classRef.name;
        }
      }
    };
    function replaceThisContext(path, ref, getSuperRef, file, isStaticBlock$1, constantSuper, innerBindingRef) {
      var _state$classRef;
      var state = {
        classRef: ref,
        needsClassRef: false,
        innerBinding: innerBindingRef
      };
      var replacer = new ReplaceSupers({
        methodPath: path,
        constantSuper: constantSuper,
        file: file,
        refToPreserve: ref,
        getSuperRef: getSuperRef,
        getObjectRef: function getObjectRef() {
          state.needsClassRef = true;
          return isStaticBlock != null && isStaticBlock(path.node) || path.node["static"] ? ref : memberExpression$c(ref, identifier$i("prototype"));
        }
      });
      replacer.replace();
      if (isStaticBlock$1 || path.isProperty()) {
        path.traverse(thisContextVisitor, state);
      }
      if (innerBindingRef != null && (_state$classRef = state.classRef) != null && _state$classRef.name && state.classRef.name !== (innerBindingRef == null ? void 0 : innerBindingRef.name)) {
        path.traverse(innerReferencesVisitor, state);
      }
      return state.needsClassRef;
    }
    function isNameOrLength(_ref6) {
      var key = _ref6.key,
        computed = _ref6.computed;
      if (key.type === "Identifier") {
        return !computed && (key.name === "name" || key.name === "length");
      }
      if (key.type === "StringLiteral") {
        return key.value === "name" || key.value === "length";
      }
      return false;
    }
    function inheritPropComments(node, prop) {
      inheritLeadingComments$1(node, prop.node);
      inheritInnerComments(node, prop.node);
      return node;
    }
    function buildFieldsInitNodes(ref, superRef, props, privateNamesMap, state, setPublicClassFields, privateFieldsAsProperties, constantSuper, innerBindingRef) {
      var needsClassRef = false;
      var injectSuperRef;
      var staticNodes = [];
      var instanceNodes = [];
      var pureStaticNodes = [];
      var getSuperRef = isIdentifier$j(superRef) ? function () {
        return superRef;
      } : function () {
        var _injectSuperRef;
        (_injectSuperRef = injectSuperRef) != null ? _injectSuperRef : injectSuperRef = props[0].scope.generateUidIdentifierBasedOnNode(superRef);
        return injectSuperRef;
      };
      for (var _iterator4 = _createForOfIteratorHelperLoose(props), _step4; !(_step4 = _iterator4()).done;) {
        var prop = _step4.value;
        prop.isClassProperty() && assertFieldTransformed(prop);
        var isStatic = !(isStaticBlock != null && isStaticBlock(prop.node)) && prop.node["static"];
        var isInstance = !isStatic;
        var isPrivate = prop.isPrivate();
        var isPublic = !isPrivate;
        var isField = prop.isProperty();
        var isMethod = !isField;
        var isStaticBlock$1 = prop.isStaticBlock == null ? void 0 : prop.isStaticBlock();
        if (isStatic || isMethod && isPrivate || isStaticBlock$1) {
          var replaced = replaceThisContext(prop, ref, getSuperRef, state, isStaticBlock$1, constantSuper, innerBindingRef);
          needsClassRef = needsClassRef || replaced;
        }
        switch (true) {
          case isStaticBlock$1:
            {
              var blockBody = prop.node.body;
              if (blockBody.length === 1 && isExpressionStatement$3(blockBody[0])) {
                staticNodes.push(inheritPropComments(blockBody[0], prop));
              } else {
                staticNodes.push(inheritsComments$1(template$2.statement.ast(_templateObject19 || (_templateObject19 = _taggedTemplateLiteralLoose(["(() => { ", " })()"])), blockBody), prop.node));
              }
              break;
            }
          case isStatic && isPrivate && isField && privateFieldsAsProperties:
            needsClassRef = true;
            staticNodes.push(buildPrivateFieldInitLoose(cloneNode$j(ref), prop, privateNamesMap));
            break;
          case isStatic && isPrivate && isField && !privateFieldsAsProperties:
            needsClassRef = true;
            staticNodes.push(buildPrivateStaticFieldInitSpec(prop, privateNamesMap));
            break;
          case isStatic && isPublic && isField && setPublicClassFields:
            if (!isNameOrLength(prop.node)) {
              needsClassRef = true;
              staticNodes.push(buildPublicFieldInitLoose(cloneNode$j(ref), prop));
              break;
            }
          case isStatic && isPublic && isField && !setPublicClassFields:
            needsClassRef = true;
            staticNodes.push(buildPublicFieldInitSpec(cloneNode$j(ref), prop, state));
            break;
          case isInstance && isPrivate && isField && privateFieldsAsProperties:
            instanceNodes.push(buildPrivateFieldInitLoose(thisExpression$4(), prop, privateNamesMap));
            break;
          case isInstance && isPrivate && isField && !privateFieldsAsProperties:
            instanceNodes.push(buildPrivateInstanceFieldInitSpec(thisExpression$4(), prop, privateNamesMap, state));
            break;
          case isInstance && isPrivate && isMethod && privateFieldsAsProperties:
            instanceNodes.unshift(buildPrivateMethodInitLoose(thisExpression$4(), prop, privateNamesMap));
            pureStaticNodes.push(buildPrivateMethodDeclaration(prop, privateNamesMap, privateFieldsAsProperties));
            break;
          case isInstance && isPrivate && isMethod && !privateFieldsAsProperties:
            instanceNodes.unshift(buildPrivateInstanceMethodInitSpec(thisExpression$4(), prop, privateNamesMap, state));
            pureStaticNodes.push(buildPrivateMethodDeclaration(prop, privateNamesMap, privateFieldsAsProperties));
            break;
          case isStatic && isPrivate && isMethod && !privateFieldsAsProperties:
            needsClassRef = true;
            staticNodes.unshift(buildPrivateStaticFieldInitSpec(prop, privateNamesMap));
            pureStaticNodes.push(buildPrivateMethodDeclaration(prop, privateNamesMap, privateFieldsAsProperties));
            break;
          case isStatic && isPrivate && isMethod && privateFieldsAsProperties:
            needsClassRef = true;
            staticNodes.unshift(buildPrivateStaticMethodInitLoose(cloneNode$j(ref), prop, state, privateNamesMap));
            pureStaticNodes.push(buildPrivateMethodDeclaration(prop, privateNamesMap, privateFieldsAsProperties));
            break;
          case isInstance && isPublic && isField && setPublicClassFields:
            instanceNodes.push(buildPublicFieldInitLoose(thisExpression$4(), prop));
            break;
          case isInstance && isPublic && isField && !setPublicClassFields:
            instanceNodes.push(buildPublicFieldInitSpec(thisExpression$4(), prop, state));
            break;
          default:
            throw new Error("Unreachable.");
        }
      }
      return {
        staticNodes: staticNodes.filter(Boolean),
        instanceNodes: instanceNodes.filter(Boolean),
        pureStaticNodes: pureStaticNodes.filter(Boolean),
        wrapClass: function wrapClass(path) {
          for (var _iterator5 = _createForOfIteratorHelperLoose(props), _step5; !(_step5 = _iterator5()).done;) {
            var prop = _step5.value;
            prop.node.leadingComments = null;
            prop.remove();
          }
          if (injectSuperRef) {
            path.scope.push({
              id: cloneNode$j(injectSuperRef)
            });
            path.set("superClass", assignmentExpression$d("=", injectSuperRef, path.node.superClass));
          }
          if (!needsClassRef) return path;
          if (path.isClassExpression()) {
            path.scope.push({
              id: ref
            });
            path.replaceWith(assignmentExpression$d("=", cloneNode$j(ref), path.node));
          } else if (!path.node.id) {
            path.node.id = ref;
          }
          return path;
        }
      };
    }
  
    var _templateObject$o, _templateObject2$a, _templateObject3$9, _templateObject4$4;
    function hasOwnDecorators(node) {
      return !!(node.decorators && node.decorators.length);
    }
    function hasDecorators(node) {
      return hasOwnDecorators(node) || node.body.body.some(hasOwnDecorators);
    }
    function prop(key, value) {
      if (!value) return null;
      return objectProperty$1(identifier$i(key), value);
    }
    function method(key, body) {
      return objectMethod("method", identifier$i(key), [], blockStatement$6(body));
    }
    function takeDecorators(node) {
      var result;
      if (node.decorators && node.decorators.length > 0) {
        result = arrayExpression$1(node.decorators.map(function (decorator) {
          return decorator.expression;
        }));
      }
      node.decorators = undefined;
      return result;
    }
    function getKey(node) {
      if (node.computed) {
        return node.key;
      } else if (isIdentifier$j(node.key)) {
        return stringLiteral$8(node.key.name);
      } else {
        return stringLiteral$8(String(node.key.value));
      }
    }
    function extractElementDescriptor(file, classRef, superRef, path) {
      var isMethod = path.isClassMethod();
      if (path.isPrivate()) {
        throw path.buildCodeFrameError("Private " + (isMethod ? "methods" : "fields") + " in decorated classes are not supported yet.");
      }
      if (path.node.type === "ClassAccessorProperty") {
        throw path.buildCodeFrameError("Accessor properties are not supported in 2018-09 decorator transform, please specify { \"version\": \"2021-12\" } instead.");
      }
      if (path.node.type === "StaticBlock") {
        throw path.buildCodeFrameError("Static blocks are not supported in 2018-09 decorator transform, please specify { \"version\": \"2021-12\" } instead.");
      }
      var _ref = path,
        node = _ref.node,
        scope = _ref.scope;
      if (!path.isTSDeclareMethod()) {
        new ReplaceSupers({
          methodPath: path,
          objectRef: classRef,
          superRef: superRef,
          file: file,
          refToPreserve: classRef
        }).replace();
      }
      var properties = [prop("kind", stringLiteral$8(isClassMethod(node) ? node.kind : "field")), prop("decorators", takeDecorators(node)), prop("static", node["static"] && booleanLiteral$4(true)), prop("key", getKey(node))].filter(Boolean);
      if (isClassMethod(node)) {
        var id = node.computed ? null : node.key;
        var transformed = toExpression$1(node);
        properties.push(prop("value", nameFunction({
          node: transformed,
          id: id,
          scope: scope
        }) || transformed));
      } else if (isClassProperty(node) && node.value) {
        properties.push(method("value", template$2.statements.ast(_templateObject$o || (_templateObject$o = _taggedTemplateLiteralLoose(["return ", ""])), node.value)));
      } else {
        properties.push(prop("value", scope.buildUndefinedNode()));
      }
      path.remove();
      return objectExpression$3(properties);
    }
    function addDecorateHelper(file) {
      return file.addHelper("decorate");
    }
    function buildDecoratedClass(ref, path, elements, file) {
      var node = path.node,
        scope = path.scope;
      var initializeId = scope.generateUidIdentifier("initialize");
      var isDeclaration = node.id && path.isDeclaration();
      var isStrict = path.isInStrictMode();
      var superClass = node.superClass;
      node.type = "ClassDeclaration";
      if (!node.id) node.id = cloneNode$j(ref);
      var superId;
      if (superClass) {
        superId = scope.generateUidIdentifierBasedOnNode(node.superClass, "super");
        node.superClass = superId;
      }
      var classDecorators = takeDecorators(node);
      var definitions = arrayExpression$1(elements.filter(function (element) {
        return !element.node["abstract"] && element.node.type !== "TSIndexSignature";
      }).map(function (path) {
        return extractElementDescriptor(file, node.id, superId, path);
      }));
      var wrapperCall = template$2.expression.ast(_templateObject2$a || (_templateObject2$a = _taggedTemplateLiteralLoose(["\n    ", "(\n      ", ",\n      function (", ", ", ") {\n        ", "\n        return { F: ", ", d: ", " };\n      },\n      ", "\n    )\n  "])), addDecorateHelper(file), classDecorators || nullLiteral$2(), initializeId, superClass ? cloneNode$j(superId) : null, node, cloneNode$j(node.id), definitions, superClass);
      if (!isStrict) {
        wrapperCall.arguments[1].body.directives.push(directive$1(directiveLiteral$1("use strict")));
      }
      var replacement = wrapperCall;
      var classPathDesc = "arguments.1.body.body.0";
      if (isDeclaration) {
        replacement = template$2.statement.ast(_templateObject3$9 || (_templateObject3$9 = _taggedTemplateLiteralLoose(["let ", " = ", ""])), ref, wrapperCall);
        classPathDesc = "declarations.0.init." + classPathDesc;
      }
      return {
        instanceNodes: [template$2.statement.ast(_templateObject4$4 || (_templateObject4$4 = _taggedTemplateLiteralLoose(["", "(this)"])), cloneNode$j(initializeId))],
        wrapClass: function wrapClass(path) {
          path.replaceWith(replacement);
          return path.get(classPathDesc);
        }
      };
    }
  
    var _templateObject$n;
    var findBareSupers = traverse.visitors.merge([{
      Super: function Super(path) {
        var node = path.node,
          parentPath = path.parentPath;
        if (parentPath.isCallExpression({
          callee: node
        })) {
          this.push(parentPath);
        }
      }
    }, visitor$5]);
    var referenceVisitor = {
      "TSTypeAnnotation|TypeAnnotation": function TSTypeAnnotationTypeAnnotation(path) {
        path.skip();
      },
      ReferencedIdentifier: function ReferencedIdentifier(path, _ref) {
        var scope = _ref.scope;
        if (scope.hasOwnBinding(path.node.name)) {
          scope.rename(path.node.name);
          path.skip();
        }
      }
    };
    function handleClassTDZ(path, state) {
      if (state.classBinding && state.classBinding === path.scope.getBinding(path.node.name)) {
        var classNameTDZError = state.file.addHelper("classNameTDZError");
        var throwNode = callExpression$e(classNameTDZError, [stringLiteral$8(path.node.name)]);
        path.replaceWith(sequenceExpression$7([throwNode, path.node]));
        path.skip();
      }
    }
    var classFieldDefinitionEvaluationTDZVisitor = {
      ReferencedIdentifier: handleClassTDZ
    };
    function injectInitialization(path, constructor, nodes, renamer) {
      if (!nodes.length) return;
      var isDerived = !!path.node.superClass;
      if (!constructor) {
        var newConstructor = classMethod("constructor", identifier$i("constructor"), [], blockStatement$6([]));
        if (isDerived) {
          newConstructor.params = [restElement$2(identifier$i("args"))];
          newConstructor.body.body.push(template$2.statement.ast(_templateObject$n || (_templateObject$n = _taggedTemplateLiteralLoose(["super(...args)"]))));
        }
        var _ref2 = path.get("body").unshiftContainer("body", newConstructor);
        var _ref3 = _slicedToArray(_ref2, 1);
        constructor = _ref3[0];
      }
      if (renamer) {
        renamer(referenceVisitor, {
          scope: constructor.scope
        });
      }
      if (isDerived) {
        var bareSupers = [];
        constructor.traverse(findBareSupers, bareSupers);
        var isFirst = true;
        for (var _i = 0, _bareSupers = bareSupers; _i < _bareSupers.length; _i++) {
          var bareSuper = _bareSupers[_i];
          if (isFirst) {
            bareSuper.insertAfter(nodes);
            isFirst = false;
          } else {
            bareSuper.insertAfter(nodes.map(function (n) {
              return cloneNode$j(n);
            }));
          }
        }
      } else {
        constructor.get("body").unshiftContainer("body", nodes);
      }
    }
    function extractComputedKeys(path, computedPaths, file) {
      var declarations = [];
      var state = {
        classBinding: path.node.id && path.scope.getBinding(path.node.id.name),
        file: file
      };
      for (var _iterator = _createForOfIteratorHelperLoose(computedPaths), _step; !(_step = _iterator()).done;) {
        var computedPath = _step.value;
        var computedKey = computedPath.get("key");
        if (computedKey.isReferencedIdentifier()) {
          handleClassTDZ(computedKey, state);
        } else {
          computedKey.traverse(classFieldDefinitionEvaluationTDZVisitor, state);
        }
        var computedNode = computedPath.node;
        if (!computedKey.isConstantExpression()) {
          var ident = path.scope.generateUidIdentifierBasedOnNode(computedNode.key);
          path.scope.push({
            id: ident,
            kind: "let"
          });
          declarations.push(expressionStatement$a(assignmentExpression$d("=", cloneNode$j(ident), computedNode.key)));
          computedNode.key = cloneNode$j(ident);
        }
      }
      return declarations;
    }
  
    var FEATURES$1 = Object.freeze({
      fields: 1 << 1,
      privateMethods: 1 << 2,
      decorators: 1 << 3,
      privateIn: 1 << 4,
      staticBlocks: 1 << 5
    });
    var featuresSameLoose = new Map([[FEATURES$1.fields, "@babel/plugin-proposal-class-properties"], [FEATURES$1.privateMethods, "@babel/plugin-proposal-private-methods"], [FEATURES$1.privateIn, "@babel/plugin-proposal-private-property-in-object"]]);
    var featuresKey$1 = "@babel/plugin-class-features/featuresKey";
    var looseKey = "@babel/plugin-class-features/looseKey";
    var looseLowPriorityKey = "@babel/plugin-class-features/looseLowPriorityKey/#__internal__@babel/preset-env__please-overwrite-loose-instead-of-throwing";
    function enableFeature$1(file, feature, loose) {
      if (!hasFeature$1(file, feature) || canIgnoreLoose(file, feature)) {
        file.set(featuresKey$1, file.get(featuresKey$1) | feature);
        if (loose === "#__internal__@babel/preset-env__prefer-true-but-false-is-ok-if-it-prevents-an-error") {
          setLoose(file, feature, true);
          file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) | feature);
        } else if (loose === "#__internal__@babel/preset-env__prefer-false-but-true-is-ok-if-it-prevents-an-error") {
          setLoose(file, feature, false);
          file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) | feature);
        } else {
          setLoose(file, feature, loose);
        }
      }
      var resolvedLoose;
      var higherPriorityPluginName;
      for (var _iterator = _createForOfIteratorHelperLoose(featuresSameLoose), _step; !(_step = _iterator()).done;) {
        var _step$value = _slicedToArray(_step.value, 2),
          _mask = _step$value[0],
          _name = _step$value[1];
        if (!hasFeature$1(file, _mask)) continue;
        var _loose = isLoose(file, _mask);
        if (canIgnoreLoose(file, _mask)) {
          continue;
        } else if (resolvedLoose === !_loose) {
          throw new Error("'loose' mode configuration must be the same for @babel/plugin-proposal-class-properties, " + "@babel/plugin-proposal-private-methods and " + "@babel/plugin-proposal-private-property-in-object (when they are enabled).");
        } else {
          resolvedLoose = _loose;
          higherPriorityPluginName = _name;
        }
      }
      if (resolvedLoose !== undefined) {
        for (var _iterator2 = _createForOfIteratorHelperLoose(featuresSameLoose), _step2; !(_step2 = _iterator2()).done;) {
          var _step2$value = _slicedToArray(_step2.value, 2),
            mask = _step2$value[0],
            name = _step2$value[1];
          if (hasFeature$1(file, mask) && isLoose(file, mask) !== resolvedLoose) {
            setLoose(file, mask, resolvedLoose);
            console.warn("Though the \"loose\" option was set to \"" + !resolvedLoose + "\" in your @babel/preset-env " + ("config, it will not be used for " + name + " since the \"loose\" mode option was set to ") + ("\"" + resolvedLoose + "\" for " + higherPriorityPluginName + ".\nThe \"loose\" option must be the ") + "same for @babel/plugin-proposal-class-properties, @babel/plugin-proposal-private-methods " + "and @babel/plugin-proposal-private-property-in-object (when they are enabled): you can " + "silence this warning by explicitly adding\n" + ("\t[\"" + name + "\", { \"loose\": " + resolvedLoose + " }]\n") + "to the \"plugins\" section of your Babel config.");
          }
        }
      }
    }
    function hasFeature$1(file, feature) {
      return !!(file.get(featuresKey$1) & feature);
    }
    function isLoose(file, feature) {
      return !!(file.get(looseKey) & feature);
    }
    function setLoose(file, feature, loose) {
      if (loose) file.set(looseKey, file.get(looseKey) | feature);else file.set(looseKey, file.get(looseKey) & ~feature);
      file.set(looseLowPriorityKey, file.get(looseLowPriorityKey) & ~feature);
    }
    function canIgnoreLoose(file, feature) {
      return !!(file.get(looseLowPriorityKey) & feature);
    }
    function shouldTransform$2(path, file) {
      var decoratorPath = null;
      var publicFieldPath = null;
      var privateFieldPath = null;
      var privateMethodPath = null;
      var staticBlockPath = null;
      if (hasOwnDecorators(path.node)) {
        decoratorPath = path.get("decorators.0");
      }
      for (var _iterator3 = _createForOfIteratorHelperLoose(path.get("body.body")), _step3; !(_step3 = _iterator3()).done;) {
        var el = _step3.value;
        if (!decoratorPath && hasOwnDecorators(el.node)) {
          decoratorPath = el.get("decorators.0");
        }
        if (!publicFieldPath && el.isClassProperty()) {
          publicFieldPath = el;
        }
        if (!privateFieldPath && el.isClassPrivateProperty()) {
          privateFieldPath = el;
        }
        if (!privateMethodPath && el.isClassPrivateMethod != null && el.isClassPrivateMethod()) {
          privateMethodPath = el;
        }
        if (!staticBlockPath && el.isStaticBlock != null && el.isStaticBlock()) {
          staticBlockPath = el;
        }
      }
      if (decoratorPath && privateFieldPath) {
        throw privateFieldPath.buildCodeFrameError("Private fields in decorated classes are not supported yet.");
      }
      if (decoratorPath && privateMethodPath) {
        throw privateMethodPath.buildCodeFrameError("Private methods in decorated classes are not supported yet.");
      }
      if (decoratorPath && !hasFeature$1(file, FEATURES$1.decorators)) {
        throw path.buildCodeFrameError("Decorators are not enabled." + "\nIf you are using " + '["@babel/plugin-proposal-decorators", { "version": "legacy" }], ' + 'make sure it comes *before* "@babel/plugin-proposal-class-properties" ' + "and enable loose mode, like so:\n" + '\t["@babel/plugin-proposal-decorators", { "version": "legacy" }]\n' + '\t["@babel/plugin-proposal-class-properties", { "loose": true }]');
      }
      if (privateMethodPath && !hasFeature$1(file, FEATURES$1.privateMethods)) {
        throw privateMethodPath.buildCodeFrameError("Class private methods are not enabled. " + "Please add `@babel/plugin-proposal-private-methods` to your configuration.");
      }
      if ((publicFieldPath || privateFieldPath) && !hasFeature$1(file, FEATURES$1.fields) && !hasFeature$1(file, FEATURES$1.privateMethods)) {
        throw path.buildCodeFrameError("Class fields are not enabled. " + "Please add `@babel/plugin-proposal-class-properties` to your configuration.");
      }
      if (staticBlockPath && !hasFeature$1(file, FEATURES$1.staticBlocks)) {
        throw path.buildCodeFrameError("Static class blocks are not enabled. " + "Please add `@babel/plugin-proposal-class-static-block` to your configuration.");
      }
      if (decoratorPath || privateMethodPath || staticBlockPath) {
        return true;
      }
      if ((publicFieldPath || privateFieldPath) && hasFeature$1(file, FEATURES$1.fields)) {
        return true;
      }
      return false;
    }
  
    var versionKey$1 = "@babel/plugin-class-features/version";
    function createClassFeaturePlugin(_ref) {
      var name = _ref.name,
        feature = _ref.feature,
        loose = _ref.loose,
        manipulateOptions = _ref.manipulateOptions,
        api = _ref.api,
        inherits = _ref.inherits;
      {
        var _api;
        (_api = api) != null ? _api : api = {
          assumption: function assumption() {
            return void 0;
          }
        };
      }
      var setPublicClassFields = api.assumption("setPublicClassFields");
      var privateFieldsAsSymbols = api.assumption("privateFieldsAsSymbols");
      var privateFieldsAsProperties = api.assumption("privateFieldsAsProperties");
      var constantSuper = api.assumption("constantSuper");
      var noDocumentAll = api.assumption("noDocumentAll");
      if (privateFieldsAsProperties && privateFieldsAsSymbols) {
        throw new Error("Cannot enable both the \"privateFieldsAsProperties\" and " + "\"privateFieldsAsSymbols\" assumptions as the same time.");
      }
      var privateFieldsAsSymbolsOrProperties = privateFieldsAsProperties || privateFieldsAsSymbols;
      if (loose === true) {
        var explicit = [];
        if (setPublicClassFields !== undefined) {
          explicit.push("\"setPublicClassFields\"");
        }
        if (privateFieldsAsProperties !== undefined) {
          explicit.push("\"privateFieldsAsProperties\"");
        }
        if (privateFieldsAsSymbols !== undefined) {
          explicit.push("\"privateFieldsAsSymbols\"");
        }
        if (explicit.length !== 0) {
          console.warn("[" + name + "]: You are using the \"loose: true\" option and you are" + (" explicitly setting a value for the " + explicit.join(" and ")) + (" assumption" + (explicit.length > 1 ? "s" : "") + ". The \"loose\" option") + " can cause incompatibilities with the other class features" + " plugins, so it's recommended that you replace it with the" + " following top-level option:\n" + "\t\"assumptions\": {\n" + "\t\t\"setPublicClassFields\": true,\n" + "\t\t\"privateFieldsAsSymbols\": true\n" + "\t}");
        }
      }
      return {
        name: name,
        manipulateOptions: manipulateOptions,
        inherits: inherits,
        pre: function pre(file) {
          enableFeature$1(file, feature, loose);
          {
            if (typeof file.get(versionKey$1) === "number") {
              file.set(versionKey$1, "7.21.8");
              return;
            }
          }
          if (!file.get(versionKey$1) || semver$9.lt(file.get(versionKey$1), "7.21.8")) {
            file.set(versionKey$1, "7.21.8");
          }
        },
        visitor: {
          Class: function (_Class) {
            function Class(_x, _x2) {
              return _Class.apply(this, arguments);
            }
            Class.toString = function () {
              return _Class.toString();
            };
            return Class;
          }(function (path, _ref2) {
            var file = _ref2.file;
            if (file.get(versionKey$1) !== "7.21.8") return;
            if (!shouldTransform$2(path, file)) return;
            if (path.isClassDeclaration()) assertFieldTransformed(path);
            var loose = isLoose(file, feature);
            var constructor;
            var isDecorated = hasDecorators(path.node);
            var props = [];
            var elements = [];
            var computedPaths = [];
            var privateNames = new Set();
            var body = path.get("body");
            for (var _iterator = _createForOfIteratorHelperLoose(body.get("body")), _step; !(_step = _iterator()).done;) {
              var _path = _step.value;
              if ((_path.isClassProperty() || _path.isClassMethod()) && _path.node.computed) {
                computedPaths.push(_path);
              }
              if (_path.isPrivate()) {
                var _name = _path.node.key.id.name;
                var getName = "get " + _name;
                var setName = "set " + _name;
                if (_path.isClassPrivateMethod()) {
                  if (_path.node.kind === "get") {
                    if (privateNames.has(getName) || privateNames.has(_name) && !privateNames.has(setName)) {
                      throw _path.buildCodeFrameError("Duplicate private field");
                    }
                    privateNames.add(getName).add(_name);
                  } else if (_path.node.kind === "set") {
                    if (privateNames.has(setName) || privateNames.has(_name) && !privateNames.has(getName)) {
                      throw _path.buildCodeFrameError("Duplicate private field");
                    }
                    privateNames.add(setName).add(_name);
                  }
                } else {
                  if (privateNames.has(_name) && !privateNames.has(getName) && !privateNames.has(setName) || privateNames.has(_name) && (privateNames.has(getName) || privateNames.has(setName))) {
                    throw _path.buildCodeFrameError("Duplicate private field");
                  }
                  privateNames.add(_name);
                }
              }
              if (_path.isClassMethod({
                kind: "constructor"
              })) {
                constructor = _path;
              } else {
                elements.push(_path);
                if (_path.isProperty() || _path.isPrivate() || _path.isStaticBlock != null && _path.isStaticBlock()) {
                  props.push(_path);
                }
              }
            }
            {
              if (!props.length && !isDecorated) return;
            }
            var innerBinding = path.node.id;
            var ref;
            if (!innerBinding || path.isClassExpression()) {
              nameFunction(path);
              ref = path.scope.generateUidIdentifier("class");
            } else {
              ref = cloneNode$j(path.node.id);
            }
            var privateNamesMap = buildPrivateNamesMap(props);
            var privateNamesNodes = buildPrivateNamesNodes(privateNamesMap, privateFieldsAsProperties != null ? privateFieldsAsProperties : loose, privateFieldsAsSymbols != null ? privateFieldsAsSymbols : false, file);
            transformPrivateNamesUsage(ref, path, privateNamesMap, {
              privateFieldsAsProperties: privateFieldsAsSymbolsOrProperties != null ? privateFieldsAsSymbolsOrProperties : loose,
              noDocumentAll: noDocumentAll,
              innerBinding: innerBinding
            }, file);
            var keysNodes, staticNodes, instanceNodes, pureStaticNodes, wrapClass;
            {
              if (isDecorated) {
                staticNodes = pureStaticNodes = keysNodes = [];
                var _buildDecoratedClass = buildDecoratedClass(ref, path, elements, file);
                instanceNodes = _buildDecoratedClass.instanceNodes;
                wrapClass = _buildDecoratedClass.wrapClass;
              } else {
                keysNodes = extractComputedKeys(path, computedPaths, file);
                var _buildFieldsInitNodes = buildFieldsInitNodes(ref, path.node.superClass, props, privateNamesMap, file, setPublicClassFields != null ? setPublicClassFields : loose, privateFieldsAsSymbolsOrProperties != null ? privateFieldsAsSymbolsOrProperties : loose, constantSuper != null ? constantSuper : loose, innerBinding);
                staticNodes = _buildFieldsInitNodes.staticNodes;
                pureStaticNodes = _buildFieldsInitNodes.pureStaticNodes;
                instanceNodes = _buildFieldsInitNodes.instanceNodes;
                wrapClass = _buildFieldsInitNodes.wrapClass;
              }
            }
            if (instanceNodes.length > 0) {
              injectInitialization(path, constructor, instanceNodes, function (referenceVisitor, state) {
                {
                  if (isDecorated) return;
                }
                for (var _iterator2 = _createForOfIteratorHelperLoose(props), _step2; !(_step2 = _iterator2()).done;) {
                  var prop = _step2.value;
                  if (isStaticBlock != null && isStaticBlock(prop.node) || prop.node["static"]) continue;
                  prop.traverse(referenceVisitor, state);
                }
              });
            }
            var wrappedPath = wrapClass(path);
            wrappedPath.insertBefore([].concat(_toConsumableArray(privateNamesNodes), _toConsumableArray(keysNodes)));
            if (staticNodes.length > 0) {
              wrappedPath.insertAfter(staticNodes);
            }
            if (pureStaticNodes.length > 0) {
              wrappedPath.find(function (parent) {
                return parent.isStatement() || parent.isDeclaration();
              }).insertAfter(pureStaticNodes);
            }
          }),
          ExportDefaultDeclaration: function ExportDefaultDeclaration(path, _ref3) {
            var file = _ref3.file;
            {
              if (file.get(versionKey$1) !== "7.21.8") return;
              var decl = path.get("declaration");
              if (decl.isClassDeclaration() && hasDecorators(decl.node)) {
                if (decl.node.id) {
                  splitExportDeclaration(path);
                } else {
                  decl.node.type = "ClassExpression";
                }
              }
            }
          }
        }
      };
    }
  
    var proposalClassProperties = declare(function (api, options) {
      api.assertVersion(7);
      return createClassFeaturePlugin({
        name: "proposal-class-properties",
        api: api,
        feature: FEATURES$1.fields,
        loose: options.loose,
        manipulateOptions: function manipulateOptions(opts, parserOpts) {
          parserOpts.plugins.push("classProperties", "classPrivateProperties");
        }
      });
    });
  
    var _templateObject$m;
    function generateUid(scope, denyList) {
      var name = "";
      var uid;
      var i = 1;
      do {
        uid = scope._generateUid(name, i);
        i++;
      } while (denyList.has(uid));
      return uid;
    }
    var proposalClassStaticBlock = declare(function (_ref) {
      var t = _ref.types,
        template = _ref.template,
        assertVersion = _ref.assertVersion;
      assertVersion("^7.12.0");
      return {
        name: "proposal-class-static-block",
        inherits: syntaxClassStaticBlock["default"],
        pre: function pre() {
          enableFeature$1(this.file, FEATURES$1.staticBlocks, false);
        },
        visitor: {
          ClassBody: function ClassBody(classBody) {
            var scope = classBody.scope;
            var privateNames = new Set();
            var body = classBody.get("body");
            for (var _iterator = _createForOfIteratorHelperLoose(body), _step; !(_step = _iterator()).done;) {
              var path = _step.value;
              if (path.isPrivate()) {
                privateNames.add(path.get("key.id").node.name);
              }
            }
            for (var _iterator2 = _createForOfIteratorHelperLoose(body), _step2; !(_step2 = _iterator2()).done;) {
              var _path = _step2.value;
              if (!_path.isStaticBlock()) continue;
              var staticBlockPrivateId = generateUid(scope, privateNames);
              privateNames.add(staticBlockPrivateId);
              var staticBlockRef = t.privateName(t.identifier(staticBlockPrivateId));
              var replacement = void 0;
              var blockBody = _path.node.body;
              if (blockBody.length === 1 && t.isExpressionStatement(blockBody[0])) {
                replacement = t.inheritsComments(blockBody[0].expression, blockBody[0]);
              } else {
                replacement = template.expression.ast(_templateObject$m || (_templateObject$m = _taggedTemplateLiteralLoose(["(() => { ", " })()"])), blockBody);
              }
              _path.replaceWith(t.classPrivateProperty(staticBlockRef, replacement, [], true));
            }
          }
        }
      };
    });
  
    var buildClassDecorator = template$2.statement("\n  DECORATOR(CLASS_REF = INNER) || CLASS_REF;\n");
    var buildClassPrototype = template$2("\n  CLASS_REF.prototype;\n");
    var buildGetDescriptor = template$2("\n    Object.getOwnPropertyDescriptor(TARGET, PROPERTY);\n");
    var buildGetObjectInitializer = template$2("\n    (TEMP = Object.getOwnPropertyDescriptor(TARGET, PROPERTY), (TEMP = TEMP ? TEMP.value : undefined), {\n        enumerable: true,\n        configurable: true,\n        writable: true,\n        initializer: function(){\n            return TEMP;\n        }\n    })\n");
    var WARNING_CALLS = new WeakSet();
    function applyEnsureOrdering(path) {
      var decorators = (path.isClass() ? [path].concat(_toConsumableArray(path.get("body.body"))) : path.get("properties")).reduce(function (acc, prop) {
        return acc.concat(prop.node.decorators || []);
      }, []);
      var identDecorators = decorators.filter(function (decorator) {
        return !isIdentifier$j(decorator.expression);
      });
      if (identDecorators.length === 0) return;
      return sequenceExpression$7(identDecorators.map(function (decorator) {
        var expression = decorator.expression;
        var id = decorator.expression = path.scope.generateDeclaredUidIdentifier("dec");
        return assignmentExpression$d("=", id, expression);
      }).concat([path.node]));
    }
    function applyClassDecorators(classPath) {
      if (!hasClassDecorators(classPath.node)) return;
      var decorators = classPath.node.decorators || [];
      classPath.node.decorators = null;
      var name = classPath.scope.generateDeclaredUidIdentifier("class");
      return decorators.map(function (dec) {
        return dec.expression;
      }).reverse().reduce(function (acc, decorator) {
        return buildClassDecorator({
          CLASS_REF: cloneNode$j(name),
          DECORATOR: cloneNode$j(decorator),
          INNER: acc
        }).expression;
      }, classPath.node);
    }
    function hasClassDecorators(classNode) {
      return !!(classNode.decorators && classNode.decorators.length);
    }
    function applyMethodDecorators(path, state) {
      if (!hasMethodDecorators(path.node.body.body)) return;
      return applyTargetDecorators(path, state, path.node.body.body);
    }
    function hasMethodDecorators(body) {
      return body.some(function (node) {
        var _node$decorators;
        return (_node$decorators = node.decorators) == null ? void 0 : _node$decorators.length;
      });
    }
    function applyObjectDecorators(path, state) {
      if (!hasMethodDecorators(path.node.properties)) return;
      return applyTargetDecorators(path, state, path.node.properties.filter(function (prop) {
        return prop.type !== "SpreadElement";
      }));
    }
    function applyTargetDecorators(path, state, decoratedProps) {
      var name = path.scope.generateDeclaredUidIdentifier(path.isClass() ? "class" : "obj");
      var exprs = decoratedProps.reduce(function (acc, node) {
        var decorators = [];
        if (node.decorators != null) {
          decorators = node.decorators;
          node.decorators = null;
        }
        if (decorators.length === 0) return acc;
        if (node.computed) {
          throw path.buildCodeFrameError("Computed method/property decorators are not yet supported.");
        }
        var property = isLiteral$6(node.key) ? node.key : stringLiteral$8(node.key.name);
        var target = path.isClass() && !node["static"] ? buildClassPrototype({
          CLASS_REF: name
        }).expression : name;
        if (isClassProperty(node, {
          "static": false
        })) {
          var descriptor = path.scope.generateDeclaredUidIdentifier("descriptor");
          var initializer = node.value ? functionExpression$2(null, [], blockStatement$6([returnStatement$3(node.value)])) : nullLiteral$2();
          node.value = callExpression$e(state.addHelper("initializerWarningHelper"), [descriptor, thisExpression$4()]);
          WARNING_CALLS.add(node.value);
          acc.push(assignmentExpression$d("=", cloneNode$j(descriptor), callExpression$e(state.addHelper("applyDecoratedDescriptor"), [cloneNode$j(target), cloneNode$j(property), arrayExpression$1(decorators.map(function (dec) {
            return cloneNode$j(dec.expression);
          })), objectExpression$3([objectProperty$1(identifier$i("configurable"), booleanLiteral$4(true)), objectProperty$1(identifier$i("enumerable"), booleanLiteral$4(true)), objectProperty$1(identifier$i("writable"), booleanLiteral$4(true)), objectProperty$1(identifier$i("initializer"), initializer)])])));
        } else {
          acc.push(callExpression$e(state.addHelper("applyDecoratedDescriptor"), [cloneNode$j(target), cloneNode$j(property), arrayExpression$1(decorators.map(function (dec) {
            return cloneNode$j(dec.expression);
          })), isObjectProperty$5(node) || isClassProperty(node, {
            "static": true
          }) ? buildGetObjectInitializer({
            TEMP: path.scope.generateDeclaredUidIdentifier("init"),
            TARGET: cloneNode$j(target),
            PROPERTY: cloneNode$j(property)
          }).expression : buildGetDescriptor({
            TARGET: cloneNode$j(target),
            PROPERTY: cloneNode$j(property)
          }).expression, cloneNode$j(target)]));
        }
        return acc;
      }, []);
      return sequenceExpression$7([assignmentExpression$d("=", cloneNode$j(name), path.node), sequenceExpression$7(exprs), cloneNode$j(name)]);
    }
    function decoratedClassToExpression(_ref) {
      var node = _ref.node,
        scope = _ref.scope;
      if (!hasClassDecorators(node) && !hasMethodDecorators(node.body.body)) {
        return;
      }
      var ref = node.id ? cloneNode$j(node.id) : scope.generateUidIdentifier("class");
      return variableDeclaration$8("let", [variableDeclarator$8(ref, toExpression$1(node))]);
    }
    var visitor$1 = {
      ExportDefaultDeclaration: function ExportDefaultDeclaration(path) {
        var decl = path.get("declaration");
        if (!decl.isClassDeclaration()) return;
        var replacement = decoratedClassToExpression(decl);
        if (replacement) {
          var _path$replaceWithMult = path.replaceWithMultiple([replacement, exportNamedDeclaration$2(null, [exportSpecifier$2(cloneNode$j(replacement.declarations[0].id), identifier$i("default"))])]),
            _path$replaceWithMult2 = _slicedToArray(_path$replaceWithMult, 1),
            varDeclPath = _path$replaceWithMult2[0];
          if (!decl.node.id) {
            path.scope.registerDeclaration(varDeclPath);
          }
        }
      },
      ClassDeclaration: function ClassDeclaration(path) {
        var replacement = decoratedClassToExpression(path);
        if (replacement) {
          var _path$replaceWith = path.replaceWith(replacement),
            _path$replaceWith2 = _slicedToArray(_path$replaceWith, 1),
            newPath = _path$replaceWith2[0];
          var decl = newPath.get("declarations.0");
          var id = decl.node.id;
          var binding = path.scope.getOwnBinding(id.name);
          binding.identifier = id;
          binding.path = decl;
        }
      },
      ClassExpression: function ClassExpression(path, state) {
        var decoratedClass = applyEnsureOrdering(path) || applyClassDecorators(path) || applyMethodDecorators(path, state);
        if (decoratedClass) path.replaceWith(decoratedClass);
      },
      ObjectExpression: function ObjectExpression(path, state) {
        var decoratedObject = applyEnsureOrdering(path) || applyObjectDecorators(path, state);
        if (decoratedObject) path.replaceWith(decoratedObject);
      },
      AssignmentExpression: function AssignmentExpression(path, state) {
        if (!WARNING_CALLS.has(path.node.right)) return;
        path.replaceWith(callExpression$e(state.addHelper("initializerDefineProperty"), [cloneNode$j(path.get("left.object").node), stringLiteral$8(path.get("left.property").node.name || path.get("left.property").node.value), cloneNode$j(path.get("right.arguments")[0].node), cloneNode$j(path.get("right.arguments")[1].node)]));
      },
      CallExpression: function CallExpression(path, state) {
        if (path.node.arguments.length !== 3) return;
        if (!WARNING_CALLS.has(path.node.arguments[2])) return;
        if (path.node.callee.name !== state.addHelper("defineProperty").name) {
          return;
        }
        path.replaceWith(callExpression$e(state.addHelper("initializerDefineProperty"), [cloneNode$j(path.get("arguments")[0].node), cloneNode$j(path.get("arguments")[1].node), cloneNode$j(path.get("arguments.2.arguments")[0].node), cloneNode$j(path.get("arguments.2.arguments")[1].node)]));
      }
    };
  
    var _templateObject$l, _templateObject2$9, _templateObject3$8, _templateObject4$3, _templateObject5$2, _templateObject6$2;
    function incrementId(id, idx) {
      if (idx === void 0) {
        idx = id.length - 1;
      }
      if (idx === -1) {
        id.unshift(65);
        return;
      }
      var current = id[idx];
      if (current === 90) {
        id[idx] = 97;
      } else if (current === 122) {
        id[idx] = 65;
        incrementId(id, idx - 1);
      } else {
        id[idx] = current + 1;
      }
    }
    function createPrivateUidGeneratorForClass(classPath) {
      var currentPrivateId = [];
      var privateNames = new Set();
      classPath.traverse({
        PrivateName: function PrivateName(path) {
          privateNames.add(path.node.id.name);
        }
      });
      return function () {
        var reifiedId;
        do {
          incrementId(currentPrivateId);
          reifiedId = String.fromCharCode.apply(String, currentPrivateId);
        } while (privateNames.has(reifiedId));
        return privateName(identifier$i(reifiedId));
      };
    }
    function createLazyPrivateUidGeneratorForClass(classPath) {
      var generator;
      return function () {
        if (!generator) {
          generator = createPrivateUidGeneratorForClass(classPath);
        }
        return generator();
      };
    }
    function replaceClassWithVar(path) {
      if (path.type === "ClassDeclaration") {
        var varId = path.scope.generateUidIdentifierBasedOnNode(path.node.id);
        var classId = identifier$i(path.node.id.name);
        path.scope.rename(classId.name, varId.name);
        path.insertBefore(variableDeclaration$8("let", [variableDeclarator$8(varId)]));
        path.get("id").replaceWith(classId);
        return [cloneNode$j(varId), path];
      } else {
        var className;
        var _varId;
        if (path.node.id) {
          className = path.node.id.name;
          _varId = path.scope.parent.generateDeclaredUidIdentifier(className);
          path.scope.rename(className, _varId.name);
        } else if (path.parentPath.node.type === "VariableDeclarator" && path.parentPath.node.id.type === "Identifier") {
          className = path.parentPath.node.id.name;
          _varId = path.scope.parent.generateDeclaredUidIdentifier(className);
        } else {
          _varId = path.scope.parent.generateDeclaredUidIdentifier("decorated_class");
        }
        var newClassExpr = classExpression(className && identifier$i(className), path.node.superClass, path.node.body);
        var _path$replaceWith = path.replaceWith(sequenceExpression$7([newClassExpr, _varId])),
          _path$replaceWith2 = _slicedToArray(_path$replaceWith, 1),
          newPath = _path$replaceWith2[0];
        return [cloneNode$j(_varId), newPath.get("expressions.0")];
      }
    }
    function generateClassProperty(key, value, isStatic) {
      if (key.type === "PrivateName") {
        return classPrivateProperty(key, value, undefined, isStatic);
      } else {
        return classProperty(key, value, undefined, undefined, isStatic);
      }
    }
    function addProxyAccessorsFor(element, originalKey, targetKey, isComputed) {
      if (isComputed === void 0) {
        isComputed = false;
      }
      var isStatic = element.node["static"];
      var getterBody = blockStatement$6([returnStatement$3(memberExpression$c(thisExpression$4(), cloneNode$j(targetKey)))]);
      var setterBody = blockStatement$6([expressionStatement$a(assignmentExpression$d("=", memberExpression$c(thisExpression$4(), cloneNode$j(targetKey)), identifier$i("v")))]);
      var getter, setter;
      if (originalKey.type === "PrivateName") {
        getter = classPrivateMethod("get", cloneNode$j(originalKey), [], getterBody, isStatic);
        setter = classPrivateMethod("set", cloneNode$j(originalKey), [identifier$i("v")], setterBody, isStatic);
      } else {
        getter = classMethod("get", cloneNode$j(originalKey), [], getterBody, isComputed, isStatic);
        setter = classMethod("set", cloneNode$j(originalKey), [identifier$i("v")], setterBody, isComputed, isStatic);
      }
      element.insertAfter(setter);
      element.insertAfter(getter);
    }
    function extractProxyAccessorsFor(targetKey, version) {
      if (version !== "2023-01") {
        return [template$2.expression.ast(_templateObject$l || (_templateObject$l = _taggedTemplateLiteralLoose(["\n        function () {\n          return this.", ";\n        }\n      "])), cloneNode$j(targetKey)), template$2.expression.ast(_templateObject2$9 || (_templateObject2$9 = _taggedTemplateLiteralLoose(["\n        function (value) {\n          this.", " = value;\n        }\n      "])), cloneNode$j(targetKey))];
      }
      return [template$2.expression.ast(_templateObject3$8 || (_templateObject3$8 = _taggedTemplateLiteralLoose(["\n      o => o.", "\n    "])), cloneNode$j(targetKey)), template$2.expression.ast(_templateObject4$3 || (_templateObject4$3 = _taggedTemplateLiteralLoose(["\n      (o, v) => o.", " = v\n    "])), cloneNode$j(targetKey))];
    }
    var FIELD = 0;
    var ACCESSOR = 1;
    var METHOD = 2;
    var GETTER = 3;
    var SETTER = 4;
    var STATIC = 5;
    function getElementKind(element) {
      switch (element.node.type) {
        case "ClassProperty":
        case "ClassPrivateProperty":
          return FIELD;
        case "ClassAccessorProperty":
          return ACCESSOR;
        case "ClassMethod":
        case "ClassPrivateMethod":
          if (element.node.kind === "get") {
            return GETTER;
          } else if (element.node.kind === "set") {
            return SETTER;
          } else {
            return METHOD;
          }
      }
    }
    function isDecoratorInfo(info) {
      return "decorators" in info;
    }
    function filteredOrderedDecoratorInfo(info) {
      var filtered = info.filter(isDecoratorInfo);
      return [].concat(_toConsumableArray(filtered.filter(function (el) {
        return el.isStatic && el.kind >= ACCESSOR && el.kind <= SETTER;
      })), _toConsumableArray(filtered.filter(function (el) {
        return !el.isStatic && el.kind >= ACCESSOR && el.kind <= SETTER;
      })), _toConsumableArray(filtered.filter(function (el) {
        return el.isStatic && el.kind === FIELD;
      })), _toConsumableArray(filtered.filter(function (el) {
        return !el.isStatic && el.kind === FIELD;
      })));
    }
    function generateDecorationExprs(info) {
      return arrayExpression$1(filteredOrderedDecoratorInfo(info).map(function (el) {
        var decs = el.decorators.length > 1 ? arrayExpression$1(el.decorators) : el.decorators[0];
        var kind = el.isStatic ? el.kind + STATIC : el.kind;
        return arrayExpression$1([decs, numericLiteral$8(kind), el.name].concat(_toConsumableArray(el.privateMethods || [])));
      }));
    }
    function extractElementLocalAssignments(decorationInfo) {
      var localIds = [];
      for (var _iterator = _createForOfIteratorHelperLoose(filteredOrderedDecoratorInfo(decorationInfo)), _step; !(_step = _iterator()).done;) {
        var el = _step.value;
        var locals = el.locals;
        if (Array.isArray(locals)) {
          localIds.push.apply(localIds, _toConsumableArray(locals));
        } else if (locals !== undefined) {
          localIds.push(locals);
        }
      }
      return localIds;
    }
    function addCallAccessorsFor(element, key, getId, setId) {
      element.insertAfter(classPrivateMethod("get", cloneNode$j(key), [], blockStatement$6([returnStatement$3(callExpression$e(cloneNode$j(getId), [thisExpression$4()]))])));
      element.insertAfter(classPrivateMethod("set", cloneNode$j(key), [identifier$i("v")], blockStatement$6([expressionStatement$a(callExpression$e(cloneNode$j(setId), [thisExpression$4(), identifier$i("v")]))])));
    }
    function isNotTsParameter(node) {
      return node.type !== "TSParameterProperty";
    }
    function movePrivateAccessor(element, key, methodLocalVar, isStatic) {
      var params;
      var block;
      if (element.node.kind === "set") {
        params = [identifier$i("v")];
        block = [expressionStatement$a(callExpression$e(methodLocalVar, [thisExpression$4(), identifier$i("v")]))];
      } else {
        params = [];
        block = [returnStatement$3(callExpression$e(methodLocalVar, [thisExpression$4()]))];
      }
      element.replaceWith(classPrivateMethod(element.node.kind, cloneNode$j(key), params, blockStatement$6(block), isStatic));
    }
    function isClassDecoratableElementPath(path) {
      var type = path.type;
      return type !== "TSDeclareMethod" && type !== "TSIndexSignature" && type !== "StaticBlock";
    }
    function staticBlockToIIFE(block) {
      return callExpression$e(arrowFunctionExpression$4([], blockStatement$6(block.body)), []);
    }
    function maybeSequenceExpression(exprs) {
      if (exprs.length === 0) return unaryExpression$7("void", numericLiteral$8(0));
      if (exprs.length === 1) return exprs[0];
      return sequenceExpression$7(exprs);
    }
    function transformClass$1(path, state, constantSuper, version) {
      var body = path.get("body.body");
      var classDecorators = path.node.decorators;
      var hasElementDecorators = false;
      var generateClassPrivateUid = createLazyPrivateUidGeneratorForClass(path);
      for (var _iterator2 = _createForOfIteratorHelperLoose(body), _step2; !(_step2 = _iterator2()).done;) {
        var _element = _step2.value;
        if (!isClassDecoratableElementPath(_element)) {
          continue;
        }
        if (_element.node.decorators && _element.node.decorators.length > 0) {
          hasElementDecorators = true;
        } else if (_element.node.type === "ClassAccessorProperty") {
          var _element$node = _element.node,
            _key = _element$node.key,
            _value2 = _element$node.value,
            _isStatic = _element$node["static"],
            computed = _element$node.computed;
          var _newId = generateClassPrivateUid();
          var valueNode = _value2 ? cloneNode$j(_value2) : undefined;
          var _newField = generateClassProperty(_newId, valueNode, _isStatic);
          var _element$replaceWith3 = _element.replaceWith(_newField),
            _element$replaceWith4 = _slicedToArray(_element$replaceWith3, 1),
            _newPath = _element$replaceWith4[0];
          addProxyAccessorsFor(_newPath, _key, _newId, computed);
        }
      }
      if (!classDecorators && !hasElementDecorators) return;
      var elementDecoratorInfo = [];
      var firstFieldPath;
      var constructorPath;
      var requiresProtoInit = false;
      var requiresStaticInit = false;
      var decoratedPrivateMethods = new Set();
      var protoInitLocal, staticInitLocal, classInitLocal, classIdLocal;
      var assignments = [];
      var scopeParent = path.scope.parent;
      var memoiseExpression = function memoiseExpression(expression, hint) {
        var localEvaluatedId = scopeParent.generateDeclaredUidIdentifier(hint);
        assignments.push(assignmentExpression$d("=", localEvaluatedId, expression));
        return cloneNode$j(localEvaluatedId);
      };
      if (classDecorators) {
        classInitLocal = scopeParent.generateDeclaredUidIdentifier("initClass");
        var _replaceClassWithVar = replaceClassWithVar(path),
          _replaceClassWithVar2 = _slicedToArray(_replaceClassWithVar, 2),
          classId = _replaceClassWithVar2[0],
          classPath = _replaceClassWithVar2[1];
        path = classPath;
        classIdLocal = classId;
        path.node.decorators = null;
        for (var _iterator3 = _createForOfIteratorHelperLoose(classDecorators), _step3; !(_step3 = _iterator3()).done;) {
          var classDecorator = _step3.value;
          if (!scopeParent.isStatic(classDecorator.expression)) {
            classDecorator.expression = memoiseExpression(classDecorator.expression, "dec");
          }
        }
      } else {
        if (!path.node.id) {
          path.node.id = path.scope.generateUidIdentifier("Class");
        }
        classIdLocal = cloneNode$j(path.node.id);
      }
      var lastInstancePrivateName;
      var needsInstancePrivateBrandCheck = false;
      if (hasElementDecorators) {
        for (var _iterator4 = _createForOfIteratorHelperLoose(body), _step4; !(_step4 = _iterator4()).done;) {
          var element = _step4.value;
          if (!isClassDecoratableElementPath(element)) {
            continue;
          }
          var node = element.node;
          var decorators = element.get("decorators");
          var hasDecorators = Array.isArray(decorators) && decorators.length > 0;
          if (hasDecorators) {
            for (var _iterator5 = _createForOfIteratorHelperLoose(decorators), _step5; !(_step5 = _iterator5()).done;) {
              var decoratorPath = _step5.value;
              if (!scopeParent.isStatic(decoratorPath.node.expression)) {
                decoratorPath.node.expression = memoiseExpression(decoratorPath.node.expression, "dec");
              }
            }
          }
          var isComputed = "computed" in element.node && element.node.computed === true;
          if (isComputed) {
            if (!scopeParent.isStatic(node.key)) {
              node.key = memoiseExpression(node.key, "computedKey");
            }
          }
          var kind = getElementKind(element);
          var key = node.key;
          var isPrivate = key.type === "PrivateName";
          var isStatic = !!element.node["static"];
          var name = "computedKey";
          if (isPrivate) {
            name = key.id.name;
          } else if (!isComputed && key.type === "Identifier") {
            name = key.name;
          }
          if (isPrivate && !isStatic) {
            if (hasDecorators) {
              needsInstancePrivateBrandCheck = true;
            }
            if (isClassPrivateProperty(node) || !lastInstancePrivateName) {
              lastInstancePrivateName = key;
            }
          }
          if (element.isClassMethod({
            kind: "constructor"
          })) {
            constructorPath = element;
          }
          if (hasDecorators) {
            var locals = void 0;
            var privateMethods = void 0;
            if (kind === ACCESSOR) {
              var _ref = element.node,
                value = _ref.value;
              var params = [thisExpression$4()];
              if (value) {
                params.push(cloneNode$j(value));
              }
              var newId = generateClassPrivateUid();
              var newFieldInitId = element.scope.parent.generateDeclaredUidIdentifier("init_" + name);
              var newValue = callExpression$e(cloneNode$j(newFieldInitId), params);
              var newField = generateClassProperty(newId, newValue, isStatic);
              var _element$replaceWith = element.replaceWith(newField),
                _element$replaceWith2 = _slicedToArray(_element$replaceWith, 1),
                newPath = _element$replaceWith2[0];
              if (isPrivate) {
                privateMethods = extractProxyAccessorsFor(newId, version);
                var getId = newPath.scope.parent.generateDeclaredUidIdentifier("get_" + name);
                var setId = newPath.scope.parent.generateDeclaredUidIdentifier("set_" + name);
                addCallAccessorsFor(newPath, key, getId, setId);
                locals = [newFieldInitId, getId, setId];
              } else {
                addProxyAccessorsFor(newPath, key, newId, isComputed);
                locals = newFieldInitId;
              }
            } else if (kind === FIELD) {
              var initId = element.scope.parent.generateDeclaredUidIdentifier("init_" + name);
              var valuePath = element.get("value");
              valuePath.replaceWith(callExpression$e(cloneNode$j(initId), [thisExpression$4(), valuePath.node].filter(function (v) {
                return v;
              })));
              locals = initId;
              if (isPrivate) {
                privateMethods = extractProxyAccessorsFor(key, version);
              }
            } else if (isPrivate) {
              locals = element.scope.parent.generateDeclaredUidIdentifier("call_" + name);
              var replaceSupers = new ReplaceSupers({
                constantSuper: constantSuper,
                methodPath: element,
                objectRef: classIdLocal,
                superRef: path.node.superClass,
                file: state.file,
                refToPreserve: classIdLocal
              });
              replaceSupers.replace();
              var _ref2 = element.node,
                _params = _ref2.params,
                _body = _ref2.body,
                isAsync = _ref2.async;
              privateMethods = [functionExpression$2(undefined, _params.filter(isNotTsParameter), _body, isAsync)];
              if (kind === GETTER || kind === SETTER) {
                movePrivateAccessor(element, cloneNode$j(key), cloneNode$j(locals), isStatic);
              } else {
                var _node = element.node;
                path.node.body.body.unshift(classPrivateProperty(key, cloneNode$j(locals), [], _node["static"]));
                decoratedPrivateMethods.add(key.id.name);
                element.remove();
              }
            }
            var nameExpr = void 0;
            if (isComputed) {
              nameExpr = cloneNode$j(key);
            } else if (key.type === "PrivateName") {
              nameExpr = stringLiteral$8(key.id.name);
            } else if (key.type === "Identifier") {
              nameExpr = stringLiteral$8(key.name);
            } else {
              nameExpr = cloneNode$j(key);
            }
            elementDecoratorInfo.push({
              kind: kind,
              decorators: decorators.map(function (d) {
                return d.node.expression;
              }),
              name: nameExpr,
              isStatic: isStatic,
              privateMethods: privateMethods,
              locals: locals
            });
            if (kind !== FIELD) {
              if (isStatic) {
                requiresStaticInit = true;
              } else {
                requiresProtoInit = true;
              }
            }
            if (element.node) {
              element.node.decorators = null;
            }
            if (!firstFieldPath && !isStatic && (kind === FIELD || kind === ACCESSOR)) {
              firstFieldPath = element;
            }
          }
        }
      }
      var elementDecorations = generateDecorationExprs(elementDecoratorInfo);
      var classDecorations = arrayExpression$1((classDecorators || []).map(function (d) {
        return d.expression;
      }));
      var elementLocals = extractElementLocalAssignments(elementDecoratorInfo);
      if (requiresProtoInit) {
        protoInitLocal = scopeParent.generateDeclaredUidIdentifier("initProto");
        elementLocals.push(protoInitLocal);
        var protoInitCall = callExpression$e(cloneNode$j(protoInitLocal), [thisExpression$4()]);
        if (firstFieldPath) {
          var _value = firstFieldPath.get("value");
          var _body2 = [protoInitCall];
          if (_value.node) {
            _body2.push(_value.node);
          }
          _value.replaceWith(sequenceExpression$7(_body2));
        } else if (constructorPath) {
          if (path.node.superClass) {
            path.traverse({
              CallExpression: {
                exit: function exit(path) {
                  if (!path.get("callee").isSuper()) return;
                  path.replaceWith(callExpression$e(cloneNode$j(protoInitLocal), [path.node]));
                  path.skip();
                }
              }
            });
          } else {
            constructorPath.node.body.body.unshift(expressionStatement$a(protoInitCall));
          }
        } else {
          var _body3 = [expressionStatement$a(protoInitCall)];
          if (path.node.superClass) {
            _body3.unshift(expressionStatement$a(callExpression$e(_super$1(), [spreadElement$2(identifier$i("args"))])));
          }
          path.node.body.body.unshift(classMethod("constructor", identifier$i("constructor"), [restElement$2(identifier$i("args"))], blockStatement$6(_body3)));
        }
      }
      if (requiresStaticInit) {
        staticInitLocal = scopeParent.generateDeclaredUidIdentifier("initStatic");
        elementLocals.push(staticInitLocal);
      }
      if (decoratedPrivateMethods.size > 0) {
        path.traverse({
          PrivateName: function PrivateName(path) {
            if (!decoratedPrivateMethods.has(path.node.id.name)) return;
            var parentPath = path.parentPath;
            var parentParentPath = parentPath.parentPath;
            if (parentParentPath.node.type === "AssignmentExpression" && parentParentPath.node.left === parentPath.node || parentParentPath.node.type === "UpdateExpression" || parentParentPath.node.type === "RestElement" || parentParentPath.node.type === "ArrayPattern" || parentParentPath.node.type === "ObjectProperty" && parentParentPath.node.value === parentPath.node && parentParentPath.parentPath.type === "ObjectPattern" || parentParentPath.node.type === "ForOfStatement" && parentParentPath.node.left === parentPath.node) {
              throw path.buildCodeFrameError("Decorated private methods are not updatable, but \"#" + path.node.id.name + "\" is updated via this expression.");
            }
          }
        });
      }
      var classLocals = [];
      var classInitInjected = false;
      var classInitCall = classInitLocal && callExpression$e(cloneNode$j(classInitLocal), []);
      var originalClass = path.node;
      if (classDecorators) {
        classLocals.push(classIdLocal, classInitLocal);
        var statics = [];
        var staticBlocks = [];
        path.get("body.body").forEach(function (element) {
          if (element.isStaticBlock()) {
            staticBlocks.push(element.node);
            element.remove();
            return;
          }
          var isProperty = element.isClassProperty() || element.isClassPrivateProperty();
          if ((isProperty || element.isClassPrivateMethod()) && element.node["static"]) {
            if (isProperty && staticBlocks.length > 0) {
              var allValues = staticBlocks.map(staticBlockToIIFE);
              if (element.node.value) allValues.push(element.node.value);
              element.node.value = maybeSequenceExpression(allValues);
              staticBlocks = [];
            }
            element.node["static"] = false;
            statics.push(element.node);
            element.remove();
          }
        });
        if (statics.length > 0 || staticBlocks.length > 0) {
          var staticsClass = template$2.expression.ast(_templateObject5$2 || (_templateObject5$2 = _taggedTemplateLiteralLoose(["\n        class extends ", " {}\n      "])), state.addHelper("identity"));
          staticsClass.body.body = [staticBlock([toStatement(originalClass, true) || expressionStatement$a(originalClass)])].concat(statics);
          var constructorBody = [];
          var newExpr = newExpression(staticsClass, []);
          if (staticBlocks.length > 0) {
            constructorBody.push.apply(constructorBody, _toConsumableArray(staticBlocks.map(staticBlockToIIFE)));
          }
          if (classInitCall) {
            classInitInjected = true;
            constructorBody.push(classInitCall);
          }
          if (constructorBody.length > 0) {
            constructorBody.unshift(callExpression$e(_super$1(), [cloneNode$j(classIdLocal)]));
            staticsClass.body.body.push(classMethod("constructor", identifier$i("constructor"), [], blockStatement$6([expressionStatement$a(sequenceExpression$7(constructorBody))])));
          } else {
            newExpr.arguments.push(cloneNode$j(classIdLocal));
          }
          path.replaceWith(newExpr);
        }
      }
      if (!classInitInjected && classInitCall) {
        path.node.body.body.push(staticBlock([expressionStatement$a(classInitCall)]));
      }
      originalClass.body.body.unshift(staticBlock([expressionStatement$a(createLocalsAssignment(elementLocals, classLocals, elementDecorations, classDecorations, needsInstancePrivateBrandCheck ? lastInstancePrivateName : null, state, version)), requiresStaticInit && expressionStatement$a(callExpression$e(cloneNode$j(staticInitLocal), [thisExpression$4()]))].filter(Boolean)));
      path.insertBefore(assignments.map(function (expr) {
        return expressionStatement$a(expr);
      }));
      path.scope.crawl();
      return path;
    }
    function createLocalsAssignment(elementLocals, classLocals, elementDecorations, classDecorations, maybePrivateBranName, state, version) {
      var lhs, rhs;
      var args = [thisExpression$4(), elementDecorations, classDecorations];
      if (version === "2021-12" || version === "2022-03" && !state.availableHelper("applyDecs2203R")) {
        lhs = arrayPattern([].concat(_toConsumableArray(elementLocals), _toConsumableArray(classLocals)));
        rhs = callExpression$e(state.addHelper(version === "2021-12" ? "applyDecs" : "applyDecs2203"), args);
      } else {
        if (version === "2023-01") {
          if (maybePrivateBranName) {
            args.push(template$2.expression.ast(_templateObject6$2 || (_templateObject6$2 = _taggedTemplateLiteralLoose(["\n            _ => ", " in _\n          "])), cloneNode$j(maybePrivateBranName)));
          }
          rhs = callExpression$e(state.addHelper("applyDecs2301"), args);
        } else {
          rhs = callExpression$e(state.addHelper("applyDecs2203R"), args);
        }
        if (elementLocals.length > 0) {
          if (classLocals.length > 0) {
            lhs = objectPattern$1([objectProperty$1(identifier$i("e"), arrayPattern(elementLocals)), objectProperty$1(identifier$i("c"), arrayPattern(classLocals))]);
          } else {
            lhs = arrayPattern(elementLocals);
            rhs = memberExpression$c(rhs, identifier$i("e"), false, false);
          }
        } else {
          lhs = arrayPattern(classLocals);
          rhs = memberExpression$c(rhs, identifier$i("c"), false, false);
        }
      }
      return assignmentExpression$d("=", lhs, rhs);
    }
    function transformer2022_03 (_ref3, _ref4, version) {
      var _assumption;
      var assertVersion = _ref3.assertVersion,
        assumption = _ref3.assumption;
      var loose = _ref4.loose;
      if (version === "2023-01") {
        assertVersion("^7.21.0");
      } else if (version === "2021-12") {
        assertVersion("^7.16.0");
      } else {
        assertVersion("^7.19.0");
      }
      var VISITED = new WeakSet();
      var constantSuper = (_assumption = assumption("constantSuper")) != null ? _assumption : loose;
      return {
        name: "proposal-decorators",
        inherits: syntaxDecorators,
        visitor: {
          "ExportNamedDeclaration|ExportDefaultDeclaration": function ExportNamedDeclarationExportDefaultDeclaration(path) {
            var _declaration$decorato;
            var declaration = path.node.declaration;
            if ((declaration == null ? void 0 : declaration.type) === "ClassDeclaration" && ((_declaration$decorato = declaration.decorators) == null ? void 0 : _declaration$decorato.length) > 0) {
              splitExportDeclaration(path);
            }
          },
          Class: function Class(path, state) {
            if (VISITED.has(path)) return;
            var newPath = transformClass$1(path, state, constantSuper, version);
            if (newPath) VISITED.add(newPath);
          }
        }
      };
    }
  
    var proposalDecorators = declare(function (api, options) {
      api.assertVersion(7);
      {
        var legacy = options.legacy;
      }
      var version = options.version;
      if (legacy || version === "legacy") {
        return {
          name: "proposal-decorators",
          inherits: syntaxDecorators,
          visitor: visitor$1
        };
      } else if (version === "2021-12" || version === "2022-03" || version === "2023-01") {
        return transformer2022_03(api, options, version);
      } else {
        api.assertVersion("^7.0.2");
        return createClassFeaturePlugin({
          name: "proposal-decorators",
          api: api,
          feature: FEATURES$1.decorators,
          inherits: syntaxDecorators
        });
      }
    });
  
    function isPureVoid(node) {
      return isUnaryExpression$1(node) && node.operator === "void" && isPureish$2(node.argument);
    }
    function unshiftForXStatementBody(statementPath, newStatements) {
      statementPath.ensureBlock();
      var scope = statementPath.scope,
        node = statementPath.node;
      var bodyScopeBindings = statementPath.get("body").scope.bindings;
      var hasShadowedBlockScopedBindings = Object.keys(bodyScopeBindings).some(function (name) {
        return scope.hasBinding(name);
      });
      if (hasShadowedBlockScopedBindings) {
        node.body = blockStatement$6([].concat(_toConsumableArray(newStatements), [node.body]));
      } else {
        var _node$body$body;
        (_node$body$body = node.body.body).unshift.apply(_node$body$body, _toConsumableArray(newStatements));
      }
    }
    function hasArrayRest(pattern) {
      return pattern.elements.some(function (elem) {
        return isRestElement$3(elem);
      });
    }
    function hasObjectRest(pattern) {
      return pattern.properties.some(function (prop) {
        return isRestElement$3(prop);
      });
    }
    var STOP_TRAVERSAL = {};
    var arrayUnpackVisitor = function arrayUnpackVisitor(node, ancestors, state) {
      if (!ancestors.length) {
        return;
      }
      if (isIdentifier$j(node) && isReferenced$2(node, ancestors[ancestors.length - 1].node) && state.bindings[node.name]) {
        state.deopt = true;
        throw STOP_TRAVERSAL;
      }
    };
    var DestructuringTransformer = function () {
      function DestructuringTransformer(opts) {
        this.blockHoist = void 0;
        this.operator = void 0;
        this.arrayRefSet = void 0;
        this.nodes = void 0;
        this.scope = void 0;
        this.kind = void 0;
        this.iterableIsArray = void 0;
        this.arrayLikeIsIterable = void 0;
        this.objectRestNoSymbols = void 0;
        this.useBuiltIns = void 0;
        this.addHelper = void 0;
        this.blockHoist = opts.blockHoist;
        this.operator = opts.operator;
        this.arrayRefSet = new Set();
        this.nodes = opts.nodes || [];
        this.scope = opts.scope;
        this.kind = opts.kind;
        this.iterableIsArray = opts.iterableIsArray;
        this.arrayLikeIsIterable = opts.arrayLikeIsIterable;
        this.objectRestNoSymbols = opts.objectRestNoSymbols;
        this.useBuiltIns = opts.useBuiltIns;
        this.addHelper = opts.addHelper;
      }
      var _proto = DestructuringTransformer.prototype;
      _proto.getExtendsHelper = function getExtendsHelper() {
        return this.useBuiltIns ? memberExpression$c(identifier$i("Object"), identifier$i("assign")) : this.addHelper("extends");
      };
      _proto.buildVariableAssignment = function buildVariableAssignment(id, init) {
        var op = this.operator;
        if (isMemberExpression$8(id)) op = "=";
        var node;
        if (op) {
          node = expressionStatement$a(assignmentExpression$d(op, id, cloneNode$j(init) || this.scope.buildUndefinedNode()));
        } else {
          var nodeInit;
          if ((this.kind === "const" || this.kind === "using") && init === null) {
            nodeInit = this.scope.buildUndefinedNode();
          } else {
            nodeInit = cloneNode$j(init);
          }
          node = variableDeclaration$8(this.kind, [variableDeclarator$8(id, nodeInit)]);
        }
        node._blockHoist = this.blockHoist;
        return node;
      };
      _proto.buildVariableDeclaration = function buildVariableDeclaration(id, init) {
        var declar = variableDeclaration$8("var", [variableDeclarator$8(cloneNode$j(id), cloneNode$j(init))]);
        declar._blockHoist = this.blockHoist;
        return declar;
      };
      _proto.push = function push(id, _init) {
        var init = cloneNode$j(_init);
        if (isObjectPattern$2(id)) {
          this.pushObjectPattern(id, init);
        } else if (isArrayPattern$1(id)) {
          this.pushArrayPattern(id, init);
        } else if (isAssignmentPattern$5(id)) {
          this.pushAssignmentPattern(id, init);
        } else {
          this.nodes.push(this.buildVariableAssignment(id, init));
        }
      };
      _proto.toArray = function toArray(node, count) {
        if (this.iterableIsArray || isIdentifier$j(node) && this.arrayRefSet.has(node.name)) {
          return node;
        } else {
          return this.scope.toArray(node, count, this.arrayLikeIsIterable);
        }
      };
      _proto.pushAssignmentPattern = function pushAssignmentPattern(_ref, valueRef) {
        var left = _ref.left,
          right = _ref.right;
        if (isPureVoid(valueRef)) {
          this.push(left, right);
          return;
        }
        var tempId = this.scope.generateUidIdentifierBasedOnNode(valueRef);
        this.nodes.push(this.buildVariableDeclaration(tempId, valueRef));
        var tempConditional = conditionalExpression$4(binaryExpression$5("===", cloneNode$j(tempId), this.scope.buildUndefinedNode()), right, cloneNode$j(tempId));
        if (isPattern(left)) {
          var patternId;
          var node;
          if (this.kind === "const" || this.kind === "let" || this.kind === "using") {
            patternId = this.scope.generateUidIdentifier(tempId.name);
            node = this.buildVariableDeclaration(patternId, tempConditional);
          } else {
            patternId = tempId;
            node = expressionStatement$a(assignmentExpression$d("=", cloneNode$j(tempId), tempConditional));
          }
          this.nodes.push(node);
          this.push(left, patternId);
        } else {
          this.nodes.push(this.buildVariableAssignment(left, tempConditional));
        }
      };
      _proto.pushObjectRest = function pushObjectRest(pattern, objRef, spreadProp, spreadPropIndex) {
        var _this = this;
        var value = buildObjectExcludingKeys(pattern.properties.slice(0, spreadPropIndex), objRef, this.scope, function (name) {
          return _this.addHelper(name);
        }, this.objectRestNoSymbols, this.useBuiltIns);
        this.nodes.push(this.buildVariableAssignment(spreadProp.argument, value));
      };
      _proto.pushObjectProperty = function pushObjectProperty(prop, propRef) {
        if (isLiteral$6(prop.key)) prop.computed = true;
        var pattern = prop.value;
        var objRef = memberExpression$c(cloneNode$j(propRef), prop.key, prop.computed);
        if (isPattern(pattern)) {
          this.push(pattern, objRef);
        } else {
          this.nodes.push(this.buildVariableAssignment(pattern, objRef));
        }
      };
      _proto.pushObjectPattern = function pushObjectPattern(pattern, objRef) {
        if (!pattern.properties.length) {
          this.nodes.push(expressionStatement$a(callExpression$e(this.addHelper("objectDestructuringEmpty"), isPureVoid(objRef) ? [] : [objRef])));
          return;
        }
        if (pattern.properties.length > 1 && !this.scope.isStatic(objRef)) {
          var temp = this.scope.generateUidIdentifierBasedOnNode(objRef);
          this.nodes.push(this.buildVariableDeclaration(temp, objRef));
          objRef = temp;
        }
        if (hasObjectRest(pattern)) {
          var copiedPattern;
          for (var i = 0; i < pattern.properties.length; i++) {
            var prop = pattern.properties[i];
            if (isRestElement$3(prop)) {
              break;
            }
            var key = prop.key;
            if (prop.computed && !this.scope.isPure(key)) {
              var name = this.scope.generateUidIdentifierBasedOnNode(key);
              this.nodes.push(this.buildVariableDeclaration(name, key));
              if (!copiedPattern) {
                copiedPattern = pattern = Object.assign({}, pattern, {
                  properties: pattern.properties.slice()
                });
              }
              copiedPattern.properties[i] = Object.assign({}, prop, {
                key: name
              });
            }
          }
        }
        for (var _i = 0; _i < pattern.properties.length; _i++) {
          var _prop = pattern.properties[_i];
          if (isRestElement$3(_prop)) {
            this.pushObjectRest(pattern, objRef, _prop, _i);
          } else {
            this.pushObjectProperty(_prop, objRef);
          }
        }
      };
      _proto.canUnpackArrayPattern = function canUnpackArrayPattern(pattern, arr) {
        if (!isArrayExpression$2(arr)) return false;
        if (pattern.elements.length > arr.elements.length) return;
        if (pattern.elements.length < arr.elements.length && !hasArrayRest(pattern)) {
          return false;
        }
        for (var _iterator = _createForOfIteratorHelperLoose(pattern.elements), _step; !(_step = _iterator()).done;) {
          var elem = _step.value;
          if (!elem) return false;
          if (isMemberExpression$8(elem)) return false;
        }
        for (var _iterator2 = _createForOfIteratorHelperLoose(arr.elements), _step2; !(_step2 = _iterator2()).done;) {
          var _elem = _step2.value;
          if (isSpreadElement$1(_elem)) return false;
          if (isCallExpression$8(_elem)) return false;
          if (isMemberExpression$8(_elem)) return false;
        }
        var bindings = getBindingIdentifiers$2(pattern);
        var state = {
          deopt: false,
          bindings: bindings
        };
        try {
          traverse$2(arr, arrayUnpackVisitor, state);
        } catch (e) {
          if (e !== STOP_TRAVERSAL) throw e;
        }
        return !state.deopt;
      };
      _proto.pushUnpackedArrayPattern = function pushUnpackedArrayPattern(pattern, arr) {
        var _this2 = this;
        var holeToUndefined = function holeToUndefined(el) {
          return el != null ? el : _this2.scope.buildUndefinedNode();
        };
        for (var i = 0; i < pattern.elements.length; i++) {
          var elem = pattern.elements[i];
          if (isRestElement$3(elem)) {
            this.push(elem.argument, arrayExpression$1(arr.elements.slice(i).map(holeToUndefined)));
          } else {
            this.push(elem, holeToUndefined(arr.elements[i]));
          }
        }
      };
      _proto.pushArrayPattern = function pushArrayPattern(pattern, arrayRef) {
        if (arrayRef === null) {
          this.nodes.push(expressionStatement$a(callExpression$e(this.addHelper("objectDestructuringEmpty"), [])));
          return;
        }
        if (!pattern.elements) return;
        if (this.canUnpackArrayPattern(pattern, arrayRef)) {
          this.pushUnpackedArrayPattern(pattern, arrayRef);
          return;
        }
        var count = !hasArrayRest(pattern) && pattern.elements.length;
        var toArray = this.toArray(arrayRef, count);
        if (isIdentifier$j(toArray)) {
          arrayRef = toArray;
        } else {
          arrayRef = this.scope.generateUidIdentifierBasedOnNode(arrayRef);
          this.arrayRefSet.add(arrayRef.name);
          this.nodes.push(this.buildVariableDeclaration(arrayRef, toArray));
        }
        for (var i = 0; i < pattern.elements.length; i++) {
          var elem = pattern.elements[i];
          if (!elem) continue;
          var elemRef = void 0;
          if (isRestElement$3(elem)) {
            elemRef = this.toArray(arrayRef);
            elemRef = callExpression$e(memberExpression$c(elemRef, identifier$i("slice")), [numericLiteral$8(i)]);
            this.push(elem.argument, elemRef);
          } else {
            elemRef = memberExpression$c(arrayRef, numericLiteral$8(i), true);
            this.push(elem, elemRef);
          }
        }
      };
      _proto.init = function init(pattern, ref) {
        if (!isArrayExpression$2(ref) && !isMemberExpression$8(ref)) {
          var memo = this.scope.maybeGenerateMemoised(ref, true);
          if (memo) {
            this.nodes.push(this.buildVariableDeclaration(memo, cloneNode$j(ref)));
            ref = memo;
          }
        }
        this.push(pattern, ref);
        return this.nodes;
      };
      return _createClass(DestructuringTransformer);
    }();
    function buildObjectExcludingKeys(excludedKeys, objRef, scope, addHelper, objectRestNoSymbols, useBuiltIns) {
      var keys = [];
      var allLiteral = true;
      var hasTemplateLiteral = false;
      for (var i = 0; i < excludedKeys.length; i++) {
        var prop = excludedKeys[i];
        var key = prop.key;
        if (isIdentifier$j(key) && !prop.computed) {
          keys.push(stringLiteral$8(key.name));
        } else if (isTemplateLiteral$2(key)) {
          keys.push(cloneNode$j(key));
          hasTemplateLiteral = true;
        } else if (isLiteral$6(key)) {
          keys.push(stringLiteral$8(String(key.value)));
        } else if (isPrivateName$3(key)) ; else {
          keys.push(cloneNode$j(key));
          allLiteral = false;
        }
      }
      var value;
      if (keys.length === 0) {
        var extendsHelper = useBuiltIns ? memberExpression$c(identifier$i("Object"), identifier$i("assign")) : addHelper("extends");
        value = callExpression$e(extendsHelper, [objectExpression$3([]), sequenceExpression$7([callExpression$e(addHelper("objectDestructuringEmpty"), [cloneNode$j(objRef)]), cloneNode$j(objRef)])]);
      } else {
        var keyExpression = arrayExpression$1(keys);
        if (!allLiteral) {
          keyExpression = callExpression$e(memberExpression$c(keyExpression, identifier$i("map")), [addHelper("toPropertyKey")]);
        } else if (!hasTemplateLiteral && !isProgram$1(scope.block)) {
          var programScope = scope.getProgramParent();
          var id = programScope.generateUidIdentifier("excluded");
          programScope.push({
            id: id,
            init: keyExpression,
            kind: "const"
          });
          keyExpression = cloneNode$j(id);
        }
        value = callExpression$e(addHelper("objectWithoutProperties" + (objectRestNoSymbols ? "Loose" : "")), [cloneNode$j(objRef), keyExpression]);
      }
      return value;
    }
    function convertVariableDeclaration(path, addHelper, arrayLikeIsIterable, iterableIsArray, objectRestNoSymbols, useBuiltIns) {
      var node = path.node,
        scope = path.scope;
      var nodeKind = node.kind;
      var nodeLoc = node.loc;
      var nodes = [];
      for (var i = 0; i < node.declarations.length; i++) {
        var declar = node.declarations[i];
        var patternId = declar.init;
        var pattern = declar.id;
        var destructuring = new DestructuringTransformer({
          blockHoist: node._blockHoist,
          nodes: nodes,
          scope: scope,
          kind: node.kind,
          iterableIsArray: iterableIsArray,
          arrayLikeIsIterable: arrayLikeIsIterable,
          useBuiltIns: useBuiltIns,
          objectRestNoSymbols: objectRestNoSymbols,
          addHelper: addHelper
        });
        if (isPattern(pattern)) {
          destructuring.init(pattern, patternId);
          if (+i !== node.declarations.length - 1) {
            inherits$1(nodes[nodes.length - 1], declar);
          }
        } else {
          nodes.push(inherits$1(destructuring.buildVariableAssignment(pattern, patternId), declar));
        }
      }
      var tail = null;
      var nodesOut = [];
      for (var _i2 = 0, _nodes = nodes; _i2 < _nodes.length; _i2++) {
        var _node = _nodes[_i2];
        if (isVariableDeclaration$3(_node)) {
          if (tail !== null) {
            var _tail$declarations;
            (_tail$declarations = tail.declarations).push.apply(_tail$declarations, _toConsumableArray(_node.declarations));
            continue;
          } else {
            _node.kind = nodeKind;
            tail = _node;
          }
        } else {
          tail = null;
        }
        if (!_node.loc) {
          _node.loc = nodeLoc;
        }
        nodesOut.push(_node);
      }
      if (nodesOut.length === 2 && isVariableDeclaration$3(nodesOut[0]) && isExpressionStatement$3(nodesOut[1]) && isCallExpression$8(nodesOut[1].expression) && nodesOut[0].declarations.length === 1) {
        var expr = nodesOut[1].expression;
        expr.arguments = [nodesOut[0].declarations[0].init];
        nodesOut = [expr];
      } else {
        if (isForStatement$3(path.parent, {
          init: node
        }) && !nodesOut.some(function (v) {
          return isVariableDeclaration$3(v);
        })) {
          for (var _i3 = 0; _i3 < nodesOut.length; _i3++) {
            var _node2 = nodesOut[_i3];
            if (isExpressionStatement$3(_node2)) {
              nodesOut[_i3] = _node2.expression;
            }
          }
        }
      }
      if (nodesOut.length === 1) {
        path.replaceWith(nodesOut[0]);
      } else {
        path.replaceWithMultiple(nodesOut);
      }
      scope.crawl();
    }
    function convertAssignmentExpression(path, addHelper, arrayLikeIsIterable, iterableIsArray, objectRestNoSymbols, useBuiltIns) {
      var node = path.node,
        scope = path.scope,
        parentPath = path.parentPath;
      var nodes = [];
      var destructuring = new DestructuringTransformer({
        operator: node.operator,
        scope: scope,
        nodes: nodes,
        arrayLikeIsIterable: arrayLikeIsIterable,
        iterableIsArray: iterableIsArray,
        objectRestNoSymbols: objectRestNoSymbols,
        useBuiltIns: useBuiltIns,
        addHelper: addHelper
      });
      var ref;
      if (!parentPath.isExpressionStatement() && !parentPath.isSequenceExpression() || path.isCompletionRecord()) {
        ref = scope.generateUidIdentifierBasedOnNode(node.right, "ref");
        nodes.push(variableDeclaration$8("var", [variableDeclarator$8(ref, node.right)]));
        if (isArrayExpression$2(node.right)) {
          destructuring.arrayRefSet.add(ref.name);
        }
      }
      destructuring.init(node.left, ref || node.right);
      if (ref) {
        if (parentPath.isArrowFunctionExpression()) {
          path.replaceWith(blockStatement$6([]));
          nodes.push(returnStatement$3(cloneNode$j(ref)));
        } else {
          nodes.push(expressionStatement$a(cloneNode$j(ref)));
        }
      }
      path.replaceWithMultiple(nodes);
      scope.crawl();
    }
  
    function variableDeclarationHasPattern(node) {
      for (var _iterator = _createForOfIteratorHelperLoose(node.declarations), _step; !(_step = _iterator()).done;) {
        var declar = _step.value;
        if (isPattern(declar.id)) {
          return true;
        }
      }
      return false;
    }
    var _transformDestructuring = declare(function (api, options) {
      var _ref, _api$assumption, _ref2, _options$allowArrayLi, _ref3, _api$assumption2;
      api.assertVersion(7);
      var _options$useBuiltIns = options.useBuiltIns,
        useBuiltIns = _options$useBuiltIns === void 0 ? false : _options$useBuiltIns;
      var iterableIsArray = (_ref = (_api$assumption = api.assumption("iterableIsArray")) != null ? _api$assumption : options.loose) != null ? _ref : false;
      var arrayLikeIsIterable = (_ref2 = (_options$allowArrayLi = options.allowArrayLike) != null ? _options$allowArrayLi : api.assumption("arrayLikeIsIterable")) != null ? _ref2 : false;
      var objectRestNoSymbols = (_ref3 = (_api$assumption2 = api.assumption("objectRestNoSymbols")) != null ? _api$assumption2 : options.loose) != null ? _ref3 : false;
      return {
        name: "transform-destructuring",
        visitor: {
          ExportNamedDeclaration: function ExportNamedDeclaration(path) {
            var declaration = path.get("declaration");
            if (!declaration.isVariableDeclaration()) return;
            if (!variableDeclarationHasPattern(declaration.node)) return;
            var specifiers = [];
            for (var _i = 0, _Object$keys = Object.keys(path.getOuterBindingIdentifiers()); _i < _Object$keys.length; _i++) {
              var name = _Object$keys[_i];
              specifiers.push(exportSpecifier$2(identifier$i(name), identifier$i(name)));
            }
            path.replaceWith(declaration.node);
            path.insertAfter(exportNamedDeclaration$2(null, specifiers));
            path.scope.crawl();
          },
          ForXStatement: function (_ForXStatement) {
            function ForXStatement(_x) {
              return _ForXStatement.apply(this, arguments);
            }
            ForXStatement.toString = function () {
              return _ForXStatement.toString();
            };
            return ForXStatement;
          }(function (path) {
            var _this = this;
            var node = path.node,
              scope = path.scope;
            var left = node.left;
            if (isPattern(left)) {
              var temp = scope.generateUidIdentifier("ref");
              node.left = variableDeclaration$8("var", [variableDeclarator$8(temp)]);
              path.ensureBlock();
              var statementBody = path.node.body.body;
              var _nodes = [];
              if (statementBody.length === 0 && path.isCompletionRecord()) {
                _nodes.unshift(expressionStatement$a(scope.buildUndefinedNode()));
              }
              _nodes.unshift(expressionStatement$a(assignmentExpression$d("=", left, cloneNode$j(temp))));
              unshiftForXStatementBody(path, _nodes);
              scope.crawl();
              return;
            }
            if (!isVariableDeclaration$3(left)) return;
            var pattern = left.declarations[0].id;
            if (!isPattern(pattern)) return;
            var key = scope.generateUidIdentifier("ref");
            node.left = variableDeclaration$8(left.kind, [variableDeclarator$8(key, null)]);
            var nodes = [];
            var destructuring = new DestructuringTransformer({
              kind: left.kind,
              scope: scope,
              nodes: nodes,
              arrayLikeIsIterable: arrayLikeIsIterable,
              iterableIsArray: iterableIsArray,
              objectRestNoSymbols: objectRestNoSymbols,
              useBuiltIns: useBuiltIns,
              addHelper: function addHelper(name) {
                return _this.addHelper(name);
              }
            });
            destructuring.init(pattern, key);
            unshiftForXStatementBody(path, nodes);
            scope.crawl();
          }),
          CatchClause: function CatchClause(_ref4) {
            var _this2 = this;
            var node = _ref4.node,
              scope = _ref4.scope;
            var pattern = node.param;
            if (!isPattern(pattern)) return;
            var ref = scope.generateUidIdentifier("ref");
            node.param = ref;
            var nodes = [];
            var destructuring = new DestructuringTransformer({
              kind: "let",
              scope: scope,
              nodes: nodes,
              arrayLikeIsIterable: arrayLikeIsIterable,
              iterableIsArray: iterableIsArray,
              objectRestNoSymbols: objectRestNoSymbols,
              useBuiltIns: useBuiltIns,
              addHelper: function addHelper(name) {
                return _this2.addHelper(name);
              }
            });
            destructuring.init(pattern, ref);
            node.body.body = [].concat(nodes, _toConsumableArray(node.body.body));
            scope.crawl();
          },
          AssignmentExpression: function AssignmentExpression(path, state) {
            if (!isPattern(path.node.left)) return;
            convertAssignmentExpression(path, function (name) {
              return state.addHelper(name);
            }, arrayLikeIsIterable, iterableIsArray, objectRestNoSymbols, useBuiltIns);
          },
          VariableDeclaration: function VariableDeclaration(path, state) {
            var node = path.node,
              parent = path.parent;
            if (isForXStatement$1(parent)) return;
            if (!parent || !path.container) return;
            if (!variableDeclarationHasPattern(node)) return;
            convertVariableDeclaration(path, function (name) {
              return state.addHelper(name);
            }, arrayLikeIsIterable, iterableIsArray, objectRestNoSymbols, useBuiltIns);
          }
        }
      };
    });
  
    var _marked = _regeneratorRuntime().mark(traversePattern),
      _marked2 = _regeneratorRuntime().mark(privateKeyPathIterator),
      _marked3 = _regeneratorRuntime().mark(transformPrivateKeyDestructuring);
    var assignmentExpression$2 = assignmentExpression$d,
      binaryExpression = binaryExpression$5,
      conditionalExpression = conditionalExpression$4,
      cloneNode$1 = cloneNode$j,
      isObjectProperty$2 = isObjectProperty$5,
      isPrivateName$1 = isPrivateName$3,
      memberExpression$2 = memberExpression$c,
      numericLiteral = numericLiteral$8,
      objectPattern = objectPattern$1,
      restElement = restElement$2,
      variableDeclarator = variableDeclarator$8,
      variableDeclaration = variableDeclaration$8,
      unaryExpression = unaryExpression$7;
    function buildUndefinedNode() {
      return unaryExpression("void", numericLiteral(0));
    }
    function transformAssignmentPattern(initializer, tempId) {
      return conditionalExpression(binaryExpression("===", cloneNode$1(tempId), buildUndefinedNode()), initializer, cloneNode$1(tempId));
    }
    function initRestExcludingKeys(pattern) {
      if (pattern.type === "ObjectPattern") {
        var properties = pattern.properties;
        if (properties[properties.length - 1].type === "RestElement") {
          return [];
        }
      }
      return null;
    }
    function growRestExcludingKeys(excludingKeys, properties, scope) {
      if (excludingKeys === null) return;
      for (var _iterator = _createForOfIteratorHelperLoose(properties), _step; !(_step = _iterator()).done;) {
        var property = _step.value;
        var propertyKey = property.key;
        if (property.computed && !scope.isStatic(propertyKey)) {
          var tempId = scope.generateDeclaredUidIdentifier("m");
          property.key = assignmentExpression$2("=", tempId, propertyKey);
          excludingKeys.push({
            key: tempId,
            computed: true
          });
        } else if (propertyKey.type !== "PrivateName") {
          excludingKeys.push(property);
        }
      }
    }
    function buildVariableDeclarationFromParams(params, scope) {
      var _buildAssignmentsFrom = buildAssignmentsFromPatternList(params, scope, false),
        elements = _buildAssignmentsFrom.elements,
        transformed = _buildAssignmentsFrom.transformed;
      return {
        params: elements,
        variableDeclaration: variableDeclaration("var", transformed.map(function (_ref) {
          var left = _ref.left,
            right = _ref.right;
          return variableDeclarator(left, right);
        }))
      };
    }
    function buildAssignmentsFromPatternList(elements, scope, isAssignment) {
      var newElements = [],
        transformed = [];
      for (var _iterator2 = _createForOfIteratorHelperLoose(elements), _step2; !(_step2 = _iterator2()).done;) {
        var element = _step2.value;
        if (element === null) {
          newElements.push(null);
          transformed.push(null);
          continue;
        }
        var tempId = scope.generateUidIdentifier("p");
        if (isAssignment) {
          scope.push({
            id: cloneNode$1(tempId)
          });
        }
        if (element.type === "RestElement") {
          newElements.push(restElement(tempId));
          element = element.argument;
        } else {
          newElements.push(tempId);
        }
        if (element.type === "AssignmentPattern") {
          transformed.push({
            left: element.left,
            right: transformAssignmentPattern(element.right, tempId)
          });
        } else {
          transformed.push({
            left: element,
            right: cloneNode$1(tempId)
          });
        }
      }
      return {
        elements: newElements,
        transformed: transformed
      };
    }
    function traversePattern(root, visitor) {
      var stack, item, _item, _node, _index, _depth, list, i, _list, _i;
      return _regeneratorRuntime().wrap(function traversePattern$(_context) {
        while (1) switch (_context.prev = _context.next) {
          case 0:
            stack = [];
            stack.push({
              node: root,
              index: 0,
              depth: 0
            });
          case 2:
            if (!((item = stack.pop()) !== undefined)) {
              _context.next = 25;
              break;
            }
            _item = item, _node = _item.node, _index = _item.index;
            if (!(_node === null)) {
              _context.next = 6;
              break;
            }
            return _context.abrupt("continue", 2);
          case 6:
            return _context.delegateYield(visitor(_node, _index, item.depth), "t0", 7);
          case 7:
            _depth = item.depth + 1;
            _context.t1 = _node.type;
            _context.next = _context.t1 === "AssignmentPattern" ? 11 : _context.t1 === "ObjectProperty" ? 13 : _context.t1 === "RestElement" ? 15 : _context.t1 === "ObjectPattern" ? 17 : _context.t1 === "ArrayPattern" ? 19 : _context.t1 === "TSParameterProperty" ? 21 : _context.t1 === "TSAsExpression" ? 21 : _context.t1 === "TSTypeAssertion" ? 21 : _context.t1 === "TSNonNullExpression" ? 21 : 22;
            break;
          case 11:
            stack.push({
              node: _node.left,
              index: 0,
              depth: _depth
            });
            return _context.abrupt("break", 23);
          case 13:
            stack.push({
              node: _node.value,
              index: _index,
              depth: item.depth
            });
            return _context.abrupt("break", 23);
          case 15:
            stack.push({
              node: _node.argument,
              index: 0,
              depth: _depth
            });
            return _context.abrupt("break", 23);
          case 17:
            for (list = _node.properties, i = list.length - 1; i >= 0; i--) {
              stack.push({
                node: list[i],
                index: i,
                depth: _depth
              });
            }
            return _context.abrupt("break", 23);
          case 19:
            for (_list = _node.elements, _i = _list.length - 1; _i >= 0; _i--) {
              stack.push({
                node: _list[_i],
                index: _i,
                depth: _depth
              });
            }
            return _context.abrupt("break", 23);
          case 21:
            throw new Error("TypeScript features must first be transformed by " + "@babel/plugin-transform-typescript.\n" + "If you have already enabled that plugin (or '@babel/preset-typescript'), make sure " + "that it runs before @babel/plugin-proposal-destructuring-private.");
          case 22:
            return _context.abrupt("break", 23);
          case 23:
            _context.next = 2;
            break;
          case 25:
          case "end":
            return _context.stop();
        }
      }, _marked);
    }
    function hasPrivateKeys(pattern) {
      var result = false;
      traversePattern(pattern, _regeneratorRuntime().mark(function _callee(node) {
        return _regeneratorRuntime().wrap(function _callee$(_context2) {
          while (1) switch (_context2.prev = _context2.next) {
            case 0:
              if (!(isObjectProperty$2(node) && isPrivateName$1(node.key))) {
                _context2.next = 4;
                break;
              }
              result = true;
              _context2.next = 4;
              return;
            case 4:
            case "end":
              return _context2.stop();
          }
        }, _callee);
      })).next();
      return result;
    }
    function hasPrivateClassElement(node) {
      return node.body.some(function (element) {
        return isPrivateName$1(element.key);
      });
    }
    function privateKeyPathIterator(pattern) {
      var indexPath;
      return _regeneratorRuntime().wrap(function privateKeyPathIterator$(_context4) {
        while (1) switch (_context4.prev = _context4.next) {
          case 0:
            indexPath = [];
            return _context4.delegateYield(traversePattern(pattern, _regeneratorRuntime().mark(function _callee2(node, index, depth) {
              return _regeneratorRuntime().wrap(function _callee2$(_context3) {
                while (1) switch (_context3.prev = _context3.next) {
                  case 0:
                    indexPath[depth] = index;
                    if (!(isObjectProperty$2(node) && isPrivateName$1(node.key))) {
                      _context3.next = 4;
                      break;
                    }
                    _context3.next = 4;
                    return indexPath.slice(1, depth + 1);
                  case 4:
                  case "end":
                    return _context3.stop();
                }
              }, _callee2);
            })), "t0", 2);
          case 2:
          case "end":
            return _context4.stop();
        }
      }, _marked2);
    }
    function rightWillBeReferencedOnce(left) {
      switch (left.type) {
        case "Identifier":
        case "ArrayPattern":
          return true;
        case "ObjectPattern":
          return left.properties.length === 1;
        default:
          return false;
      }
    }
    function transformPrivateKeyDestructuring(left, right, scope, isAssignment, shouldPreserveCompletion, addHelper, objectRestNoSymbols, useBuiltIns) {
      var stack, rootRight, item, _item2, restExcludingKeys, _item3, _left, _right, searchPrivateKey, _ref2, properties, indexPath, indexPathIndex, _index2, isRightSafeToReuse, tempId, _left2, _properties, propertiesSlice, nextRestExcludingKeys, property, key, computed, leftElements, leftElementsAfterIndex, _buildAssignmentsFrom2, elements, transformed, i, _transformed$;
      return _regeneratorRuntime().wrap(function transformPrivateKeyDestructuring$(_context5) {
        while (1) switch (_context5.prev = _context5.next) {
          case 0:
            stack = [];
            rootRight = right;
            stack.push({
              left: left,
              right: right,
              restExcludingKeys: initRestExcludingKeys(left)
            });
          case 3:
            if (!((item = stack.pop()) !== undefined)) {
              _context5.next = 65;
              break;
            }
            _item2 = item, restExcludingKeys = _item2.restExcludingKeys;
            _item3 = item, _left = _item3.left, _right = _item3.right;
            searchPrivateKey = privateKeyPathIterator(_left).next();
            if (!searchPrivateKey.done) {
              _context5.next = 19;
              break;
            }
            if (!((restExcludingKeys == null ? void 0 : restExcludingKeys.length) > 0)) {
              _context5.next = 15;
              break;
            }
            _ref2 = _left, properties = _ref2.properties;
            if (properties.length === 1) {
              _left = properties[0].argument;
            }
            _context5.next = 13;
            return {
              left: _left,
              right: buildObjectExcludingKeys(restExcludingKeys, _right, scope, addHelper, objectRestNoSymbols, useBuiltIns)
            };
          case 13:
            _context5.next = 17;
            break;
          case 15:
            _context5.next = 17;
            return {
              left: _left,
              right: _right
            };
          case 17:
            _context5.next = 63;
            break;
          case 19:
            indexPath = searchPrivateKey.value;
            indexPathIndex = 0;
          case 21:
            if (!(indexPathIndex < indexPath.length && (_index2 = indexPath[indexPathIndex]) !== undefined || _left.type === "AssignmentPattern")) {
              _context5.next = 62;
              break;
            }
            isRightSafeToReuse = !(shouldPreserveCompletion && _right === rootRight) && (rightWillBeReferencedOnce(_left) || scope.isStatic(_right));
            if (isRightSafeToReuse) {
              _context5.next = 29;
              break;
            }
            tempId = scope.generateUidIdentifier("m");
            if (isAssignment) {
              scope.push({
                id: cloneNode$1(tempId)
              });
            }
            _context5.next = 28;
            return {
              left: tempId,
              right: _right
            };
          case 28:
            _right = cloneNode$1(tempId);
          case 29:
            _context5.t0 = _left.type;
            _context5.next = _context5.t0 === "ObjectPattern" ? 32 : _context5.t0 === "AssignmentPattern" ? 44 : _context5.t0 === "ArrayPattern" ? 47 : 58;
            break;
          case 32:
            _left2 = _left, _properties = _left2.properties;
            if (!(_index2 > 0)) {
              _context5.next = 37;
              break;
            }
            propertiesSlice = _properties.slice(0, _index2);
            _context5.next = 37;
            return {
              left: objectPattern(propertiesSlice),
              right: cloneNode$1(_right)
            };
          case 37:
            if (_index2 < _properties.length - 1) {
              nextRestExcludingKeys = indexPathIndex === 0 ? restExcludingKeys : initRestExcludingKeys(_left);
              growRestExcludingKeys(nextRestExcludingKeys, _properties.slice(0, _index2 + 1), scope);
              stack.push({
                left: objectPattern(_properties.slice(_index2 + 1)),
                right: cloneNode$1(_right),
                restExcludingKeys: nextRestExcludingKeys
              });
            }
            property = _properties[_index2];
            _left = property.value;
            key = property.key;
            computed = property.computed || key.type !== "Identifier" && key.type !== "PrivateName";
            _right = memberExpression$2(_right, key, computed);
            return _context5.abrupt("break", 59);
          case 44:
            _right = transformAssignmentPattern(_left.right, _right);
            _left = _left.left;
            return _context5.abrupt("break", 59);
          case 47:
            leftElements = _left.elements;
            leftElementsAfterIndex = leftElements.splice(_index2);
            _buildAssignmentsFrom2 = buildAssignmentsFromPatternList(leftElementsAfterIndex, scope, isAssignment), elements = _buildAssignmentsFrom2.elements, transformed = _buildAssignmentsFrom2.transformed;
            leftElements.push.apply(leftElements, _toConsumableArray(elements));
            _context5.next = 53;
            return {
              left: _left,
              right: cloneNode$1(_right)
            };
          case 53:
            for (i = transformed.length - 1; i > 0; i--) {
              if (transformed[i] !== null) {
                stack.push(transformed[i]);
              }
            }
            _transformed$ = transformed[0];
            _left = _transformed$.left;
            _right = _transformed$.right;
            return _context5.abrupt("break", 59);
          case 58:
            return _context5.abrupt("break", 59);
          case 59:
            indexPathIndex++;
            _context5.next = 21;
            break;
          case 62:
            stack.push({
              left: _left,
              right: _right,
              restExcludingKeys: initRestExcludingKeys(_left)
            });
          case 63:
            _context5.next = 3;
            break;
          case 65:
          case "end":
            return _context5.stop();
        }
      }, _marked3);
    }
  
    var iifeVisitor = {
      "ReferencedIdentifier|BindingIdentifier": function ReferencedIdentifierBindingIdentifier(path, state) {
        var scope = path.scope,
          node = path.node;
        var name = node.name;
        if (name === "eval" || scope.getBinding(name) === state.scope.parent.getBinding(name) && state.scope.hasOwnBinding(name)) {
          state.needsOuterBinding = true;
          path.stop();
        }
      },
      "TypeAnnotation|TSTypeAnnotation|TypeParameterDeclaration|TSTypeParameterDeclaration": function TypeAnnotationTSTypeAnnotationTypeParameterDeclarationTSTypeParameterDeclaration(path) {
        return path.skip();
      }
    };
    function collectShadowedParamsNames(param, functionScope, shadowedParams) {
      for (var _i = 0, _Object$keys = Object.keys(param.getBindingIdentifiers()); _i < _Object$keys.length; _i++) {
        var _functionScope$bindin;
        var name = _Object$keys[_i];
        var constantViolations = (_functionScope$bindin = functionScope.bindings[name]) == null ? void 0 : _functionScope$bindin.constantViolations;
        if (constantViolations) {
          for (var _iterator = _createForOfIteratorHelperLoose(constantViolations), _step; !(_step = _iterator()).done;) {
            var redeclarator = _step.value;
            var node = redeclarator.node;
            switch (node.type) {
              case "VariableDeclarator":
                {
                  if (node.init === null) {
                    var declaration = redeclarator.parentPath;
                    if (!declaration.parentPath.isFor() || declaration.parentPath.get("body") === declaration) {
                      redeclarator.remove();
                      break;
                    }
                  }
                  shadowedParams.add(name);
                  break;
                }
              case "FunctionDeclaration":
                shadowedParams.add(name);
                break;
            }
          }
        }
      }
    }
    function buildScopeIIFE(shadowedParams, body) {
      var args = [];
      var params = [];
      for (var _iterator2 = _createForOfIteratorHelperLoose(shadowedParams), _step2; !(_step2 = _iterator2()).done;) {
        var name = _step2.value;
        args.push(identifier$i(name));
        params.push(identifier$i(name));
      }
      return returnStatement$3(callExpression$e(arrowFunctionExpression$4(params, body), args));
    }
  
    var _templateObject$k;
    var buildDefaultParam = template$2.statement("\n  let VARIABLE_NAME =\n    arguments.length > ARGUMENT_KEY && arguments[ARGUMENT_KEY] !== undefined ?\n      arguments[ARGUMENT_KEY]\n    :\n      DEFAULT_VALUE;\n");
    var buildLooseDefaultParam = template$2.statement("\n  if (ASSIGNMENT_IDENTIFIER === UNDEFINED) {\n    ASSIGNMENT_IDENTIFIER = DEFAULT_VALUE;\n  }\n");
    var buildLooseDestructuredDefaultParam = template$2.statement("\n  let ASSIGNMENT_IDENTIFIER = PARAMETER_NAME === UNDEFINED ? DEFAULT_VALUE : PARAMETER_NAME ;\n");
    var buildSafeArgumentsAccess = template$2.statement("\n  let $0 = arguments.length > $1 ? arguments[$1] : undefined;\n");
    function convertFunctionParams(path, ignoreFunctionLength, shouldTransformParam, replaceRestElement) {
      var params = path.get("params");
      var isSimpleParameterList = params.every(function (param) {
        return param.isIdentifier();
      });
      if (isSimpleParameterList) return false;
      var node = path.node,
        scope = path.scope;
      var body = [];
      var shadowedParams = new Set();
      for (var _iterator = _createForOfIteratorHelperLoose(params), _step; !(_step = _iterator()).done;) {
        var _param2 = _step.value;
        collectShadowedParamsNames(_param2, scope, shadowedParams);
      }
      var state = {
        needsOuterBinding: false,
        scope: scope
      };
      if (shadowedParams.size === 0) {
        for (var _iterator2 = _createForOfIteratorHelperLoose(params), _step2; !(_step2 = _iterator2()).done;) {
          var param = _step2.value;
          if (!param.isIdentifier()) param.traverse(iifeVisitor, state);
          if (state.needsOuterBinding) break;
        }
      }
      var firstOptionalIndex = null;
      for (var i = 0; i < params.length; i++) {
        var _param = params[i];
        if (shouldTransformParam && !shouldTransformParam(i)) {
          continue;
        }
        var _transformedRestNodes = [];
        if (replaceRestElement) {
          replaceRestElement(path, _param, _transformedRestNodes);
        }
        var paramIsAssignmentPattern = _param.isAssignmentPattern();
        if (paramIsAssignmentPattern && (ignoreFunctionLength || isMethod$1(node, {
          kind: "set"
        }))) {
          var left = _param.get("left");
          var right = _param.get("right");
          var undefinedNode = scope.buildUndefinedNode();
          if (left.isIdentifier()) {
            body.push(buildLooseDefaultParam({
              ASSIGNMENT_IDENTIFIER: cloneNode$j(left.node),
              DEFAULT_VALUE: right.node,
              UNDEFINED: undefinedNode
            }));
            _param.replaceWith(left.node);
          } else if (left.isObjectPattern() || left.isArrayPattern()) {
            var paramName = scope.generateUidIdentifier();
            body.push(buildLooseDestructuredDefaultParam({
              ASSIGNMENT_IDENTIFIER: left.node,
              DEFAULT_VALUE: right.node,
              PARAMETER_NAME: cloneNode$j(paramName),
              UNDEFINED: undefinedNode
            }));
            _param.replaceWith(paramName);
          }
        } else if (paramIsAssignmentPattern) {
          if (firstOptionalIndex === null) firstOptionalIndex = i;
          var _left = _param.get("left");
          var _right = _param.get("right");
          var defNode = buildDefaultParam({
            VARIABLE_NAME: _left.node,
            DEFAULT_VALUE: _right.node,
            ARGUMENT_KEY: numericLiteral$8(i)
          });
          body.push(defNode);
        } else if (firstOptionalIndex !== null) {
          var _defNode = buildSafeArgumentsAccess([_param.node, numericLiteral$8(i)]);
          body.push(_defNode);
        } else if (_param.isObjectPattern() || _param.isArrayPattern()) {
          var uid = path.scope.generateUidIdentifier("ref");
          uid.typeAnnotation = _param.node.typeAnnotation;
          var _defNode2 = variableDeclaration$8("let", [variableDeclarator$8(_param.node, uid)]);
          body.push(_defNode2);
          _param.replaceWith(cloneNode$j(uid));
        }
        if (_transformedRestNodes) {
          for (var _iterator3 = _createForOfIteratorHelperLoose(_transformedRestNodes), _step3; !(_step3 = _iterator3()).done;) {
            var transformedNode = _step3.value;
            body.push(transformedNode);
          }
        }
      }
      if (firstOptionalIndex !== null) {
        node.params = node.params.slice(0, firstOptionalIndex);
      }
      path.ensureBlock();
      var async = node.async,
        generator = node.generator;
      if (generator || state.needsOuterBinding || shadowedParams.size > 0) {
        body.push(buildScopeIIFE(shadowedParams, path.node.body));
        path.set("body", blockStatement$6(body));
        var bodyPath = path.get("body.body");
        var arrowPath = bodyPath[bodyPath.length - 1].get("argument.callee");
        arrowPath.arrowFunctionToExpression();
        arrowPath.node.generator = generator;
        arrowPath.node.async = async;
        node.generator = false;
        node.async = false;
        if (async) {
          path.node.body = template$2.statement.ast(_templateObject$k || (_templateObject$k = _taggedTemplateLiteralLoose(["{\n        try {\n          ", "\n        } catch (e) {\n          return Promise.reject(e);\n        }\n      }"])), path.node.body.body);
        }
      } else {
        path.get("body").unshiftContainer("body", body);
      }
      return true;
    }
  
    var buildRest = template$2.statement("\n  for (var LEN = ARGUMENTS.length,\n           ARRAY = new Array(ARRAY_LEN),\n           KEY = START;\n       KEY < LEN;\n       KEY++) {\n    ARRAY[ARRAY_KEY] = ARGUMENTS[KEY];\n  }\n");
    var restIndex = template$2.expression("\n  (INDEX < OFFSET || ARGUMENTS.length <= INDEX) ? undefined : ARGUMENTS[INDEX]\n");
    var restIndexImpure = template$2.expression("\n  REF = INDEX, (REF < OFFSET || ARGUMENTS.length <= REF) ? undefined : ARGUMENTS[REF]\n");
    var restLength = template$2.expression("\n  ARGUMENTS.length <= OFFSET ? 0 : ARGUMENTS.length - OFFSET\n");
    function referencesRest(path, state) {
      if (path.node.name === state.name) {
        return path.scope.bindingIdentifierEquals(state.name, state.outerBinding);
      }
      return false;
    }
    var memberExpressionOptimisationVisitor = {
      Scope: function Scope(path, state) {
        if (!path.scope.bindingIdentifierEquals(state.name, state.outerBinding)) {
          path.skip();
        }
      },
      Flow: function (_Flow) {
        function Flow(_x) {
          return _Flow.apply(this, arguments);
        }
        Flow.toString = function () {
          return _Flow.toString();
        };
        return Flow;
      }(function (path) {
        if (path.isTypeCastExpression()) return;
        path.skip();
      }),
      Function: function Function(path, state) {
        var oldNoOptimise = state.noOptimise;
        state.noOptimise = true;
        path.traverse(memberExpressionOptimisationVisitor, state);
        state.noOptimise = oldNoOptimise;
        path.skip();
      },
      ReferencedIdentifier: function ReferencedIdentifier(path, state) {
        var node = path.node;
        if (node.name === "arguments") {
          state.deopted = true;
        }
        if (!referencesRest(path, state)) return;
        if (state.noOptimise) {
          state.deopted = true;
        } else {
          var parentPath = path.parentPath;
          if (parentPath.listKey === "params" && parentPath.key < state.offset) {
            return;
          }
          if (parentPath.isMemberExpression({
            object: node
          })) {
            var grandparentPath = parentPath.parentPath;
            var argsOptEligible = !state.deopted && !(grandparentPath.isAssignmentExpression() && parentPath.node === grandparentPath.node.left || grandparentPath.isLVal() || grandparentPath.isForXStatement() || grandparentPath.isUpdateExpression() || grandparentPath.isUnaryExpression({
              operator: "delete"
            }) || (grandparentPath.isCallExpression() || grandparentPath.isNewExpression()) && parentPath.node === grandparentPath.node.callee);
            if (argsOptEligible) {
              if (parentPath.node.computed) {
                if (parentPath.get("property").isBaseType("number")) {
                  state.candidates.push({
                    cause: "indexGetter",
                    path: path
                  });
                  return;
                }
              } else if (parentPath.node.property.name === "length") {
                state.candidates.push({
                  cause: "lengthGetter",
                  path: path
                });
                return;
              }
            }
          }
          if (state.offset === 0 && parentPath.isSpreadElement()) {
            var call = parentPath.parentPath;
            if (call.isCallExpression() && call.node.arguments.length === 1) {
              state.candidates.push({
                cause: "argSpread",
                path: path
              });
              return;
            }
          }
          state.references.push(path);
        }
      },
      BindingIdentifier: function BindingIdentifier(path, state) {
        if (referencesRest(path, state)) {
          state.deopted = true;
        }
      }
    };
    function getParamsCount(node) {
      var count = node.params.length;
      if (count > 0 && isIdentifier$j(node.params[0], {
        name: "this"
      })) {
        count -= 1;
      }
      return count;
    }
    function hasRest(node) {
      var length = node.params.length;
      return length > 0 && isRestElement$3(node.params[length - 1]);
    }
    function optimiseIndexGetter(path, argsId, offset) {
      var offsetLiteral = numericLiteral$8(offset);
      var index;
      var parent = path.parent;
      if (isNumericLiteral(parent.property)) {
        index = numericLiteral$8(parent.property.value + offset);
      } else if (offset === 0) {
        index = parent.property;
      } else {
        index = binaryExpression$5("+", parent.property, cloneNode$j(offsetLiteral));
      }
      var scope = path.scope,
        parentPath = path.parentPath;
      if (!scope.isPure(index)) {
        var temp = scope.generateUidIdentifierBasedOnNode(index);
        scope.push({
          id: temp,
          kind: "var"
        });
        parentPath.replaceWith(restIndexImpure({
          ARGUMENTS: argsId,
          OFFSET: offsetLiteral,
          INDEX: index,
          REF: cloneNode$j(temp)
        }));
      } else {
        parentPath.replaceWith(restIndex({
          ARGUMENTS: argsId,
          OFFSET: offsetLiteral,
          INDEX: index
        }));
        var replacedParentPath = parentPath;
        var offsetTestPath = replacedParentPath.get("test");
        var valRes = offsetTestPath.get("left").evaluate();
        if (valRes.confident) {
          if (valRes.value === true) {
            replacedParentPath.replaceWith(scope.buildUndefinedNode());
          } else {
            offsetTestPath.replaceWith(offsetTestPath.get("right"));
          }
        }
      }
    }
    function optimiseLengthGetter(path, argsId, offset) {
      if (offset) {
        path.parentPath.replaceWith(restLength({
          ARGUMENTS: argsId,
          OFFSET: numericLiteral$8(offset)
        }));
      } else {
        path.replaceWith(argsId);
      }
    }
    function convertFunctionRest(path) {
      var _state$references;
      var node = path.node,
        scope = path.scope;
      if (!hasRest(node)) return false;
      var restPath = path.get("params." + (node.params.length - 1) + ".argument");
      if (!restPath.isIdentifier()) {
        var shadowedParams = new Set();
        collectShadowedParamsNames(restPath, path.scope, shadowedParams);
        var needsIIFE = shadowedParams.size > 0;
        if (!needsIIFE) {
          var _state = {
            needsOuterBinding: false,
            scope: scope
          };
          restPath.traverse(iifeVisitor, _state);
          needsIIFE = _state.needsOuterBinding;
        }
        if (needsIIFE) {
          path.ensureBlock();
          path.set("body", blockStatement$6([buildScopeIIFE(shadowedParams, path.node.body)]));
        }
      }
      var rest = restPath.node;
      node.params.pop();
      if (isPattern(rest)) {
        var pattern = rest;
        rest = scope.generateUidIdentifier("ref");
        var declar = variableDeclaration$8("let", [variableDeclarator$8(pattern, rest)]);
        path.ensureBlock();
        node.body.body.unshift(declar);
      } else if (rest.name === "arguments") {
        scope.rename(rest.name);
      }
      var argsId = identifier$i("arguments");
      var paramsCount = getParamsCount(node);
      var state = {
        references: [],
        offset: paramsCount,
        argumentsNode: argsId,
        outerBinding: scope.getBindingIdentifier(rest.name),
        candidates: [],
        name: rest.name,
        deopted: false
      };
      path.traverse(memberExpressionOptimisationVisitor, state);
      if (!state.deopted && !state.references.length) {
        for (var _iterator = _createForOfIteratorHelperLoose(state.candidates), _step; !(_step = _iterator()).done;) {
          var _step$value = _step.value,
            _path = _step$value.path,
            cause = _step$value.cause;
          var clonedArgsId = cloneNode$j(argsId);
          switch (cause) {
            case "indexGetter":
              optimiseIndexGetter(_path, clonedArgsId, state.offset);
              break;
            case "lengthGetter":
              optimiseLengthGetter(_path, clonedArgsId, state.offset);
              break;
            default:
              _path.replaceWith(clonedArgsId);
          }
        }
        return true;
      }
      (_state$references = state.references).push.apply(_state$references, _toConsumableArray(state.candidates.map(function (_ref) {
        var path = _ref.path;
        return path;
      })));
      var start = numericLiteral$8(paramsCount);
      var key = scope.generateUidIdentifier("key");
      var len = scope.generateUidIdentifier("len");
      var arrKey, arrLen;
      if (paramsCount) {
        arrKey = binaryExpression$5("-", cloneNode$j(key), cloneNode$j(start));
        arrLen = conditionalExpression$4(binaryExpression$5(">", cloneNode$j(len), cloneNode$j(start)), binaryExpression$5("-", cloneNode$j(len), cloneNode$j(start)), numericLiteral$8(0));
      } else {
        arrKey = identifier$i(key.name);
        arrLen = identifier$i(len.name);
      }
      var loop = buildRest({
        ARGUMENTS: argsId,
        ARRAY_KEY: arrKey,
        ARRAY_LEN: arrLen,
        START: start,
        ARRAY: rest,
        KEY: key,
        LEN: len
      });
      if (state.deopted) {
        node.body.body.unshift(loop);
      } else {
        var target = path.getEarliestCommonAncestorFrom(state.references).getStatementParent();
        target.findParent(function (path) {
          if (path.isLoop()) {
            target = path;
          } else {
            return path.isFunction();
          }
        });
        target.insertBefore(loop);
      }
      return true;
    }
  
    var _transformParameters = declare(function (api, options) {
      var _api$assumption, _api$assumption2;
      api.assertVersion(7);
      var ignoreFunctionLength = (_api$assumption = api.assumption("ignoreFunctionLength")) != null ? _api$assumption : options.loose;
      var noNewArrows = (_api$assumption2 = api.assumption("noNewArrows")) != null ? _api$assumption2 : true;
      return {
        name: "transform-parameters",
        visitor: {
          Function: function Function(path) {
            if (path.isArrowFunctionExpression() && path.get("params").some(function (param) {
              return param.isRestElement() || param.isAssignmentPattern();
            })) {
              path.arrowFunctionToExpression({
                allowInsertArrowWithRest: false,
                noNewArrows: noNewArrows
              });
              if (!path.isFunctionExpression()) return;
            }
            var convertedRest = convertFunctionRest(path);
            var convertedParams = convertFunctionParams(path, ignoreFunctionLength);
            if (convertedRest || convertedParams) {
              path.scope.crawl();
            }
          }
        }
      };
    });
  
    var proposalDestructuringPrivate = declare(function (_ref) {
      var assertVersion = _ref.assertVersion,
        assumption = _ref.assumption,
        t = _ref.types;
      assertVersion("^7.17.0");
      var assignmentExpression = t.assignmentExpression,
        assignmentPattern = t.assignmentPattern,
        cloneNode = t.cloneNode,
        expressionStatement = t.expressionStatement,
        isExpressionStatement = t.isExpressionStatement,
        isIdentifier = t.isIdentifier,
        isSequenceExpression = t.isSequenceExpression,
        sequenceExpression = t.sequenceExpression,
        variableDeclaration = t.variableDeclaration,
        variableDeclarator = t.variableDeclarator;
      var ignoreFunctionLength = assumption("ignoreFunctionLength");
      var objectRestNoSymbols = assumption("objectRestNoSymbols");
      var privateKeyDestructuringVisitor = {
        Function: function Function(path) {
          var firstPrivateIndex = path.node.params.findIndex(function (param) {
            return hasPrivateKeys(param);
          });
          if (firstPrivateIndex === -1) return;
          convertFunctionParams(path, ignoreFunctionLength, function () {
            return false;
          });
          var node = path.node,
            scope = path.scope;
          var params = node.params;
          var firstAssignmentPatternIndex = ignoreFunctionLength ? -1 : params.findIndex(function (param) {
            return param.type === "AssignmentPattern";
          });
          var paramsAfterIndex = params.splice(firstPrivateIndex);
          var _buildVariableDeclara = buildVariableDeclarationFromParams(paramsAfterIndex, scope),
            transformedParams = _buildVariableDeclara.params,
            variableDeclaration = _buildVariableDeclara.variableDeclaration;
          path.get("body").unshiftContainer("body", variableDeclaration);
          params.push.apply(params, _toConsumableArray(transformedParams));
          if (firstAssignmentPatternIndex >= firstPrivateIndex) {
            params[firstAssignmentPatternIndex] = assignmentPattern(params[firstAssignmentPatternIndex], scope.buildUndefinedNode());
          }
          scope.crawl();
        },
        CatchClause: function CatchClause(path) {
          var node = path.node,
            scope = path.scope;
          if (!hasPrivateKeys(node.param)) return;
          var ref = scope.generateUidIdentifier("e");
          path.get("body").unshiftContainer("body", variableDeclaration("let", [variableDeclarator(node.param, ref)]));
          node.param = cloneNode(ref);
          scope.crawl();
        },
        ForXStatement: function ForXStatement(path) {
          var node = path.node,
            scope = path.scope;
          var leftPath = path.get("left");
          if (leftPath.isVariableDeclaration()) {
            var left = leftPath.node;
            if (!hasPrivateKeys(left.declarations[0].id)) return;
            var temp = scope.generateUidIdentifier("ref");
            node.left = variableDeclaration(left.kind, [variableDeclarator(temp, null)]);
            left.declarations[0].init = cloneNode(temp);
            unshiftForXStatementBody(path, [left]);
            scope.crawl();
          } else if (leftPath.isPattern()) {
            if (!hasPrivateKeys(leftPath.node)) return;
            var _temp = scope.generateUidIdentifier("ref");
            node.left = variableDeclaration("const", [variableDeclarator(_temp, null)]);
            var assignExpr = expressionStatement(assignmentExpression("=", leftPath.node, cloneNode(_temp)));
            unshiftForXStatementBody(path, [assignExpr]);
            scope.crawl();
          }
        },
        VariableDeclaration: function VariableDeclaration(path, state) {
          var scope = path.scope,
            node = path.node;
          var declarations = node.declarations;
          if (!declarations.some(function (declarator) {
            return hasPrivateKeys(declarator.id);
          })) {
            return;
          }
          var newDeclarations = [];
          for (var _iterator = _createForOfIteratorHelperLoose(declarations), _step; !(_step = _iterator()).done;) {
            var declarator = _step.value;
            for (var _iterator2 = _createForOfIteratorHelperLoose(transformPrivateKeyDestructuring(declarator.id, declarator.init, scope, false, false, function (name) {
                return state.addHelper(name);
              }, objectRestNoSymbols, true)), _step2; !(_step2 = _iterator2()).done;) {
              var _step2$value = _step2.value,
                left = _step2$value.left,
                right = _step2$value.right;
              newDeclarations.push(variableDeclarator(left, right));
            }
          }
          node.declarations = newDeclarations;
          scope.crawl();
        },
        AssignmentExpression: function AssignmentExpression(path, state) {
          var node = path.node,
            scope = path.scope,
            parent = path.parent;
          if (!hasPrivateKeys(node.left)) return;
          var assignments = [];
          var shouldPreserveCompletion = !isExpressionStatement(parent) && !isSequenceExpression(parent) || path.isCompletionRecord();
          for (var _iterator3 = _createForOfIteratorHelperLoose(transformPrivateKeyDestructuring(node.left, node.right, scope, true, shouldPreserveCompletion, function (name) {
              return state.addHelper(name);
            }, objectRestNoSymbols, true)), _step3; !(_step3 = _iterator3()).done;) {
            var _step3$value = _step3.value,
              _left = _step3$value.left,
              _right = _step3$value.right;
            assignments.push(assignmentExpression("=", _left, _right));
          }
          if (shouldPreserveCompletion) {
            var _assignments$ = assignments[0],
              left = _assignments$.left,
              right = _assignments$.right;
            if (isIdentifier(left) && right === node.right) {
              if (!isIdentifier(assignments[assignments.length - 1].right, {
                name: left.name
              })) {
                assignments.push(cloneNode(left));
              }
            } else {
              var tempId = scope.generateDeclaredUidIdentifier("m");
              assignments.unshift(assignmentExpression("=", tempId, cloneNode(node.right)));
              assignments.push(cloneNode(tempId));
            }
          }
          path.replaceWith(sequenceExpression(assignments));
          scope.crawl();
        }
      };
      var visitor = {
        Class: function Class(path, state) {
          if (!hasPrivateClassElement(path.node.body)) return;
          path.traverse(privateKeyDestructuringVisitor, state);
        }
      };
      return {
        name: "proposal-destructuring-private",
        inherits: syntaxDestructuringPrivate,
        visitor: visitor
      };
    });
  
    var proposalDoExpressions = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "proposal-do-expressions",
        inherits: syntaxDoExpressions,
        visitor: {
          DoExpression: {
            exit: function exit(path) {
              var node = path.node;
              if (node.async) {
                return;
              }
              var body = node.body.body;
              if (body.length) {
                path.replaceExpressionWithStatements(body);
              } else {
                path.replaceWith(path.scope.buildUndefinedNode());
              }
            }
          }
        }
      };
    });
  
    var Alphabetic = {};
  
    var regenerate$2 = {exports: {}};
  
    (function (module, exports) {
      (function (root) {
        var freeExports = exports;
        var freeModule = module && module.exports == freeExports && module;
        var freeGlobal = typeof commonjsGlobal == 'object' && commonjsGlobal;
        if (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {
          root = freeGlobal;
        }
        var ERRORS = {
          'rangeOrder': "A range\u2019s `stop` value must be greater than or equal " + 'to the `start` value.',
          'codePointRange': 'Invalid code point value. Code points range from ' + 'U+000000 to U+10FFFF.'
        };
        var HIGH_SURROGATE_MIN = 0xD800;
        var HIGH_SURROGATE_MAX = 0xDBFF;
        var LOW_SURROGATE_MIN = 0xDC00;
        var LOW_SURROGATE_MAX = 0xDFFF;
        var regexNull = /\\x00([^0123456789]|$)/g;
        var object = {};
        var hasOwnProperty = object.hasOwnProperty;
        var extend = function extend(destination, source) {
          var key;
          for (key in source) {
            if (hasOwnProperty.call(source, key)) {
              destination[key] = source[key];
            }
          }
          return destination;
        };
        var forEach = function forEach(array, callback) {
          var index = -1;
          var length = array.length;
          while (++index < length) {
            callback(array[index], index);
          }
        };
        var toString = object.toString;
        var isArray = function isArray(value) {
          return toString.call(value) == '[object Array]';
        };
        var isNumber = function isNumber(value) {
          return typeof value == 'number' || toString.call(value) == '[object Number]';
        };
        var zeroes = '0000';
        var pad = function pad(number, totalCharacters) {
          var string = String(number);
          return string.length < totalCharacters ? (zeroes + string).slice(-totalCharacters) : string;
        };
        var hex = function hex(number) {
          return Number(number).toString(16).toUpperCase();
        };
        var slice = [].slice;
        var dataFromCodePoints = function dataFromCodePoints(codePoints) {
          var index = -1;
          var length = codePoints.length;
          var max = length - 1;
          var result = [];
          var isStart = true;
          var tmp;
          var previous = 0;
          while (++index < length) {
            tmp = codePoints[index];
            if (isStart) {
              result.push(tmp);
              previous = tmp;
              isStart = false;
            } else {
              if (tmp == previous + 1) {
                if (index != max) {
                  previous = tmp;
                  continue;
                } else {
                  isStart = true;
                  result.push(tmp + 1);
                }
              } else {
                result.push(previous + 1, tmp);
                previous = tmp;
              }
            }
          }
          if (!isStart) {
            result.push(tmp + 1);
          }
          return result;
        };
        var dataRemove = function dataRemove(data, codePoint) {
          var index = 0;
          var start;
          var end;
          var length = data.length;
          while (index < length) {
            start = data[index];
            end = data[index + 1];
            if (codePoint >= start && codePoint < end) {
              if (codePoint == start) {
                if (end == start + 1) {
                  data.splice(index, 2);
                  return data;
                } else {
                  data[index] = codePoint + 1;
                  return data;
                }
              } else if (codePoint == end - 1) {
                data[index + 1] = codePoint;
                return data;
              } else {
                data.splice(index, 2, start, codePoint, codePoint + 1, end);
                return data;
              }
            }
            index += 2;
          }
          return data;
        };
        var dataRemoveRange = function dataRemoveRange(data, rangeStart, rangeEnd) {
          if (rangeEnd < rangeStart) {
            throw Error(ERRORS.rangeOrder);
          }
          var index = 0;
          var start;
          var end;
          while (index < data.length) {
            start = data[index];
            end = data[index + 1] - 1;
            if (start > rangeEnd) {
              return data;
            }
            if (rangeStart <= start && rangeEnd >= end) {
              data.splice(index, 2);
              continue;
            }
            if (rangeStart >= start && rangeEnd < end) {
              if (rangeStart == start) {
                data[index] = rangeEnd + 1;
                data[index + 1] = end + 1;
                return data;
              }
              data.splice(index, 2, start, rangeStart, rangeEnd + 1, end + 1);
              return data;
            }
            if (rangeStart >= start && rangeStart <= end) {
              data[index + 1] = rangeStart;
            } else if (rangeEnd >= start && rangeEnd <= end) {
              data[index] = rangeEnd + 1;
              return data;
            }
            index += 2;
          }
          return data;
        };
        var dataAdd = function dataAdd(data, codePoint) {
          var index = 0;
          var start;
          var end;
          var lastIndex = null;
          var length = data.length;
          if (codePoint < 0x0 || codePoint > 0x10FFFF) {
            throw RangeError(ERRORS.codePointRange);
          }
          while (index < length) {
            start = data[index];
            end = data[index + 1];
            if (codePoint >= start && codePoint < end) {
              return data;
            }
            if (codePoint == start - 1) {
              data[index] = codePoint;
              return data;
            }
            if (start > codePoint) {
              data.splice(lastIndex != null ? lastIndex + 2 : 0, 0, codePoint, codePoint + 1);
              return data;
            }
            if (codePoint == end) {
              if (codePoint + 1 == data[index + 2]) {
                data.splice(index, 4, start, data[index + 3]);
                return data;
              }
              data[index + 1] = codePoint + 1;
              return data;
            }
            lastIndex = index;
            index += 2;
          }
          data.push(codePoint, codePoint + 1);
          return data;
        };
        var dataAddData = function dataAddData(dataA, dataB) {
          var index = 0;
          var start;
          var end;
          var data = dataA.slice();
          var length = dataB.length;
          while (index < length) {
            start = dataB[index];
            end = dataB[index + 1] - 1;
            if (start == end) {
              data = dataAdd(data, start);
            } else {
              data = dataAddRange(data, start, end);
            }
            index += 2;
          }
          return data;
        };
        var dataRemoveData = function dataRemoveData(dataA, dataB) {
          var index = 0;
          var start;
          var end;
          var data = dataA.slice();
          var length = dataB.length;
          while (index < length) {
            start = dataB[index];
            end = dataB[index + 1] - 1;
            if (start == end) {
              data = dataRemove(data, start);
            } else {
              data = dataRemoveRange(data, start, end);
            }
            index += 2;
          }
          return data;
        };
        var dataAddRange = function dataAddRange(data, rangeStart, rangeEnd) {
          if (rangeEnd < rangeStart) {
            throw Error(ERRORS.rangeOrder);
          }
          if (rangeStart < 0x0 || rangeStart > 0x10FFFF || rangeEnd < 0x0 || rangeEnd > 0x10FFFF) {
            throw RangeError(ERRORS.codePointRange);
          }
          var index = 0;
          var start;
          var end;
          var added = false;
          var length = data.length;
          while (index < length) {
            start = data[index];
            end = data[index + 1];
            if (added) {
              if (start == rangeEnd + 1) {
                data.splice(index - 1, 2);
                return data;
              }
              if (start > rangeEnd) {
                return data;
              }
              if (start >= rangeStart && start <= rangeEnd) {
                if (end > rangeStart && end - 1 <= rangeEnd) {
                  data.splice(index, 2);
                  index -= 2;
                } else {
                  data.splice(index - 1, 2);
                  index -= 2;
                }
              }
            } else if (start == rangeEnd + 1 || start == rangeEnd) {
              data[index] = rangeStart;
              return data;
            } else if (start > rangeEnd) {
              data.splice(index, 0, rangeStart, rangeEnd + 1);
              return data;
            } else if (rangeStart >= start && rangeStart < end && rangeEnd + 1 <= end) {
              return data;
            } else if (rangeStart >= start && rangeStart < end || end == rangeStart) {
              data[index + 1] = rangeEnd + 1;
              added = true;
            } else if (rangeStart <= start && rangeEnd + 1 >= end) {
              data[index] = rangeStart;
              data[index + 1] = rangeEnd + 1;
              added = true;
            }
            index += 2;
          }
          if (!added) {
            data.push(rangeStart, rangeEnd + 1);
          }
          return data;
        };
        var dataContains = function dataContains(data, codePoint) {
          var index = 0;
          var length = data.length;
          var start = data[index];
          var end = data[length - 1];
          if (length >= 2) {
            if (codePoint < start || codePoint > end) {
              return false;
            }
          }
          while (index < length) {
            start = data[index];
            end = data[index + 1];
            if (codePoint >= start && codePoint < end) {
              return true;
            }
            index += 2;
          }
          return false;
        };
        var dataIntersection = function dataIntersection(data, codePoints) {
          var index = 0;
          var length = codePoints.length;
          var codePoint;
          var result = [];
          while (index < length) {
            codePoint = codePoints[index];
            if (dataContains(data, codePoint)) {
              result.push(codePoint);
            }
            ++index;
          }
          return dataFromCodePoints(result);
        };
        var dataIsEmpty = function dataIsEmpty(data) {
          return !data.length;
        };
        var dataIsSingleton = function dataIsSingleton(data) {
          return data.length == 2 && data[0] + 1 == data[1];
        };
        var dataToArray = function dataToArray(data) {
          var index = 0;
          var start;
          var end;
          var result = [];
          var length = data.length;
          while (index < length) {
            start = data[index];
            end = data[index + 1];
            while (start < end) {
              result.push(start);
              ++start;
            }
            index += 2;
          }
          return result;
        };
        var floor = Math.floor;
        var highSurrogate = function highSurrogate(codePoint) {
          return parseInt(floor((codePoint - 0x10000) / 0x400) + HIGH_SURROGATE_MIN, 10);
        };
        var lowSurrogate = function lowSurrogate(codePoint) {
          return parseInt((codePoint - 0x10000) % 0x400 + LOW_SURROGATE_MIN, 10);
        };
        var stringFromCharCode = String.fromCharCode;
        var codePointToString = function codePointToString(codePoint) {
          var string;
          if (codePoint == 0x09) {
            string = '\\t';
          } else if (codePoint == 0x0A) {
            string = '\\n';
          } else if (codePoint == 0x0C) {
            string = '\\f';
          } else if (codePoint == 0x0D) {
            string = '\\r';
          } else if (codePoint == 0x2D) {
            string = '\\x2D';
          } else if (codePoint == 0x5C) {
            string = '\\\\';
          } else if (codePoint == 0x24 || codePoint >= 0x28 && codePoint <= 0x2B || codePoint == 0x2E || codePoint == 0x2F || codePoint == 0x3F || codePoint >= 0x5B && codePoint <= 0x5E || codePoint >= 0x7B && codePoint <= 0x7D) {
            string = '\\' + stringFromCharCode(codePoint);
          } else if (codePoint >= 0x20 && codePoint <= 0x7E) {
            string = stringFromCharCode(codePoint);
          } else if (codePoint <= 0xFF) {
            string = '\\x' + pad(hex(codePoint), 2);
          } else {
            string = "\\u" + pad(hex(codePoint), 4);
          }
          return string;
        };
        var codePointToStringUnicode = function codePointToStringUnicode(codePoint) {
          if (codePoint <= 0xFFFF) {
            return codePointToString(codePoint);
          }
          return "\\u{" + codePoint.toString(16).toUpperCase() + '}';
        };
        var symbolToCodePoint = function symbolToCodePoint(symbol) {
          var length = symbol.length;
          var first = symbol.charCodeAt(0);
          var second;
          if (first >= HIGH_SURROGATE_MIN && first <= HIGH_SURROGATE_MAX && length > 1) {
            second = symbol.charCodeAt(1);
            return (first - HIGH_SURROGATE_MIN) * 0x400 + second - LOW_SURROGATE_MIN + 0x10000;
          }
          return first;
        };
        var createBMPCharacterClasses = function createBMPCharacterClasses(data) {
          var result = '';
          var index = 0;
          var start;
          var end;
          var length = data.length;
          if (dataIsSingleton(data)) {
            return codePointToString(data[0]);
          }
          while (index < length) {
            start = data[index];
            end = data[index + 1] - 1;
            if (start == end) {
              result += codePointToString(start);
            } else if (start + 1 == end) {
              result += codePointToString(start) + codePointToString(end);
            } else {
              result += codePointToString(start) + '-' + codePointToString(end);
            }
            index += 2;
          }
          return '[' + result + ']';
        };
        var createUnicodeCharacterClasses = function createUnicodeCharacterClasses(data) {
          var result = '';
          var index = 0;
          var start;
          var end;
          var length = data.length;
          if (dataIsSingleton(data)) {
            return codePointToStringUnicode(data[0]);
          }
          while (index < length) {
            start = data[index];
            end = data[index + 1] - 1;
            if (start == end) {
              result += codePointToStringUnicode(start);
            } else if (start + 1 == end) {
              result += codePointToStringUnicode(start) + codePointToStringUnicode(end);
            } else {
              result += codePointToStringUnicode(start) + '-' + codePointToStringUnicode(end);
            }
            index += 2;
          }
          return '[' + result + ']';
        };
        var splitAtBMP = function splitAtBMP(data) {
          var loneHighSurrogates = [];
          var loneLowSurrogates = [];
          var bmp = [];
          var astral = [];
          var index = 0;
          var start;
          var end;
          var length = data.length;
          while (index < length) {
            start = data[index];
            end = data[index + 1] - 1;
            if (start < HIGH_SURROGATE_MIN) {
              if (end < HIGH_SURROGATE_MIN) {
                bmp.push(start, end + 1);
              }
              if (end >= HIGH_SURROGATE_MIN && end <= HIGH_SURROGATE_MAX) {
                bmp.push(start, HIGH_SURROGATE_MIN);
                loneHighSurrogates.push(HIGH_SURROGATE_MIN, end + 1);
              }
              if (end >= LOW_SURROGATE_MIN && end <= LOW_SURROGATE_MAX) {
                bmp.push(start, HIGH_SURROGATE_MIN);
                loneHighSurrogates.push(HIGH_SURROGATE_MIN, HIGH_SURROGATE_MAX + 1);
                loneLowSurrogates.push(LOW_SURROGATE_MIN, end + 1);
              }
              if (end > LOW_SURROGATE_MAX) {
                bmp.push(start, HIGH_SURROGATE_MIN);
                loneHighSurrogates.push(HIGH_SURROGATE_MIN, HIGH_SURROGATE_MAX + 1);
                loneLowSurrogates.push(LOW_SURROGATE_MIN, LOW_SURROGATE_MAX + 1);
                if (end <= 0xFFFF) {
                  bmp.push(LOW_SURROGATE_MAX + 1, end + 1);
                } else {
                  bmp.push(LOW_SURROGATE_MAX + 1, 0xFFFF + 1);
                  astral.push(0xFFFF + 1, end + 1);
                }
              }
            } else if (start >= HIGH_SURROGATE_MIN && start <= HIGH_SURROGATE_MAX) {
              if (end >= HIGH_SURROGATE_MIN && end <= HIGH_SURROGATE_MAX) {
                loneHighSurrogates.push(start, end + 1);
              }
              if (end >= LOW_SURROGATE_MIN && end <= LOW_SURROGATE_MAX) {
                loneHighSurrogates.push(start, HIGH_SURROGATE_MAX + 1);
                loneLowSurrogates.push(LOW_SURROGATE_MIN, end + 1);
              }
              if (end > LOW_SURROGATE_MAX) {
                loneHighSurrogates.push(start, HIGH_SURROGATE_MAX + 1);
                loneLowSurrogates.push(LOW_SURROGATE_MIN, LOW_SURROGATE_MAX + 1);
                if (end <= 0xFFFF) {
                  bmp.push(LOW_SURROGATE_MAX + 1, end + 1);
                } else {
                  bmp.push(LOW_SURROGATE_MAX + 1, 0xFFFF + 1);
                  astral.push(0xFFFF + 1, end + 1);
                }
              }
            } else if (start >= LOW_SURROGATE_MIN && start <= LOW_SURROGATE_MAX) {
              if (end >= LOW_SURROGATE_MIN && end <= LOW_SURROGATE_MAX) {
                loneLowSurrogates.push(start, end + 1);
              }
              if (end > LOW_SURROGATE_MAX) {
                loneLowSurrogates.push(start, LOW_SURROGATE_MAX + 1);
                if (end <= 0xFFFF) {
                  bmp.push(LOW_SURROGATE_MAX + 1, end + 1);
                } else {
                  bmp.push(LOW_SURROGATE_MAX + 1, 0xFFFF + 1);
                  astral.push(0xFFFF + 1, end + 1);
                }
              }
            } else if (start > LOW_SURROGATE_MAX && start <= 0xFFFF) {
              if (end <= 0xFFFF) {
                bmp.push(start, end + 1);
              } else {
                bmp.push(start, 0xFFFF + 1);
                astral.push(0xFFFF + 1, end + 1);
              }
            } else {
              astral.push(start, end + 1);
            }
            index += 2;
          }
          return {
            'loneHighSurrogates': loneHighSurrogates,
            'loneLowSurrogates': loneLowSurrogates,
            'bmp': bmp,
            'astral': astral
          };
        };
        var optimizeSurrogateMappings = function optimizeSurrogateMappings(surrogateMappings) {
          var result = [];
          var tmpLow = [];
          var addLow = false;
          var mapping;
          var nextMapping;
          var highSurrogates;
          var lowSurrogates;
          var nextHighSurrogates;
          var nextLowSurrogates;
          var index = -1;
          var length = surrogateMappings.length;
          while (++index < length) {
            mapping = surrogateMappings[index];
            nextMapping = surrogateMappings[index + 1];
            if (!nextMapping) {
              result.push(mapping);
              continue;
            }
            highSurrogates = mapping[0];
            lowSurrogates = mapping[1];
            nextHighSurrogates = nextMapping[0];
            nextLowSurrogates = nextMapping[1];
            tmpLow = lowSurrogates;
            while (nextHighSurrogates && highSurrogates[0] == nextHighSurrogates[0] && highSurrogates[1] == nextHighSurrogates[1]) {
              if (dataIsSingleton(nextLowSurrogates)) {
                tmpLow = dataAdd(tmpLow, nextLowSurrogates[0]);
              } else {
                tmpLow = dataAddRange(tmpLow, nextLowSurrogates[0], nextLowSurrogates[1] - 1);
              }
              ++index;
              mapping = surrogateMappings[index];
              highSurrogates = mapping[0];
              lowSurrogates = mapping[1];
              nextMapping = surrogateMappings[index + 1];
              nextHighSurrogates = nextMapping && nextMapping[0];
              nextLowSurrogates = nextMapping && nextMapping[1];
              addLow = true;
            }
            result.push([highSurrogates, addLow ? tmpLow : lowSurrogates]);
            addLow = false;
          }
          return optimizeByLowSurrogates(result);
        };
        var optimizeByLowSurrogates = function optimizeByLowSurrogates(surrogateMappings) {
          if (surrogateMappings.length == 1) {
            return surrogateMappings;
          }
          var index = -1;
          var innerIndex = -1;
          while (++index < surrogateMappings.length) {
            var mapping = surrogateMappings[index];
            var lowSurrogates = mapping[1];
            var lowSurrogateStart = lowSurrogates[0];
            var lowSurrogateEnd = lowSurrogates[1];
            innerIndex = index;
            while (++innerIndex < surrogateMappings.length) {
              var otherMapping = surrogateMappings[innerIndex];
              var otherLowSurrogates = otherMapping[1];
              var otherLowSurrogateStart = otherLowSurrogates[0];
              var otherLowSurrogateEnd = otherLowSurrogates[1];
              if (lowSurrogateStart == otherLowSurrogateStart && lowSurrogateEnd == otherLowSurrogateEnd && otherLowSurrogates.length === 2) {
                if (dataIsSingleton(otherMapping[0])) {
                  mapping[0] = dataAdd(mapping[0], otherMapping[0][0]);
                } else {
                  mapping[0] = dataAddRange(mapping[0], otherMapping[0][0], otherMapping[0][1] - 1);
                }
                surrogateMappings.splice(innerIndex, 1);
                --innerIndex;
              }
            }
          }
          return surrogateMappings;
        };
        var surrogateSet = function surrogateSet(data) {
          if (!data.length) {
            return [];
          }
          var index = 0;
          var start;
          var end;
          var startHigh;
          var startLow;
          var endHigh;
          var endLow;
          var surrogateMappings = [];
          var length = data.length;
          while (index < length) {
            start = data[index];
            end = data[index + 1] - 1;
            startHigh = highSurrogate(start);
            startLow = lowSurrogate(start);
            endHigh = highSurrogate(end);
            endLow = lowSurrogate(end);
            var startsWithLowestLowSurrogate = startLow == LOW_SURROGATE_MIN;
            var endsWithHighestLowSurrogate = endLow == LOW_SURROGATE_MAX;
            var complete = false;
            if (startHigh == endHigh || startsWithLowestLowSurrogate && endsWithHighestLowSurrogate) {
              surrogateMappings.push([[startHigh, endHigh + 1], [startLow, endLow + 1]]);
              complete = true;
            } else {
              surrogateMappings.push([[startHigh, startHigh + 1], [startLow, LOW_SURROGATE_MAX + 1]]);
            }
            if (!complete && startHigh + 1 < endHigh) {
              if (endsWithHighestLowSurrogate) {
                surrogateMappings.push([[startHigh + 1, endHigh + 1], [LOW_SURROGATE_MIN, endLow + 1]]);
                complete = true;
              } else {
                surrogateMappings.push([[startHigh + 1, endHigh], [LOW_SURROGATE_MIN, LOW_SURROGATE_MAX + 1]]);
              }
            }
            if (!complete) {
              surrogateMappings.push([[endHigh, endHigh + 1], [LOW_SURROGATE_MIN, endLow + 1]]);
            }
            index += 2;
          }
          return optimizeSurrogateMappings(surrogateMappings);
        };
        var createSurrogateCharacterClasses = function createSurrogateCharacterClasses(surrogateMappings) {
          var result = [];
          forEach(surrogateMappings, function (surrogateMapping) {
            var highSurrogates = surrogateMapping[0];
            var lowSurrogates = surrogateMapping[1];
            result.push(createBMPCharacterClasses(highSurrogates) + createBMPCharacterClasses(lowSurrogates));
          });
          return result.join('|');
        };
        var createCharacterClassesFromData = function createCharacterClassesFromData(data, bmpOnly, hasUnicodeFlag) {
          if (hasUnicodeFlag) {
            return createUnicodeCharacterClasses(data);
          }
          var result = [];
          var parts = splitAtBMP(data);
          var loneHighSurrogates = parts.loneHighSurrogates;
          var loneLowSurrogates = parts.loneLowSurrogates;
          var bmp = parts.bmp;
          var astral = parts.astral;
          var hasLoneHighSurrogates = !dataIsEmpty(loneHighSurrogates);
          var hasLoneLowSurrogates = !dataIsEmpty(loneLowSurrogates);
          var surrogateMappings = surrogateSet(astral);
          if (bmpOnly) {
            bmp = dataAddData(bmp, loneHighSurrogates);
            hasLoneHighSurrogates = false;
            bmp = dataAddData(bmp, loneLowSurrogates);
            hasLoneLowSurrogates = false;
          }
          if (!dataIsEmpty(bmp)) {
            result.push(createBMPCharacterClasses(bmp));
          }
          if (surrogateMappings.length) {
            result.push(createSurrogateCharacterClasses(surrogateMappings));
          }
          if (hasLoneHighSurrogates) {
            result.push(createBMPCharacterClasses(loneHighSurrogates) + "(?![\\uDC00-\\uDFFF])");
          }
          if (hasLoneLowSurrogates) {
            result.push("(?:[^\\uD800-\\uDBFF]|^)" + createBMPCharacterClasses(loneLowSurrogates));
          }
          return result.join('|');
        };
        var regenerate = function regenerate(value) {
          if (arguments.length > 1) {
            value = slice.call(arguments);
          }
          if (this instanceof regenerate) {
            this.data = [];
            return value ? this.add(value) : this;
          }
          return new regenerate().add(value);
        };
        regenerate.version = '1.4.2';
        var proto = regenerate.prototype;
        extend(proto, {
          'add': function add(value) {
            var $this = this;
            if (value == null) {
              return $this;
            }
            if (value instanceof regenerate) {
              $this.data = dataAddData($this.data, value.data);
              return $this;
            }
            if (arguments.length > 1) {
              value = slice.call(arguments);
            }
            if (isArray(value)) {
              forEach(value, function (item) {
                $this.add(item);
              });
              return $this;
            }
            $this.data = dataAdd($this.data, isNumber(value) ? value : symbolToCodePoint(value));
            return $this;
          },
          'remove': function remove(value) {
            var $this = this;
            if (value == null) {
              return $this;
            }
            if (value instanceof regenerate) {
              $this.data = dataRemoveData($this.data, value.data);
              return $this;
            }
            if (arguments.length > 1) {
              value = slice.call(arguments);
            }
            if (isArray(value)) {
              forEach(value, function (item) {
                $this.remove(item);
              });
              return $this;
            }
            $this.data = dataRemove($this.data, isNumber(value) ? value : symbolToCodePoint(value));
            return $this;
          },
          'addRange': function addRange(start, end) {
            var $this = this;
            $this.data = dataAddRange($this.data, isNumber(start) ? start : symbolToCodePoint(start), isNumber(end) ? end : symbolToCodePoint(end));
            return $this;
          },
          'removeRange': function removeRange(start, end) {
            var $this = this;
            var startCodePoint = isNumber(start) ? start : symbolToCodePoint(start);
            var endCodePoint = isNumber(end) ? end : symbolToCodePoint(end);
            $this.data = dataRemoveRange($this.data, startCodePoint, endCodePoint);
            return $this;
          },
          'intersection': function intersection(argument) {
            var $this = this;
            var array = argument instanceof regenerate ? dataToArray(argument.data) : argument;
            $this.data = dataIntersection($this.data, array);
            return $this;
          },
          'contains': function contains(codePoint) {
            return dataContains(this.data, isNumber(codePoint) ? codePoint : symbolToCodePoint(codePoint));
          },
          'clone': function clone() {
            var set = new regenerate();
            set.data = this.data.slice(0);
            return set;
          },
          'toString': function toString(options) {
            var result = createCharacterClassesFromData(this.data, options ? options.bmpOnly : false, options ? options.hasUnicodeFlag : false);
            if (!result) {
              return '[]';
            }
            return result.replace(regexNull, '\\0$1');
          },
          'toRegExp': function toRegExp(flags) {
            var pattern = this.toString(flags && flags.indexOf('u') != -1 ? {
              'hasUnicodeFlag': true
            } : null);
            return RegExp(pattern, flags || '');
          },
          'valueOf': function valueOf() {
            return dataToArray(this.data);
          }
        });
        proto.toArray = proto.valueOf;
        if (freeExports && !freeExports.nodeType) {
          if (freeModule) {
            freeModule.exports = regenerate;
          } else {
            freeExports.regenerate = regenerate;
          }
        } else {
          root.regenerate = regenerate;
        }
      })(commonjsGlobal);
    })(regenerate$2, regenerate$2.exports);
  
    var hasRequiredAlphabetic;
    function requireAlphabetic() {
      if (hasRequiredAlphabetic) return Alphabetic;
      hasRequiredAlphabetic = 1;
      var set = regenerate$2.exports(0xAA, 0xB5, 0xBA, 0x2EC, 0x2EE, 0x345, 0x37F, 0x386, 0x38C, 0x559, 0x5BF, 0x5C7, 0x6FF, 0x7FA, 0x9B2, 0x9CE, 0x9D7, 0x9FC, 0xA51, 0xA5E, 0xAD0, 0xB71, 0xB9C, 0xBD0, 0xBD7, 0xC5D, 0xD4E, 0xDBD, 0xDD6, 0xE4D, 0xE84, 0xEA5, 0xEC6, 0xECD, 0xF00, 0x1038, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x17D7, 0x17DC, 0x1AA7, 0x1CFA, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2071, 0x207F, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x214E, 0x2D27, 0x2D2D, 0x2D6F, 0x2E2F, 0xA7D3, 0xA8C5, 0xA8FB, 0xA9CF, 0xAAC0, 0xAAC2, 0xFB3E, 0x10808, 0x1083C, 0x10F27, 0x110C2, 0x11176, 0x111DA, 0x111DC, 0x11237, 0x11288, 0x11350, 0x11357, 0x114C7, 0x11640, 0x11644, 0x116B8, 0x11909, 0x119E1, 0x11A9D, 0x11C40, 0x11D3A, 0x11D43, 0x11D98, 0x11FB0, 0x16FE3, 0x1B132, 0x1B155, 0x1BC9E, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1E08F, 0x1E14E, 0x1E947, 0x1E94B, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);
      set.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x2C1).addRange(0x2C6, 0x2D1).addRange(0x2E0, 0x2E4).addRange(0x370, 0x374).addRange(0x376, 0x377).addRange(0x37A, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3F5).addRange(0x3F7, 0x481).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x560, 0x588).addRange(0x5B0, 0x5BD).addRange(0x5C1, 0x5C2).addRange(0x5C4, 0x5C5).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F2).addRange(0x610, 0x61A).addRange(0x620, 0x657).addRange(0x659, 0x65F).addRange(0x66E, 0x6D3).addRange(0x6D5, 0x6DC).addRange(0x6E1, 0x6E8).addRange(0x6ED, 0x6EF).addRange(0x6FA, 0x6FC).addRange(0x710, 0x73F).addRange(0x74D, 0x7B1).addRange(0x7CA, 0x7EA).addRange(0x7F4, 0x7F5).addRange(0x800, 0x817).addRange(0x81A, 0x82C).addRange(0x840, 0x858).addRange(0x860, 0x86A).addRange(0x870, 0x887).addRange(0x889, 0x88E).addRange(0x8A0, 0x8C9).addRange(0x8D4, 0x8DF).addRange(0x8E3, 0x8E9).addRange(0x8F0, 0x93B).addRange(0x93D, 0x94C).addRange(0x94E, 0x950).addRange(0x955, 0x963).addRange(0x971, 0x983).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8);
      set.addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9BD, 0x9C4).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CC).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E3).addRange(0x9F0, 0x9F1).addRange(0xA01, 0xA03).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA3E, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4C).addRange(0xA59, 0xA5C).addRange(0xA70, 0xA75).addRange(0xA81, 0xA83).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xABD, 0xAC5).addRange(0xAC7, 0xAC9).addRange(0xACB, 0xACC).addRange(0xAE0, 0xAE3).addRange(0xAF9, 0xAFC).addRange(0xB01, 0xB03).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB3D, 0xB44).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4C).addRange(0xB56, 0xB57).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB63).addRange(0xB82, 0xB83).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A);
      set.addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xBBE, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCC).addRange(0xC00, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC3D, 0xC44).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4C).addRange(0xC55, 0xC56).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC63).addRange(0xC80, 0xC83).addRange(0xC85, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCBD, 0xCC4).addRange(0xCC6, 0xCC8).addRange(0xCCA, 0xCCC).addRange(0xCD5, 0xCD6).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE3).addRange(0xCF1, 0xCF3).addRange(0xD00, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD3A).addRange(0xD3D, 0xD44).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4C).addRange(0xD54, 0xD57).addRange(0xD5F, 0xD63).addRange(0xD7A, 0xD7F).addRange(0xD81, 0xD83).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xDCF, 0xDD4).addRange(0xDD8, 0xDDF).addRange(0xDF2, 0xDF3).addRange(0xE01, 0xE3A).addRange(0xE40, 0xE46).addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A);
      set.addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEB9).addRange(0xEBB, 0xEBD).addRange(0xEC0, 0xEC4).addRange(0xEDC, 0xEDF).addRange(0xF40, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF71, 0xF83).addRange(0xF88, 0xF97).addRange(0xF99, 0xFBC).addRange(0x1000, 0x1036).addRange(0x103B, 0x103F).addRange(0x1050, 0x108F).addRange(0x109A, 0x109D).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FC, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x1380, 0x138F).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1401, 0x166C).addRange(0x166F, 0x167F).addRange(0x1681, 0x169A).addRange(0x16A0, 0x16EA).addRange(0x16EE, 0x16F8).addRange(0x1700, 0x1713).addRange(0x171F, 0x1733).addRange(0x1740, 0x1753).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1772, 0x1773).addRange(0x1780, 0x17B3).addRange(0x17B6, 0x17C8).addRange(0x1820, 0x1878).addRange(0x1880, 0x18AA).addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E).addRange(0x1920, 0x192B);
      set.addRange(0x1930, 0x1938).addRange(0x1950, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x1A00, 0x1A1B).addRange(0x1A20, 0x1A5E).addRange(0x1A61, 0x1A74).addRange(0x1ABF, 0x1AC0).addRange(0x1ACC, 0x1ACE).addRange(0x1B00, 0x1B33).addRange(0x1B35, 0x1B43).addRange(0x1B45, 0x1B4C).addRange(0x1B80, 0x1BA9).addRange(0x1BAC, 0x1BAF).addRange(0x1BBA, 0x1BE5).addRange(0x1BE7, 0x1BF1).addRange(0x1C00, 0x1C36).addRange(0x1C4D, 0x1C4F).addRange(0x1C5A, 0x1C7D).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1CE9, 0x1CEC).addRange(0x1CEE, 0x1CF3).addRange(0x1CF5, 0x1CF6).addRange(0x1D00, 0x1DBF).addRange(0x1DE7, 0x1DF4).addRange(0x1E00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x2090, 0x209C).addRange(0x210A, 0x2113).addRange(0x2119, 0x211D).addRange(0x212A, 0x212D).addRange(0x212F, 0x2139).addRange(0x213C, 0x213F).addRange(0x2145, 0x2149).addRange(0x2160, 0x2188);
      set.addRange(0x24B6, 0x24E9).addRange(0x2C00, 0x2CE4).addRange(0x2CEB, 0x2CEE).addRange(0x2CF2, 0x2CF3).addRange(0x2D00, 0x2D25).addRange(0x2D30, 0x2D67).addRange(0x2D80, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x2DE0, 0x2DFF).addRange(0x3005, 0x3007).addRange(0x3021, 0x3029).addRange(0x3031, 0x3035).addRange(0x3038, 0x303C).addRange(0x3041, 0x3096).addRange(0x309D, 0x309F).addRange(0x30A1, 0x30FA).addRange(0x30FC, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x31A0, 0x31BF).addRange(0x31F0, 0x31FF).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0xA48C).addRange(0xA4D0, 0xA4FD).addRange(0xA500, 0xA60C).addRange(0xA610, 0xA61F).addRange(0xA62A, 0xA62B).addRange(0xA640, 0xA66E).addRange(0xA674, 0xA67B).addRange(0xA67F, 0xA6EF).addRange(0xA717, 0xA71F).addRange(0xA722, 0xA788).addRange(0xA78B, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA805).addRange(0xA807, 0xA827).addRange(0xA840, 0xA873).addRange(0xA880, 0xA8C3).addRange(0xA8F2, 0xA8F7).addRange(0xA8FD, 0xA8FF).addRange(0xA90A, 0xA92A).addRange(0xA930, 0xA952).addRange(0xA960, 0xA97C);
      set.addRange(0xA980, 0xA9B2).addRange(0xA9B4, 0xA9BF).addRange(0xA9E0, 0xA9EF).addRange(0xA9FA, 0xA9FE).addRange(0xAA00, 0xAA36).addRange(0xAA40, 0xAA4D).addRange(0xAA60, 0xAA76).addRange(0xAA7A, 0xAABE).addRange(0xAADB, 0xAADD).addRange(0xAAE0, 0xAAEF).addRange(0xAAF2, 0xAAF5).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB69).addRange(0xAB70, 0xABEA).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1D, 0xFB28).addRange(0xFB2A, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBB1).addRange(0xFBD3, 0xFD3D).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFB).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0xFF66, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D);
      set.addRange(0x10080, 0x100FA).addRange(0x10140, 0x10174).addRange(0x10280, 0x1029C).addRange(0x102A0, 0x102D0).addRange(0x10300, 0x1031F).addRange(0x1032D, 0x1034A).addRange(0x10350, 0x1037A).addRange(0x10380, 0x1039D).addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103CF).addRange(0x103D1, 0x103D5).addRange(0x10400, 0x1049D).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10860, 0x10876).addRange(0x10880, 0x1089E).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x10900, 0x10915).addRange(0x10920, 0x10939).addRange(0x10980, 0x109B7).addRange(0x109BE, 0x109BF).addRange(0x10A00, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A60, 0x10A7C).addRange(0x10A80, 0x10A9C).addRange(0x10AC0, 0x10AC7).addRange(0x10AC9, 0x10AE4);
      set.addRange(0x10B00, 0x10B35).addRange(0x10B40, 0x10B55).addRange(0x10B60, 0x10B72).addRange(0x10B80, 0x10B91).addRange(0x10C00, 0x10C48).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10D00, 0x10D27).addRange(0x10E80, 0x10EA9).addRange(0x10EAB, 0x10EAC).addRange(0x10EB0, 0x10EB1).addRange(0x10F00, 0x10F1C).addRange(0x10F30, 0x10F45).addRange(0x10F70, 0x10F81).addRange(0x10FB0, 0x10FC4).addRange(0x10FE0, 0x10FF6).addRange(0x11000, 0x11045).addRange(0x11071, 0x11075).addRange(0x11080, 0x110B8).addRange(0x110D0, 0x110E8).addRange(0x11100, 0x11132).addRange(0x11144, 0x11147).addRange(0x11150, 0x11172).addRange(0x11180, 0x111BF).addRange(0x111C1, 0x111C4).addRange(0x111CE, 0x111CF).addRange(0x11200, 0x11211).addRange(0x11213, 0x11234).addRange(0x1123E, 0x11241).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A8).addRange(0x112B0, 0x112E8).addRange(0x11300, 0x11303).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1133D, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134C).addRange(0x1135D, 0x11363).addRange(0x11400, 0x11441).addRange(0x11443, 0x11445).addRange(0x11447, 0x1144A).addRange(0x1145F, 0x11461).addRange(0x11480, 0x114C1).addRange(0x114C4, 0x114C5);
      set.addRange(0x11580, 0x115B5).addRange(0x115B8, 0x115BE).addRange(0x115D8, 0x115DD).addRange(0x11600, 0x1163E).addRange(0x11680, 0x116B5).addRange(0x11700, 0x1171A).addRange(0x1171D, 0x1172A).addRange(0x11740, 0x11746).addRange(0x11800, 0x11838).addRange(0x118A0, 0x118DF).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x11935).addRange(0x11937, 0x11938).addRange(0x1193B, 0x1193C).addRange(0x1193F, 0x11942).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D7).addRange(0x119DA, 0x119DF).addRange(0x119E3, 0x119E4).addRange(0x11A00, 0x11A32).addRange(0x11A35, 0x11A3E).addRange(0x11A50, 0x11A97).addRange(0x11AB0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C36).addRange(0x11C38, 0x11C3E).addRange(0x11C72, 0x11C8F).addRange(0x11C92, 0x11CA7).addRange(0x11CA9, 0x11CB6).addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D41).addRange(0x11D46, 0x11D47).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D8E).addRange(0x11D90, 0x11D91).addRange(0x11D93, 0x11D96).addRange(0x11EE0, 0x11EF6).addRange(0x11F00, 0x11F10).addRange(0x11F12, 0x11F3A).addRange(0x11F3E, 0x11F40).addRange(0x12000, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF0).addRange(0x13000, 0x1342F);
      set.addRange(0x13441, 0x13446).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A70, 0x16ABE).addRange(0x16AD0, 0x16AED).addRange(0x16B00, 0x16B2F).addRange(0x16B40, 0x16B43).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E7F).addRange(0x16F00, 0x16F4A).addRange(0x16F4F, 0x16F87).addRange(0x16F8F, 0x16F9F).addRange(0x16FE0, 0x16FE1).addRange(0x16FF0, 0x16FF1).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B000, 0x1B122).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6FA).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D734);
      set.addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D76E).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D7A8).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7CB).addRange(0x1DF00, 0x1DF1E).addRange(0x1DF25, 0x1DF2A).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A).addRange(0x1E030, 0x1E06D).addRange(0x1E100, 0x1E12C).addRange(0x1E137, 0x1E13D).addRange(0x1E290, 0x1E2AD).addRange(0x1E2C0, 0x1E2EB).addRange(0x1E4D0, 0x1E4EB).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4).addRange(0x1E900, 0x1E943).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1F130, 0x1F149).addRange(0x1F150, 0x1F169).addRange(0x1F170, 0x1F189).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B739).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D);
      set.addRange(0x30000, 0x3134A).addRange(0x31350, 0x323AF);
      Alphabetic.characters = set;
      return Alphabetic;
    }
  
    var Any = {};
  
    var hasRequiredAny;
    function requireAny() {
      if (hasRequiredAny) return Any;
      hasRequiredAny = 1;
      var set = regenerate$2.exports();
      set.addRange(0x0, 0x10FFFF);
      Any.characters = set;
      return Any;
    }
  
    var ASCII_Hex_Digit = {};
  
    var hasRequiredASCII_Hex_Digit;
    function requireASCII_Hex_Digit() {
      if (hasRequiredASCII_Hex_Digit) return ASCII_Hex_Digit;
      hasRequiredASCII_Hex_Digit = 1;
      var set = regenerate$2.exports();
      set.addRange(0x30, 0x39).addRange(0x41, 0x46).addRange(0x61, 0x66);
      ASCII_Hex_Digit.characters = set;
      return ASCII_Hex_Digit;
    }
  
    var ASCII = {};
  
    var hasRequiredASCII;
    function requireASCII() {
      if (hasRequiredASCII) return ASCII;
      hasRequiredASCII = 1;
      var set = regenerate$2.exports();
      set.addRange(0x0, 0x7F);
      ASCII.characters = set;
      return ASCII;
    }
  
    var Assigned = {};
  
    var hasRequiredAssigned;
    function requireAssigned() {
      if (hasRequiredAssigned) return Assigned;
      hasRequiredAssigned = 1;
      var set = regenerate$2.exports(0x38C, 0x85E, 0x9B2, 0x9D7, 0xA3C, 0xA51, 0xA5E, 0xAD0, 0xB9C, 0xBD0, 0xBD7, 0xC5D, 0xDBD, 0xDCA, 0xDD6, 0xE84, 0xEA5, 0xEC6, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x1940, 0x1F59, 0x1F5B, 0x1F5D, 0x2D27, 0x2D2D, 0xA7D3, 0xFB3E, 0xFDCF, 0xFEFF, 0x101A0, 0x10808, 0x1083C, 0x1093F, 0x110CD, 0x11288, 0x11350, 0x11357, 0x11909, 0x11D3A, 0x11FB0, 0x1B132, 0x1B155, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1E08F, 0x1E2FF, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E, 0x1F7F0, 0xE0001);
      set.addRange(0x0, 0x377).addRange(0x37A, 0x37F).addRange(0x384, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x52F).addRange(0x531, 0x556).addRange(0x559, 0x58A).addRange(0x58D, 0x58F).addRange(0x591, 0x5C7).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F4).addRange(0x600, 0x70D).addRange(0x70F, 0x74A).addRange(0x74D, 0x7B1).addRange(0x7C0, 0x7FA).addRange(0x7FD, 0x82D).addRange(0x830, 0x83E).addRange(0x840, 0x85B).addRange(0x860, 0x86A).addRange(0x870, 0x88E).addRange(0x890, 0x891).addRange(0x898, 0x983).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9BC, 0x9C4).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CE).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E3).addRange(0x9E6, 0x9FE).addRange(0xA01, 0xA03).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA3E, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA59, 0xA5C).addRange(0xA66, 0xA76).addRange(0xA81, 0xA83).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0);
      set.addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xABC, 0xAC5).addRange(0xAC7, 0xAC9).addRange(0xACB, 0xACD).addRange(0xAE0, 0xAE3).addRange(0xAE6, 0xAF1).addRange(0xAF9, 0xAFF).addRange(0xB01, 0xB03).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB3C, 0xB44).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4D).addRange(0xB55, 0xB57).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB63).addRange(0xB66, 0xB77).addRange(0xB82, 0xB83).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xBBE, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCD).addRange(0xBE6, 0xBFA).addRange(0xC00, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC3C, 0xC44).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC63).addRange(0xC66, 0xC6F).addRange(0xC77, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9);
      set.addRange(0xCBC, 0xCC4).addRange(0xCC6, 0xCC8).addRange(0xCCA, 0xCCD).addRange(0xCD5, 0xCD6).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE3).addRange(0xCE6, 0xCEF).addRange(0xCF1, 0xCF3).addRange(0xD00, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD44).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4F).addRange(0xD54, 0xD63).addRange(0xD66, 0xD7F).addRange(0xD81, 0xD83).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xDCF, 0xDD4).addRange(0xDD8, 0xDDF).addRange(0xDE6, 0xDEF).addRange(0xDF2, 0xDF4).addRange(0xE01, 0xE3A).addRange(0xE3F, 0xE5B).addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEBD).addRange(0xEC0, 0xEC4).addRange(0xEC8, 0xECE).addRange(0xED0, 0xED9).addRange(0xEDC, 0xEDF).addRange(0xF00, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF71, 0xF97).addRange(0xF99, 0xFBC).addRange(0xFBE, 0xFCC).addRange(0xFCE, 0xFDA).addRange(0x1000, 0x10C5).addRange(0x10D0, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5);
      set.addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x135D, 0x137C).addRange(0x1380, 0x1399).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1400, 0x169C).addRange(0x16A0, 0x16F8).addRange(0x1700, 0x1715).addRange(0x171F, 0x1736).addRange(0x1740, 0x1753).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1772, 0x1773).addRange(0x1780, 0x17DD).addRange(0x17E0, 0x17E9).addRange(0x17F0, 0x17F9).addRange(0x1800, 0x1819).addRange(0x1820, 0x1878).addRange(0x1880, 0x18AA).addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E).addRange(0x1920, 0x192B).addRange(0x1930, 0x193B).addRange(0x1944, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x19D0, 0x19DA).addRange(0x19DE, 0x1A1B).addRange(0x1A1E, 0x1A5E).addRange(0x1A60, 0x1A7C).addRange(0x1A7F, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1AA0, 0x1AAD).addRange(0x1AB0, 0x1ACE).addRange(0x1B00, 0x1B4C).addRange(0x1B50, 0x1B7E).addRange(0x1B80, 0x1BF3).addRange(0x1BFC, 0x1C37).addRange(0x1C3B, 0x1C49).addRange(0x1C4D, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CC7).addRange(0x1CD0, 0x1CFA).addRange(0x1D00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D);
      set.addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FC4).addRange(0x1FC6, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FDD, 0x1FEF).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFE).addRange(0x2000, 0x2064).addRange(0x2066, 0x2071).addRange(0x2074, 0x208E).addRange(0x2090, 0x209C).addRange(0x20A0, 0x20C0).addRange(0x20D0, 0x20F0).addRange(0x2100, 0x218B).addRange(0x2190, 0x2426).addRange(0x2440, 0x244A).addRange(0x2460, 0x2B73).addRange(0x2B76, 0x2B95).addRange(0x2B97, 0x2CF3).addRange(0x2CF9, 0x2D25).addRange(0x2D30, 0x2D67).addRange(0x2D6F, 0x2D70).addRange(0x2D7F, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x2DE0, 0x2E5D).addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x2FF0, 0x2FFB).addRange(0x3000, 0x303F).addRange(0x3041, 0x3096).addRange(0x3099, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x3190, 0x31E3).addRange(0x31F0, 0x321E).addRange(0x3220, 0xA48C).addRange(0xA490, 0xA4C6).addRange(0xA4D0, 0xA62B).addRange(0xA640, 0xA6F7).addRange(0xA700, 0xA7CA).addRange(0xA7D0, 0xA7D1);
      set.addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA82C).addRange(0xA830, 0xA839).addRange(0xA840, 0xA877).addRange(0xA880, 0xA8C5).addRange(0xA8CE, 0xA8D9).addRange(0xA8E0, 0xA953).addRange(0xA95F, 0xA97C).addRange(0xA980, 0xA9CD).addRange(0xA9CF, 0xA9D9).addRange(0xA9DE, 0xA9FE).addRange(0xAA00, 0xAA36).addRange(0xAA40, 0xAA4D).addRange(0xAA50, 0xAA59).addRange(0xAA5C, 0xAAC2).addRange(0xAADB, 0xAAF6).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB6B).addRange(0xAB70, 0xABED).addRange(0xABF0, 0xABF9).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xD800, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1D, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBC2).addRange(0xFBD3, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFE19).addRange(0xFE20, 0xFE52).addRange(0xFE54, 0xFE66).addRange(0xFE68, 0xFE6B).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0xFF01, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE);
      set.addRange(0xFFF9, 0xFFFD).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10100, 0x10102).addRange(0x10107, 0x10133).addRange(0x10137, 0x1018E).addRange(0x10190, 0x1019C).addRange(0x101D0, 0x101FD).addRange(0x10280, 0x1029C).addRange(0x102A0, 0x102D0).addRange(0x102E0, 0x102FB).addRange(0x10300, 0x10323).addRange(0x1032D, 0x1034A).addRange(0x10350, 0x1037A).addRange(0x10380, 0x1039D).addRange(0x1039F, 0x103C3).addRange(0x103C8, 0x103D5).addRange(0x10400, 0x1049D).addRange(0x104A0, 0x104A9).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x1056F, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10857, 0x1089E).addRange(0x108A7, 0x108AF).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x108FB, 0x1091B);
      set.addRange(0x1091F, 0x10939).addRange(0x10980, 0x109B7).addRange(0x109BC, 0x109CF).addRange(0x109D2, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A38, 0x10A3A).addRange(0x10A3F, 0x10A48).addRange(0x10A50, 0x10A58).addRange(0x10A60, 0x10A9F).addRange(0x10AC0, 0x10AE6).addRange(0x10AEB, 0x10AF6).addRange(0x10B00, 0x10B35).addRange(0x10B39, 0x10B55).addRange(0x10B58, 0x10B72).addRange(0x10B78, 0x10B91).addRange(0x10B99, 0x10B9C).addRange(0x10BA9, 0x10BAF).addRange(0x10C00, 0x10C48).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10CFA, 0x10D27).addRange(0x10D30, 0x10D39).addRange(0x10E60, 0x10E7E).addRange(0x10E80, 0x10EA9).addRange(0x10EAB, 0x10EAD).addRange(0x10EB0, 0x10EB1).addRange(0x10EFD, 0x10F27).addRange(0x10F30, 0x10F59).addRange(0x10F70, 0x10F89).addRange(0x10FB0, 0x10FCB).addRange(0x10FE0, 0x10FF6).addRange(0x11000, 0x1104D).addRange(0x11052, 0x11075).addRange(0x1107F, 0x110C2).addRange(0x110D0, 0x110E8).addRange(0x110F0, 0x110F9).addRange(0x11100, 0x11134).addRange(0x11136, 0x11147).addRange(0x11150, 0x11176).addRange(0x11180, 0x111DF).addRange(0x111E1, 0x111F4).addRange(0x11200, 0x11211).addRange(0x11213, 0x11241).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A9).addRange(0x112B0, 0x112EA);
      set.addRange(0x112F0, 0x112F9).addRange(0x11300, 0x11303).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1133B, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x1135D, 0x11363).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x11400, 0x1145B).addRange(0x1145D, 0x11461).addRange(0x11480, 0x114C7).addRange(0x114D0, 0x114D9).addRange(0x11580, 0x115B5).addRange(0x115B8, 0x115DD).addRange(0x11600, 0x11644).addRange(0x11650, 0x11659).addRange(0x11660, 0x1166C).addRange(0x11680, 0x116B9).addRange(0x116C0, 0x116C9).addRange(0x11700, 0x1171A).addRange(0x1171D, 0x1172B).addRange(0x11730, 0x11746).addRange(0x11800, 0x1183B).addRange(0x118A0, 0x118F2).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x11935).addRange(0x11937, 0x11938).addRange(0x1193B, 0x11946).addRange(0x11950, 0x11959).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D7).addRange(0x119DA, 0x119E4).addRange(0x11A00, 0x11A47).addRange(0x11A50, 0x11AA2).addRange(0x11AB0, 0x11AF8).addRange(0x11B00, 0x11B09).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C36).addRange(0x11C38, 0x11C45).addRange(0x11C50, 0x11C6C).addRange(0x11C70, 0x11C8F).addRange(0x11C92, 0x11CA7).addRange(0x11CA9, 0x11CB6);
      set.addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D47).addRange(0x11D50, 0x11D59).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D8E).addRange(0x11D90, 0x11D91).addRange(0x11D93, 0x11D98).addRange(0x11DA0, 0x11DA9).addRange(0x11EE0, 0x11EF8).addRange(0x11F00, 0x11F10).addRange(0x11F12, 0x11F3A).addRange(0x11F3E, 0x11F59).addRange(0x11FC0, 0x11FF1).addRange(0x11FFF, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12470, 0x12474).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF2).addRange(0x13000, 0x13455).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A60, 0x16A69).addRange(0x16A6E, 0x16ABE).addRange(0x16AC0, 0x16AC9).addRange(0x16AD0, 0x16AED).addRange(0x16AF0, 0x16AF5).addRange(0x16B00, 0x16B45).addRange(0x16B50, 0x16B59).addRange(0x16B5B, 0x16B61).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E9A).addRange(0x16F00, 0x16F4A).addRange(0x16F4F, 0x16F87).addRange(0x16F8F, 0x16F9F).addRange(0x16FE0, 0x16FE4).addRange(0x16FF0, 0x16FF1).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B000, 0x1B122).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167);
      set.addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1BC9C, 0x1BCA3).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1CF50, 0x1CFC3).addRange(0x1D000, 0x1D0F5).addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D1EA).addRange(0x1D200, 0x1D245).addRange(0x1D2C0, 0x1D2D3).addRange(0x1D2E0, 0x1D2F3).addRange(0x1D300, 0x1D356).addRange(0x1D360, 0x1D378).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D7CB).addRange(0x1D7CE, 0x1DA8B).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF).addRange(0x1DF00, 0x1DF1E).addRange(0x1DF25, 0x1DF2A).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A).addRange(0x1E030, 0x1E06D).addRange(0x1E100, 0x1E12C).addRange(0x1E130, 0x1E13D).addRange(0x1E140, 0x1E149).addRange(0x1E14E, 0x1E14F).addRange(0x1E290, 0x1E2AE).addRange(0x1E2C0, 0x1E2F9);
      set.addRange(0x1E4D0, 0x1E4F9).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4).addRange(0x1E8C7, 0x1E8D6).addRange(0x1E900, 0x1E94B).addRange(0x1E950, 0x1E959).addRange(0x1E95E, 0x1E95F).addRange(0x1EC71, 0x1ECB4).addRange(0x1ED01, 0x1ED3D).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1EEF0, 0x1EEF1).addRange(0x1F000, 0x1F02B).addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F100, 0x1F1AD).addRange(0x1F1E6, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F6D7).addRange(0x1F6DC, 0x1F6EC).addRange(0x1F6F0, 0x1F6FC).addRange(0x1F700, 0x1F776).addRange(0x1F77B, 0x1F7D9).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859);
      set.addRange(0x1F860, 0x1F887).addRange(0x1F890, 0x1F8AD).addRange(0x1F8B0, 0x1F8B1).addRange(0x1F900, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA7C).addRange(0x1FA80, 0x1FA88).addRange(0x1FA90, 0x1FABD).addRange(0x1FABF, 0x1FAC5).addRange(0x1FACE, 0x1FADB).addRange(0x1FAE0, 0x1FAE8).addRange(0x1FAF0, 0x1FAF8).addRange(0x1FB00, 0x1FB92).addRange(0x1FB94, 0x1FBCA).addRange(0x1FBF0, 0x1FBF9).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B739).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A).addRange(0x31350, 0x323AF).addRange(0xE0020, 0xE007F).addRange(0xE0100, 0xE01EF).addRange(0xF0000, 0xFFFFD).addRange(0x100000, 0x10FFFD);
      Assigned.characters = set;
      return Assigned;
    }
  
    var Bidi_Control = {};
  
    var hasRequiredBidi_Control;
    function requireBidi_Control() {
      if (hasRequiredBidi_Control) return Bidi_Control;
      hasRequiredBidi_Control = 1;
      var set = regenerate$2.exports(0x61C);
      set.addRange(0x200E, 0x200F).addRange(0x202A, 0x202E).addRange(0x2066, 0x2069);
      Bidi_Control.characters = set;
      return Bidi_Control;
    }
  
    var Bidi_Mirrored = {};
  
    var hasRequiredBidi_Mirrored;
    function requireBidi_Mirrored() {
      if (hasRequiredBidi_Mirrored) return Bidi_Mirrored;
      hasRequiredBidi_Mirrored = 1;
      var set = regenerate$2.exports(0x3C, 0x3E, 0x5B, 0x5D, 0x7B, 0x7D, 0xAB, 0xBB, 0x2140, 0x2211, 0x2224, 0x2226, 0x2239, 0x2262, 0x2298, 0x27C0, 0x29B8, 0x29C9, 0x29E1, 0x2A24, 0x2A26, 0x2A29, 0x2ADC, 0x2ADE, 0x2AF3, 0x2AFD, 0x2BFE, 0xFF1C, 0xFF1E, 0xFF3B, 0xFF3D, 0xFF5B, 0xFF5D, 0x1D6DB, 0x1D715, 0x1D74F, 0x1D789, 0x1D7C3);
      set.addRange(0x28, 0x29).addRange(0xF3A, 0xF3D).addRange(0x169B, 0x169C).addRange(0x2039, 0x203A).addRange(0x2045, 0x2046).addRange(0x207D, 0x207E).addRange(0x208D, 0x208E).addRange(0x2201, 0x2204).addRange(0x2208, 0x220D).addRange(0x2215, 0x2216).addRange(0x221A, 0x221D).addRange(0x221F, 0x2222).addRange(0x222B, 0x2233).addRange(0x223B, 0x224C).addRange(0x2252, 0x2255).addRange(0x225F, 0x2260).addRange(0x2264, 0x226B).addRange(0x226E, 0x228C).addRange(0x228F, 0x2292).addRange(0x22A2, 0x22A3).addRange(0x22A6, 0x22B8).addRange(0x22BE, 0x22BF).addRange(0x22C9, 0x22CD).addRange(0x22D0, 0x22D1).addRange(0x22D6, 0x22ED).addRange(0x22F0, 0x22FF).addRange(0x2308, 0x230B).addRange(0x2320, 0x2321).addRange(0x2329, 0x232A).addRange(0x2768, 0x2775).addRange(0x27C3, 0x27C6).addRange(0x27C8, 0x27C9).addRange(0x27CB, 0x27CD).addRange(0x27D3, 0x27D6).addRange(0x27DC, 0x27DE).addRange(0x27E2, 0x27EF).addRange(0x2983, 0x2998).addRange(0x299B, 0x29A0).addRange(0x29A2, 0x29AF).addRange(0x29C0, 0x29C5).addRange(0x29CE, 0x29D2).addRange(0x29D4, 0x29D5).addRange(0x29D8, 0x29DC).addRange(0x29E3, 0x29E5).addRange(0x29E8, 0x29E9).addRange(0x29F4, 0x29F9).addRange(0x29FC, 0x29FD).addRange(0x2A0A, 0x2A1C).addRange(0x2A1E, 0x2A21).addRange(0x2A2B, 0x2A2E).addRange(0x2A34, 0x2A35);
      set.addRange(0x2A3C, 0x2A3E).addRange(0x2A57, 0x2A58).addRange(0x2A64, 0x2A65).addRange(0x2A6A, 0x2A6D).addRange(0x2A6F, 0x2A70).addRange(0x2A73, 0x2A74).addRange(0x2A79, 0x2AA3).addRange(0x2AA6, 0x2AAD).addRange(0x2AAF, 0x2AD6).addRange(0x2AE2, 0x2AE6).addRange(0x2AEC, 0x2AEE).addRange(0x2AF7, 0x2AFB).addRange(0x2E02, 0x2E05).addRange(0x2E09, 0x2E0A).addRange(0x2E0C, 0x2E0D).addRange(0x2E1C, 0x2E1D).addRange(0x2E20, 0x2E29).addRange(0x2E55, 0x2E5C).addRange(0x3008, 0x3011).addRange(0x3014, 0x301B).addRange(0xFE59, 0xFE5E).addRange(0xFE64, 0xFE65).addRange(0xFF08, 0xFF09).addRange(0xFF5F, 0xFF60).addRange(0xFF62, 0xFF63);
      Bidi_Mirrored.characters = set;
      return Bidi_Mirrored;
    }
  
    var Case_Ignorable = {};
  
    var hasRequiredCase_Ignorable;
    function requireCase_Ignorable() {
      if (hasRequiredCase_Ignorable) return Case_Ignorable;
      hasRequiredCase_Ignorable = 1;
      var set = regenerate$2.exports(0x27, 0x2E, 0x3A, 0x5E, 0x60, 0xA8, 0xAD, 0xAF, 0xB4, 0x37A, 0x387, 0x559, 0x55F, 0x5BF, 0x5C7, 0x5F4, 0x61C, 0x640, 0x670, 0x70F, 0x711, 0x7FA, 0x7FD, 0x888, 0x93A, 0x93C, 0x94D, 0x971, 0x981, 0x9BC, 0x9CD, 0x9FE, 0xA3C, 0xA51, 0xA75, 0xABC, 0xACD, 0xB01, 0xB3C, 0xB3F, 0xB4D, 0xB82, 0xBC0, 0xBCD, 0xC00, 0xC04, 0xC3C, 0xC81, 0xCBC, 0xCBF, 0xCC6, 0xD4D, 0xD81, 0xDCA, 0xDD6, 0xE31, 0xEB1, 0xEC6, 0xF35, 0xF37, 0xF39, 0xFC6, 0x1082, 0x108D, 0x109D, 0x10FC, 0x17C6, 0x17D7, 0x17DD, 0x1843, 0x18A9, 0x1932, 0x1A1B, 0x1A56, 0x1A60, 0x1A62, 0x1A7F, 0x1AA7, 0x1B34, 0x1B3C, 0x1B42, 0x1BE6, 0x1BED, 0x1CED, 0x1CF4, 0x1D78, 0x1FBD, 0x2024, 0x2027, 0x2071, 0x207F, 0x2D6F, 0x2D7F, 0x2E2F, 0x3005, 0x303B, 0xA015, 0xA60C, 0xA67F, 0xA770, 0xA802, 0xA806, 0xA80B, 0xA82C, 0xA8FF, 0xA9B3, 0xA9CF, 0xAA43, 0xAA4C, 0xAA70, 0xAA7C, 0xAAB0, 0xAAC1, 0xAADD, 0xAAF6, 0xABE5, 0xABE8, 0xABED, 0xFB1E, 0xFE13, 0xFE52, 0xFE55, 0xFEFF, 0xFF07, 0xFF0E, 0xFF1A, 0xFF3E, 0xFF40, 0xFF70, 0xFFE3, 0x101FD, 0x102E0, 0x10A3F, 0x11001, 0x11070, 0x110BD, 0x110C2, 0x110CD, 0x11173, 0x111CF, 0x11234, 0x1123E, 0x11241, 0x112DF, 0x11340, 0x11446, 0x1145E, 0x114BA, 0x1163D, 0x116AB, 0x116AD, 0x116B7, 0x1193E, 0x11943, 0x119E0, 0x11A47, 0x11C3F, 0x11D3A, 0x11D47, 0x11D95, 0x11D97, 0x11F40, 0x11F42, 0x16F4F, 0x1DA75, 0x1DA84, 0x1E08F, 0x1E2AE, 0xE0001);
      set.addRange(0xB7, 0xB8).addRange(0x2B0, 0x36F).addRange(0x374, 0x375).addRange(0x384, 0x385).addRange(0x483, 0x489).addRange(0x591, 0x5BD).addRange(0x5C1, 0x5C2).addRange(0x5C4, 0x5C5).addRange(0x600, 0x605).addRange(0x610, 0x61A).addRange(0x64B, 0x65F).addRange(0x6D6, 0x6DD).addRange(0x6DF, 0x6E8).addRange(0x6EA, 0x6ED).addRange(0x730, 0x74A).addRange(0x7A6, 0x7B0).addRange(0x7EB, 0x7F5).addRange(0x816, 0x82D).addRange(0x859, 0x85B).addRange(0x890, 0x891).addRange(0x898, 0x89F).addRange(0x8C9, 0x902).addRange(0x941, 0x948).addRange(0x951, 0x957).addRange(0x962, 0x963).addRange(0x9C1, 0x9C4).addRange(0x9E2, 0x9E3).addRange(0xA01, 0xA02).addRange(0xA41, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA70, 0xA71).addRange(0xA81, 0xA82).addRange(0xAC1, 0xAC5).addRange(0xAC7, 0xAC8).addRange(0xAE2, 0xAE3).addRange(0xAFA, 0xAFF).addRange(0xB41, 0xB44).addRange(0xB55, 0xB56).addRange(0xB62, 0xB63).addRange(0xC3E, 0xC40).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC62, 0xC63).addRange(0xCCC, 0xCCD).addRange(0xCE2, 0xCE3).addRange(0xD00, 0xD01).addRange(0xD3B, 0xD3C).addRange(0xD41, 0xD44).addRange(0xD62, 0xD63);
      set.addRange(0xDD2, 0xDD4).addRange(0xE34, 0xE3A).addRange(0xE46, 0xE4E).addRange(0xEB4, 0xEBC).addRange(0xEC8, 0xECE).addRange(0xF18, 0xF19).addRange(0xF71, 0xF7E).addRange(0xF80, 0xF84).addRange(0xF86, 0xF87).addRange(0xF8D, 0xF97).addRange(0xF99, 0xFBC).addRange(0x102D, 0x1030).addRange(0x1032, 0x1037).addRange(0x1039, 0x103A).addRange(0x103D, 0x103E).addRange(0x1058, 0x1059).addRange(0x105E, 0x1060).addRange(0x1071, 0x1074).addRange(0x1085, 0x1086).addRange(0x135D, 0x135F).addRange(0x1712, 0x1714).addRange(0x1732, 0x1733).addRange(0x1752, 0x1753).addRange(0x1772, 0x1773).addRange(0x17B4, 0x17B5).addRange(0x17B7, 0x17BD).addRange(0x17C9, 0x17D3).addRange(0x180B, 0x180F).addRange(0x1885, 0x1886).addRange(0x1920, 0x1922).addRange(0x1927, 0x1928).addRange(0x1939, 0x193B).addRange(0x1A17, 0x1A18).addRange(0x1A58, 0x1A5E).addRange(0x1A65, 0x1A6C).addRange(0x1A73, 0x1A7C).addRange(0x1AB0, 0x1ACE).addRange(0x1B00, 0x1B03).addRange(0x1B36, 0x1B3A).addRange(0x1B6B, 0x1B73).addRange(0x1B80, 0x1B81).addRange(0x1BA2, 0x1BA5).addRange(0x1BA8, 0x1BA9).addRange(0x1BAB, 0x1BAD).addRange(0x1BE8, 0x1BE9).addRange(0x1BEF, 0x1BF1).addRange(0x1C2C, 0x1C33).addRange(0x1C36, 0x1C37).addRange(0x1C78, 0x1C7D).addRange(0x1CD0, 0x1CD2).addRange(0x1CD4, 0x1CE0);
      set.addRange(0x1CE2, 0x1CE8).addRange(0x1CF8, 0x1CF9).addRange(0x1D2C, 0x1D6A).addRange(0x1D9B, 0x1DFF).addRange(0x1FBF, 0x1FC1).addRange(0x1FCD, 0x1FCF).addRange(0x1FDD, 0x1FDF).addRange(0x1FED, 0x1FEF).addRange(0x1FFD, 0x1FFE).addRange(0x200B, 0x200F).addRange(0x2018, 0x2019).addRange(0x202A, 0x202E).addRange(0x2060, 0x2064).addRange(0x2066, 0x206F).addRange(0x2090, 0x209C).addRange(0x20D0, 0x20F0).addRange(0x2C7C, 0x2C7D).addRange(0x2CEF, 0x2CF1).addRange(0x2DE0, 0x2DFF).addRange(0x302A, 0x302D).addRange(0x3031, 0x3035).addRange(0x3099, 0x309E).addRange(0x30FC, 0x30FE).addRange(0xA4F8, 0xA4FD).addRange(0xA66F, 0xA672).addRange(0xA674, 0xA67D).addRange(0xA69C, 0xA69F).addRange(0xA6F0, 0xA6F1).addRange(0xA700, 0xA721).addRange(0xA788, 0xA78A).addRange(0xA7F2, 0xA7F4).addRange(0xA7F8, 0xA7F9).addRange(0xA825, 0xA826).addRange(0xA8C4, 0xA8C5).addRange(0xA8E0, 0xA8F1).addRange(0xA926, 0xA92D).addRange(0xA947, 0xA951).addRange(0xA980, 0xA982).addRange(0xA9B6, 0xA9B9).addRange(0xA9BC, 0xA9BD).addRange(0xA9E5, 0xA9E6).addRange(0xAA29, 0xAA2E).addRange(0xAA31, 0xAA32).addRange(0xAA35, 0xAA36).addRange(0xAAB2, 0xAAB4).addRange(0xAAB7, 0xAAB8).addRange(0xAABE, 0xAABF).addRange(0xAAEC, 0xAAED).addRange(0xAAF3, 0xAAF4).addRange(0xAB5B, 0xAB5F).addRange(0xAB69, 0xAB6B);
      set.addRange(0xFBB2, 0xFBC2).addRange(0xFE00, 0xFE0F).addRange(0xFE20, 0xFE2F).addRange(0xFF9E, 0xFF9F).addRange(0xFFF9, 0xFFFB).addRange(0x10376, 0x1037A).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10A01, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A0F).addRange(0x10A38, 0x10A3A).addRange(0x10AE5, 0x10AE6).addRange(0x10D24, 0x10D27).addRange(0x10EAB, 0x10EAC).addRange(0x10EFD, 0x10EFF).addRange(0x10F46, 0x10F50).addRange(0x10F82, 0x10F85).addRange(0x11038, 0x11046).addRange(0x11073, 0x11074).addRange(0x1107F, 0x11081).addRange(0x110B3, 0x110B6).addRange(0x110B9, 0x110BA).addRange(0x11100, 0x11102).addRange(0x11127, 0x1112B).addRange(0x1112D, 0x11134).addRange(0x11180, 0x11181).addRange(0x111B6, 0x111BE).addRange(0x111C9, 0x111CC).addRange(0x1122F, 0x11231).addRange(0x11236, 0x11237).addRange(0x112E3, 0x112EA).addRange(0x11300, 0x11301).addRange(0x1133B, 0x1133C).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x11438, 0x1143F).addRange(0x11442, 0x11444).addRange(0x114B3, 0x114B8).addRange(0x114BF, 0x114C0).addRange(0x114C2, 0x114C3).addRange(0x115B2, 0x115B5).addRange(0x115BC, 0x115BD).addRange(0x115BF, 0x115C0).addRange(0x115DC, 0x115DD).addRange(0x11633, 0x1163A).addRange(0x1163F, 0x11640).addRange(0x116B0, 0x116B5).addRange(0x1171D, 0x1171F).addRange(0x11722, 0x11725);
      set.addRange(0x11727, 0x1172B).addRange(0x1182F, 0x11837).addRange(0x11839, 0x1183A).addRange(0x1193B, 0x1193C).addRange(0x119D4, 0x119D7).addRange(0x119DA, 0x119DB).addRange(0x11A01, 0x11A0A).addRange(0x11A33, 0x11A38).addRange(0x11A3B, 0x11A3E).addRange(0x11A51, 0x11A56).addRange(0x11A59, 0x11A5B).addRange(0x11A8A, 0x11A96).addRange(0x11A98, 0x11A99).addRange(0x11C30, 0x11C36).addRange(0x11C38, 0x11C3D).addRange(0x11C92, 0x11CA7).addRange(0x11CAA, 0x11CB0).addRange(0x11CB2, 0x11CB3).addRange(0x11CB5, 0x11CB6).addRange(0x11D31, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D45).addRange(0x11D90, 0x11D91).addRange(0x11EF3, 0x11EF4).addRange(0x11F00, 0x11F01).addRange(0x11F36, 0x11F3A).addRange(0x13430, 0x13440).addRange(0x13447, 0x13455).addRange(0x16AF0, 0x16AF4).addRange(0x16B30, 0x16B36).addRange(0x16B40, 0x16B43).addRange(0x16F8F, 0x16F9F).addRange(0x16FE0, 0x16FE1).addRange(0x16FE3, 0x16FE4).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1BC9D, 0x1BC9E).addRange(0x1BCA0, 0x1BCA3).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1D167, 0x1D169).addRange(0x1D173, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0x1D242, 0x1D244).addRange(0x1DA00, 0x1DA36).addRange(0x1DA3B, 0x1DA6C).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF).addRange(0x1E000, 0x1E006);
      set.addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A).addRange(0x1E030, 0x1E06D).addRange(0x1E130, 0x1E13D).addRange(0x1E2EC, 0x1E2EF).addRange(0x1E4EB, 0x1E4EF).addRange(0x1E8D0, 0x1E8D6).addRange(0x1E944, 0x1E94B).addRange(0x1F3FB, 0x1F3FF).addRange(0xE0020, 0xE007F).addRange(0xE0100, 0xE01EF);
      Case_Ignorable.characters = set;
      return Case_Ignorable;
    }
  
    var Cased = {};
  
    var hasRequiredCased;
    function requireCased() {
      if (hasRequiredCased) return Cased;
      hasRequiredCased = 1;
      var set = regenerate$2.exports(0xAA, 0xB5, 0xBA, 0x345, 0x37F, 0x386, 0x38C, 0x10C7, 0x10CD, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2071, 0x207F, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x2139, 0x214E, 0x2D27, 0x2D2D, 0xA7D3, 0x10780, 0x1D4A2, 0x1D4BB, 0x1D546);
      set.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x1BA).addRange(0x1BC, 0x1BF).addRange(0x1C4, 0x293).addRange(0x295, 0x2B8).addRange(0x2C0, 0x2C1).addRange(0x2E0, 0x2E4).addRange(0x370, 0x373).addRange(0x376, 0x377).addRange(0x37A, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3F5).addRange(0x3F7, 0x481).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x560, 0x588).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FC, 0x10FF).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1D00, 0x1DBF).addRange(0x1E00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x2090, 0x209C).addRange(0x210A, 0x2113).addRange(0x2119, 0x211D).addRange(0x212A, 0x212D).addRange(0x212F, 0x2134).addRange(0x213C, 0x213F).addRange(0x2145, 0x2149);
      set.addRange(0x2160, 0x217F).addRange(0x2183, 0x2184).addRange(0x24B6, 0x24E9).addRange(0x2C00, 0x2CE4).addRange(0x2CEB, 0x2CEE).addRange(0x2CF2, 0x2CF3).addRange(0x2D00, 0x2D25).addRange(0xA640, 0xA66D).addRange(0xA680, 0xA69D).addRange(0xA722, 0xA787).addRange(0xA78B, 0xA78E).addRange(0xA790, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA7F6).addRange(0xA7F8, 0xA7FA).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB69).addRange(0xAB70, 0xABBF).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0x10400, 0x1044F).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10783, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x118A0, 0x118DF).addRange(0x16E40, 0x16E7F).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514);
      set.addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6FA).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D734).addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D76E).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D7A8).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7CB).addRange(0x1DF00, 0x1DF09).addRange(0x1DF0B, 0x1DF1E).addRange(0x1DF25, 0x1DF2A).addRange(0x1E030, 0x1E06D).addRange(0x1E900, 0x1E943).addRange(0x1F130, 0x1F149).addRange(0x1F150, 0x1F169).addRange(0x1F170, 0x1F189);
      Cased.characters = set;
      return Cased;
    }
  
    var Changes_When_Casefolded = {};
  
    var hasRequiredChanges_When_Casefolded;
    function requireChanges_When_Casefolded() {
      if (hasRequiredChanges_When_Casefolded) return Changes_When_Casefolded;
      hasRequiredChanges_When_Casefolded = 1;
      var set = regenerate$2.exports(0xB5, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, 0x10E, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, 0x11C, 0x11E, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12A, 0x12C, 0x12E, 0x130, 0x132, 0x134, 0x136, 0x139, 0x13B, 0x13D, 0x13F, 0x141, 0x143, 0x145, 0x147, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, 0x172, 0x174, 0x176, 0x17B, 0x17D, 0x17F, 0x184, 0x1A2, 0x1A4, 0x1A9, 0x1AC, 0x1B5, 0x1BC, 0x1CD, 0x1CF, 0x1D1, 0x1D3, 0x1D5, 0x1D7, 0x1D9, 0x1DB, 0x1DE, 0x1E0, 0x1E2, 0x1E4, 0x1E6, 0x1E8, 0x1EA, 0x1EC, 0x1EE, 0x1F4, 0x1FA, 0x1FC, 0x1FE, 0x200, 0x202, 0x204, 0x206, 0x208, 0x20A, 0x20C, 0x20E, 0x210, 0x212, 0x214, 0x216, 0x218, 0x21A, 0x21C, 0x21E, 0x220, 0x222, 0x224, 0x226, 0x228, 0x22A, 0x22C, 0x22E, 0x230, 0x232, 0x241, 0x248, 0x24A, 0x24C, 0x24E, 0x345, 0x370, 0x372, 0x376, 0x37F, 0x386, 0x38C, 0x3C2, 0x3D8, 0x3DA, 0x3DC, 0x3DE, 0x3E0, 0x3E2, 0x3E4, 0x3E6, 0x3E8, 0x3EA, 0x3EC, 0x3EE, 0x3F7, 0x460, 0x462, 0x464, 0x466, 0x468, 0x46A, 0x46C, 0x46E, 0x470, 0x472, 0x474, 0x476, 0x478, 0x47A, 0x47C, 0x47E, 0x480, 0x48A, 0x48C, 0x48E, 0x490, 0x492, 0x494, 0x496, 0x498, 0x49A, 0x49C, 0x49E, 0x4A0, 0x4A2, 0x4A4, 0x4A6, 0x4A8, 0x4AA, 0x4AC, 0x4AE, 0x4B0, 0x4B2, 0x4B4, 0x4B6, 0x4B8, 0x4BA, 0x4BC, 0x4BE, 0x4C3, 0x4C5, 0x4C7, 0x4C9, 0x4CB, 0x4CD, 0x4D0, 0x4D2, 0x4D4, 0x4D6, 0x4D8, 0x4DA, 0x4DC, 0x4DE, 0x4E0, 0x4E2, 0x4E4, 0x4E6, 0x4E8, 0x4EA, 0x4EC, 0x4EE, 0x4F0, 0x4F2, 0x4F4, 0x4F6, 0x4F8, 0x4FA, 0x4FC, 0x4FE, 0x500, 0x502, 0x504, 0x506, 0x508, 0x50A, 0x50C, 0x50E, 0x510, 0x512, 0x514, 0x516, 0x518, 0x51A, 0x51C, 0x51E, 0x520, 0x522, 0x524, 0x526, 0x528, 0x52A, 0x52C, 0x52E, 0x587, 0x10C7, 0x10CD, 0x1E00, 0x1E02, 0x1E04, 0x1E06, 0x1E08, 0x1E0A, 0x1E0C, 0x1E0E, 0x1E10, 0x1E12, 0x1E14, 0x1E16, 0x1E18, 0x1E1A, 0x1E1C, 0x1E1E, 0x1E20, 0x1E22, 0x1E24, 0x1E26, 0x1E28, 0x1E2A, 0x1E2C, 0x1E2E, 0x1E30, 0x1E32, 0x1E34, 0x1E36, 0x1E38, 0x1E3A, 0x1E3C, 0x1E3E, 0x1E40, 0x1E42, 0x1E44, 0x1E46, 0x1E48, 0x1E4A, 0x1E4C, 0x1E4E, 0x1E50, 0x1E52, 0x1E54, 0x1E56, 0x1E58, 0x1E5A, 0x1E5C, 0x1E5E, 0x1E60, 0x1E62, 0x1E64, 0x1E66, 0x1E68, 0x1E6A, 0x1E6C, 0x1E6E, 0x1E70, 0x1E72, 0x1E74, 0x1E76, 0x1E78, 0x1E7A, 0x1E7C, 0x1E7E, 0x1E80, 0x1E82, 0x1E84, 0x1E86, 0x1E88, 0x1E8A, 0x1E8C, 0x1E8E, 0x1E90, 0x1E92, 0x1E94, 0x1E9E, 0x1EA0, 0x1EA2, 0x1EA4, 0x1EA6, 0x1EA8, 0x1EAA, 0x1EAC, 0x1EAE, 0x1EB0, 0x1EB2, 0x1EB4, 0x1EB6, 0x1EB8, 0x1EBA, 0x1EBC, 0x1EBE, 0x1EC0, 0x1EC2, 0x1EC4, 0x1EC6, 0x1EC8, 0x1ECA, 0x1ECC, 0x1ECE, 0x1ED0, 0x1ED2, 0x1ED4, 0x1ED6, 0x1ED8, 0x1EDA, 0x1EDC, 0x1EDE, 0x1EE0, 0x1EE2, 0x1EE4, 0x1EE6, 0x1EE8, 0x1EEA, 0x1EEC, 0x1EEE, 0x1EF0, 0x1EF2, 0x1EF4, 0x1EF6, 0x1EF8, 0x1EFA, 0x1EFC, 0x1EFE, 0x1F59, 0x1F5B, 0x1F5D, 0x1F5F, 0x2126, 0x2132, 0x2183, 0x2C60, 0x2C67, 0x2C69, 0x2C6B, 0x2C72, 0x2C75, 0x2C82, 0x2C84, 0x2C86, 0x2C88, 0x2C8A, 0x2C8C, 0x2C8E, 0x2C90, 0x2C92, 0x2C94, 0x2C96, 0x2C98, 0x2C9A, 0x2C9C, 0x2C9E, 0x2CA0, 0x2CA2, 0x2CA4, 0x2CA6, 0x2CA8, 0x2CAA, 0x2CAC, 0x2CAE, 0x2CB0, 0x2CB2, 0x2CB4, 0x2CB6, 0x2CB8, 0x2CBA, 0x2CBC, 0x2CBE, 0x2CC0, 0x2CC2, 0x2CC4, 0x2CC6, 0x2CC8, 0x2CCA, 0x2CCC, 0x2CCE, 0x2CD0, 0x2CD2, 0x2CD4, 0x2CD6, 0x2CD8, 0x2CDA, 0x2CDC, 0x2CDE, 0x2CE0, 0x2CE2, 0x2CEB, 0x2CED, 0x2CF2, 0xA640, 0xA642, 0xA644, 0xA646, 0xA648, 0xA64A, 0xA64C, 0xA64E, 0xA650, 0xA652, 0xA654, 0xA656, 0xA658, 0xA65A, 0xA65C, 0xA65E, 0xA660, 0xA662, 0xA664, 0xA666, 0xA668, 0xA66A, 0xA66C, 0xA680, 0xA682, 0xA684, 0xA686, 0xA688, 0xA68A, 0xA68C, 0xA68E, 0xA690, 0xA692, 0xA694, 0xA696, 0xA698, 0xA69A, 0xA722, 0xA724, 0xA726, 0xA728, 0xA72A, 0xA72C, 0xA72E, 0xA732, 0xA734, 0xA736, 0xA738, 0xA73A, 0xA73C, 0xA73E, 0xA740, 0xA742, 0xA744, 0xA746, 0xA748, 0xA74A, 0xA74C, 0xA74E, 0xA750, 0xA752, 0xA754, 0xA756, 0xA758, 0xA75A, 0xA75C, 0xA75E, 0xA760, 0xA762, 0xA764, 0xA766, 0xA768, 0xA76A, 0xA76C, 0xA76E, 0xA779, 0xA77B, 0xA780, 0xA782, 0xA784, 0xA786, 0xA78B, 0xA78D, 0xA790, 0xA792, 0xA796, 0xA798, 0xA79A, 0xA79C, 0xA79E, 0xA7A0, 0xA7A2, 0xA7A4, 0xA7A6, 0xA7A8, 0xA7B6, 0xA7B8, 0xA7BA, 0xA7BC, 0xA7BE, 0xA7C0, 0xA7C2, 0xA7C9, 0xA7D0, 0xA7D6, 0xA7D8, 0xA7F5);
      set.addRange(0x41, 0x5A).addRange(0xC0, 0xD6).addRange(0xD8, 0xDF).addRange(0x149, 0x14A).addRange(0x178, 0x179).addRange(0x181, 0x182).addRange(0x186, 0x187).addRange(0x189, 0x18B).addRange(0x18E, 0x191).addRange(0x193, 0x194).addRange(0x196, 0x198).addRange(0x19C, 0x19D).addRange(0x19F, 0x1A0).addRange(0x1A6, 0x1A7).addRange(0x1AE, 0x1AF).addRange(0x1B1, 0x1B3).addRange(0x1B7, 0x1B8).addRange(0x1C4, 0x1C5).addRange(0x1C7, 0x1C8).addRange(0x1CA, 0x1CB).addRange(0x1F1, 0x1F2).addRange(0x1F6, 0x1F8).addRange(0x23A, 0x23B).addRange(0x23D, 0x23E).addRange(0x243, 0x246).addRange(0x388, 0x38A).addRange(0x38E, 0x38F).addRange(0x391, 0x3A1).addRange(0x3A3, 0x3AB).addRange(0x3CF, 0x3D1).addRange(0x3D5, 0x3D6).addRange(0x3F0, 0x3F1).addRange(0x3F4, 0x3F5).addRange(0x3F9, 0x3FA).addRange(0x3FD, 0x42F).addRange(0x4C0, 0x4C1).addRange(0x531, 0x556).addRange(0x10A0, 0x10C5).addRange(0x13F8, 0x13FD).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1E9A, 0x1E9B).addRange(0x1F08, 0x1F0F).addRange(0x1F18, 0x1F1D).addRange(0x1F28, 0x1F2F).addRange(0x1F38, 0x1F3F).addRange(0x1F48, 0x1F4D).addRange(0x1F68, 0x1F6F).addRange(0x1F80, 0x1FAF).addRange(0x1FB2, 0x1FB4);
      set.addRange(0x1FB7, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC7, 0x1FCC).addRange(0x1FD8, 0x1FDB).addRange(0x1FE8, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF7, 0x1FFC).addRange(0x212A, 0x212B).addRange(0x2160, 0x216F).addRange(0x24B6, 0x24CF).addRange(0x2C00, 0x2C2F).addRange(0x2C62, 0x2C64).addRange(0x2C6D, 0x2C70).addRange(0x2C7E, 0x2C80).addRange(0xA77D, 0xA77E).addRange(0xA7AA, 0xA7AE).addRange(0xA7B0, 0xA7B4).addRange(0xA7C4, 0xA7C7).addRange(0xAB70, 0xABBF).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFF21, 0xFF3A).addRange(0x10400, 0x10427).addRange(0x104B0, 0x104D3).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10C80, 0x10CB2).addRange(0x118A0, 0x118BF).addRange(0x16E40, 0x16E5F).addRange(0x1E900, 0x1E921);
      Changes_When_Casefolded.characters = set;
      return Changes_When_Casefolded;
    }
  
    var Changes_When_Casemapped = {};
  
    var hasRequiredChanges_When_Casemapped;
    function requireChanges_When_Casemapped() {
      if (hasRequiredChanges_When_Casemapped) return Changes_When_Casemapped;
      hasRequiredChanges_When_Casemapped = 1;
      var set = regenerate$2.exports(0xB5, 0x1BF, 0x259, 0x263, 0x26F, 0x275, 0x27D, 0x280, 0x292, 0x345, 0x37F, 0x386, 0x38C, 0x10C7, 0x10CD, 0x1D79, 0x1D7D, 0x1D8E, 0x1E9E, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2126, 0x2132, 0x214E, 0x2D27, 0x2D2D, 0xAB53);
      set.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x137).addRange(0x139, 0x18C).addRange(0x18E, 0x19A).addRange(0x19C, 0x1A9).addRange(0x1AC, 0x1B9).addRange(0x1BC, 0x1BD).addRange(0x1C4, 0x220).addRange(0x222, 0x233).addRange(0x23A, 0x254).addRange(0x256, 0x257).addRange(0x25B, 0x25C).addRange(0x260, 0x261).addRange(0x265, 0x266).addRange(0x268, 0x26C).addRange(0x271, 0x272).addRange(0x282, 0x283).addRange(0x287, 0x28C).addRange(0x29D, 0x29E).addRange(0x370, 0x373).addRange(0x376, 0x377).addRange(0x37B, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3D1).addRange(0x3D5, 0x3F5).addRange(0x3F7, 0x3FB).addRange(0x3FD, 0x481).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x561, 0x587).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FD, 0x10FF).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1E00, 0x1E9B).addRange(0x1EA0, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC);
      set.addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x212A, 0x212B).addRange(0x2160, 0x217F).addRange(0x2183, 0x2184).addRange(0x24B6, 0x24E9).addRange(0x2C00, 0x2C70).addRange(0x2C72, 0x2C73).addRange(0x2C75, 0x2C76).addRange(0x2C7E, 0x2CE3).addRange(0x2CEB, 0x2CEE).addRange(0x2CF2, 0x2CF3).addRange(0x2D00, 0x2D25).addRange(0xA640, 0xA66D).addRange(0xA680, 0xA69B).addRange(0xA722, 0xA72F).addRange(0xA732, 0xA76F).addRange(0xA779, 0xA787).addRange(0xA78B, 0xA78D).addRange(0xA790, 0xA794).addRange(0xA796, 0xA7AE).addRange(0xA7B0, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D6, 0xA7D9).addRange(0xA7F5, 0xA7F6).addRange(0xAB70, 0xABBF).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0x10400, 0x1044F).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x118A0, 0x118DF).addRange(0x16E40, 0x16E7F).addRange(0x1E900, 0x1E943);
      Changes_When_Casemapped.characters = set;
      return Changes_When_Casemapped;
    }
  
    var Changes_When_Lowercased = {};
  
    var hasRequiredChanges_When_Lowercased;
    function requireChanges_When_Lowercased() {
      if (hasRequiredChanges_When_Lowercased) return Changes_When_Lowercased;
      hasRequiredChanges_When_Lowercased = 1;
      var set = regenerate$2.exports(0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, 0x10E, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, 0x11C, 0x11E, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12A, 0x12C, 0x12E, 0x130, 0x132, 0x134, 0x136, 0x139, 0x13B, 0x13D, 0x13F, 0x141, 0x143, 0x145, 0x147, 0x14A, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, 0x172, 0x174, 0x176, 0x17B, 0x17D, 0x184, 0x1A2, 0x1A4, 0x1A9, 0x1AC, 0x1B5, 0x1BC, 0x1CD, 0x1CF, 0x1D1, 0x1D3, 0x1D5, 0x1D7, 0x1D9, 0x1DB, 0x1DE, 0x1E0, 0x1E2, 0x1E4, 0x1E6, 0x1E8, 0x1EA, 0x1EC, 0x1EE, 0x1F4, 0x1FA, 0x1FC, 0x1FE, 0x200, 0x202, 0x204, 0x206, 0x208, 0x20A, 0x20C, 0x20E, 0x210, 0x212, 0x214, 0x216, 0x218, 0x21A, 0x21C, 0x21E, 0x220, 0x222, 0x224, 0x226, 0x228, 0x22A, 0x22C, 0x22E, 0x230, 0x232, 0x241, 0x248, 0x24A, 0x24C, 0x24E, 0x370, 0x372, 0x376, 0x37F, 0x386, 0x38C, 0x3CF, 0x3D8, 0x3DA, 0x3DC, 0x3DE, 0x3E0, 0x3E2, 0x3E4, 0x3E6, 0x3E8, 0x3EA, 0x3EC, 0x3EE, 0x3F4, 0x3F7, 0x460, 0x462, 0x464, 0x466, 0x468, 0x46A, 0x46C, 0x46E, 0x470, 0x472, 0x474, 0x476, 0x478, 0x47A, 0x47C, 0x47E, 0x480, 0x48A, 0x48C, 0x48E, 0x490, 0x492, 0x494, 0x496, 0x498, 0x49A, 0x49C, 0x49E, 0x4A0, 0x4A2, 0x4A4, 0x4A6, 0x4A8, 0x4AA, 0x4AC, 0x4AE, 0x4B0, 0x4B2, 0x4B4, 0x4B6, 0x4B8, 0x4BA, 0x4BC, 0x4BE, 0x4C3, 0x4C5, 0x4C7, 0x4C9, 0x4CB, 0x4CD, 0x4D0, 0x4D2, 0x4D4, 0x4D6, 0x4D8, 0x4DA, 0x4DC, 0x4DE, 0x4E0, 0x4E2, 0x4E4, 0x4E6, 0x4E8, 0x4EA, 0x4EC, 0x4EE, 0x4F0, 0x4F2, 0x4F4, 0x4F6, 0x4F8, 0x4FA, 0x4FC, 0x4FE, 0x500, 0x502, 0x504, 0x506, 0x508, 0x50A, 0x50C, 0x50E, 0x510, 0x512, 0x514, 0x516, 0x518, 0x51A, 0x51C, 0x51E, 0x520, 0x522, 0x524, 0x526, 0x528, 0x52A, 0x52C, 0x52E, 0x10C7, 0x10CD, 0x1E00, 0x1E02, 0x1E04, 0x1E06, 0x1E08, 0x1E0A, 0x1E0C, 0x1E0E, 0x1E10, 0x1E12, 0x1E14, 0x1E16, 0x1E18, 0x1E1A, 0x1E1C, 0x1E1E, 0x1E20, 0x1E22, 0x1E24, 0x1E26, 0x1E28, 0x1E2A, 0x1E2C, 0x1E2E, 0x1E30, 0x1E32, 0x1E34, 0x1E36, 0x1E38, 0x1E3A, 0x1E3C, 0x1E3E, 0x1E40, 0x1E42, 0x1E44, 0x1E46, 0x1E48, 0x1E4A, 0x1E4C, 0x1E4E, 0x1E50, 0x1E52, 0x1E54, 0x1E56, 0x1E58, 0x1E5A, 0x1E5C, 0x1E5E, 0x1E60, 0x1E62, 0x1E64, 0x1E66, 0x1E68, 0x1E6A, 0x1E6C, 0x1E6E, 0x1E70, 0x1E72, 0x1E74, 0x1E76, 0x1E78, 0x1E7A, 0x1E7C, 0x1E7E, 0x1E80, 0x1E82, 0x1E84, 0x1E86, 0x1E88, 0x1E8A, 0x1E8C, 0x1E8E, 0x1E90, 0x1E92, 0x1E94, 0x1E9E, 0x1EA0, 0x1EA2, 0x1EA4, 0x1EA6, 0x1EA8, 0x1EAA, 0x1EAC, 0x1EAE, 0x1EB0, 0x1EB2, 0x1EB4, 0x1EB6, 0x1EB8, 0x1EBA, 0x1EBC, 0x1EBE, 0x1EC0, 0x1EC2, 0x1EC4, 0x1EC6, 0x1EC8, 0x1ECA, 0x1ECC, 0x1ECE, 0x1ED0, 0x1ED2, 0x1ED4, 0x1ED6, 0x1ED8, 0x1EDA, 0x1EDC, 0x1EDE, 0x1EE0, 0x1EE2, 0x1EE4, 0x1EE6, 0x1EE8, 0x1EEA, 0x1EEC, 0x1EEE, 0x1EF0, 0x1EF2, 0x1EF4, 0x1EF6, 0x1EF8, 0x1EFA, 0x1EFC, 0x1EFE, 0x1F59, 0x1F5B, 0x1F5D, 0x1F5F, 0x2126, 0x2132, 0x2183, 0x2C60, 0x2C67, 0x2C69, 0x2C6B, 0x2C72, 0x2C75, 0x2C82, 0x2C84, 0x2C86, 0x2C88, 0x2C8A, 0x2C8C, 0x2C8E, 0x2C90, 0x2C92, 0x2C94, 0x2C96, 0x2C98, 0x2C9A, 0x2C9C, 0x2C9E, 0x2CA0, 0x2CA2, 0x2CA4, 0x2CA6, 0x2CA8, 0x2CAA, 0x2CAC, 0x2CAE, 0x2CB0, 0x2CB2, 0x2CB4, 0x2CB6, 0x2CB8, 0x2CBA, 0x2CBC, 0x2CBE, 0x2CC0, 0x2CC2, 0x2CC4, 0x2CC6, 0x2CC8, 0x2CCA, 0x2CCC, 0x2CCE, 0x2CD0, 0x2CD2, 0x2CD4, 0x2CD6, 0x2CD8, 0x2CDA, 0x2CDC, 0x2CDE, 0x2CE0, 0x2CE2, 0x2CEB, 0x2CED, 0x2CF2, 0xA640, 0xA642, 0xA644, 0xA646, 0xA648, 0xA64A, 0xA64C, 0xA64E, 0xA650, 0xA652, 0xA654, 0xA656, 0xA658, 0xA65A, 0xA65C, 0xA65E, 0xA660, 0xA662, 0xA664, 0xA666, 0xA668, 0xA66A, 0xA66C, 0xA680, 0xA682, 0xA684, 0xA686, 0xA688, 0xA68A, 0xA68C, 0xA68E, 0xA690, 0xA692, 0xA694, 0xA696, 0xA698, 0xA69A, 0xA722, 0xA724, 0xA726, 0xA728, 0xA72A, 0xA72C, 0xA72E, 0xA732, 0xA734, 0xA736, 0xA738, 0xA73A, 0xA73C, 0xA73E, 0xA740, 0xA742, 0xA744, 0xA746, 0xA748, 0xA74A, 0xA74C, 0xA74E, 0xA750, 0xA752, 0xA754, 0xA756, 0xA758, 0xA75A, 0xA75C, 0xA75E, 0xA760, 0xA762, 0xA764, 0xA766, 0xA768, 0xA76A, 0xA76C, 0xA76E, 0xA779, 0xA77B, 0xA780, 0xA782, 0xA784, 0xA786, 0xA78B, 0xA78D, 0xA790, 0xA792, 0xA796, 0xA798, 0xA79A, 0xA79C, 0xA79E, 0xA7A0, 0xA7A2, 0xA7A4, 0xA7A6, 0xA7A8, 0xA7B6, 0xA7B8, 0xA7BA, 0xA7BC, 0xA7BE, 0xA7C0, 0xA7C2, 0xA7C9, 0xA7D0, 0xA7D6, 0xA7D8, 0xA7F5);
      set.addRange(0x41, 0x5A).addRange(0xC0, 0xD6).addRange(0xD8, 0xDE).addRange(0x178, 0x179).addRange(0x181, 0x182).addRange(0x186, 0x187).addRange(0x189, 0x18B).addRange(0x18E, 0x191).addRange(0x193, 0x194).addRange(0x196, 0x198).addRange(0x19C, 0x19D).addRange(0x19F, 0x1A0).addRange(0x1A6, 0x1A7).addRange(0x1AE, 0x1AF).addRange(0x1B1, 0x1B3).addRange(0x1B7, 0x1B8).addRange(0x1C4, 0x1C5).addRange(0x1C7, 0x1C8).addRange(0x1CA, 0x1CB).addRange(0x1F1, 0x1F2).addRange(0x1F6, 0x1F8).addRange(0x23A, 0x23B).addRange(0x23D, 0x23E).addRange(0x243, 0x246).addRange(0x388, 0x38A).addRange(0x38E, 0x38F).addRange(0x391, 0x3A1).addRange(0x3A3, 0x3AB).addRange(0x3F9, 0x3FA).addRange(0x3FD, 0x42F).addRange(0x4C0, 0x4C1).addRange(0x531, 0x556).addRange(0x10A0, 0x10C5).addRange(0x13A0, 0x13F5).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1F08, 0x1F0F).addRange(0x1F18, 0x1F1D).addRange(0x1F28, 0x1F2F).addRange(0x1F38, 0x1F3F).addRange(0x1F48, 0x1F4D).addRange(0x1F68, 0x1F6F).addRange(0x1F88, 0x1F8F).addRange(0x1F98, 0x1F9F).addRange(0x1FA8, 0x1FAF).addRange(0x1FB8, 0x1FBC).addRange(0x1FC8, 0x1FCC).addRange(0x1FD8, 0x1FDB).addRange(0x1FE8, 0x1FEC).addRange(0x1FF8, 0x1FFC).addRange(0x212A, 0x212B);
      set.addRange(0x2160, 0x216F).addRange(0x24B6, 0x24CF).addRange(0x2C00, 0x2C2F).addRange(0x2C62, 0x2C64).addRange(0x2C6D, 0x2C70).addRange(0x2C7E, 0x2C80).addRange(0xA77D, 0xA77E).addRange(0xA7AA, 0xA7AE).addRange(0xA7B0, 0xA7B4).addRange(0xA7C4, 0xA7C7).addRange(0xFF21, 0xFF3A).addRange(0x10400, 0x10427).addRange(0x104B0, 0x104D3).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10C80, 0x10CB2).addRange(0x118A0, 0x118BF).addRange(0x16E40, 0x16E5F).addRange(0x1E900, 0x1E921);
      Changes_When_Lowercased.characters = set;
      return Changes_When_Lowercased;
    }
  
    var Changes_When_NFKC_Casefolded = {};
  
    var hasRequiredChanges_When_NFKC_Casefolded;
    function requireChanges_When_NFKC_Casefolded() {
      if (hasRequiredChanges_When_NFKC_Casefolded) return Changes_When_NFKC_Casefolded;
      hasRequiredChanges_When_NFKC_Casefolded = 1;
      var set = regenerate$2.exports(0xA0, 0xA8, 0xAA, 0xAD, 0xAF, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, 0x10E, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, 0x11C, 0x11E, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12A, 0x12C, 0x12E, 0x130, 0x136, 0x139, 0x13B, 0x13D, 0x143, 0x145, 0x147, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, 0x172, 0x174, 0x176, 0x17B, 0x17D, 0x17F, 0x184, 0x1A2, 0x1A4, 0x1A9, 0x1AC, 0x1B5, 0x1BC, 0x1CF, 0x1D1, 0x1D3, 0x1D5, 0x1D7, 0x1D9, 0x1DB, 0x1DE, 0x1E0, 0x1E2, 0x1E4, 0x1E6, 0x1E8, 0x1EA, 0x1EC, 0x1EE, 0x1FA, 0x1FC, 0x1FE, 0x200, 0x202, 0x204, 0x206, 0x208, 0x20A, 0x20C, 0x20E, 0x210, 0x212, 0x214, 0x216, 0x218, 0x21A, 0x21C, 0x21E, 0x220, 0x222, 0x224, 0x226, 0x228, 0x22A, 0x22C, 0x22E, 0x230, 0x232, 0x241, 0x248, 0x24A, 0x24C, 0x24E, 0x34F, 0x370, 0x372, 0x374, 0x376, 0x37A, 0x38C, 0x3C2, 0x3D8, 0x3DA, 0x3DC, 0x3DE, 0x3E0, 0x3E2, 0x3E4, 0x3E6, 0x3E8, 0x3EA, 0x3EC, 0x3EE, 0x3F7, 0x460, 0x462, 0x464, 0x466, 0x468, 0x46A, 0x46C, 0x46E, 0x470, 0x472, 0x474, 0x476, 0x478, 0x47A, 0x47C, 0x47E, 0x480, 0x48A, 0x48C, 0x48E, 0x490, 0x492, 0x494, 0x496, 0x498, 0x49A, 0x49C, 0x49E, 0x4A0, 0x4A2, 0x4A4, 0x4A6, 0x4A8, 0x4AA, 0x4AC, 0x4AE, 0x4B0, 0x4B2, 0x4B4, 0x4B6, 0x4B8, 0x4BA, 0x4BC, 0x4BE, 0x4C3, 0x4C5, 0x4C7, 0x4C9, 0x4CB, 0x4CD, 0x4D0, 0x4D2, 0x4D4, 0x4D6, 0x4D8, 0x4DA, 0x4DC, 0x4DE, 0x4E0, 0x4E2, 0x4E4, 0x4E6, 0x4E8, 0x4EA, 0x4EC, 0x4EE, 0x4F0, 0x4F2, 0x4F4, 0x4F6, 0x4F8, 0x4FA, 0x4FC, 0x4FE, 0x500, 0x502, 0x504, 0x506, 0x508, 0x50A, 0x50C, 0x50E, 0x510, 0x512, 0x514, 0x516, 0x518, 0x51A, 0x51C, 0x51E, 0x520, 0x522, 0x524, 0x526, 0x528, 0x52A, 0x52C, 0x52E, 0x587, 0x61C, 0x9DF, 0xA33, 0xA36, 0xA5E, 0xE33, 0xEB3, 0xF0C, 0xF43, 0xF4D, 0xF52, 0xF57, 0xF5C, 0xF69, 0xF73, 0xF81, 0xF93, 0xF9D, 0xFA2, 0xFA7, 0xFAC, 0xFB9, 0x10C7, 0x10CD, 0x10FC, 0x1D78, 0x1E00, 0x1E02, 0x1E04, 0x1E06, 0x1E08, 0x1E0A, 0x1E0C, 0x1E0E, 0x1E10, 0x1E12, 0x1E14, 0x1E16, 0x1E18, 0x1E1A, 0x1E1C, 0x1E1E, 0x1E20, 0x1E22, 0x1E24, 0x1E26, 0x1E28, 0x1E2A, 0x1E2C, 0x1E2E, 0x1E30, 0x1E32, 0x1E34, 0x1E36, 0x1E38, 0x1E3A, 0x1E3C, 0x1E3E, 0x1E40, 0x1E42, 0x1E44, 0x1E46, 0x1E48, 0x1E4A, 0x1E4C, 0x1E4E, 0x1E50, 0x1E52, 0x1E54, 0x1E56, 0x1E58, 0x1E5A, 0x1E5C, 0x1E5E, 0x1E60, 0x1E62, 0x1E64, 0x1E66, 0x1E68, 0x1E6A, 0x1E6C, 0x1E6E, 0x1E70, 0x1E72, 0x1E74, 0x1E76, 0x1E78, 0x1E7A, 0x1E7C, 0x1E7E, 0x1E80, 0x1E82, 0x1E84, 0x1E86, 0x1E88, 0x1E8A, 0x1E8C, 0x1E8E, 0x1E90, 0x1E92, 0x1E94, 0x1E9E, 0x1EA0, 0x1EA2, 0x1EA4, 0x1EA6, 0x1EA8, 0x1EAA, 0x1EAC, 0x1EAE, 0x1EB0, 0x1EB2, 0x1EB4, 0x1EB6, 0x1EB8, 0x1EBA, 0x1EBC, 0x1EBE, 0x1EC0, 0x1EC2, 0x1EC4, 0x1EC6, 0x1EC8, 0x1ECA, 0x1ECC, 0x1ECE, 0x1ED0, 0x1ED2, 0x1ED4, 0x1ED6, 0x1ED8, 0x1EDA, 0x1EDC, 0x1EDE, 0x1EE0, 0x1EE2, 0x1EE4, 0x1EE6, 0x1EE8, 0x1EEA, 0x1EEC, 0x1EEE, 0x1EF0, 0x1EF2, 0x1EF4, 0x1EF6, 0x1EF8, 0x1EFA, 0x1EFC, 0x1EFE, 0x1F59, 0x1F5B, 0x1F5D, 0x1F5F, 0x1F71, 0x1F73, 0x1F75, 0x1F77, 0x1F79, 0x1F7B, 0x1F7D, 0x1FD3, 0x1FE3, 0x2011, 0x2017, 0x203C, 0x203E, 0x2057, 0x20A8, 0x2124, 0x2126, 0x2128, 0x2183, 0x2189, 0x2A0C, 0x2ADC, 0x2C60, 0x2C67, 0x2C69, 0x2C6B, 0x2C72, 0x2C75, 0x2C82, 0x2C84, 0x2C86, 0x2C88, 0x2C8A, 0x2C8C, 0x2C8E, 0x2C90, 0x2C92, 0x2C94, 0x2C96, 0x2C98, 0x2C9A, 0x2C9C, 0x2C9E, 0x2CA0, 0x2CA2, 0x2CA4, 0x2CA6, 0x2CA8, 0x2CAA, 0x2CAC, 0x2CAE, 0x2CB0, 0x2CB2, 0x2CB4, 0x2CB6, 0x2CB8, 0x2CBA, 0x2CBC, 0x2CBE, 0x2CC0, 0x2CC2, 0x2CC4, 0x2CC6, 0x2CC8, 0x2CCA, 0x2CCC, 0x2CCE, 0x2CD0, 0x2CD2, 0x2CD4, 0x2CD6, 0x2CD8, 0x2CDA, 0x2CDC, 0x2CDE, 0x2CE0, 0x2CE2, 0x2CEB, 0x2CED, 0x2CF2, 0x2D6F, 0x2E9F, 0x2EF3, 0x3000, 0x3036, 0x309F, 0x30FF, 0xA640, 0xA642, 0xA644, 0xA646, 0xA648, 0xA64A, 0xA64C, 0xA64E, 0xA650, 0xA652, 0xA654, 0xA656, 0xA658, 0xA65A, 0xA65C, 0xA65E, 0xA660, 0xA662, 0xA664, 0xA666, 0xA668, 0xA66A, 0xA66C, 0xA680, 0xA682, 0xA684, 0xA686, 0xA688, 0xA68A, 0xA68C, 0xA68E, 0xA690, 0xA692, 0xA694, 0xA696, 0xA698, 0xA69A, 0xA722, 0xA724, 0xA726, 0xA728, 0xA72A, 0xA72C, 0xA72E, 0xA732, 0xA734, 0xA736, 0xA738, 0xA73A, 0xA73C, 0xA73E, 0xA740, 0xA742, 0xA744, 0xA746, 0xA748, 0xA74A, 0xA74C, 0xA74E, 0xA750, 0xA752, 0xA754, 0xA756, 0xA758, 0xA75A, 0xA75C, 0xA75E, 0xA760, 0xA762, 0xA764, 0xA766, 0xA768, 0xA76A, 0xA76C, 0xA76E, 0xA770, 0xA779, 0xA77B, 0xA780, 0xA782, 0xA784, 0xA786, 0xA78B, 0xA78D, 0xA790, 0xA792, 0xA796, 0xA798, 0xA79A, 0xA79C, 0xA79E, 0xA7A0, 0xA7A2, 0xA7A4, 0xA7A6, 0xA7A8, 0xA7B6, 0xA7B8, 0xA7BA, 0xA7BC, 0xA7BE, 0xA7C0, 0xA7C2, 0xA7C9, 0xA7D0, 0xA7D6, 0xA7D8, 0xAB69, 0xFA10, 0xFA12, 0xFA20, 0xFA22, 0xFB1D, 0xFB3E, 0xFE74, 0xFEFF, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E, 0x1F190);
      set.addRange(0x41, 0x5A).addRange(0xB2, 0xB5).addRange(0xB8, 0xBA).addRange(0xBC, 0xBE).addRange(0xC0, 0xD6).addRange(0xD8, 0xDF).addRange(0x132, 0x134).addRange(0x13F, 0x141).addRange(0x149, 0x14A).addRange(0x178, 0x179).addRange(0x181, 0x182).addRange(0x186, 0x187).addRange(0x189, 0x18B).addRange(0x18E, 0x191).addRange(0x193, 0x194).addRange(0x196, 0x198).addRange(0x19C, 0x19D).addRange(0x19F, 0x1A0).addRange(0x1A6, 0x1A7).addRange(0x1AE, 0x1AF).addRange(0x1B1, 0x1B3).addRange(0x1B7, 0x1B8).addRange(0x1C4, 0x1CD).addRange(0x1F1, 0x1F4).addRange(0x1F6, 0x1F8).addRange(0x23A, 0x23B).addRange(0x23D, 0x23E).addRange(0x243, 0x246).addRange(0x2B0, 0x2B8).addRange(0x2D8, 0x2DD).addRange(0x2E0, 0x2E4).addRange(0x340, 0x341).addRange(0x343, 0x345).addRange(0x37E, 0x37F).addRange(0x384, 0x38A).addRange(0x38E, 0x38F).addRange(0x391, 0x3A1).addRange(0x3A3, 0x3AB).addRange(0x3CF, 0x3D6).addRange(0x3F0, 0x3F2).addRange(0x3F4, 0x3F5).addRange(0x3F9, 0x3FA).addRange(0x3FD, 0x42F).addRange(0x4C0, 0x4C1).addRange(0x531, 0x556).addRange(0x675, 0x678).addRange(0x958, 0x95F).addRange(0x9DC, 0x9DD).addRange(0xA59, 0xA5B).addRange(0xB5C, 0xB5D).addRange(0xEDC, 0xEDD);
      set.addRange(0xF75, 0xF79).addRange(0x10A0, 0x10C5).addRange(0x115F, 0x1160).addRange(0x13F8, 0x13FD).addRange(0x17B4, 0x17B5).addRange(0x180B, 0x180F).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1D2C, 0x1D2E).addRange(0x1D30, 0x1D3A).addRange(0x1D3C, 0x1D4D).addRange(0x1D4F, 0x1D6A).addRange(0x1D9B, 0x1DBF).addRange(0x1E9A, 0x1E9B).addRange(0x1F08, 0x1F0F).addRange(0x1F18, 0x1F1D).addRange(0x1F28, 0x1F2F).addRange(0x1F38, 0x1F3F).addRange(0x1F48, 0x1F4D).addRange(0x1F68, 0x1F6F).addRange(0x1F80, 0x1FAF).addRange(0x1FB2, 0x1FB4).addRange(0x1FB7, 0x1FC4).addRange(0x1FC7, 0x1FCF).addRange(0x1FD8, 0x1FDB).addRange(0x1FDD, 0x1FDF).addRange(0x1FE8, 0x1FEF).addRange(0x1FF2, 0x1FF4).addRange(0x1FF7, 0x1FFE).addRange(0x2000, 0x200F).addRange(0x2024, 0x2026).addRange(0x202A, 0x202F).addRange(0x2033, 0x2034).addRange(0x2036, 0x2037).addRange(0x2047, 0x2049).addRange(0x205F, 0x2071).addRange(0x2074, 0x208E).addRange(0x2090, 0x209C).addRange(0x2100, 0x2103).addRange(0x2105, 0x2107).addRange(0x2109, 0x2113).addRange(0x2115, 0x2116).addRange(0x2119, 0x211D).addRange(0x2120, 0x2122).addRange(0x212A, 0x212D).addRange(0x212F, 0x2139).addRange(0x213B, 0x2140).addRange(0x2145, 0x2149).addRange(0x2150, 0x217F).addRange(0x222C, 0x222D);
      set.addRange(0x222F, 0x2230).addRange(0x2329, 0x232A).addRange(0x2460, 0x24EA).addRange(0x2A74, 0x2A76).addRange(0x2C00, 0x2C2F).addRange(0x2C62, 0x2C64).addRange(0x2C6D, 0x2C70).addRange(0x2C7C, 0x2C80).addRange(0x2F00, 0x2FD5).addRange(0x3038, 0x303A).addRange(0x309B, 0x309C).addRange(0x3131, 0x318E).addRange(0x3192, 0x319F).addRange(0x3200, 0x321E).addRange(0x3220, 0x3247).addRange(0x3250, 0x327E).addRange(0x3280, 0x33FF).addRange(0xA69C, 0xA69D).addRange(0xA77D, 0xA77E).addRange(0xA7AA, 0xA7AE).addRange(0xA7B0, 0xA7B4).addRange(0xA7C4, 0xA7C7).addRange(0xA7F2, 0xA7F5).addRange(0xA7F8, 0xA7F9).addRange(0xAB5C, 0xAB5F).addRange(0xAB70, 0xABBF).addRange(0xF900, 0xFA0D).addRange(0xFA15, 0xFA1E).addRange(0xFA25, 0xFA26).addRange(0xFA2A, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1F, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBB1).addRange(0xFBD3, 0xFD3D).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFC).addRange(0xFE00, 0xFE19).addRange(0xFE30, 0xFE44).addRange(0xFE47, 0xFE52).addRange(0xFE54, 0xFE66).addRange(0xFE68, 0xFE6B).addRange(0xFE70, 0xFE72).addRange(0xFE76, 0xFEFC).addRange(0xFF01, 0xFFBE).addRange(0xFFC2, 0xFFC7);
      set.addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE).addRange(0xFFF0, 0xFFF8).addRange(0x10400, 0x10427).addRange(0x104B0, 0x104D3).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10781, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10C80, 0x10CB2).addRange(0x118A0, 0x118BF).addRange(0x16E40, 0x16E5F).addRange(0x1BCA0, 0x1BCA3).addRange(0x1D15E, 0x1D164).addRange(0x1D173, 0x1D17A).addRange(0x1D1BB, 0x1D1C0).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D7CB).addRange(0x1D7CE, 0x1D7FF).addRange(0x1E030, 0x1E06D).addRange(0x1E900, 0x1E921).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A);
      set.addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1F100, 0x1F10A).addRange(0x1F110, 0x1F12E).addRange(0x1F130, 0x1F14F).addRange(0x1F16A, 0x1F16C).addRange(0x1F200, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1FBF0, 0x1FBF9).addRange(0x2F800, 0x2FA1D).addRange(0xE0000, 0xE0FFF);
      Changes_When_NFKC_Casefolded.characters = set;
      return Changes_When_NFKC_Casefolded;
    }
  
    var Changes_When_Titlecased = {};
  
    var hasRequiredChanges_When_Titlecased;
    function requireChanges_When_Titlecased() {
      if (hasRequiredChanges_When_Titlecased) return Changes_When_Titlecased;
      hasRequiredChanges_When_Titlecased = 1;
      var set = regenerate$2.exports(0xB5, 0x101, 0x103, 0x105, 0x107, 0x109, 0x10B, 0x10D, 0x10F, 0x111, 0x113, 0x115, 0x117, 0x119, 0x11B, 0x11D, 0x11F, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12B, 0x12D, 0x12F, 0x131, 0x133, 0x135, 0x137, 0x13A, 0x13C, 0x13E, 0x140, 0x142, 0x144, 0x146, 0x14B, 0x14D, 0x14F, 0x151, 0x153, 0x155, 0x157, 0x159, 0x15B, 0x15D, 0x15F, 0x161, 0x163, 0x165, 0x167, 0x169, 0x16B, 0x16D, 0x16F, 0x171, 0x173, 0x175, 0x177, 0x17A, 0x17C, 0x183, 0x185, 0x188, 0x18C, 0x192, 0x195, 0x19E, 0x1A1, 0x1A3, 0x1A5, 0x1A8, 0x1AD, 0x1B0, 0x1B4, 0x1B6, 0x1B9, 0x1BD, 0x1BF, 0x1C4, 0x1CC, 0x1CE, 0x1D0, 0x1D2, 0x1D4, 0x1D6, 0x1D8, 0x1DA, 0x1DF, 0x1E1, 0x1E3, 0x1E5, 0x1E7, 0x1E9, 0x1EB, 0x1ED, 0x1F3, 0x1F5, 0x1F9, 0x1FB, 0x1FD, 0x1FF, 0x201, 0x203, 0x205, 0x207, 0x209, 0x20B, 0x20D, 0x20F, 0x211, 0x213, 0x215, 0x217, 0x219, 0x21B, 0x21D, 0x21F, 0x223, 0x225, 0x227, 0x229, 0x22B, 0x22D, 0x22F, 0x231, 0x233, 0x23C, 0x242, 0x247, 0x249, 0x24B, 0x24D, 0x259, 0x263, 0x26F, 0x275, 0x27D, 0x280, 0x292, 0x345, 0x371, 0x373, 0x377, 0x390, 0x3D9, 0x3DB, 0x3DD, 0x3DF, 0x3E1, 0x3E3, 0x3E5, 0x3E7, 0x3E9, 0x3EB, 0x3ED, 0x3F5, 0x3F8, 0x3FB, 0x461, 0x463, 0x465, 0x467, 0x469, 0x46B, 0x46D, 0x46F, 0x471, 0x473, 0x475, 0x477, 0x479, 0x47B, 0x47D, 0x47F, 0x481, 0x48B, 0x48D, 0x48F, 0x491, 0x493, 0x495, 0x497, 0x499, 0x49B, 0x49D, 0x49F, 0x4A1, 0x4A3, 0x4A5, 0x4A7, 0x4A9, 0x4AB, 0x4AD, 0x4AF, 0x4B1, 0x4B3, 0x4B5, 0x4B7, 0x4B9, 0x4BB, 0x4BD, 0x4BF, 0x4C2, 0x4C4, 0x4C6, 0x4C8, 0x4CA, 0x4CC, 0x4D1, 0x4D3, 0x4D5, 0x4D7, 0x4D9, 0x4DB, 0x4DD, 0x4DF, 0x4E1, 0x4E3, 0x4E5, 0x4E7, 0x4E9, 0x4EB, 0x4ED, 0x4EF, 0x4F1, 0x4F3, 0x4F5, 0x4F7, 0x4F9, 0x4FB, 0x4FD, 0x4FF, 0x501, 0x503, 0x505, 0x507, 0x509, 0x50B, 0x50D, 0x50F, 0x511, 0x513, 0x515, 0x517, 0x519, 0x51B, 0x51D, 0x51F, 0x521, 0x523, 0x525, 0x527, 0x529, 0x52B, 0x52D, 0x52F, 0x1D79, 0x1D7D, 0x1D8E, 0x1E01, 0x1E03, 0x1E05, 0x1E07, 0x1E09, 0x1E0B, 0x1E0D, 0x1E0F, 0x1E11, 0x1E13, 0x1E15, 0x1E17, 0x1E19, 0x1E1B, 0x1E1D, 0x1E1F, 0x1E21, 0x1E23, 0x1E25, 0x1E27, 0x1E29, 0x1E2B, 0x1E2D, 0x1E2F, 0x1E31, 0x1E33, 0x1E35, 0x1E37, 0x1E39, 0x1E3B, 0x1E3D, 0x1E3F, 0x1E41, 0x1E43, 0x1E45, 0x1E47, 0x1E49, 0x1E4B, 0x1E4D, 0x1E4F, 0x1E51, 0x1E53, 0x1E55, 0x1E57, 0x1E59, 0x1E5B, 0x1E5D, 0x1E5F, 0x1E61, 0x1E63, 0x1E65, 0x1E67, 0x1E69, 0x1E6B, 0x1E6D, 0x1E6F, 0x1E71, 0x1E73, 0x1E75, 0x1E77, 0x1E79, 0x1E7B, 0x1E7D, 0x1E7F, 0x1E81, 0x1E83, 0x1E85, 0x1E87, 0x1E89, 0x1E8B, 0x1E8D, 0x1E8F, 0x1E91, 0x1E93, 0x1EA1, 0x1EA3, 0x1EA5, 0x1EA7, 0x1EA9, 0x1EAB, 0x1EAD, 0x1EAF, 0x1EB1, 0x1EB3, 0x1EB5, 0x1EB7, 0x1EB9, 0x1EBB, 0x1EBD, 0x1EBF, 0x1EC1, 0x1EC3, 0x1EC5, 0x1EC7, 0x1EC9, 0x1ECB, 0x1ECD, 0x1ECF, 0x1ED1, 0x1ED3, 0x1ED5, 0x1ED7, 0x1ED9, 0x1EDB, 0x1EDD, 0x1EDF, 0x1EE1, 0x1EE3, 0x1EE5, 0x1EE7, 0x1EE9, 0x1EEB, 0x1EED, 0x1EEF, 0x1EF1, 0x1EF3, 0x1EF5, 0x1EF7, 0x1EF9, 0x1EFB, 0x1EFD, 0x1FBE, 0x214E, 0x2184, 0x2C61, 0x2C68, 0x2C6A, 0x2C6C, 0x2C73, 0x2C76, 0x2C81, 0x2C83, 0x2C85, 0x2C87, 0x2C89, 0x2C8B, 0x2C8D, 0x2C8F, 0x2C91, 0x2C93, 0x2C95, 0x2C97, 0x2C99, 0x2C9B, 0x2C9D, 0x2C9F, 0x2CA1, 0x2CA3, 0x2CA5, 0x2CA7, 0x2CA9, 0x2CAB, 0x2CAD, 0x2CAF, 0x2CB1, 0x2CB3, 0x2CB5, 0x2CB7, 0x2CB9, 0x2CBB, 0x2CBD, 0x2CBF, 0x2CC1, 0x2CC3, 0x2CC5, 0x2CC7, 0x2CC9, 0x2CCB, 0x2CCD, 0x2CCF, 0x2CD1, 0x2CD3, 0x2CD5, 0x2CD7, 0x2CD9, 0x2CDB, 0x2CDD, 0x2CDF, 0x2CE1, 0x2CE3, 0x2CEC, 0x2CEE, 0x2CF3, 0x2D27, 0x2D2D, 0xA641, 0xA643, 0xA645, 0xA647, 0xA649, 0xA64B, 0xA64D, 0xA64F, 0xA651, 0xA653, 0xA655, 0xA657, 0xA659, 0xA65B, 0xA65D, 0xA65F, 0xA661, 0xA663, 0xA665, 0xA667, 0xA669, 0xA66B, 0xA66D, 0xA681, 0xA683, 0xA685, 0xA687, 0xA689, 0xA68B, 0xA68D, 0xA68F, 0xA691, 0xA693, 0xA695, 0xA697, 0xA699, 0xA69B, 0xA723, 0xA725, 0xA727, 0xA729, 0xA72B, 0xA72D, 0xA72F, 0xA733, 0xA735, 0xA737, 0xA739, 0xA73B, 0xA73D, 0xA73F, 0xA741, 0xA743, 0xA745, 0xA747, 0xA749, 0xA74B, 0xA74D, 0xA74F, 0xA751, 0xA753, 0xA755, 0xA757, 0xA759, 0xA75B, 0xA75D, 0xA75F, 0xA761, 0xA763, 0xA765, 0xA767, 0xA769, 0xA76B, 0xA76D, 0xA76F, 0xA77A, 0xA77C, 0xA77F, 0xA781, 0xA783, 0xA785, 0xA787, 0xA78C, 0xA791, 0xA797, 0xA799, 0xA79B, 0xA79D, 0xA79F, 0xA7A1, 0xA7A3, 0xA7A5, 0xA7A7, 0xA7A9, 0xA7B5, 0xA7B7, 0xA7B9, 0xA7BB, 0xA7BD, 0xA7BF, 0xA7C1, 0xA7C3, 0xA7C8, 0xA7CA, 0xA7D1, 0xA7D7, 0xA7D9, 0xA7F6, 0xAB53);
      set.addRange(0x61, 0x7A).addRange(0xDF, 0xF6).addRange(0xF8, 0xFF).addRange(0x148, 0x149).addRange(0x17E, 0x180).addRange(0x199, 0x19A).addRange(0x1C6, 0x1C7).addRange(0x1C9, 0x1CA).addRange(0x1DC, 0x1DD).addRange(0x1EF, 0x1F1).addRange(0x23F, 0x240).addRange(0x24F, 0x254).addRange(0x256, 0x257).addRange(0x25B, 0x25C).addRange(0x260, 0x261).addRange(0x265, 0x266).addRange(0x268, 0x26C).addRange(0x271, 0x272).addRange(0x282, 0x283).addRange(0x287, 0x28C).addRange(0x29D, 0x29E).addRange(0x37B, 0x37D).addRange(0x3AC, 0x3CE).addRange(0x3D0, 0x3D1).addRange(0x3D5, 0x3D7).addRange(0x3EF, 0x3F3).addRange(0x430, 0x45F).addRange(0x4CE, 0x4CF).addRange(0x561, 0x587).addRange(0x13F8, 0x13FD).addRange(0x1C80, 0x1C88).addRange(0x1E95, 0x1E9B).addRange(0x1EFF, 0x1F07).addRange(0x1F10, 0x1F15).addRange(0x1F20, 0x1F27).addRange(0x1F30, 0x1F37).addRange(0x1F40, 0x1F45).addRange(0x1F50, 0x1F57).addRange(0x1F60, 0x1F67).addRange(0x1F70, 0x1F7D).addRange(0x1F80, 0x1F87).addRange(0x1F90, 0x1F97).addRange(0x1FA0, 0x1FA7).addRange(0x1FB0, 0x1FB4).addRange(0x1FB6, 0x1FB7).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FC7).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FD7).addRange(0x1FE0, 0x1FE7).addRange(0x1FF2, 0x1FF4);
      set.addRange(0x1FF6, 0x1FF7).addRange(0x2170, 0x217F).addRange(0x24D0, 0x24E9).addRange(0x2C30, 0x2C5F).addRange(0x2C65, 0x2C66).addRange(0x2D00, 0x2D25).addRange(0xA793, 0xA794).addRange(0xAB70, 0xABBF).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFF41, 0xFF5A).addRange(0x10428, 0x1044F).addRange(0x104D8, 0x104FB).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10CC0, 0x10CF2).addRange(0x118C0, 0x118DF).addRange(0x16E60, 0x16E7F).addRange(0x1E922, 0x1E943);
      Changes_When_Titlecased.characters = set;
      return Changes_When_Titlecased;
    }
  
    var Changes_When_Uppercased = {};
  
    var hasRequiredChanges_When_Uppercased;
    function requireChanges_When_Uppercased() {
      if (hasRequiredChanges_When_Uppercased) return Changes_When_Uppercased;
      hasRequiredChanges_When_Uppercased = 1;
      var set = regenerate$2.exports(0xB5, 0x101, 0x103, 0x105, 0x107, 0x109, 0x10B, 0x10D, 0x10F, 0x111, 0x113, 0x115, 0x117, 0x119, 0x11B, 0x11D, 0x11F, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12B, 0x12D, 0x12F, 0x131, 0x133, 0x135, 0x137, 0x13A, 0x13C, 0x13E, 0x140, 0x142, 0x144, 0x146, 0x14B, 0x14D, 0x14F, 0x151, 0x153, 0x155, 0x157, 0x159, 0x15B, 0x15D, 0x15F, 0x161, 0x163, 0x165, 0x167, 0x169, 0x16B, 0x16D, 0x16F, 0x171, 0x173, 0x175, 0x177, 0x17A, 0x17C, 0x183, 0x185, 0x188, 0x18C, 0x192, 0x195, 0x19E, 0x1A1, 0x1A3, 0x1A5, 0x1A8, 0x1AD, 0x1B0, 0x1B4, 0x1B6, 0x1B9, 0x1BD, 0x1BF, 0x1CE, 0x1D0, 0x1D2, 0x1D4, 0x1D6, 0x1D8, 0x1DA, 0x1DF, 0x1E1, 0x1E3, 0x1E5, 0x1E7, 0x1E9, 0x1EB, 0x1ED, 0x1F5, 0x1F9, 0x1FB, 0x1FD, 0x1FF, 0x201, 0x203, 0x205, 0x207, 0x209, 0x20B, 0x20D, 0x20F, 0x211, 0x213, 0x215, 0x217, 0x219, 0x21B, 0x21D, 0x21F, 0x223, 0x225, 0x227, 0x229, 0x22B, 0x22D, 0x22F, 0x231, 0x233, 0x23C, 0x242, 0x247, 0x249, 0x24B, 0x24D, 0x259, 0x263, 0x26F, 0x275, 0x27D, 0x280, 0x292, 0x345, 0x371, 0x373, 0x377, 0x390, 0x3D9, 0x3DB, 0x3DD, 0x3DF, 0x3E1, 0x3E3, 0x3E5, 0x3E7, 0x3E9, 0x3EB, 0x3ED, 0x3F5, 0x3F8, 0x3FB, 0x461, 0x463, 0x465, 0x467, 0x469, 0x46B, 0x46D, 0x46F, 0x471, 0x473, 0x475, 0x477, 0x479, 0x47B, 0x47D, 0x47F, 0x481, 0x48B, 0x48D, 0x48F, 0x491, 0x493, 0x495, 0x497, 0x499, 0x49B, 0x49D, 0x49F, 0x4A1, 0x4A3, 0x4A5, 0x4A7, 0x4A9, 0x4AB, 0x4AD, 0x4AF, 0x4B1, 0x4B3, 0x4B5, 0x4B7, 0x4B9, 0x4BB, 0x4BD, 0x4BF, 0x4C2, 0x4C4, 0x4C6, 0x4C8, 0x4CA, 0x4CC, 0x4D1, 0x4D3, 0x4D5, 0x4D7, 0x4D9, 0x4DB, 0x4DD, 0x4DF, 0x4E1, 0x4E3, 0x4E5, 0x4E7, 0x4E9, 0x4EB, 0x4ED, 0x4EF, 0x4F1, 0x4F3, 0x4F5, 0x4F7, 0x4F9, 0x4FB, 0x4FD, 0x4FF, 0x501, 0x503, 0x505, 0x507, 0x509, 0x50B, 0x50D, 0x50F, 0x511, 0x513, 0x515, 0x517, 0x519, 0x51B, 0x51D, 0x51F, 0x521, 0x523, 0x525, 0x527, 0x529, 0x52B, 0x52D, 0x52F, 0x1D79, 0x1D7D, 0x1D8E, 0x1E01, 0x1E03, 0x1E05, 0x1E07, 0x1E09, 0x1E0B, 0x1E0D, 0x1E0F, 0x1E11, 0x1E13, 0x1E15, 0x1E17, 0x1E19, 0x1E1B, 0x1E1D, 0x1E1F, 0x1E21, 0x1E23, 0x1E25, 0x1E27, 0x1E29, 0x1E2B, 0x1E2D, 0x1E2F, 0x1E31, 0x1E33, 0x1E35, 0x1E37, 0x1E39, 0x1E3B, 0x1E3D, 0x1E3F, 0x1E41, 0x1E43, 0x1E45, 0x1E47, 0x1E49, 0x1E4B, 0x1E4D, 0x1E4F, 0x1E51, 0x1E53, 0x1E55, 0x1E57, 0x1E59, 0x1E5B, 0x1E5D, 0x1E5F, 0x1E61, 0x1E63, 0x1E65, 0x1E67, 0x1E69, 0x1E6B, 0x1E6D, 0x1E6F, 0x1E71, 0x1E73, 0x1E75, 0x1E77, 0x1E79, 0x1E7B, 0x1E7D, 0x1E7F, 0x1E81, 0x1E83, 0x1E85, 0x1E87, 0x1E89, 0x1E8B, 0x1E8D, 0x1E8F, 0x1E91, 0x1E93, 0x1EA1, 0x1EA3, 0x1EA5, 0x1EA7, 0x1EA9, 0x1EAB, 0x1EAD, 0x1EAF, 0x1EB1, 0x1EB3, 0x1EB5, 0x1EB7, 0x1EB9, 0x1EBB, 0x1EBD, 0x1EBF, 0x1EC1, 0x1EC3, 0x1EC5, 0x1EC7, 0x1EC9, 0x1ECB, 0x1ECD, 0x1ECF, 0x1ED1, 0x1ED3, 0x1ED5, 0x1ED7, 0x1ED9, 0x1EDB, 0x1EDD, 0x1EDF, 0x1EE1, 0x1EE3, 0x1EE5, 0x1EE7, 0x1EE9, 0x1EEB, 0x1EED, 0x1EEF, 0x1EF1, 0x1EF3, 0x1EF5, 0x1EF7, 0x1EF9, 0x1EFB, 0x1EFD, 0x1FBC, 0x1FBE, 0x1FCC, 0x1FFC, 0x214E, 0x2184, 0x2C61, 0x2C68, 0x2C6A, 0x2C6C, 0x2C73, 0x2C76, 0x2C81, 0x2C83, 0x2C85, 0x2C87, 0x2C89, 0x2C8B, 0x2C8D, 0x2C8F, 0x2C91, 0x2C93, 0x2C95, 0x2C97, 0x2C99, 0x2C9B, 0x2C9D, 0x2C9F, 0x2CA1, 0x2CA3, 0x2CA5, 0x2CA7, 0x2CA9, 0x2CAB, 0x2CAD, 0x2CAF, 0x2CB1, 0x2CB3, 0x2CB5, 0x2CB7, 0x2CB9, 0x2CBB, 0x2CBD, 0x2CBF, 0x2CC1, 0x2CC3, 0x2CC5, 0x2CC7, 0x2CC9, 0x2CCB, 0x2CCD, 0x2CCF, 0x2CD1, 0x2CD3, 0x2CD5, 0x2CD7, 0x2CD9, 0x2CDB, 0x2CDD, 0x2CDF, 0x2CE1, 0x2CE3, 0x2CEC, 0x2CEE, 0x2CF3, 0x2D27, 0x2D2D, 0xA641, 0xA643, 0xA645, 0xA647, 0xA649, 0xA64B, 0xA64D, 0xA64F, 0xA651, 0xA653, 0xA655, 0xA657, 0xA659, 0xA65B, 0xA65D, 0xA65F, 0xA661, 0xA663, 0xA665, 0xA667, 0xA669, 0xA66B, 0xA66D, 0xA681, 0xA683, 0xA685, 0xA687, 0xA689, 0xA68B, 0xA68D, 0xA68F, 0xA691, 0xA693, 0xA695, 0xA697, 0xA699, 0xA69B, 0xA723, 0xA725, 0xA727, 0xA729, 0xA72B, 0xA72D, 0xA72F, 0xA733, 0xA735, 0xA737, 0xA739, 0xA73B, 0xA73D, 0xA73F, 0xA741, 0xA743, 0xA745, 0xA747, 0xA749, 0xA74B, 0xA74D, 0xA74F, 0xA751, 0xA753, 0xA755, 0xA757, 0xA759, 0xA75B, 0xA75D, 0xA75F, 0xA761, 0xA763, 0xA765, 0xA767, 0xA769, 0xA76B, 0xA76D, 0xA76F, 0xA77A, 0xA77C, 0xA77F, 0xA781, 0xA783, 0xA785, 0xA787, 0xA78C, 0xA791, 0xA797, 0xA799, 0xA79B, 0xA79D, 0xA79F, 0xA7A1, 0xA7A3, 0xA7A5, 0xA7A7, 0xA7A9, 0xA7B5, 0xA7B7, 0xA7B9, 0xA7BB, 0xA7BD, 0xA7BF, 0xA7C1, 0xA7C3, 0xA7C8, 0xA7CA, 0xA7D1, 0xA7D7, 0xA7D9, 0xA7F6, 0xAB53);
      set.addRange(0x61, 0x7A).addRange(0xDF, 0xF6).addRange(0xF8, 0xFF).addRange(0x148, 0x149).addRange(0x17E, 0x180).addRange(0x199, 0x19A).addRange(0x1C5, 0x1C6).addRange(0x1C8, 0x1C9).addRange(0x1CB, 0x1CC).addRange(0x1DC, 0x1DD).addRange(0x1EF, 0x1F0).addRange(0x1F2, 0x1F3).addRange(0x23F, 0x240).addRange(0x24F, 0x254).addRange(0x256, 0x257).addRange(0x25B, 0x25C).addRange(0x260, 0x261).addRange(0x265, 0x266).addRange(0x268, 0x26C).addRange(0x271, 0x272).addRange(0x282, 0x283).addRange(0x287, 0x28C).addRange(0x29D, 0x29E).addRange(0x37B, 0x37D).addRange(0x3AC, 0x3CE).addRange(0x3D0, 0x3D1).addRange(0x3D5, 0x3D7).addRange(0x3EF, 0x3F3).addRange(0x430, 0x45F).addRange(0x4CE, 0x4CF).addRange(0x561, 0x587).addRange(0x10D0, 0x10FA).addRange(0x10FD, 0x10FF).addRange(0x13F8, 0x13FD).addRange(0x1C80, 0x1C88).addRange(0x1E95, 0x1E9B).addRange(0x1EFF, 0x1F07).addRange(0x1F10, 0x1F15).addRange(0x1F20, 0x1F27).addRange(0x1F30, 0x1F37).addRange(0x1F40, 0x1F45).addRange(0x1F50, 0x1F57).addRange(0x1F60, 0x1F67).addRange(0x1F70, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FB7).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FC7).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FD7).addRange(0x1FE0, 0x1FE7);
      set.addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FF7).addRange(0x2170, 0x217F).addRange(0x24D0, 0x24E9).addRange(0x2C30, 0x2C5F).addRange(0x2C65, 0x2C66).addRange(0x2D00, 0x2D25).addRange(0xA793, 0xA794).addRange(0xAB70, 0xABBF).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFF41, 0xFF5A).addRange(0x10428, 0x1044F).addRange(0x104D8, 0x104FB).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10CC0, 0x10CF2).addRange(0x118C0, 0x118DF).addRange(0x16E60, 0x16E7F).addRange(0x1E922, 0x1E943);
      Changes_When_Uppercased.characters = set;
      return Changes_When_Uppercased;
    }
  
    var Dash = {};
  
    var hasRequiredDash;
    function requireDash() {
      if (hasRequiredDash) return Dash;
      hasRequiredDash = 1;
      var set = regenerate$2.exports(0x2D, 0x58A, 0x5BE, 0x1400, 0x1806, 0x2053, 0x207B, 0x208B, 0x2212, 0x2E17, 0x2E1A, 0x2E40, 0x2E5D, 0x301C, 0x3030, 0x30A0, 0xFE58, 0xFE63, 0xFF0D, 0x10EAD);
      set.addRange(0x2010, 0x2015).addRange(0x2E3A, 0x2E3B).addRange(0xFE31, 0xFE32);
      Dash.characters = set;
      return Dash;
    }
  
    var Default_Ignorable_Code_Point = {};
  
    var hasRequiredDefault_Ignorable_Code_Point;
    function requireDefault_Ignorable_Code_Point() {
      if (hasRequiredDefault_Ignorable_Code_Point) return Default_Ignorable_Code_Point;
      hasRequiredDefault_Ignorable_Code_Point = 1;
      var set = regenerate$2.exports(0xAD, 0x34F, 0x61C, 0x3164, 0xFEFF, 0xFFA0);
      set.addRange(0x115F, 0x1160).addRange(0x17B4, 0x17B5).addRange(0x180B, 0x180F).addRange(0x200B, 0x200F).addRange(0x202A, 0x202E).addRange(0x2060, 0x206F).addRange(0xFE00, 0xFE0F).addRange(0xFFF0, 0xFFF8).addRange(0x1BCA0, 0x1BCA3).addRange(0x1D173, 0x1D17A).addRange(0xE0000, 0xE0FFF);
      Default_Ignorable_Code_Point.characters = set;
      return Default_Ignorable_Code_Point;
    }
  
    var Deprecated = {};
  
    var hasRequiredDeprecated;
    function requireDeprecated() {
      if (hasRequiredDeprecated) return Deprecated;
      hasRequiredDeprecated = 1;
      var set = regenerate$2.exports(0x149, 0x673, 0xF77, 0xF79, 0xE0001);
      set.addRange(0x17A3, 0x17A4).addRange(0x206A, 0x206F).addRange(0x2329, 0x232A);
      Deprecated.characters = set;
      return Deprecated;
    }
  
    var Diacritic = {};
  
    var hasRequiredDiacritic;
    function requireDiacritic() {
      if (hasRequiredDiacritic) return Diacritic;
      hasRequiredDiacritic = 1;
      var set = regenerate$2.exports(0x5E, 0x60, 0xA8, 0xAF, 0xB4, 0x37A, 0x559, 0x5BF, 0x5C4, 0x93C, 0x94D, 0x971, 0x9BC, 0x9CD, 0xA3C, 0xA4D, 0xABC, 0xACD, 0xB3C, 0xB4D, 0xB55, 0xBCD, 0xC3C, 0xC4D, 0xCBC, 0xCCD, 0xD4D, 0xDCA, 0xE4E, 0xEBA, 0xF35, 0xF37, 0xF39, 0xFC6, 0x1037, 0x108F, 0x17DD, 0x1A7F, 0x1B34, 0x1B44, 0x1CED, 0x1CF4, 0x1FBD, 0x2E2F, 0x30FC, 0xA66F, 0xA67F, 0xA8C4, 0xA953, 0xA9B3, 0xA9C0, 0xA9E5, 0xAAF6, 0xFB1E, 0xFF3E, 0xFF40, 0xFF70, 0xFFE3, 0x102E0, 0x11046, 0x11070, 0x11173, 0x111C0, 0x1133C, 0x1134D, 0x11442, 0x11446, 0x1163F, 0x1172B, 0x11943, 0x119E0, 0x11A34, 0x11A47, 0x11A99, 0x11C3F, 0x11D42, 0x11D97, 0x1E2AE);
      set.addRange(0xB7, 0xB8).addRange(0x2B0, 0x34E).addRange(0x350, 0x357).addRange(0x35D, 0x362).addRange(0x374, 0x375).addRange(0x384, 0x385).addRange(0x483, 0x487).addRange(0x591, 0x5A1).addRange(0x5A3, 0x5BD).addRange(0x5C1, 0x5C2).addRange(0x64B, 0x652).addRange(0x657, 0x658).addRange(0x6DF, 0x6E0).addRange(0x6E5, 0x6E6).addRange(0x6EA, 0x6EC).addRange(0x730, 0x74A).addRange(0x7A6, 0x7B0).addRange(0x7EB, 0x7F5).addRange(0x818, 0x819).addRange(0x898, 0x89F).addRange(0x8C9, 0x8D2).addRange(0x8E3, 0x8FE).addRange(0x951, 0x954).addRange(0xAFD, 0xAFF).addRange(0xD3B, 0xD3C).addRange(0xE47, 0xE4C).addRange(0xEC8, 0xECC).addRange(0xF18, 0xF19).addRange(0xF3E, 0xF3F).addRange(0xF82, 0xF84).addRange(0xF86, 0xF87).addRange(0x1039, 0x103A).addRange(0x1063, 0x1064).addRange(0x1069, 0x106D).addRange(0x1087, 0x108D).addRange(0x109A, 0x109B).addRange(0x135D, 0x135F).addRange(0x1714, 0x1715).addRange(0x17C9, 0x17D3).addRange(0x1939, 0x193B).addRange(0x1A75, 0x1A7C).addRange(0x1AB0, 0x1ABE).addRange(0x1AC1, 0x1ACB).addRange(0x1B6B, 0x1B73).addRange(0x1BAA, 0x1BAB).addRange(0x1C36, 0x1C37).addRange(0x1C78, 0x1C7D).addRange(0x1CD0, 0x1CE8).addRange(0x1CF7, 0x1CF9).addRange(0x1D2C, 0x1D6A).addRange(0x1DC4, 0x1DCF);
      set.addRange(0x1DF5, 0x1DFF).addRange(0x1FBF, 0x1FC1).addRange(0x1FCD, 0x1FCF).addRange(0x1FDD, 0x1FDF).addRange(0x1FED, 0x1FEF).addRange(0x1FFD, 0x1FFE).addRange(0x2CEF, 0x2CF1).addRange(0x302A, 0x302F).addRange(0x3099, 0x309C).addRange(0xA67C, 0xA67D).addRange(0xA69C, 0xA69D).addRange(0xA6F0, 0xA6F1).addRange(0xA700, 0xA721).addRange(0xA788, 0xA78A).addRange(0xA7F8, 0xA7F9).addRange(0xA8E0, 0xA8F1).addRange(0xA92B, 0xA92E).addRange(0xAA7B, 0xAA7D).addRange(0xAABF, 0xAAC2).addRange(0xAB5B, 0xAB5F).addRange(0xAB69, 0xAB6B).addRange(0xABEC, 0xABED).addRange(0xFE20, 0xFE2F).addRange(0xFF9E, 0xFF9F).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10AE5, 0x10AE6).addRange(0x10D22, 0x10D27).addRange(0x10EFD, 0x10EFF).addRange(0x10F46, 0x10F50).addRange(0x10F82, 0x10F85).addRange(0x110B9, 0x110BA).addRange(0x11133, 0x11134).addRange(0x111CA, 0x111CC).addRange(0x11235, 0x11236).addRange(0x112E9, 0x112EA).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x114C2, 0x114C3).addRange(0x115BF, 0x115C0).addRange(0x116B6, 0x116B7).addRange(0x11839, 0x1183A).addRange(0x1193D, 0x1193E).addRange(0x11D44, 0x11D45).addRange(0x13447, 0x13455).addRange(0x16AF0, 0x16AF4).addRange(0x16B30, 0x16B36).addRange(0x16F8F, 0x16F9F).addRange(0x16FF0, 0x16FF1).addRange(0x1AFF0, 0x1AFF3);
      set.addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1D167, 0x1D169).addRange(0x1D16D, 0x1D172).addRange(0x1D17B, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0x1E030, 0x1E06D).addRange(0x1E130, 0x1E136).addRange(0x1E2EC, 0x1E2EF).addRange(0x1E8D0, 0x1E8D6).addRange(0x1E944, 0x1E946).addRange(0x1E948, 0x1E94A);
      Diacritic.characters = set;
      return Diacritic;
    }
  
    var Emoji_Component = {};
  
    var hasRequiredEmoji_Component;
    function requireEmoji_Component() {
      if (hasRequiredEmoji_Component) return Emoji_Component;
      hasRequiredEmoji_Component = 1;
      var set = regenerate$2.exports(0x23, 0x2A, 0x200D, 0x20E3, 0xFE0F);
      set.addRange(0x30, 0x39).addRange(0x1F1E6, 0x1F1FF).addRange(0x1F3FB, 0x1F3FF).addRange(0x1F9B0, 0x1F9B3).addRange(0xE0020, 0xE007F);
      Emoji_Component.characters = set;
      return Emoji_Component;
    }
  
    var Emoji_Modifier_Base = {};
  
    var hasRequiredEmoji_Modifier_Base;
    function requireEmoji_Modifier_Base() {
      if (hasRequiredEmoji_Modifier_Base) return Emoji_Modifier_Base;
      hasRequiredEmoji_Modifier_Base = 1;
      var set = regenerate$2.exports(0x261D, 0x26F9, 0x1F385, 0x1F3C7, 0x1F47C, 0x1F48F, 0x1F491, 0x1F4AA, 0x1F57A, 0x1F590, 0x1F6A3, 0x1F6C0, 0x1F6CC, 0x1F90C, 0x1F90F, 0x1F926, 0x1F977, 0x1F9BB);
      set.addRange(0x270A, 0x270D).addRange(0x1F3C2, 0x1F3C4).addRange(0x1F3CA, 0x1F3CC).addRange(0x1F442, 0x1F443).addRange(0x1F446, 0x1F450).addRange(0x1F466, 0x1F478).addRange(0x1F481, 0x1F483).addRange(0x1F485, 0x1F487).addRange(0x1F574, 0x1F575).addRange(0x1F595, 0x1F596).addRange(0x1F645, 0x1F647).addRange(0x1F64B, 0x1F64F).addRange(0x1F6B4, 0x1F6B6).addRange(0x1F918, 0x1F91F).addRange(0x1F930, 0x1F939).addRange(0x1F93C, 0x1F93E).addRange(0x1F9B5, 0x1F9B6).addRange(0x1F9B8, 0x1F9B9).addRange(0x1F9CD, 0x1F9CF).addRange(0x1F9D1, 0x1F9DD).addRange(0x1FAC3, 0x1FAC5).addRange(0x1FAF0, 0x1FAF8);
      Emoji_Modifier_Base.characters = set;
      return Emoji_Modifier_Base;
    }
  
    var Emoji_Modifier = {};
  
    var hasRequiredEmoji_Modifier;
    function requireEmoji_Modifier() {
      if (hasRequiredEmoji_Modifier) return Emoji_Modifier;
      hasRequiredEmoji_Modifier = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1F3FB, 0x1F3FF);
      Emoji_Modifier.characters = set;
      return Emoji_Modifier;
    }
  
    var Emoji_Presentation = {};
  
    var hasRequiredEmoji_Presentation;
    function requireEmoji_Presentation() {
      if (hasRequiredEmoji_Presentation) return Emoji_Presentation;
      hasRequiredEmoji_Presentation = 1;
      var set = regenerate$2.exports(0x23F0, 0x23F3, 0x267F, 0x2693, 0x26A1, 0x26CE, 0x26D4, 0x26EA, 0x26F5, 0x26FA, 0x26FD, 0x2705, 0x2728, 0x274C, 0x274E, 0x2757, 0x27B0, 0x27BF, 0x2B50, 0x2B55, 0x1F004, 0x1F0CF, 0x1F18E, 0x1F201, 0x1F21A, 0x1F22F, 0x1F3F4, 0x1F440, 0x1F57A, 0x1F5A4, 0x1F6CC, 0x1F7F0);
      set.addRange(0x231A, 0x231B).addRange(0x23E9, 0x23EC).addRange(0x25FD, 0x25FE).addRange(0x2614, 0x2615).addRange(0x2648, 0x2653).addRange(0x26AA, 0x26AB).addRange(0x26BD, 0x26BE).addRange(0x26C4, 0x26C5).addRange(0x26F2, 0x26F3).addRange(0x270A, 0x270B).addRange(0x2753, 0x2755).addRange(0x2795, 0x2797).addRange(0x2B1B, 0x2B1C).addRange(0x1F191, 0x1F19A).addRange(0x1F1E6, 0x1F1FF).addRange(0x1F232, 0x1F236).addRange(0x1F238, 0x1F23A).addRange(0x1F250, 0x1F251).addRange(0x1F300, 0x1F320).addRange(0x1F32D, 0x1F335).addRange(0x1F337, 0x1F37C).addRange(0x1F37E, 0x1F393).addRange(0x1F3A0, 0x1F3CA).addRange(0x1F3CF, 0x1F3D3).addRange(0x1F3E0, 0x1F3F0).addRange(0x1F3F8, 0x1F43E).addRange(0x1F442, 0x1F4FC).addRange(0x1F4FF, 0x1F53D).addRange(0x1F54B, 0x1F54E).addRange(0x1F550, 0x1F567).addRange(0x1F595, 0x1F596).addRange(0x1F5FB, 0x1F64F).addRange(0x1F680, 0x1F6C5).addRange(0x1F6D0, 0x1F6D2).addRange(0x1F6D5, 0x1F6D7).addRange(0x1F6DC, 0x1F6DF).addRange(0x1F6EB, 0x1F6EC).addRange(0x1F6F4, 0x1F6FC).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F90C, 0x1F93A).addRange(0x1F93C, 0x1F945).addRange(0x1F947, 0x1F9FF).addRange(0x1FA70, 0x1FA7C).addRange(0x1FA80, 0x1FA88).addRange(0x1FA90, 0x1FABD).addRange(0x1FABF, 0x1FAC5).addRange(0x1FACE, 0x1FADB).addRange(0x1FAE0, 0x1FAE8).addRange(0x1FAF0, 0x1FAF8);
      Emoji_Presentation.characters = set;
      return Emoji_Presentation;
    }
  
    var Emoji = {};
  
    var hasRequiredEmoji;
    function requireEmoji() {
      if (hasRequiredEmoji) return Emoji;
      hasRequiredEmoji = 1;
      var set = regenerate$2.exports(0x23, 0x2A, 0xA9, 0xAE, 0x203C, 0x2049, 0x2122, 0x2139, 0x2328, 0x23CF, 0x24C2, 0x25B6, 0x25C0, 0x260E, 0x2611, 0x2618, 0x261D, 0x2620, 0x2626, 0x262A, 0x2640, 0x2642, 0x2663, 0x2668, 0x267B, 0x2699, 0x26A7, 0x26C8, 0x26D1, 0x26FD, 0x2702, 0x2705, 0x270F, 0x2712, 0x2714, 0x2716, 0x271D, 0x2721, 0x2728, 0x2744, 0x2747, 0x274C, 0x274E, 0x2757, 0x27A1, 0x27B0, 0x27BF, 0x2B50, 0x2B55, 0x3030, 0x303D, 0x3297, 0x3299, 0x1F004, 0x1F0CF, 0x1F18E, 0x1F21A, 0x1F22F, 0x1F587, 0x1F590, 0x1F5A8, 0x1F5BC, 0x1F5E1, 0x1F5E3, 0x1F5E8, 0x1F5EF, 0x1F5F3, 0x1F6E9, 0x1F6F0, 0x1F7F0);
      set.addRange(0x30, 0x39).addRange(0x2194, 0x2199).addRange(0x21A9, 0x21AA).addRange(0x231A, 0x231B).addRange(0x23E9, 0x23F3).addRange(0x23F8, 0x23FA).addRange(0x25AA, 0x25AB).addRange(0x25FB, 0x25FE).addRange(0x2600, 0x2604).addRange(0x2614, 0x2615).addRange(0x2622, 0x2623).addRange(0x262E, 0x262F).addRange(0x2638, 0x263A).addRange(0x2648, 0x2653).addRange(0x265F, 0x2660).addRange(0x2665, 0x2666).addRange(0x267E, 0x267F).addRange(0x2692, 0x2697).addRange(0x269B, 0x269C).addRange(0x26A0, 0x26A1).addRange(0x26AA, 0x26AB).addRange(0x26B0, 0x26B1).addRange(0x26BD, 0x26BE).addRange(0x26C4, 0x26C5).addRange(0x26CE, 0x26CF).addRange(0x26D3, 0x26D4).addRange(0x26E9, 0x26EA).addRange(0x26F0, 0x26F5).addRange(0x26F7, 0x26FA).addRange(0x2708, 0x270D).addRange(0x2733, 0x2734).addRange(0x2753, 0x2755).addRange(0x2763, 0x2764).addRange(0x2795, 0x2797).addRange(0x2934, 0x2935).addRange(0x2B05, 0x2B07).addRange(0x2B1B, 0x2B1C).addRange(0x1F170, 0x1F171).addRange(0x1F17E, 0x1F17F).addRange(0x1F191, 0x1F19A).addRange(0x1F1E6, 0x1F1FF).addRange(0x1F201, 0x1F202).addRange(0x1F232, 0x1F23A).addRange(0x1F250, 0x1F251).addRange(0x1F300, 0x1F321).addRange(0x1F324, 0x1F393).addRange(0x1F396, 0x1F397).addRange(0x1F399, 0x1F39B).addRange(0x1F39E, 0x1F3F0).addRange(0x1F3F3, 0x1F3F5).addRange(0x1F3F7, 0x1F4FD);
      set.addRange(0x1F4FF, 0x1F53D).addRange(0x1F549, 0x1F54E).addRange(0x1F550, 0x1F567).addRange(0x1F56F, 0x1F570).addRange(0x1F573, 0x1F57A).addRange(0x1F58A, 0x1F58D).addRange(0x1F595, 0x1F596).addRange(0x1F5A4, 0x1F5A5).addRange(0x1F5B1, 0x1F5B2).addRange(0x1F5C2, 0x1F5C4).addRange(0x1F5D1, 0x1F5D3).addRange(0x1F5DC, 0x1F5DE).addRange(0x1F5FA, 0x1F64F).addRange(0x1F680, 0x1F6C5).addRange(0x1F6CB, 0x1F6D2).addRange(0x1F6D5, 0x1F6D7).addRange(0x1F6DC, 0x1F6E5).addRange(0x1F6EB, 0x1F6EC).addRange(0x1F6F3, 0x1F6FC).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F90C, 0x1F93A).addRange(0x1F93C, 0x1F945).addRange(0x1F947, 0x1F9FF).addRange(0x1FA70, 0x1FA7C).addRange(0x1FA80, 0x1FA88).addRange(0x1FA90, 0x1FABD).addRange(0x1FABF, 0x1FAC5).addRange(0x1FACE, 0x1FADB).addRange(0x1FAE0, 0x1FAE8).addRange(0x1FAF0, 0x1FAF8);
      Emoji.characters = set;
      return Emoji;
    }
  
    var Extended_Pictographic = {};
  
    var hasRequiredExtended_Pictographic;
    function requireExtended_Pictographic() {
      if (hasRequiredExtended_Pictographic) return Extended_Pictographic;
      hasRequiredExtended_Pictographic = 1;
      var set = regenerate$2.exports(0xA9, 0xAE, 0x203C, 0x2049, 0x2122, 0x2139, 0x2328, 0x2388, 0x23CF, 0x24C2, 0x25B6, 0x25C0, 0x2714, 0x2716, 0x271D, 0x2721, 0x2728, 0x2744, 0x2747, 0x274C, 0x274E, 0x2757, 0x27A1, 0x27B0, 0x27BF, 0x2B50, 0x2B55, 0x3030, 0x303D, 0x3297, 0x3299, 0x1F12F, 0x1F18E, 0x1F21A, 0x1F22F);
      set.addRange(0x2194, 0x2199).addRange(0x21A9, 0x21AA).addRange(0x231A, 0x231B).addRange(0x23E9, 0x23F3).addRange(0x23F8, 0x23FA).addRange(0x25AA, 0x25AB).addRange(0x25FB, 0x25FE).addRange(0x2600, 0x2605).addRange(0x2607, 0x2612).addRange(0x2614, 0x2685).addRange(0x2690, 0x2705).addRange(0x2708, 0x2712).addRange(0x2733, 0x2734).addRange(0x2753, 0x2755).addRange(0x2763, 0x2767).addRange(0x2795, 0x2797).addRange(0x2934, 0x2935).addRange(0x2B05, 0x2B07).addRange(0x2B1B, 0x2B1C).addRange(0x1F000, 0x1F0FF).addRange(0x1F10D, 0x1F10F).addRange(0x1F16C, 0x1F171).addRange(0x1F17E, 0x1F17F).addRange(0x1F191, 0x1F19A).addRange(0x1F1AD, 0x1F1E5).addRange(0x1F201, 0x1F20F).addRange(0x1F232, 0x1F23A).addRange(0x1F23C, 0x1F23F).addRange(0x1F249, 0x1F3FA).addRange(0x1F400, 0x1F53D).addRange(0x1F546, 0x1F64F).addRange(0x1F680, 0x1F6FF).addRange(0x1F774, 0x1F77F).addRange(0x1F7D5, 0x1F7FF).addRange(0x1F80C, 0x1F80F).addRange(0x1F848, 0x1F84F).addRange(0x1F85A, 0x1F85F).addRange(0x1F888, 0x1F88F).addRange(0x1F8AE, 0x1F8FF).addRange(0x1F90C, 0x1F93A).addRange(0x1F93C, 0x1F945).addRange(0x1F947, 0x1FAFF).addRange(0x1FC00, 0x1FFFD);
      Extended_Pictographic.characters = set;
      return Extended_Pictographic;
    }
  
    var Extender = {};
  
    var hasRequiredExtender;
    function requireExtender() {
      if (hasRequiredExtender) return Extender;
      hasRequiredExtender = 1;
      var set = regenerate$2.exports(0xB7, 0x640, 0x7FA, 0xB55, 0xE46, 0xEC6, 0x180A, 0x1843, 0x1AA7, 0x1C36, 0x1C7B, 0x3005, 0xA015, 0xA60C, 0xA9CF, 0xA9E6, 0xAA70, 0xAADD, 0xFF70, 0x1135D, 0x11A98, 0x16FE3);
      set.addRange(0x2D0, 0x2D1).addRange(0x3031, 0x3035).addRange(0x309D, 0x309E).addRange(0x30FC, 0x30FE).addRange(0xAAF3, 0xAAF4).addRange(0x10781, 0x10782).addRange(0x115C6, 0x115C8).addRange(0x16B42, 0x16B43).addRange(0x16FE0, 0x16FE1).addRange(0x1E13C, 0x1E13D).addRange(0x1E944, 0x1E946);
      Extender.characters = set;
      return Extender;
    }
  
    var Grapheme_Base = {};
  
    var hasRequiredGrapheme_Base;
    function requireGrapheme_Base() {
      if (hasRequiredGrapheme_Base) return Grapheme_Base;
      hasRequiredGrapheme_Base = 1;
      var set = regenerate$2.exports(0x38C, 0x5BE, 0x5C0, 0x5C3, 0x5C6, 0x61B, 0x6DE, 0x6E9, 0x710, 0x7B1, 0x81A, 0x824, 0x828, 0x85E, 0x93B, 0x9B2, 0x9BD, 0x9CE, 0xA03, 0xA5E, 0xA76, 0xA83, 0xAC9, 0xAD0, 0xAF9, 0xB3D, 0xB40, 0xB83, 0xB9C, 0xBBF, 0xBD0, 0xC3D, 0xC5D, 0xD3D, 0xDBD, 0xE84, 0xEA5, 0xEBD, 0xEC6, 0xF36, 0xF38, 0xF7F, 0xF85, 0x1031, 0x1038, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x1715, 0x17B6, 0x18AA, 0x1940, 0x1A57, 0x1A61, 0x1B3B, 0x1BAA, 0x1BE7, 0x1BEE, 0x1CD3, 0x1CE1, 0x1CFA, 0x1F59, 0x1F5B, 0x1F5D, 0x2D27, 0x2D2D, 0xA673, 0xA7D3, 0xAA4D, 0xAAB1, 0xAAC0, 0xAAC2, 0xFB1D, 0xFB3E, 0xFDCF, 0x101A0, 0x10808, 0x1083C, 0x1093F, 0x10EAD, 0x11000, 0x11075, 0x1112C, 0x11235, 0x11288, 0x1133D, 0x1133F, 0x11350, 0x11445, 0x1145D, 0x114B9, 0x114BE, 0x114C1, 0x115BE, 0x1163E, 0x116AC, 0x116B6, 0x11726, 0x11838, 0x1183B, 0x11909, 0x1193D, 0x11A00, 0x11A50, 0x11A97, 0x11C3E, 0x11CA9, 0x11CB1, 0x11CB4, 0x11D46, 0x11D96, 0x11D98, 0x11F41, 0x11FB0, 0x16AF5, 0x1B132, 0x1B155, 0x1BC9C, 0x1BC9F, 0x1D166, 0x1D245, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1E2FF, 0x1E94B, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E, 0x1F7F0);
      set.addRange(0x20, 0x7E).addRange(0xA0, 0xAC).addRange(0xAE, 0x2FF).addRange(0x370, 0x377).addRange(0x37A, 0x37F).addRange(0x384, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x482).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x559, 0x58A).addRange(0x58D, 0x58F).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F4).addRange(0x606, 0x60F).addRange(0x61D, 0x64A).addRange(0x660, 0x66F).addRange(0x671, 0x6D5).addRange(0x6E5, 0x6E6).addRange(0x6EE, 0x70D).addRange(0x712, 0x72F).addRange(0x74D, 0x7A5).addRange(0x7C0, 0x7EA).addRange(0x7F4, 0x7FA).addRange(0x7FE, 0x815).addRange(0x830, 0x83E).addRange(0x840, 0x858).addRange(0x860, 0x86A).addRange(0x870, 0x88E).addRange(0x8A0, 0x8C9).addRange(0x903, 0x939).addRange(0x93D, 0x940).addRange(0x949, 0x94C).addRange(0x94E, 0x950).addRange(0x958, 0x961).addRange(0x964, 0x980).addRange(0x982, 0x983).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9BF, 0x9C0).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CC).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E1).addRange(0x9E6, 0x9FD).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28);
      set.addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA3E, 0xA40).addRange(0xA59, 0xA5C).addRange(0xA66, 0xA6F).addRange(0xA72, 0xA74).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xABD, 0xAC0).addRange(0xACB, 0xACC).addRange(0xAE0, 0xAE1).addRange(0xAE6, 0xAF1).addRange(0xB02, 0xB03).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4C).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB61).addRange(0xB66, 0xB77).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xBC1, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCC).addRange(0xBE6, 0xBFA).addRange(0xC01, 0xC03).addRange(0xC05, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC41, 0xC44).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC61).addRange(0xC66, 0xC6F);
      set.addRange(0xC77, 0xC80).addRange(0xC82, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCBD, 0xCBE).addRange(0xCC0, 0xCC1).addRange(0xCC3, 0xCC4).addRange(0xCC7, 0xCC8).addRange(0xCCA, 0xCCB).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE1).addRange(0xCE6, 0xCEF).addRange(0xCF1, 0xCF3).addRange(0xD02, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD3A).addRange(0xD3F, 0xD40).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4C).addRange(0xD4E, 0xD4F).addRange(0xD54, 0xD56).addRange(0xD58, 0xD61).addRange(0xD66, 0xD7F).addRange(0xD82, 0xD83).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xDD0, 0xDD1).addRange(0xDD8, 0xDDE).addRange(0xDE6, 0xDEF).addRange(0xDF2, 0xDF4).addRange(0xE01, 0xE30).addRange(0xE32, 0xE33).addRange(0xE3F, 0xE46).addRange(0xE4F, 0xE5B).addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEB0).addRange(0xEB2, 0xEB3).addRange(0xEC0, 0xEC4).addRange(0xED0, 0xED9).addRange(0xEDC, 0xEDF).addRange(0xF00, 0xF17).addRange(0xF1A, 0xF34).addRange(0xF3A, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF88, 0xF8C);
      set.addRange(0xFBE, 0xFC5).addRange(0xFC7, 0xFCC).addRange(0xFCE, 0xFDA).addRange(0x1000, 0x102C).addRange(0x103B, 0x103C).addRange(0x103F, 0x1057).addRange(0x105A, 0x105D).addRange(0x1061, 0x1070).addRange(0x1075, 0x1081).addRange(0x1083, 0x1084).addRange(0x1087, 0x108C).addRange(0x108E, 0x109C).addRange(0x109E, 0x10C5).addRange(0x10D0, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x1360, 0x137C).addRange(0x1380, 0x1399).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1400, 0x169C).addRange(0x16A0, 0x16F8).addRange(0x1700, 0x1711).addRange(0x171F, 0x1731).addRange(0x1734, 0x1736).addRange(0x1740, 0x1751).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1780, 0x17B3).addRange(0x17BE, 0x17C5).addRange(0x17C7, 0x17C8).addRange(0x17D4, 0x17DC).addRange(0x17E0, 0x17E9).addRange(0x17F0, 0x17F9).addRange(0x1800, 0x180A).addRange(0x1810, 0x1819).addRange(0x1820, 0x1878).addRange(0x1880, 0x1884).addRange(0x1887, 0x18A8).addRange(0x18B0, 0x18F5);
      set.addRange(0x1900, 0x191E).addRange(0x1923, 0x1926).addRange(0x1929, 0x192B).addRange(0x1930, 0x1931).addRange(0x1933, 0x1938).addRange(0x1944, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x19D0, 0x19DA).addRange(0x19DE, 0x1A16).addRange(0x1A19, 0x1A1A).addRange(0x1A1E, 0x1A55).addRange(0x1A63, 0x1A64).addRange(0x1A6D, 0x1A72).addRange(0x1A80, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1AA0, 0x1AAD).addRange(0x1B04, 0x1B33).addRange(0x1B3D, 0x1B41).addRange(0x1B43, 0x1B4C).addRange(0x1B50, 0x1B6A).addRange(0x1B74, 0x1B7E).addRange(0x1B82, 0x1BA1).addRange(0x1BA6, 0x1BA7).addRange(0x1BAE, 0x1BE5).addRange(0x1BEA, 0x1BEC).addRange(0x1BF2, 0x1BF3).addRange(0x1BFC, 0x1C2B).addRange(0x1C34, 0x1C35).addRange(0x1C3B, 0x1C49).addRange(0x1C4D, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CC7).addRange(0x1CE9, 0x1CEC).addRange(0x1CEE, 0x1CF3).addRange(0x1CF5, 0x1CF7).addRange(0x1D00, 0x1DBF).addRange(0x1E00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FC4).addRange(0x1FC6, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FDD, 0x1FEF).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFE);
      set.addRange(0x2000, 0x200A).addRange(0x2010, 0x2027).addRange(0x202F, 0x205F).addRange(0x2070, 0x2071).addRange(0x2074, 0x208E).addRange(0x2090, 0x209C).addRange(0x20A0, 0x20C0).addRange(0x2100, 0x218B).addRange(0x2190, 0x2426).addRange(0x2440, 0x244A).addRange(0x2460, 0x2B73).addRange(0x2B76, 0x2B95).addRange(0x2B97, 0x2CEE).addRange(0x2CF2, 0x2CF3).addRange(0x2CF9, 0x2D25).addRange(0x2D30, 0x2D67).addRange(0x2D6F, 0x2D70).addRange(0x2D80, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x2E00, 0x2E5D).addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x2FF0, 0x2FFB).addRange(0x3000, 0x3029).addRange(0x3030, 0x303F).addRange(0x3041, 0x3096).addRange(0x309B, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x3190, 0x31E3).addRange(0x31F0, 0x321E).addRange(0x3220, 0xA48C).addRange(0xA490, 0xA4C6).addRange(0xA4D0, 0xA62B).addRange(0xA640, 0xA66E).addRange(0xA67E, 0xA69D).addRange(0xA6A0, 0xA6EF).addRange(0xA6F2, 0xA6F7).addRange(0xA700, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA801).addRange(0xA803, 0xA805);
      set.addRange(0xA807, 0xA80A).addRange(0xA80C, 0xA824).addRange(0xA827, 0xA82B).addRange(0xA830, 0xA839).addRange(0xA840, 0xA877).addRange(0xA880, 0xA8C3).addRange(0xA8CE, 0xA8D9).addRange(0xA8F2, 0xA8FE).addRange(0xA900, 0xA925).addRange(0xA92E, 0xA946).addRange(0xA952, 0xA953).addRange(0xA95F, 0xA97C).addRange(0xA983, 0xA9B2).addRange(0xA9B4, 0xA9B5).addRange(0xA9BA, 0xA9BB).addRange(0xA9BE, 0xA9CD).addRange(0xA9CF, 0xA9D9).addRange(0xA9DE, 0xA9E4).addRange(0xA9E6, 0xA9FE).addRange(0xAA00, 0xAA28).addRange(0xAA2F, 0xAA30).addRange(0xAA33, 0xAA34).addRange(0xAA40, 0xAA42).addRange(0xAA44, 0xAA4B).addRange(0xAA50, 0xAA59).addRange(0xAA5C, 0xAA7B).addRange(0xAA7D, 0xAAAF).addRange(0xAAB5, 0xAAB6).addRange(0xAAB9, 0xAABD).addRange(0xAADB, 0xAAEB).addRange(0xAAEE, 0xAAF5).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB6B).addRange(0xAB70, 0xABE4).addRange(0xABE6, 0xABE7).addRange(0xABE9, 0xABEC).addRange(0xABF0, 0xABF9).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1F, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41);
      set.addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBC2).addRange(0xFBD3, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFF).addRange(0xFE10, 0xFE19).addRange(0xFE30, 0xFE52).addRange(0xFE54, 0xFE66).addRange(0xFE68, 0xFE6B).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0xFF01, 0xFF9D).addRange(0xFFA0, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE).addRange(0xFFFC, 0xFFFD).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10100, 0x10102).addRange(0x10107, 0x10133).addRange(0x10137, 0x1018E).addRange(0x10190, 0x1019C).addRange(0x101D0, 0x101FC).addRange(0x10280, 0x1029C).addRange(0x102A0, 0x102D0).addRange(0x102E1, 0x102FB).addRange(0x10300, 0x10323).addRange(0x1032D, 0x1034A).addRange(0x10350, 0x10375).addRange(0x10380, 0x1039D).addRange(0x1039F, 0x103C3).addRange(0x103C8, 0x103D5).addRange(0x10400, 0x1049D).addRange(0x104A0, 0x104A9).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x1056F, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595);
      set.addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10857, 0x1089E).addRange(0x108A7, 0x108AF).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x108FB, 0x1091B).addRange(0x1091F, 0x10939).addRange(0x10980, 0x109B7).addRange(0x109BC, 0x109CF).addRange(0x109D2, 0x10A00).addRange(0x10A10, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A40, 0x10A48).addRange(0x10A50, 0x10A58).addRange(0x10A60, 0x10A9F).addRange(0x10AC0, 0x10AE4).addRange(0x10AEB, 0x10AF6).addRange(0x10B00, 0x10B35).addRange(0x10B39, 0x10B55).addRange(0x10B58, 0x10B72).addRange(0x10B78, 0x10B91).addRange(0x10B99, 0x10B9C).addRange(0x10BA9, 0x10BAF).addRange(0x10C00, 0x10C48).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10CFA, 0x10D23).addRange(0x10D30, 0x10D39).addRange(0x10E60, 0x10E7E).addRange(0x10E80, 0x10EA9).addRange(0x10EB0, 0x10EB1).addRange(0x10F00, 0x10F27).addRange(0x10F30, 0x10F45).addRange(0x10F51, 0x10F59).addRange(0x10F70, 0x10F81).addRange(0x10F86, 0x10F89).addRange(0x10FB0, 0x10FCB);
      set.addRange(0x10FE0, 0x10FF6).addRange(0x11002, 0x11037).addRange(0x11047, 0x1104D).addRange(0x11052, 0x1106F).addRange(0x11071, 0x11072).addRange(0x11082, 0x110B2).addRange(0x110B7, 0x110B8).addRange(0x110BB, 0x110BC).addRange(0x110BE, 0x110C1).addRange(0x110D0, 0x110E8).addRange(0x110F0, 0x110F9).addRange(0x11103, 0x11126).addRange(0x11136, 0x11147).addRange(0x11150, 0x11172).addRange(0x11174, 0x11176).addRange(0x11182, 0x111B5).addRange(0x111BF, 0x111C8).addRange(0x111CD, 0x111CE).addRange(0x111D0, 0x111DF).addRange(0x111E1, 0x111F4).addRange(0x11200, 0x11211).addRange(0x11213, 0x1122E).addRange(0x11232, 0x11233).addRange(0x11238, 0x1123D).addRange(0x1123F, 0x11240).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A9).addRange(0x112B0, 0x112DE).addRange(0x112E0, 0x112E2).addRange(0x112F0, 0x112F9).addRange(0x11302, 0x11303).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x11341, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x1135D, 0x11363).addRange(0x11400, 0x11437).addRange(0x11440, 0x11441).addRange(0x11447, 0x1145B).addRange(0x1145F, 0x11461).addRange(0x11480, 0x114AF).addRange(0x114B1, 0x114B2).addRange(0x114BB, 0x114BC).addRange(0x114C4, 0x114C7);
      set.addRange(0x114D0, 0x114D9).addRange(0x11580, 0x115AE).addRange(0x115B0, 0x115B1).addRange(0x115B8, 0x115BB).addRange(0x115C1, 0x115DB).addRange(0x11600, 0x11632).addRange(0x1163B, 0x1163C).addRange(0x11641, 0x11644).addRange(0x11650, 0x11659).addRange(0x11660, 0x1166C).addRange(0x11680, 0x116AA).addRange(0x116AE, 0x116AF).addRange(0x116B8, 0x116B9).addRange(0x116C0, 0x116C9).addRange(0x11700, 0x1171A).addRange(0x11720, 0x11721).addRange(0x11730, 0x11746).addRange(0x11800, 0x1182E).addRange(0x118A0, 0x118F2).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x1192F).addRange(0x11931, 0x11935).addRange(0x11937, 0x11938).addRange(0x1193F, 0x11942).addRange(0x11944, 0x11946).addRange(0x11950, 0x11959).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D3).addRange(0x119DC, 0x119DF).addRange(0x119E1, 0x119E4).addRange(0x11A0B, 0x11A32).addRange(0x11A39, 0x11A3A).addRange(0x11A3F, 0x11A46).addRange(0x11A57, 0x11A58).addRange(0x11A5C, 0x11A89).addRange(0x11A9A, 0x11AA2).addRange(0x11AB0, 0x11AF8).addRange(0x11B00, 0x11B09).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C2F).addRange(0x11C40, 0x11C45).addRange(0x11C50, 0x11C6C).addRange(0x11C70, 0x11C8F).addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D30).addRange(0x11D50, 0x11D59).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68);
      set.addRange(0x11D6A, 0x11D8E).addRange(0x11D93, 0x11D94).addRange(0x11DA0, 0x11DA9).addRange(0x11EE0, 0x11EF2).addRange(0x11EF5, 0x11EF8).addRange(0x11F02, 0x11F10).addRange(0x11F12, 0x11F35).addRange(0x11F3E, 0x11F3F).addRange(0x11F43, 0x11F59).addRange(0x11FC0, 0x11FF1).addRange(0x11FFF, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12470, 0x12474).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF2).addRange(0x13000, 0x1342F).addRange(0x13441, 0x13446).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A60, 0x16A69).addRange(0x16A6E, 0x16ABE).addRange(0x16AC0, 0x16AC9).addRange(0x16AD0, 0x16AED).addRange(0x16B00, 0x16B2F).addRange(0x16B37, 0x16B45).addRange(0x16B50, 0x16B59).addRange(0x16B5B, 0x16B61).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E9A).addRange(0x16F00, 0x16F4A).addRange(0x16F50, 0x16F87).addRange(0x16F93, 0x16F9F).addRange(0x16FE0, 0x16FE3).addRange(0x16FF0, 0x16FF1).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B000, 0x1B122).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1CF50, 0x1CFC3);
      set.addRange(0x1D000, 0x1D0F5).addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D164).addRange(0x1D16A, 0x1D16D).addRange(0x1D183, 0x1D184).addRange(0x1D18C, 0x1D1A9).addRange(0x1D1AE, 0x1D1EA).addRange(0x1D200, 0x1D241).addRange(0x1D2C0, 0x1D2D3).addRange(0x1D2E0, 0x1D2F3).addRange(0x1D300, 0x1D356).addRange(0x1D360, 0x1D378).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D7CB).addRange(0x1D7CE, 0x1D9FF).addRange(0x1DA37, 0x1DA3A).addRange(0x1DA6D, 0x1DA74).addRange(0x1DA76, 0x1DA83).addRange(0x1DA85, 0x1DA8B).addRange(0x1DF00, 0x1DF1E).addRange(0x1DF25, 0x1DF2A).addRange(0x1E030, 0x1E06D).addRange(0x1E100, 0x1E12C).addRange(0x1E137, 0x1E13D).addRange(0x1E140, 0x1E149).addRange(0x1E14E, 0x1E14F).addRange(0x1E290, 0x1E2AD).addRange(0x1E2C0, 0x1E2EB).addRange(0x1E2F0, 0x1E2F9).addRange(0x1E4D0, 0x1E4EB).addRange(0x1E4F0, 0x1E4F9).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4);
      set.addRange(0x1E8C7, 0x1E8CF).addRange(0x1E900, 0x1E943).addRange(0x1E950, 0x1E959).addRange(0x1E95E, 0x1E95F).addRange(0x1EC71, 0x1ECB4).addRange(0x1ED01, 0x1ED3D).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1EEF0, 0x1EEF1).addRange(0x1F000, 0x1F02B).addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F100, 0x1F1AD).addRange(0x1F1E6, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F6D7).addRange(0x1F6DC, 0x1F6EC).addRange(0x1F6F0, 0x1F6FC).addRange(0x1F700, 0x1F776).addRange(0x1F77B, 0x1F7D9).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887).addRange(0x1F890, 0x1F8AD).addRange(0x1F8B0, 0x1F8B1).addRange(0x1F900, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA7C);
      set.addRange(0x1FA80, 0x1FA88).addRange(0x1FA90, 0x1FABD).addRange(0x1FABF, 0x1FAC5).addRange(0x1FACE, 0x1FADB).addRange(0x1FAE0, 0x1FAE8).addRange(0x1FAF0, 0x1FAF8).addRange(0x1FB00, 0x1FB92).addRange(0x1FB94, 0x1FBCA).addRange(0x1FBF0, 0x1FBF9).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B739).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A).addRange(0x31350, 0x323AF);
      Grapheme_Base.characters = set;
      return Grapheme_Base;
    }
  
    var Grapheme_Extend = {};
  
    var hasRequiredGrapheme_Extend;
    function requireGrapheme_Extend() {
      if (hasRequiredGrapheme_Extend) return Grapheme_Extend;
      hasRequiredGrapheme_Extend = 1;
      var set = regenerate$2.exports(0x5BF, 0x5C7, 0x670, 0x711, 0x7FD, 0x93A, 0x93C, 0x94D, 0x981, 0x9BC, 0x9BE, 0x9CD, 0x9D7, 0x9FE, 0xA3C, 0xA51, 0xA75, 0xABC, 0xACD, 0xB01, 0xB3C, 0xB4D, 0xB82, 0xBBE, 0xBC0, 0xBCD, 0xBD7, 0xC00, 0xC04, 0xC3C, 0xC81, 0xCBC, 0xCBF, 0xCC2, 0xCC6, 0xD3E, 0xD4D, 0xD57, 0xD81, 0xDCA, 0xDCF, 0xDD6, 0xDDF, 0xE31, 0xEB1, 0xF35, 0xF37, 0xF39, 0xFC6, 0x1082, 0x108D, 0x109D, 0x17C6, 0x17DD, 0x180F, 0x18A9, 0x1932, 0x1A1B, 0x1A56, 0x1A60, 0x1A62, 0x1A7F, 0x1B3C, 0x1B42, 0x1BE6, 0x1BED, 0x1CED, 0x1CF4, 0x200C, 0x2D7F, 0xA802, 0xA806, 0xA80B, 0xA82C, 0xA8FF, 0xA9B3, 0xA9E5, 0xAA43, 0xAA4C, 0xAA7C, 0xAAB0, 0xAAC1, 0xAAF6, 0xABE5, 0xABE8, 0xABED, 0xFB1E, 0x101FD, 0x102E0, 0x10A3F, 0x11001, 0x11070, 0x110C2, 0x11173, 0x111CF, 0x11234, 0x1123E, 0x11241, 0x112DF, 0x1133E, 0x11340, 0x11357, 0x11446, 0x1145E, 0x114B0, 0x114BA, 0x114BD, 0x115AF, 0x1163D, 0x116AB, 0x116AD, 0x116B7, 0x11930, 0x1193E, 0x11943, 0x119E0, 0x11A47, 0x11C3F, 0x11D3A, 0x11D47, 0x11D95, 0x11D97, 0x11F40, 0x11F42, 0x13440, 0x16F4F, 0x16FE4, 0x1D165, 0x1DA75, 0x1DA84, 0x1E08F, 0x1E2AE);
      set.addRange(0x300, 0x36F).addRange(0x483, 0x489).addRange(0x591, 0x5BD).addRange(0x5C1, 0x5C2).addRange(0x5C4, 0x5C5).addRange(0x610, 0x61A).addRange(0x64B, 0x65F).addRange(0x6D6, 0x6DC).addRange(0x6DF, 0x6E4).addRange(0x6E7, 0x6E8).addRange(0x6EA, 0x6ED).addRange(0x730, 0x74A).addRange(0x7A6, 0x7B0).addRange(0x7EB, 0x7F3).addRange(0x816, 0x819).addRange(0x81B, 0x823).addRange(0x825, 0x827).addRange(0x829, 0x82D).addRange(0x859, 0x85B).addRange(0x898, 0x89F).addRange(0x8CA, 0x8E1).addRange(0x8E3, 0x902).addRange(0x941, 0x948).addRange(0x951, 0x957).addRange(0x962, 0x963).addRange(0x9C1, 0x9C4).addRange(0x9E2, 0x9E3).addRange(0xA01, 0xA02).addRange(0xA41, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA70, 0xA71).addRange(0xA81, 0xA82).addRange(0xAC1, 0xAC5).addRange(0xAC7, 0xAC8).addRange(0xAE2, 0xAE3).addRange(0xAFA, 0xAFF).addRange(0xB3E, 0xB3F).addRange(0xB41, 0xB44).addRange(0xB55, 0xB57).addRange(0xB62, 0xB63).addRange(0xC3E, 0xC40).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC62, 0xC63).addRange(0xCCC, 0xCCD).addRange(0xCD5, 0xCD6).addRange(0xCE2, 0xCE3).addRange(0xD00, 0xD01).addRange(0xD3B, 0xD3C);
      set.addRange(0xD41, 0xD44).addRange(0xD62, 0xD63).addRange(0xDD2, 0xDD4).addRange(0xE34, 0xE3A).addRange(0xE47, 0xE4E).addRange(0xEB4, 0xEBC).addRange(0xEC8, 0xECE).addRange(0xF18, 0xF19).addRange(0xF71, 0xF7E).addRange(0xF80, 0xF84).addRange(0xF86, 0xF87).addRange(0xF8D, 0xF97).addRange(0xF99, 0xFBC).addRange(0x102D, 0x1030).addRange(0x1032, 0x1037).addRange(0x1039, 0x103A).addRange(0x103D, 0x103E).addRange(0x1058, 0x1059).addRange(0x105E, 0x1060).addRange(0x1071, 0x1074).addRange(0x1085, 0x1086).addRange(0x135D, 0x135F).addRange(0x1712, 0x1714).addRange(0x1732, 0x1733).addRange(0x1752, 0x1753).addRange(0x1772, 0x1773).addRange(0x17B4, 0x17B5).addRange(0x17B7, 0x17BD).addRange(0x17C9, 0x17D3).addRange(0x180B, 0x180D).addRange(0x1885, 0x1886).addRange(0x1920, 0x1922).addRange(0x1927, 0x1928).addRange(0x1939, 0x193B).addRange(0x1A17, 0x1A18).addRange(0x1A58, 0x1A5E).addRange(0x1A65, 0x1A6C).addRange(0x1A73, 0x1A7C).addRange(0x1AB0, 0x1ACE).addRange(0x1B00, 0x1B03).addRange(0x1B34, 0x1B3A).addRange(0x1B6B, 0x1B73).addRange(0x1B80, 0x1B81).addRange(0x1BA2, 0x1BA5).addRange(0x1BA8, 0x1BA9).addRange(0x1BAB, 0x1BAD).addRange(0x1BE8, 0x1BE9).addRange(0x1BEF, 0x1BF1).addRange(0x1C2C, 0x1C33).addRange(0x1C36, 0x1C37).addRange(0x1CD0, 0x1CD2);
      set.addRange(0x1CD4, 0x1CE0).addRange(0x1CE2, 0x1CE8).addRange(0x1CF8, 0x1CF9).addRange(0x1DC0, 0x1DFF).addRange(0x20D0, 0x20F0).addRange(0x2CEF, 0x2CF1).addRange(0x2DE0, 0x2DFF).addRange(0x302A, 0x302F).addRange(0x3099, 0x309A).addRange(0xA66F, 0xA672).addRange(0xA674, 0xA67D).addRange(0xA69E, 0xA69F).addRange(0xA6F0, 0xA6F1).addRange(0xA825, 0xA826).addRange(0xA8C4, 0xA8C5).addRange(0xA8E0, 0xA8F1).addRange(0xA926, 0xA92D).addRange(0xA947, 0xA951).addRange(0xA980, 0xA982).addRange(0xA9B6, 0xA9B9).addRange(0xA9BC, 0xA9BD).addRange(0xAA29, 0xAA2E).addRange(0xAA31, 0xAA32).addRange(0xAA35, 0xAA36).addRange(0xAAB2, 0xAAB4).addRange(0xAAB7, 0xAAB8).addRange(0xAABE, 0xAABF).addRange(0xAAEC, 0xAAED).addRange(0xFE00, 0xFE0F).addRange(0xFE20, 0xFE2F).addRange(0xFF9E, 0xFF9F).addRange(0x10376, 0x1037A).addRange(0x10A01, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A0F).addRange(0x10A38, 0x10A3A).addRange(0x10AE5, 0x10AE6).addRange(0x10D24, 0x10D27).addRange(0x10EAB, 0x10EAC).addRange(0x10EFD, 0x10EFF).addRange(0x10F46, 0x10F50).addRange(0x10F82, 0x10F85).addRange(0x11038, 0x11046).addRange(0x11073, 0x11074).addRange(0x1107F, 0x11081).addRange(0x110B3, 0x110B6).addRange(0x110B9, 0x110BA).addRange(0x11100, 0x11102).addRange(0x11127, 0x1112B).addRange(0x1112D, 0x11134).addRange(0x11180, 0x11181);
      set.addRange(0x111B6, 0x111BE).addRange(0x111C9, 0x111CC).addRange(0x1122F, 0x11231).addRange(0x11236, 0x11237).addRange(0x112E3, 0x112EA).addRange(0x11300, 0x11301).addRange(0x1133B, 0x1133C).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x11438, 0x1143F).addRange(0x11442, 0x11444).addRange(0x114B3, 0x114B8).addRange(0x114BF, 0x114C0).addRange(0x114C2, 0x114C3).addRange(0x115B2, 0x115B5).addRange(0x115BC, 0x115BD).addRange(0x115BF, 0x115C0).addRange(0x115DC, 0x115DD).addRange(0x11633, 0x1163A).addRange(0x1163F, 0x11640).addRange(0x116B0, 0x116B5).addRange(0x1171D, 0x1171F).addRange(0x11722, 0x11725).addRange(0x11727, 0x1172B).addRange(0x1182F, 0x11837).addRange(0x11839, 0x1183A).addRange(0x1193B, 0x1193C).addRange(0x119D4, 0x119D7).addRange(0x119DA, 0x119DB).addRange(0x11A01, 0x11A0A).addRange(0x11A33, 0x11A38).addRange(0x11A3B, 0x11A3E).addRange(0x11A51, 0x11A56).addRange(0x11A59, 0x11A5B).addRange(0x11A8A, 0x11A96).addRange(0x11A98, 0x11A99).addRange(0x11C30, 0x11C36).addRange(0x11C38, 0x11C3D).addRange(0x11C92, 0x11CA7).addRange(0x11CAA, 0x11CB0).addRange(0x11CB2, 0x11CB3).addRange(0x11CB5, 0x11CB6).addRange(0x11D31, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D45).addRange(0x11D90, 0x11D91).addRange(0x11EF3, 0x11EF4).addRange(0x11F00, 0x11F01).addRange(0x11F36, 0x11F3A).addRange(0x13447, 0x13455).addRange(0x16AF0, 0x16AF4);
      set.addRange(0x16B30, 0x16B36).addRange(0x16F8F, 0x16F92).addRange(0x1BC9D, 0x1BC9E).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1D167, 0x1D169).addRange(0x1D16E, 0x1D172).addRange(0x1D17B, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0x1D242, 0x1D244).addRange(0x1DA00, 0x1DA36).addRange(0x1DA3B, 0x1DA6C).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A).addRange(0x1E130, 0x1E136).addRange(0x1E2EC, 0x1E2EF).addRange(0x1E4EC, 0x1E4EF).addRange(0x1E8D0, 0x1E8D6).addRange(0x1E944, 0x1E94A).addRange(0xE0020, 0xE007F).addRange(0xE0100, 0xE01EF);
      Grapheme_Extend.characters = set;
      return Grapheme_Extend;
    }
  
    var Hex_Digit = {};
  
    var hasRequiredHex_Digit;
    function requireHex_Digit() {
      if (hasRequiredHex_Digit) return Hex_Digit;
      hasRequiredHex_Digit = 1;
      var set = regenerate$2.exports();
      set.addRange(0x30, 0x39).addRange(0x41, 0x46).addRange(0x61, 0x66).addRange(0xFF10, 0xFF19).addRange(0xFF21, 0xFF26).addRange(0xFF41, 0xFF46);
      Hex_Digit.characters = set;
      return Hex_Digit;
    }
  
    var ID_Continue = {};
  
    var hasRequiredID_Continue;
    function requireID_Continue() {
      if (hasRequiredID_Continue) return ID_Continue;
      hasRequiredID_Continue = 1;
      var set = regenerate$2.exports(0x5F, 0xAA, 0xB5, 0xB7, 0xBA, 0x2EC, 0x2EE, 0x37F, 0x38C, 0x559, 0x5BF, 0x5C7, 0x6FF, 0x7FA, 0x7FD, 0x9B2, 0x9D7, 0x9FC, 0x9FE, 0xA3C, 0xA51, 0xA5E, 0xAD0, 0xB71, 0xB9C, 0xBD0, 0xBD7, 0xC5D, 0xDBD, 0xDCA, 0xDD6, 0xE84, 0xEA5, 0xEC6, 0xF00, 0xF35, 0xF37, 0xF39, 0xFC6, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x17D7, 0x1AA7, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2054, 0x2071, 0x207F, 0x20E1, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x214E, 0x2D27, 0x2D2D, 0x2D6F, 0xA7D3, 0xA82C, 0xA8FB, 0xFB3E, 0xFF3F, 0x101FD, 0x102E0, 0x10808, 0x1083C, 0x10A3F, 0x10F27, 0x110C2, 0x11176, 0x111DC, 0x11288, 0x11350, 0x11357, 0x114C7, 0x11644, 0x11909, 0x11A47, 0x11A9D, 0x11D3A, 0x11FB0, 0x1B132, 0x1B155, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1DA75, 0x1DA84, 0x1E08F, 0x1E14E, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);
      set.addRange(0x30, 0x39).addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x2C1).addRange(0x2C6, 0x2D1).addRange(0x2E0, 0x2E4).addRange(0x300, 0x374).addRange(0x376, 0x377).addRange(0x37A, 0x37D).addRange(0x386, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3F5).addRange(0x3F7, 0x481).addRange(0x483, 0x487).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x560, 0x588).addRange(0x591, 0x5BD).addRange(0x5C1, 0x5C2).addRange(0x5C4, 0x5C5).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F2).addRange(0x610, 0x61A).addRange(0x620, 0x669).addRange(0x66E, 0x6D3).addRange(0x6D5, 0x6DC).addRange(0x6DF, 0x6E8).addRange(0x6EA, 0x6FC).addRange(0x710, 0x74A).addRange(0x74D, 0x7B1).addRange(0x7C0, 0x7F5).addRange(0x800, 0x82D).addRange(0x840, 0x85B).addRange(0x860, 0x86A).addRange(0x870, 0x887).addRange(0x889, 0x88E).addRange(0x898, 0x8E1).addRange(0x8E3, 0x963).addRange(0x966, 0x96F).addRange(0x971, 0x983).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9BC, 0x9C4).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CE).addRange(0x9DC, 0x9DD);
      set.addRange(0x9DF, 0x9E3).addRange(0x9E6, 0x9F1).addRange(0xA01, 0xA03).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA3E, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA59, 0xA5C).addRange(0xA66, 0xA75).addRange(0xA81, 0xA83).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xABC, 0xAC5).addRange(0xAC7, 0xAC9).addRange(0xACB, 0xACD).addRange(0xAE0, 0xAE3).addRange(0xAE6, 0xAEF).addRange(0xAF9, 0xAFF).addRange(0xB01, 0xB03).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB3C, 0xB44).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4D).addRange(0xB55, 0xB57).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB63).addRange(0xB66, 0xB6F).addRange(0xB82, 0xB83).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9);
      set.addRange(0xBBE, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCD).addRange(0xBE6, 0xBEF).addRange(0xC00, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC3C, 0xC44).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC63).addRange(0xC66, 0xC6F).addRange(0xC80, 0xC83).addRange(0xC85, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCBC, 0xCC4).addRange(0xCC6, 0xCC8).addRange(0xCCA, 0xCCD).addRange(0xCD5, 0xCD6).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE3).addRange(0xCE6, 0xCEF).addRange(0xCF1, 0xCF3).addRange(0xD00, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD44).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4E).addRange(0xD54, 0xD57).addRange(0xD5F, 0xD63).addRange(0xD66, 0xD6F).addRange(0xD7A, 0xD7F).addRange(0xD81, 0xD83).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xDCF, 0xDD4).addRange(0xDD8, 0xDDF).addRange(0xDE6, 0xDEF).addRange(0xDF2, 0xDF3).addRange(0xE01, 0xE3A).addRange(0xE40, 0xE4E).addRange(0xE50, 0xE59).addRange(0xE81, 0xE82);
      set.addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEBD).addRange(0xEC0, 0xEC4).addRange(0xEC8, 0xECE).addRange(0xED0, 0xED9).addRange(0xEDC, 0xEDF).addRange(0xF18, 0xF19).addRange(0xF20, 0xF29).addRange(0xF3E, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF71, 0xF84).addRange(0xF86, 0xF97).addRange(0xF99, 0xFBC).addRange(0x1000, 0x1049).addRange(0x1050, 0x109D).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FC, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x135D, 0x135F).addRange(0x1369, 0x1371).addRange(0x1380, 0x138F).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1401, 0x166C).addRange(0x166F, 0x167F).addRange(0x1681, 0x169A).addRange(0x16A0, 0x16EA).addRange(0x16EE, 0x16F8).addRange(0x1700, 0x1715).addRange(0x171F, 0x1734).addRange(0x1740, 0x1753).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1772, 0x1773).addRange(0x1780, 0x17D3).addRange(0x17DC, 0x17DD).addRange(0x17E0, 0x17E9);
      set.addRange(0x180B, 0x180D).addRange(0x180F, 0x1819).addRange(0x1820, 0x1878).addRange(0x1880, 0x18AA).addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E).addRange(0x1920, 0x192B).addRange(0x1930, 0x193B).addRange(0x1946, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x19D0, 0x19DA).addRange(0x1A00, 0x1A1B).addRange(0x1A20, 0x1A5E).addRange(0x1A60, 0x1A7C).addRange(0x1A7F, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1AB0, 0x1ABD).addRange(0x1ABF, 0x1ACE).addRange(0x1B00, 0x1B4C).addRange(0x1B50, 0x1B59).addRange(0x1B6B, 0x1B73).addRange(0x1B80, 0x1BF3).addRange(0x1C00, 0x1C37).addRange(0x1C40, 0x1C49).addRange(0x1C4D, 0x1C7D).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1CD0, 0x1CD2).addRange(0x1CD4, 0x1CFA).addRange(0x1D00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x203F, 0x2040).addRange(0x2090, 0x209C).addRange(0x20D0, 0x20DC).addRange(0x20E5, 0x20F0);
      set.addRange(0x210A, 0x2113).addRange(0x2118, 0x211D).addRange(0x212A, 0x2139).addRange(0x213C, 0x213F).addRange(0x2145, 0x2149).addRange(0x2160, 0x2188).addRange(0x2C00, 0x2CE4).addRange(0x2CEB, 0x2CF3).addRange(0x2D00, 0x2D25).addRange(0x2D30, 0x2D67).addRange(0x2D7F, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x2DE0, 0x2DFF).addRange(0x3005, 0x3007).addRange(0x3021, 0x302F).addRange(0x3031, 0x3035).addRange(0x3038, 0x303C).addRange(0x3041, 0x3096).addRange(0x3099, 0x309F).addRange(0x30A1, 0x30FA).addRange(0x30FC, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x31A0, 0x31BF).addRange(0x31F0, 0x31FF).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0xA48C).addRange(0xA4D0, 0xA4FD).addRange(0xA500, 0xA60C).addRange(0xA610, 0xA62B).addRange(0xA640, 0xA66F).addRange(0xA674, 0xA67D).addRange(0xA67F, 0xA6F1).addRange(0xA717, 0xA71F).addRange(0xA722, 0xA788).addRange(0xA78B, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA827).addRange(0xA840, 0xA873).addRange(0xA880, 0xA8C5).addRange(0xA8D0, 0xA8D9).addRange(0xA8E0, 0xA8F7).addRange(0xA8FD, 0xA92D);
      set.addRange(0xA930, 0xA953).addRange(0xA960, 0xA97C).addRange(0xA980, 0xA9C0).addRange(0xA9CF, 0xA9D9).addRange(0xA9E0, 0xA9FE).addRange(0xAA00, 0xAA36).addRange(0xAA40, 0xAA4D).addRange(0xAA50, 0xAA59).addRange(0xAA60, 0xAA76).addRange(0xAA7A, 0xAAC2).addRange(0xAADB, 0xAADD).addRange(0xAAE0, 0xAAEF).addRange(0xAAF2, 0xAAF6).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB69).addRange(0xAB70, 0xABEA).addRange(0xABEC, 0xABED).addRange(0xABF0, 0xABF9).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1D, 0xFB28).addRange(0xFB2A, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBB1).addRange(0xFBD3, 0xFD3D).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFB).addRange(0xFE00, 0xFE0F).addRange(0xFE20, 0xFE2F).addRange(0xFE33, 0xFE34).addRange(0xFE4D, 0xFE4F).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0xFF10, 0xFF19).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0xFF66, 0xFFBE).addRange(0xFFC2, 0xFFC7);
      set.addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10140, 0x10174).addRange(0x10280, 0x1029C).addRange(0x102A0, 0x102D0).addRange(0x10300, 0x1031F).addRange(0x1032D, 0x1034A).addRange(0x10350, 0x1037A).addRange(0x10380, 0x1039D).addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103CF).addRange(0x103D1, 0x103D5).addRange(0x10400, 0x1049D).addRange(0x104A0, 0x104A9).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10860, 0x10876).addRange(0x10880, 0x1089E).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x10900, 0x10915).addRange(0x10920, 0x10939).addRange(0x10980, 0x109B7);
      set.addRange(0x109BE, 0x109BF).addRange(0x10A00, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A38, 0x10A3A).addRange(0x10A60, 0x10A7C).addRange(0x10A80, 0x10A9C).addRange(0x10AC0, 0x10AC7).addRange(0x10AC9, 0x10AE6).addRange(0x10B00, 0x10B35).addRange(0x10B40, 0x10B55).addRange(0x10B60, 0x10B72).addRange(0x10B80, 0x10B91).addRange(0x10C00, 0x10C48).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10D00, 0x10D27).addRange(0x10D30, 0x10D39).addRange(0x10E80, 0x10EA9).addRange(0x10EAB, 0x10EAC).addRange(0x10EB0, 0x10EB1).addRange(0x10EFD, 0x10F1C).addRange(0x10F30, 0x10F50).addRange(0x10F70, 0x10F85).addRange(0x10FB0, 0x10FC4).addRange(0x10FE0, 0x10FF6).addRange(0x11000, 0x11046).addRange(0x11066, 0x11075).addRange(0x1107F, 0x110BA).addRange(0x110D0, 0x110E8).addRange(0x110F0, 0x110F9).addRange(0x11100, 0x11134).addRange(0x11136, 0x1113F).addRange(0x11144, 0x11147).addRange(0x11150, 0x11173).addRange(0x11180, 0x111C4).addRange(0x111C9, 0x111CC).addRange(0x111CE, 0x111DA).addRange(0x11200, 0x11211).addRange(0x11213, 0x11237).addRange(0x1123E, 0x11241).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A8).addRange(0x112B0, 0x112EA).addRange(0x112F0, 0x112F9).addRange(0x11300, 0x11303).addRange(0x11305, 0x1130C);
      set.addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1133B, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x1135D, 0x11363).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x11400, 0x1144A).addRange(0x11450, 0x11459).addRange(0x1145E, 0x11461).addRange(0x11480, 0x114C5).addRange(0x114D0, 0x114D9).addRange(0x11580, 0x115B5).addRange(0x115B8, 0x115C0).addRange(0x115D8, 0x115DD).addRange(0x11600, 0x11640).addRange(0x11650, 0x11659).addRange(0x11680, 0x116B8).addRange(0x116C0, 0x116C9).addRange(0x11700, 0x1171A).addRange(0x1171D, 0x1172B).addRange(0x11730, 0x11739).addRange(0x11740, 0x11746).addRange(0x11800, 0x1183A).addRange(0x118A0, 0x118E9).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x11935).addRange(0x11937, 0x11938).addRange(0x1193B, 0x11943).addRange(0x11950, 0x11959).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D7).addRange(0x119DA, 0x119E1).addRange(0x119E3, 0x119E4).addRange(0x11A00, 0x11A3E).addRange(0x11A50, 0x11A99).addRange(0x11AB0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C36).addRange(0x11C38, 0x11C40).addRange(0x11C50, 0x11C59).addRange(0x11C72, 0x11C8F).addRange(0x11C92, 0x11CA7).addRange(0x11CA9, 0x11CB6).addRange(0x11D00, 0x11D06);
      set.addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D47).addRange(0x11D50, 0x11D59).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D8E).addRange(0x11D90, 0x11D91).addRange(0x11D93, 0x11D98).addRange(0x11DA0, 0x11DA9).addRange(0x11EE0, 0x11EF6).addRange(0x11F00, 0x11F10).addRange(0x11F12, 0x11F3A).addRange(0x11F3E, 0x11F42).addRange(0x11F50, 0x11F59).addRange(0x12000, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF0).addRange(0x13000, 0x1342F).addRange(0x13440, 0x13455).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A60, 0x16A69).addRange(0x16A70, 0x16ABE).addRange(0x16AC0, 0x16AC9).addRange(0x16AD0, 0x16AED).addRange(0x16AF0, 0x16AF4).addRange(0x16B00, 0x16B36).addRange(0x16B40, 0x16B43).addRange(0x16B50, 0x16B59).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E7F).addRange(0x16F00, 0x16F4A).addRange(0x16F4F, 0x16F87).addRange(0x16F8F, 0x16F9F).addRange(0x16FE0, 0x16FE1).addRange(0x16FE3, 0x16FE4).addRange(0x16FF0, 0x16FF1).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B000, 0x1B122).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167);
      set.addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1BC9D, 0x1BC9E).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1D165, 0x1D169).addRange(0x1D16D, 0x1D172).addRange(0x1D17B, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0x1D242, 0x1D244).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6FA).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D734).addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D76E).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D7A8).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7CB).addRange(0x1D7CE, 0x1D7FF).addRange(0x1DA00, 0x1DA36).addRange(0x1DA3B, 0x1DA6C).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF).addRange(0x1DF00, 0x1DF1E).addRange(0x1DF25, 0x1DF2A).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021);
      set.addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A).addRange(0x1E030, 0x1E06D).addRange(0x1E100, 0x1E12C).addRange(0x1E130, 0x1E13D).addRange(0x1E140, 0x1E149).addRange(0x1E290, 0x1E2AE).addRange(0x1E2C0, 0x1E2F9).addRange(0x1E4D0, 0x1E4F9).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4).addRange(0x1E8D0, 0x1E8D6).addRange(0x1E900, 0x1E94B).addRange(0x1E950, 0x1E959).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1FBF0, 0x1FBF9).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B739).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A).addRange(0x31350, 0x323AF).addRange(0xE0100, 0xE01EF);
      ID_Continue.characters = set;
      return ID_Continue;
    }
  
    var ID_Start = {};
  
    var hasRequiredID_Start;
    function requireID_Start() {
      if (hasRequiredID_Start) return ID_Start;
      hasRequiredID_Start = 1;
      var set = regenerate$2.exports(0xAA, 0xB5, 0xBA, 0x2EC, 0x2EE, 0x37F, 0x386, 0x38C, 0x559, 0x6D5, 0x6FF, 0x710, 0x7B1, 0x7FA, 0x81A, 0x824, 0x828, 0x93D, 0x950, 0x9B2, 0x9BD, 0x9CE, 0x9FC, 0xA5E, 0xABD, 0xAD0, 0xAF9, 0xB3D, 0xB71, 0xB83, 0xB9C, 0xBD0, 0xC3D, 0xC5D, 0xC80, 0xCBD, 0xD3D, 0xD4E, 0xDBD, 0xE84, 0xEA5, 0xEBD, 0xEC6, 0xF00, 0x103F, 0x1061, 0x108E, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x17D7, 0x17DC, 0x18AA, 0x1AA7, 0x1CFA, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2071, 0x207F, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x214E, 0x2D27, 0x2D2D, 0x2D6F, 0xA7D3, 0xA8FB, 0xA9CF, 0xAA7A, 0xAAB1, 0xAAC0, 0xAAC2, 0xFB1D, 0xFB3E, 0x10808, 0x1083C, 0x10A00, 0x10F27, 0x11075, 0x11144, 0x11147, 0x11176, 0x111DA, 0x111DC, 0x11288, 0x1133D, 0x11350, 0x114C7, 0x11644, 0x116B8, 0x11909, 0x1193F, 0x11941, 0x119E1, 0x119E3, 0x11A00, 0x11A3A, 0x11A50, 0x11A9D, 0x11C40, 0x11D46, 0x11D98, 0x11F02, 0x11FB0, 0x16F50, 0x16FE3, 0x1B132, 0x1B155, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1E14E, 0x1E94B, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);
      set.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x2C1).addRange(0x2C6, 0x2D1).addRange(0x2E0, 0x2E4).addRange(0x370, 0x374).addRange(0x376, 0x377).addRange(0x37A, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3F5).addRange(0x3F7, 0x481).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x560, 0x588).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F2).addRange(0x620, 0x64A).addRange(0x66E, 0x66F).addRange(0x671, 0x6D3).addRange(0x6E5, 0x6E6).addRange(0x6EE, 0x6EF).addRange(0x6FA, 0x6FC).addRange(0x712, 0x72F).addRange(0x74D, 0x7A5).addRange(0x7CA, 0x7EA).addRange(0x7F4, 0x7F5).addRange(0x800, 0x815).addRange(0x840, 0x858).addRange(0x860, 0x86A).addRange(0x870, 0x887).addRange(0x889, 0x88E).addRange(0x8A0, 0x8C9).addRange(0x904, 0x939).addRange(0x958, 0x961).addRange(0x971, 0x980).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E1).addRange(0x9F0, 0x9F1).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33);
      set.addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA59, 0xA5C).addRange(0xA72, 0xA74).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xAE0, 0xAE1).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB61).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xC05, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC61).addRange(0xC85, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE1).addRange(0xCF1, 0xCF2).addRange(0xD04, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD3A).addRange(0xD54, 0xD56).addRange(0xD5F, 0xD61).addRange(0xD7A, 0xD7F).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6);
      set.addRange(0xE01, 0xE30).addRange(0xE32, 0xE33).addRange(0xE40, 0xE46).addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEB0).addRange(0xEB2, 0xEB3).addRange(0xEC0, 0xEC4).addRange(0xEDC, 0xEDF).addRange(0xF40, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF88, 0xF8C).addRange(0x1000, 0x102A).addRange(0x1050, 0x1055).addRange(0x105A, 0x105D).addRange(0x1065, 0x1066).addRange(0x106E, 0x1070).addRange(0x1075, 0x1081).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FC, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x1380, 0x138F).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1401, 0x166C).addRange(0x166F, 0x167F).addRange(0x1681, 0x169A).addRange(0x16A0, 0x16EA).addRange(0x16EE, 0x16F8).addRange(0x1700, 0x1711).addRange(0x171F, 0x1731).addRange(0x1740, 0x1751).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1780, 0x17B3).addRange(0x1820, 0x1878).addRange(0x1880, 0x18A8);
      set.addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E).addRange(0x1950, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x1A00, 0x1A16).addRange(0x1A20, 0x1A54).addRange(0x1B05, 0x1B33).addRange(0x1B45, 0x1B4C).addRange(0x1B83, 0x1BA0).addRange(0x1BAE, 0x1BAF).addRange(0x1BBA, 0x1BE5).addRange(0x1C00, 0x1C23).addRange(0x1C4D, 0x1C4F).addRange(0x1C5A, 0x1C7D).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1CE9, 0x1CEC).addRange(0x1CEE, 0x1CF3).addRange(0x1CF5, 0x1CF6).addRange(0x1D00, 0x1DBF).addRange(0x1E00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x2090, 0x209C).addRange(0x210A, 0x2113).addRange(0x2118, 0x211D).addRange(0x212A, 0x2139).addRange(0x213C, 0x213F).addRange(0x2145, 0x2149).addRange(0x2160, 0x2188).addRange(0x2C00, 0x2CE4).addRange(0x2CEB, 0x2CEE).addRange(0x2CF2, 0x2CF3).addRange(0x2D00, 0x2D25).addRange(0x2D30, 0x2D67).addRange(0x2D80, 0x2D96);
      set.addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x3005, 0x3007).addRange(0x3021, 0x3029).addRange(0x3031, 0x3035).addRange(0x3038, 0x303C).addRange(0x3041, 0x3096).addRange(0x309B, 0x309F).addRange(0x30A1, 0x30FA).addRange(0x30FC, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x31A0, 0x31BF).addRange(0x31F0, 0x31FF).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0xA48C).addRange(0xA4D0, 0xA4FD).addRange(0xA500, 0xA60C).addRange(0xA610, 0xA61F).addRange(0xA62A, 0xA62B).addRange(0xA640, 0xA66E).addRange(0xA67F, 0xA69D).addRange(0xA6A0, 0xA6EF).addRange(0xA717, 0xA71F).addRange(0xA722, 0xA788).addRange(0xA78B, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA801).addRange(0xA803, 0xA805).addRange(0xA807, 0xA80A).addRange(0xA80C, 0xA822).addRange(0xA840, 0xA873).addRange(0xA882, 0xA8B3).addRange(0xA8F2, 0xA8F7).addRange(0xA8FD, 0xA8FE).addRange(0xA90A, 0xA925).addRange(0xA930, 0xA946).addRange(0xA960, 0xA97C).addRange(0xA984, 0xA9B2).addRange(0xA9E0, 0xA9E4).addRange(0xA9E6, 0xA9EF).addRange(0xA9FA, 0xA9FE).addRange(0xAA00, 0xAA28).addRange(0xAA40, 0xAA42);
      set.addRange(0xAA44, 0xAA4B).addRange(0xAA60, 0xAA76).addRange(0xAA7E, 0xAAAF).addRange(0xAAB5, 0xAAB6).addRange(0xAAB9, 0xAABD).addRange(0xAADB, 0xAADD).addRange(0xAAE0, 0xAAEA).addRange(0xAAF2, 0xAAF4).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB69).addRange(0xAB70, 0xABE2).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1F, 0xFB28).addRange(0xFB2A, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBB1).addRange(0xFBD3, 0xFD3D).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFB).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0xFF66, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10140, 0x10174).addRange(0x10280, 0x1029C);
      set.addRange(0x102A0, 0x102D0).addRange(0x10300, 0x1031F).addRange(0x1032D, 0x1034A).addRange(0x10350, 0x10375).addRange(0x10380, 0x1039D).addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103CF).addRange(0x103D1, 0x103D5).addRange(0x10400, 0x1049D).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10860, 0x10876).addRange(0x10880, 0x1089E).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x10900, 0x10915).addRange(0x10920, 0x10939).addRange(0x10980, 0x109B7).addRange(0x109BE, 0x109BF).addRange(0x10A10, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A60, 0x10A7C).addRange(0x10A80, 0x10A9C).addRange(0x10AC0, 0x10AC7).addRange(0x10AC9, 0x10AE4).addRange(0x10B00, 0x10B35).addRange(0x10B40, 0x10B55).addRange(0x10B60, 0x10B72).addRange(0x10B80, 0x10B91).addRange(0x10C00, 0x10C48);
      set.addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10D00, 0x10D23).addRange(0x10E80, 0x10EA9).addRange(0x10EB0, 0x10EB1).addRange(0x10F00, 0x10F1C).addRange(0x10F30, 0x10F45).addRange(0x10F70, 0x10F81).addRange(0x10FB0, 0x10FC4).addRange(0x10FE0, 0x10FF6).addRange(0x11003, 0x11037).addRange(0x11071, 0x11072).addRange(0x11083, 0x110AF).addRange(0x110D0, 0x110E8).addRange(0x11103, 0x11126).addRange(0x11150, 0x11172).addRange(0x11183, 0x111B2).addRange(0x111C1, 0x111C4).addRange(0x11200, 0x11211).addRange(0x11213, 0x1122B).addRange(0x1123F, 0x11240).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A8).addRange(0x112B0, 0x112DE).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1135D, 0x11361).addRange(0x11400, 0x11434).addRange(0x11447, 0x1144A).addRange(0x1145F, 0x11461).addRange(0x11480, 0x114AF).addRange(0x114C4, 0x114C5).addRange(0x11580, 0x115AE).addRange(0x115D8, 0x115DB).addRange(0x11600, 0x1162F).addRange(0x11680, 0x116AA).addRange(0x11700, 0x1171A).addRange(0x11740, 0x11746).addRange(0x11800, 0x1182B).addRange(0x118A0, 0x118DF).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x1192F).addRange(0x119A0, 0x119A7);
      set.addRange(0x119AA, 0x119D0).addRange(0x11A0B, 0x11A32).addRange(0x11A5C, 0x11A89).addRange(0x11AB0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C2E).addRange(0x11C72, 0x11C8F).addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D30).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D89).addRange(0x11EE0, 0x11EF2).addRange(0x11F04, 0x11F10).addRange(0x11F12, 0x11F33).addRange(0x12000, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF0).addRange(0x13000, 0x1342F).addRange(0x13441, 0x13446).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A70, 0x16ABE).addRange(0x16AD0, 0x16AED).addRange(0x16B00, 0x16B2F).addRange(0x16B40, 0x16B43).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E7F).addRange(0x16F00, 0x16F4A).addRange(0x16F93, 0x16F9F).addRange(0x16FE0, 0x16FE1).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B000, 0x1B122).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C);
      set.addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6FA).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D734).addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D76E).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D7A8).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7CB).addRange(0x1DF00, 0x1DF1E).addRange(0x1DF25, 0x1DF2A).addRange(0x1E030, 0x1E06D).addRange(0x1E100, 0x1E12C).addRange(0x1E137, 0x1E13D).addRange(0x1E290, 0x1E2AD).addRange(0x1E2C0, 0x1E2EB).addRange(0x1E4D0, 0x1E4EB).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4).addRange(0x1E900, 0x1E943).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C);
      set.addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B739).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A).addRange(0x31350, 0x323AF);
      ID_Start.characters = set;
      return ID_Start;
    }
  
    var Ideographic = {};
  
    var hasRequiredIdeographic;
    function requireIdeographic() {
      if (hasRequiredIdeographic) return Ideographic;
      hasRequiredIdeographic = 1;
      var set = regenerate$2.exports(0x16FE4);
      set.addRange(0x3006, 0x3007).addRange(0x3021, 0x3029).addRange(0x3038, 0x303A).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0x9FFF).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1B170, 0x1B2FB).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B739).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A).addRange(0x31350, 0x323AF);
      Ideographic.characters = set;
      return Ideographic;
    }
  
    var IDS_Binary_Operator = {};
  
    var hasRequiredIDS_Binary_Operator;
    function requireIDS_Binary_Operator() {
      if (hasRequiredIDS_Binary_Operator) return IDS_Binary_Operator;
      hasRequiredIDS_Binary_Operator = 1;
      var set = regenerate$2.exports();
      set.addRange(0x2FF0, 0x2FF1).addRange(0x2FF4, 0x2FFB);
      IDS_Binary_Operator.characters = set;
      return IDS_Binary_Operator;
    }
  
    var IDS_Trinary_Operator = {};
  
    var hasRequiredIDS_Trinary_Operator;
    function requireIDS_Trinary_Operator() {
      if (hasRequiredIDS_Trinary_Operator) return IDS_Trinary_Operator;
      hasRequiredIDS_Trinary_Operator = 1;
      var set = regenerate$2.exports();
      set.addRange(0x2FF2, 0x2FF3);
      IDS_Trinary_Operator.characters = set;
      return IDS_Trinary_Operator;
    }
  
    var Join_Control = {};
  
    var hasRequiredJoin_Control;
    function requireJoin_Control() {
      if (hasRequiredJoin_Control) return Join_Control;
      hasRequiredJoin_Control = 1;
      var set = regenerate$2.exports();
      set.addRange(0x200C, 0x200D);
      Join_Control.characters = set;
      return Join_Control;
    }
  
    var Logical_Order_Exception = {};
  
    var hasRequiredLogical_Order_Exception;
    function requireLogical_Order_Exception() {
      if (hasRequiredLogical_Order_Exception) return Logical_Order_Exception;
      hasRequiredLogical_Order_Exception = 1;
      var set = regenerate$2.exports(0x19BA, 0xAAB9);
      set.addRange(0xE40, 0xE44).addRange(0xEC0, 0xEC4).addRange(0x19B5, 0x19B7).addRange(0xAAB5, 0xAAB6).addRange(0xAABB, 0xAABC);
      Logical_Order_Exception.characters = set;
      return Logical_Order_Exception;
    }
  
    var Lowercase = {};
  
    var hasRequiredLowercase;
    function requireLowercase() {
      if (hasRequiredLowercase) return Lowercase;
      hasRequiredLowercase = 1;
      var set = regenerate$2.exports(0xAA, 0xB5, 0xBA, 0x101, 0x103, 0x105, 0x107, 0x109, 0x10B, 0x10D, 0x10F, 0x111, 0x113, 0x115, 0x117, 0x119, 0x11B, 0x11D, 0x11F, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12B, 0x12D, 0x12F, 0x131, 0x133, 0x135, 0x13A, 0x13C, 0x13E, 0x140, 0x142, 0x144, 0x146, 0x14B, 0x14D, 0x14F, 0x151, 0x153, 0x155, 0x157, 0x159, 0x15B, 0x15D, 0x15F, 0x161, 0x163, 0x165, 0x167, 0x169, 0x16B, 0x16D, 0x16F, 0x171, 0x173, 0x175, 0x177, 0x17A, 0x17C, 0x183, 0x185, 0x188, 0x192, 0x195, 0x19E, 0x1A1, 0x1A3, 0x1A5, 0x1A8, 0x1AD, 0x1B0, 0x1B4, 0x1B6, 0x1C6, 0x1C9, 0x1CC, 0x1CE, 0x1D0, 0x1D2, 0x1D4, 0x1D6, 0x1D8, 0x1DA, 0x1DF, 0x1E1, 0x1E3, 0x1E5, 0x1E7, 0x1E9, 0x1EB, 0x1ED, 0x1F3, 0x1F5, 0x1F9, 0x1FB, 0x1FD, 0x1FF, 0x201, 0x203, 0x205, 0x207, 0x209, 0x20B, 0x20D, 0x20F, 0x211, 0x213, 0x215, 0x217, 0x219, 0x21B, 0x21D, 0x21F, 0x221, 0x223, 0x225, 0x227, 0x229, 0x22B, 0x22D, 0x22F, 0x231, 0x23C, 0x242, 0x247, 0x249, 0x24B, 0x24D, 0x345, 0x371, 0x373, 0x377, 0x390, 0x3D9, 0x3DB, 0x3DD, 0x3DF, 0x3E1, 0x3E3, 0x3E5, 0x3E7, 0x3E9, 0x3EB, 0x3ED, 0x3F5, 0x3F8, 0x461, 0x463, 0x465, 0x467, 0x469, 0x46B, 0x46D, 0x46F, 0x471, 0x473, 0x475, 0x477, 0x479, 0x47B, 0x47D, 0x47F, 0x481, 0x48B, 0x48D, 0x48F, 0x491, 0x493, 0x495, 0x497, 0x499, 0x49B, 0x49D, 0x49F, 0x4A1, 0x4A3, 0x4A5, 0x4A7, 0x4A9, 0x4AB, 0x4AD, 0x4AF, 0x4B1, 0x4B3, 0x4B5, 0x4B7, 0x4B9, 0x4BB, 0x4BD, 0x4BF, 0x4C2, 0x4C4, 0x4C6, 0x4C8, 0x4CA, 0x4CC, 0x4D1, 0x4D3, 0x4D5, 0x4D7, 0x4D9, 0x4DB, 0x4DD, 0x4DF, 0x4E1, 0x4E3, 0x4E5, 0x4E7, 0x4E9, 0x4EB, 0x4ED, 0x4EF, 0x4F1, 0x4F3, 0x4F5, 0x4F7, 0x4F9, 0x4FB, 0x4FD, 0x4FF, 0x501, 0x503, 0x505, 0x507, 0x509, 0x50B, 0x50D, 0x50F, 0x511, 0x513, 0x515, 0x517, 0x519, 0x51B, 0x51D, 0x51F, 0x521, 0x523, 0x525, 0x527, 0x529, 0x52B, 0x52D, 0x52F, 0x1E01, 0x1E03, 0x1E05, 0x1E07, 0x1E09, 0x1E0B, 0x1E0D, 0x1E0F, 0x1E11, 0x1E13, 0x1E15, 0x1E17, 0x1E19, 0x1E1B, 0x1E1D, 0x1E1F, 0x1E21, 0x1E23, 0x1E25, 0x1E27, 0x1E29, 0x1E2B, 0x1E2D, 0x1E2F, 0x1E31, 0x1E33, 0x1E35, 0x1E37, 0x1E39, 0x1E3B, 0x1E3D, 0x1E3F, 0x1E41, 0x1E43, 0x1E45, 0x1E47, 0x1E49, 0x1E4B, 0x1E4D, 0x1E4F, 0x1E51, 0x1E53, 0x1E55, 0x1E57, 0x1E59, 0x1E5B, 0x1E5D, 0x1E5F, 0x1E61, 0x1E63, 0x1E65, 0x1E67, 0x1E69, 0x1E6B, 0x1E6D, 0x1E6F, 0x1E71, 0x1E73, 0x1E75, 0x1E77, 0x1E79, 0x1E7B, 0x1E7D, 0x1E7F, 0x1E81, 0x1E83, 0x1E85, 0x1E87, 0x1E89, 0x1E8B, 0x1E8D, 0x1E8F, 0x1E91, 0x1E93, 0x1E9F, 0x1EA1, 0x1EA3, 0x1EA5, 0x1EA7, 0x1EA9, 0x1EAB, 0x1EAD, 0x1EAF, 0x1EB1, 0x1EB3, 0x1EB5, 0x1EB7, 0x1EB9, 0x1EBB, 0x1EBD, 0x1EBF, 0x1EC1, 0x1EC3, 0x1EC5, 0x1EC7, 0x1EC9, 0x1ECB, 0x1ECD, 0x1ECF, 0x1ED1, 0x1ED3, 0x1ED5, 0x1ED7, 0x1ED9, 0x1EDB, 0x1EDD, 0x1EDF, 0x1EE1, 0x1EE3, 0x1EE5, 0x1EE7, 0x1EE9, 0x1EEB, 0x1EED, 0x1EEF, 0x1EF1, 0x1EF3, 0x1EF5, 0x1EF7, 0x1EF9, 0x1EFB, 0x1EFD, 0x1FBE, 0x2071, 0x207F, 0x210A, 0x2113, 0x212F, 0x2134, 0x2139, 0x214E, 0x2184, 0x2C61, 0x2C68, 0x2C6A, 0x2C6C, 0x2C71, 0x2C81, 0x2C83, 0x2C85, 0x2C87, 0x2C89, 0x2C8B, 0x2C8D, 0x2C8F, 0x2C91, 0x2C93, 0x2C95, 0x2C97, 0x2C99, 0x2C9B, 0x2C9D, 0x2C9F, 0x2CA1, 0x2CA3, 0x2CA5, 0x2CA7, 0x2CA9, 0x2CAB, 0x2CAD, 0x2CAF, 0x2CB1, 0x2CB3, 0x2CB5, 0x2CB7, 0x2CB9, 0x2CBB, 0x2CBD, 0x2CBF, 0x2CC1, 0x2CC3, 0x2CC5, 0x2CC7, 0x2CC9, 0x2CCB, 0x2CCD, 0x2CCF, 0x2CD1, 0x2CD3, 0x2CD5, 0x2CD7, 0x2CD9, 0x2CDB, 0x2CDD, 0x2CDF, 0x2CE1, 0x2CEC, 0x2CEE, 0x2CF3, 0x2D27, 0x2D2D, 0xA641, 0xA643, 0xA645, 0xA647, 0xA649, 0xA64B, 0xA64D, 0xA64F, 0xA651, 0xA653, 0xA655, 0xA657, 0xA659, 0xA65B, 0xA65D, 0xA65F, 0xA661, 0xA663, 0xA665, 0xA667, 0xA669, 0xA66B, 0xA66D, 0xA681, 0xA683, 0xA685, 0xA687, 0xA689, 0xA68B, 0xA68D, 0xA68F, 0xA691, 0xA693, 0xA695, 0xA697, 0xA699, 0xA723, 0xA725, 0xA727, 0xA729, 0xA72B, 0xA72D, 0xA733, 0xA735, 0xA737, 0xA739, 0xA73B, 0xA73D, 0xA73F, 0xA741, 0xA743, 0xA745, 0xA747, 0xA749, 0xA74B, 0xA74D, 0xA74F, 0xA751, 0xA753, 0xA755, 0xA757, 0xA759, 0xA75B, 0xA75D, 0xA75F, 0xA761, 0xA763, 0xA765, 0xA767, 0xA769, 0xA76B, 0xA76D, 0xA77A, 0xA77C, 0xA77F, 0xA781, 0xA783, 0xA785, 0xA787, 0xA78C, 0xA78E, 0xA791, 0xA797, 0xA799, 0xA79B, 0xA79D, 0xA79F, 0xA7A1, 0xA7A3, 0xA7A5, 0xA7A7, 0xA7A9, 0xA7AF, 0xA7B5, 0xA7B7, 0xA7B9, 0xA7BB, 0xA7BD, 0xA7BF, 0xA7C1, 0xA7C3, 0xA7C8, 0xA7CA, 0xA7D1, 0xA7D3, 0xA7D5, 0xA7D7, 0xA7D9, 0xA7F6, 0x10780, 0x1D4BB, 0x1D7CB);
      set.addRange(0x61, 0x7A).addRange(0xDF, 0xF6).addRange(0xF8, 0xFF).addRange(0x137, 0x138).addRange(0x148, 0x149).addRange(0x17E, 0x180).addRange(0x18C, 0x18D).addRange(0x199, 0x19B).addRange(0x1AA, 0x1AB).addRange(0x1B9, 0x1BA).addRange(0x1BD, 0x1BF).addRange(0x1DC, 0x1DD).addRange(0x1EF, 0x1F0).addRange(0x233, 0x239).addRange(0x23F, 0x240).addRange(0x24F, 0x293).addRange(0x295, 0x2B8).addRange(0x2C0, 0x2C1).addRange(0x2E0, 0x2E4).addRange(0x37A, 0x37D).addRange(0x3AC, 0x3CE).addRange(0x3D0, 0x3D1).addRange(0x3D5, 0x3D7).addRange(0x3EF, 0x3F3).addRange(0x3FB, 0x3FC).addRange(0x430, 0x45F).addRange(0x4CE, 0x4CF).addRange(0x560, 0x588).addRange(0x10D0, 0x10FA).addRange(0x10FC, 0x10FF).addRange(0x13F8, 0x13FD).addRange(0x1C80, 0x1C88).addRange(0x1D00, 0x1DBF).addRange(0x1E95, 0x1E9D).addRange(0x1EFF, 0x1F07).addRange(0x1F10, 0x1F15).addRange(0x1F20, 0x1F27).addRange(0x1F30, 0x1F37).addRange(0x1F40, 0x1F45).addRange(0x1F50, 0x1F57).addRange(0x1F60, 0x1F67).addRange(0x1F70, 0x1F7D).addRange(0x1F80, 0x1F87).addRange(0x1F90, 0x1F97).addRange(0x1FA0, 0x1FA7).addRange(0x1FB0, 0x1FB4).addRange(0x1FB6, 0x1FB7).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FC7).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FD7);
      set.addRange(0x1FE0, 0x1FE7).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FF7).addRange(0x2090, 0x209C).addRange(0x210E, 0x210F).addRange(0x213C, 0x213D).addRange(0x2146, 0x2149).addRange(0x2170, 0x217F).addRange(0x24D0, 0x24E9).addRange(0x2C30, 0x2C5F).addRange(0x2C65, 0x2C66).addRange(0x2C73, 0x2C74).addRange(0x2C76, 0x2C7D).addRange(0x2CE3, 0x2CE4).addRange(0x2D00, 0x2D25).addRange(0xA69B, 0xA69D).addRange(0xA72F, 0xA731).addRange(0xA76F, 0xA778).addRange(0xA793, 0xA795).addRange(0xA7F2, 0xA7F4).addRange(0xA7F8, 0xA7FA).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB69).addRange(0xAB70, 0xABBF).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFF41, 0xFF5A).addRange(0x10428, 0x1044F).addRange(0x104D8, 0x104FB).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10783, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10CC0, 0x10CF2).addRange(0x118C0, 0x118DF).addRange(0x16E60, 0x16E7F).addRange(0x1D41A, 0x1D433).addRange(0x1D44E, 0x1D454).addRange(0x1D456, 0x1D467).addRange(0x1D482, 0x1D49B).addRange(0x1D4B6, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D4CF).addRange(0x1D4EA, 0x1D503).addRange(0x1D51E, 0x1D537).addRange(0x1D552, 0x1D56B).addRange(0x1D586, 0x1D59F).addRange(0x1D5BA, 0x1D5D3);
      set.addRange(0x1D5EE, 0x1D607).addRange(0x1D622, 0x1D63B).addRange(0x1D656, 0x1D66F).addRange(0x1D68A, 0x1D6A5).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6E1).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D71B).addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D755).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D78F).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7C9).addRange(0x1DF00, 0x1DF09).addRange(0x1DF0B, 0x1DF1E).addRange(0x1DF25, 0x1DF2A).addRange(0x1E030, 0x1E06D).addRange(0x1E922, 0x1E943);
      Lowercase.characters = set;
      return Lowercase;
    }
  
    var _Math = {};
  
    var hasRequired_Math;
    function require_Math() {
      if (hasRequired_Math) return _Math;
      hasRequired_Math = 1;
      var set = regenerate$2.exports(0x2B, 0x5E, 0x7C, 0x7E, 0xAC, 0xB1, 0xD7, 0xF7, 0x3D5, 0x2016, 0x2040, 0x2044, 0x2052, 0x20E1, 0x2102, 0x2107, 0x2115, 0x2124, 0x214B, 0x21DD, 0x237C, 0x23B7, 0x23D0, 0x25E2, 0x25E4, 0x2640, 0x2642, 0xFB29, 0xFE68, 0xFF0B, 0xFF3C, 0xFF3E, 0xFF5C, 0xFF5E, 0xFFE2, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);
      set.addRange(0x3C, 0x3E).addRange(0x3D0, 0x3D2).addRange(0x3F0, 0x3F1).addRange(0x3F4, 0x3F6).addRange(0x606, 0x608).addRange(0x2032, 0x2034).addRange(0x2061, 0x2064).addRange(0x207A, 0x207E).addRange(0x208A, 0x208E).addRange(0x20D0, 0x20DC).addRange(0x20E5, 0x20E6).addRange(0x20EB, 0x20EF).addRange(0x210A, 0x2113).addRange(0x2118, 0x211D).addRange(0x2128, 0x2129).addRange(0x212C, 0x212D).addRange(0x212F, 0x2131).addRange(0x2133, 0x2138).addRange(0x213C, 0x2149).addRange(0x2190, 0x21A7).addRange(0x21A9, 0x21AE).addRange(0x21B0, 0x21B1).addRange(0x21B6, 0x21B7).addRange(0x21BC, 0x21DB).addRange(0x21E4, 0x21E5).addRange(0x21F4, 0x22FF).addRange(0x2308, 0x230B).addRange(0x2320, 0x2321).addRange(0x239B, 0x23B5).addRange(0x23DC, 0x23E2).addRange(0x25A0, 0x25A1).addRange(0x25AE, 0x25B7).addRange(0x25BC, 0x25C1).addRange(0x25C6, 0x25C7).addRange(0x25CA, 0x25CB).addRange(0x25CF, 0x25D3).addRange(0x25E7, 0x25EC).addRange(0x25F8, 0x25FF).addRange(0x2605, 0x2606).addRange(0x2660, 0x2663).addRange(0x266D, 0x266F).addRange(0x27C0, 0x27FF).addRange(0x2900, 0x2AFF).addRange(0x2B30, 0x2B44).addRange(0x2B47, 0x2B4C).addRange(0xFE61, 0xFE66).addRange(0xFF1C, 0xFF1E).addRange(0xFFE9, 0xFFEC).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F);
      set.addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D7CB).addRange(0x1D7CE, 0x1D7FF).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1EEF0, 0x1EEF1);
      _Math.characters = set;
      return _Math;
    }
  
    var Noncharacter_Code_Point = {};
  
    var hasRequiredNoncharacter_Code_Point;
    function requireNoncharacter_Code_Point() {
      if (hasRequiredNoncharacter_Code_Point) return Noncharacter_Code_Point;
      hasRequiredNoncharacter_Code_Point = 1;
      var set = regenerate$2.exports();
      set.addRange(0xFDD0, 0xFDEF).addRange(0xFFFE, 0xFFFF).addRange(0x1FFFE, 0x1FFFF).addRange(0x2FFFE, 0x2FFFF).addRange(0x3FFFE, 0x3FFFF).addRange(0x4FFFE, 0x4FFFF).addRange(0x5FFFE, 0x5FFFF).addRange(0x6FFFE, 0x6FFFF).addRange(0x7FFFE, 0x7FFFF).addRange(0x8FFFE, 0x8FFFF).addRange(0x9FFFE, 0x9FFFF).addRange(0xAFFFE, 0xAFFFF).addRange(0xBFFFE, 0xBFFFF).addRange(0xCFFFE, 0xCFFFF).addRange(0xDFFFE, 0xDFFFF).addRange(0xEFFFE, 0xEFFFF).addRange(0xFFFFE, 0xFFFFF).addRange(0x10FFFE, 0x10FFFF);
      Noncharacter_Code_Point.characters = set;
      return Noncharacter_Code_Point;
    }
  
    var Pattern_Syntax = {};
  
    var hasRequiredPattern_Syntax;
    function requirePattern_Syntax() {
      if (hasRequiredPattern_Syntax) return Pattern_Syntax;
      hasRequiredPattern_Syntax = 1;
      var set = regenerate$2.exports(0x60, 0xA9, 0xAE, 0xB6, 0xBB, 0xBF, 0xD7, 0xF7, 0x3030);
      set.addRange(0x21, 0x2F).addRange(0x3A, 0x40).addRange(0x5B, 0x5E).addRange(0x7B, 0x7E).addRange(0xA1, 0xA7).addRange(0xAB, 0xAC).addRange(0xB0, 0xB1).addRange(0x2010, 0x2027).addRange(0x2030, 0x203E).addRange(0x2041, 0x2053).addRange(0x2055, 0x205E).addRange(0x2190, 0x245F).addRange(0x2500, 0x2775).addRange(0x2794, 0x2BFF).addRange(0x2E00, 0x2E7F).addRange(0x3001, 0x3003).addRange(0x3008, 0x3020).addRange(0xFD3E, 0xFD3F).addRange(0xFE45, 0xFE46);
      Pattern_Syntax.characters = set;
      return Pattern_Syntax;
    }
  
    var Pattern_White_Space = {};
  
    var hasRequiredPattern_White_Space;
    function requirePattern_White_Space() {
      if (hasRequiredPattern_White_Space) return Pattern_White_Space;
      hasRequiredPattern_White_Space = 1;
      var set = regenerate$2.exports(0x20, 0x85);
      set.addRange(0x9, 0xD).addRange(0x200E, 0x200F).addRange(0x2028, 0x2029);
      Pattern_White_Space.characters = set;
      return Pattern_White_Space;
    }
  
    var Quotation_Mark = {};
  
    var hasRequiredQuotation_Mark;
    function requireQuotation_Mark() {
      if (hasRequiredQuotation_Mark) return Quotation_Mark;
      hasRequiredQuotation_Mark = 1;
      var set = regenerate$2.exports(0x22, 0x27, 0xAB, 0xBB, 0x2E42, 0xFF02, 0xFF07);
      set.addRange(0x2018, 0x201F).addRange(0x2039, 0x203A).addRange(0x300C, 0x300F).addRange(0x301D, 0x301F).addRange(0xFE41, 0xFE44).addRange(0xFF62, 0xFF63);
      Quotation_Mark.characters = set;
      return Quotation_Mark;
    }
  
    var Radical = {};
  
    var hasRequiredRadical;
    function requireRadical() {
      if (hasRequiredRadical) return Radical;
      hasRequiredRadical = 1;
      var set = regenerate$2.exports();
      set.addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5);
      Radical.characters = set;
      return Radical;
    }
  
    var Regional_Indicator = {};
  
    var hasRequiredRegional_Indicator;
    function requireRegional_Indicator() {
      if (hasRequiredRegional_Indicator) return Regional_Indicator;
      hasRequiredRegional_Indicator = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1F1E6, 0x1F1FF);
      Regional_Indicator.characters = set;
      return Regional_Indicator;
    }
  
    var Sentence_Terminal = {};
  
    var hasRequiredSentence_Terminal;
    function requireSentence_Terminal() {
      if (hasRequiredSentence_Terminal) return Sentence_Terminal;
      hasRequiredSentence_Terminal = 1;
      var set = regenerate$2.exports(0x21, 0x2E, 0x3F, 0x589, 0x6D4, 0x7F9, 0x837, 0x839, 0x1362, 0x166E, 0x1803, 0x1809, 0x2E2E, 0x2E3C, 0x3002, 0xA4FF, 0xA6F3, 0xA6F7, 0xA92F, 0xABEB, 0xFE52, 0xFF01, 0xFF0E, 0xFF1F, 0xFF61, 0x111CD, 0x112A9, 0x11944, 0x11946, 0x16AF5, 0x16B44, 0x16E98, 0x1BC9F, 0x1DA88);
      set.addRange(0x61D, 0x61F).addRange(0x700, 0x702).addRange(0x83D, 0x83E).addRange(0x964, 0x965).addRange(0x104A, 0x104B).addRange(0x1367, 0x1368).addRange(0x1735, 0x1736).addRange(0x1944, 0x1945).addRange(0x1AA8, 0x1AAB).addRange(0x1B5A, 0x1B5B).addRange(0x1B5E, 0x1B5F).addRange(0x1B7D, 0x1B7E).addRange(0x1C3B, 0x1C3C).addRange(0x1C7E, 0x1C7F).addRange(0x203C, 0x203D).addRange(0x2047, 0x2049).addRange(0x2E53, 0x2E54).addRange(0xA60E, 0xA60F).addRange(0xA876, 0xA877).addRange(0xA8CE, 0xA8CF).addRange(0xA9C8, 0xA9C9).addRange(0xAA5D, 0xAA5F).addRange(0xAAF0, 0xAAF1).addRange(0xFE56, 0xFE57).addRange(0x10A56, 0x10A57).addRange(0x10F55, 0x10F59).addRange(0x10F86, 0x10F89).addRange(0x11047, 0x11048).addRange(0x110BE, 0x110C1).addRange(0x11141, 0x11143).addRange(0x111C5, 0x111C6).addRange(0x111DE, 0x111DF).addRange(0x11238, 0x11239).addRange(0x1123B, 0x1123C).addRange(0x1144B, 0x1144C).addRange(0x115C2, 0x115C3).addRange(0x115C9, 0x115D7).addRange(0x11641, 0x11642).addRange(0x1173C, 0x1173E).addRange(0x11A42, 0x11A43).addRange(0x11A9B, 0x11A9C).addRange(0x11C41, 0x11C42).addRange(0x11EF7, 0x11EF8).addRange(0x11F43, 0x11F44).addRange(0x16A6E, 0x16A6F).addRange(0x16B37, 0x16B38);
      Sentence_Terminal.characters = set;
      return Sentence_Terminal;
    }
  
    var Soft_Dotted = {};
  
    var hasRequiredSoft_Dotted;
    function requireSoft_Dotted() {
      if (hasRequiredSoft_Dotted) return Soft_Dotted;
      hasRequiredSoft_Dotted = 1;
      var set = regenerate$2.exports(0x12F, 0x249, 0x268, 0x29D, 0x2B2, 0x3F3, 0x456, 0x458, 0x1D62, 0x1D96, 0x1DA4, 0x1DA8, 0x1E2D, 0x1ECB, 0x2071, 0x2C7C, 0x1DF1A, 0x1E068);
      set.addRange(0x69, 0x6A).addRange(0x2148, 0x2149).addRange(0x1D422, 0x1D423).addRange(0x1D456, 0x1D457).addRange(0x1D48A, 0x1D48B).addRange(0x1D4BE, 0x1D4BF).addRange(0x1D4F2, 0x1D4F3).addRange(0x1D526, 0x1D527).addRange(0x1D55A, 0x1D55B).addRange(0x1D58E, 0x1D58F).addRange(0x1D5C2, 0x1D5C3).addRange(0x1D5F6, 0x1D5F7).addRange(0x1D62A, 0x1D62B).addRange(0x1D65E, 0x1D65F).addRange(0x1D692, 0x1D693).addRange(0x1E04C, 0x1E04D);
      Soft_Dotted.characters = set;
      return Soft_Dotted;
    }
  
    var Terminal_Punctuation = {};
  
    var hasRequiredTerminal_Punctuation;
    function requireTerminal_Punctuation() {
      if (hasRequiredTerminal_Punctuation) return Terminal_Punctuation;
      hasRequiredTerminal_Punctuation = 1;
      var set = regenerate$2.exports(0x21, 0x2C, 0x2E, 0x3F, 0x37E, 0x387, 0x589, 0x5C3, 0x60C, 0x61B, 0x6D4, 0x70C, 0x85E, 0xF08, 0x166E, 0x17DA, 0x2E2E, 0x2E3C, 0x2E41, 0x2E4C, 0xA92F, 0xAADF, 0xABEB, 0xFF01, 0xFF0C, 0xFF0E, 0xFF1F, 0xFF61, 0xFF64, 0x1039F, 0x103D0, 0x10857, 0x1091F, 0x111CD, 0x112A9, 0x11944, 0x11946, 0x11C71, 0x16AF5, 0x16B44, 0x1BC9F);
      set.addRange(0x3A, 0x3B).addRange(0x61D, 0x61F).addRange(0x700, 0x70A).addRange(0x7F8, 0x7F9).addRange(0x830, 0x83E).addRange(0x964, 0x965).addRange(0xE5A, 0xE5B).addRange(0xF0D, 0xF12).addRange(0x104A, 0x104B).addRange(0x1361, 0x1368).addRange(0x16EB, 0x16ED).addRange(0x1735, 0x1736).addRange(0x17D4, 0x17D6).addRange(0x1802, 0x1805).addRange(0x1808, 0x1809).addRange(0x1944, 0x1945).addRange(0x1AA8, 0x1AAB).addRange(0x1B5A, 0x1B5B).addRange(0x1B5D, 0x1B5F).addRange(0x1B7D, 0x1B7E).addRange(0x1C3B, 0x1C3F).addRange(0x1C7E, 0x1C7F).addRange(0x203C, 0x203D).addRange(0x2047, 0x2049).addRange(0x2E4E, 0x2E4F).addRange(0x2E53, 0x2E54).addRange(0x3001, 0x3002).addRange(0xA4FE, 0xA4FF).addRange(0xA60D, 0xA60F).addRange(0xA6F3, 0xA6F7).addRange(0xA876, 0xA877).addRange(0xA8CE, 0xA8CF).addRange(0xA9C7, 0xA9C9).addRange(0xAA5D, 0xAA5F).addRange(0xAAF0, 0xAAF1).addRange(0xFE50, 0xFE52).addRange(0xFE54, 0xFE57).addRange(0xFF1A, 0xFF1B).addRange(0x10A56, 0x10A57).addRange(0x10AF0, 0x10AF5).addRange(0x10B3A, 0x10B3F).addRange(0x10B99, 0x10B9C).addRange(0x10F55, 0x10F59).addRange(0x10F86, 0x10F89).addRange(0x11047, 0x1104D).addRange(0x110BE, 0x110C1).addRange(0x11141, 0x11143).addRange(0x111C5, 0x111C6).addRange(0x111DE, 0x111DF).addRange(0x11238, 0x1123C).addRange(0x1144B, 0x1144D);
      set.addRange(0x1145A, 0x1145B).addRange(0x115C2, 0x115C5).addRange(0x115C9, 0x115D7).addRange(0x11641, 0x11642).addRange(0x1173C, 0x1173E).addRange(0x11A42, 0x11A43).addRange(0x11A9B, 0x11A9C).addRange(0x11AA1, 0x11AA2).addRange(0x11C41, 0x11C43).addRange(0x11EF7, 0x11EF8).addRange(0x11F43, 0x11F44).addRange(0x12470, 0x12474).addRange(0x16A6E, 0x16A6F).addRange(0x16B37, 0x16B39).addRange(0x16E97, 0x16E98).addRange(0x1DA87, 0x1DA8A);
      Terminal_Punctuation.characters = set;
      return Terminal_Punctuation;
    }
  
    var Unified_Ideograph = {};
  
    var hasRequiredUnified_Ideograph;
    function requireUnified_Ideograph() {
      if (hasRequiredUnified_Ideograph) return Unified_Ideograph;
      hasRequiredUnified_Ideograph = 1;
      var set = regenerate$2.exports(0xFA11, 0xFA1F, 0xFA21);
      set.addRange(0x3400, 0x4DBF).addRange(0x4E00, 0x9FFF).addRange(0xFA0E, 0xFA0F).addRange(0xFA13, 0xFA14).addRange(0xFA23, 0xFA24).addRange(0xFA27, 0xFA29).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B739).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x30000, 0x3134A).addRange(0x31350, 0x323AF);
      Unified_Ideograph.characters = set;
      return Unified_Ideograph;
    }
  
    var Uppercase = {};
  
    var hasRequiredUppercase;
    function requireUppercase() {
      if (hasRequiredUppercase) return Uppercase;
      hasRequiredUppercase = 1;
      var set = regenerate$2.exports(0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, 0x10E, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, 0x11C, 0x11E, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12A, 0x12C, 0x12E, 0x130, 0x132, 0x134, 0x136, 0x139, 0x13B, 0x13D, 0x13F, 0x141, 0x143, 0x145, 0x147, 0x14A, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, 0x172, 0x174, 0x176, 0x17B, 0x17D, 0x184, 0x1A2, 0x1A4, 0x1A9, 0x1AC, 0x1B5, 0x1BC, 0x1C4, 0x1C7, 0x1CA, 0x1CD, 0x1CF, 0x1D1, 0x1D3, 0x1D5, 0x1D7, 0x1D9, 0x1DB, 0x1DE, 0x1E0, 0x1E2, 0x1E4, 0x1E6, 0x1E8, 0x1EA, 0x1EC, 0x1EE, 0x1F1, 0x1F4, 0x1FA, 0x1FC, 0x1FE, 0x200, 0x202, 0x204, 0x206, 0x208, 0x20A, 0x20C, 0x20E, 0x210, 0x212, 0x214, 0x216, 0x218, 0x21A, 0x21C, 0x21E, 0x220, 0x222, 0x224, 0x226, 0x228, 0x22A, 0x22C, 0x22E, 0x230, 0x232, 0x241, 0x248, 0x24A, 0x24C, 0x24E, 0x370, 0x372, 0x376, 0x37F, 0x386, 0x38C, 0x3CF, 0x3D8, 0x3DA, 0x3DC, 0x3DE, 0x3E0, 0x3E2, 0x3E4, 0x3E6, 0x3E8, 0x3EA, 0x3EC, 0x3EE, 0x3F4, 0x3F7, 0x460, 0x462, 0x464, 0x466, 0x468, 0x46A, 0x46C, 0x46E, 0x470, 0x472, 0x474, 0x476, 0x478, 0x47A, 0x47C, 0x47E, 0x480, 0x48A, 0x48C, 0x48E, 0x490, 0x492, 0x494, 0x496, 0x498, 0x49A, 0x49C, 0x49E, 0x4A0, 0x4A2, 0x4A4, 0x4A6, 0x4A8, 0x4AA, 0x4AC, 0x4AE, 0x4B0, 0x4B2, 0x4B4, 0x4B6, 0x4B8, 0x4BA, 0x4BC, 0x4BE, 0x4C3, 0x4C5, 0x4C7, 0x4C9, 0x4CB, 0x4CD, 0x4D0, 0x4D2, 0x4D4, 0x4D6, 0x4D8, 0x4DA, 0x4DC, 0x4DE, 0x4E0, 0x4E2, 0x4E4, 0x4E6, 0x4E8, 0x4EA, 0x4EC, 0x4EE, 0x4F0, 0x4F2, 0x4F4, 0x4F6, 0x4F8, 0x4FA, 0x4FC, 0x4FE, 0x500, 0x502, 0x504, 0x506, 0x508, 0x50A, 0x50C, 0x50E, 0x510, 0x512, 0x514, 0x516, 0x518, 0x51A, 0x51C, 0x51E, 0x520, 0x522, 0x524, 0x526, 0x528, 0x52A, 0x52C, 0x52E, 0x10C7, 0x10CD, 0x1E00, 0x1E02, 0x1E04, 0x1E06, 0x1E08, 0x1E0A, 0x1E0C, 0x1E0E, 0x1E10, 0x1E12, 0x1E14, 0x1E16, 0x1E18, 0x1E1A, 0x1E1C, 0x1E1E, 0x1E20, 0x1E22, 0x1E24, 0x1E26, 0x1E28, 0x1E2A, 0x1E2C, 0x1E2E, 0x1E30, 0x1E32, 0x1E34, 0x1E36, 0x1E38, 0x1E3A, 0x1E3C, 0x1E3E, 0x1E40, 0x1E42, 0x1E44, 0x1E46, 0x1E48, 0x1E4A, 0x1E4C, 0x1E4E, 0x1E50, 0x1E52, 0x1E54, 0x1E56, 0x1E58, 0x1E5A, 0x1E5C, 0x1E5E, 0x1E60, 0x1E62, 0x1E64, 0x1E66, 0x1E68, 0x1E6A, 0x1E6C, 0x1E6E, 0x1E70, 0x1E72, 0x1E74, 0x1E76, 0x1E78, 0x1E7A, 0x1E7C, 0x1E7E, 0x1E80, 0x1E82, 0x1E84, 0x1E86, 0x1E88, 0x1E8A, 0x1E8C, 0x1E8E, 0x1E90, 0x1E92, 0x1E94, 0x1E9E, 0x1EA0, 0x1EA2, 0x1EA4, 0x1EA6, 0x1EA8, 0x1EAA, 0x1EAC, 0x1EAE, 0x1EB0, 0x1EB2, 0x1EB4, 0x1EB6, 0x1EB8, 0x1EBA, 0x1EBC, 0x1EBE, 0x1EC0, 0x1EC2, 0x1EC4, 0x1EC6, 0x1EC8, 0x1ECA, 0x1ECC, 0x1ECE, 0x1ED0, 0x1ED2, 0x1ED4, 0x1ED6, 0x1ED8, 0x1EDA, 0x1EDC, 0x1EDE, 0x1EE0, 0x1EE2, 0x1EE4, 0x1EE6, 0x1EE8, 0x1EEA, 0x1EEC, 0x1EEE, 0x1EF0, 0x1EF2, 0x1EF4, 0x1EF6, 0x1EF8, 0x1EFA, 0x1EFC, 0x1EFE, 0x1F59, 0x1F5B, 0x1F5D, 0x1F5F, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x2145, 0x2183, 0x2C60, 0x2C67, 0x2C69, 0x2C6B, 0x2C72, 0x2C75, 0x2C82, 0x2C84, 0x2C86, 0x2C88, 0x2C8A, 0x2C8C, 0x2C8E, 0x2C90, 0x2C92, 0x2C94, 0x2C96, 0x2C98, 0x2C9A, 0x2C9C, 0x2C9E, 0x2CA0, 0x2CA2, 0x2CA4, 0x2CA6, 0x2CA8, 0x2CAA, 0x2CAC, 0x2CAE, 0x2CB0, 0x2CB2, 0x2CB4, 0x2CB6, 0x2CB8, 0x2CBA, 0x2CBC, 0x2CBE, 0x2CC0, 0x2CC2, 0x2CC4, 0x2CC6, 0x2CC8, 0x2CCA, 0x2CCC, 0x2CCE, 0x2CD0, 0x2CD2, 0x2CD4, 0x2CD6, 0x2CD8, 0x2CDA, 0x2CDC, 0x2CDE, 0x2CE0, 0x2CE2, 0x2CEB, 0x2CED, 0x2CF2, 0xA640, 0xA642, 0xA644, 0xA646, 0xA648, 0xA64A, 0xA64C, 0xA64E, 0xA650, 0xA652, 0xA654, 0xA656, 0xA658, 0xA65A, 0xA65C, 0xA65E, 0xA660, 0xA662, 0xA664, 0xA666, 0xA668, 0xA66A, 0xA66C, 0xA680, 0xA682, 0xA684, 0xA686, 0xA688, 0xA68A, 0xA68C, 0xA68E, 0xA690, 0xA692, 0xA694, 0xA696, 0xA698, 0xA69A, 0xA722, 0xA724, 0xA726, 0xA728, 0xA72A, 0xA72C, 0xA72E, 0xA732, 0xA734, 0xA736, 0xA738, 0xA73A, 0xA73C, 0xA73E, 0xA740, 0xA742, 0xA744, 0xA746, 0xA748, 0xA74A, 0xA74C, 0xA74E, 0xA750, 0xA752, 0xA754, 0xA756, 0xA758, 0xA75A, 0xA75C, 0xA75E, 0xA760, 0xA762, 0xA764, 0xA766, 0xA768, 0xA76A, 0xA76C, 0xA76E, 0xA779, 0xA77B, 0xA780, 0xA782, 0xA784, 0xA786, 0xA78B, 0xA78D, 0xA790, 0xA792, 0xA796, 0xA798, 0xA79A, 0xA79C, 0xA79E, 0xA7A0, 0xA7A2, 0xA7A4, 0xA7A6, 0xA7A8, 0xA7B6, 0xA7B8, 0xA7BA, 0xA7BC, 0xA7BE, 0xA7C0, 0xA7C2, 0xA7C9, 0xA7D0, 0xA7D6, 0xA7D8, 0xA7F5, 0x1D49C, 0x1D4A2, 0x1D546, 0x1D7CA);
      set.addRange(0x41, 0x5A).addRange(0xC0, 0xD6).addRange(0xD8, 0xDE).addRange(0x178, 0x179).addRange(0x181, 0x182).addRange(0x186, 0x187).addRange(0x189, 0x18B).addRange(0x18E, 0x191).addRange(0x193, 0x194).addRange(0x196, 0x198).addRange(0x19C, 0x19D).addRange(0x19F, 0x1A0).addRange(0x1A6, 0x1A7).addRange(0x1AE, 0x1AF).addRange(0x1B1, 0x1B3).addRange(0x1B7, 0x1B8).addRange(0x1F6, 0x1F8).addRange(0x23A, 0x23B).addRange(0x23D, 0x23E).addRange(0x243, 0x246).addRange(0x388, 0x38A).addRange(0x38E, 0x38F).addRange(0x391, 0x3A1).addRange(0x3A3, 0x3AB).addRange(0x3D2, 0x3D4).addRange(0x3F9, 0x3FA).addRange(0x3FD, 0x42F).addRange(0x4C0, 0x4C1).addRange(0x531, 0x556).addRange(0x10A0, 0x10C5).addRange(0x13A0, 0x13F5).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1F08, 0x1F0F).addRange(0x1F18, 0x1F1D).addRange(0x1F28, 0x1F2F).addRange(0x1F38, 0x1F3F).addRange(0x1F48, 0x1F4D).addRange(0x1F68, 0x1F6F).addRange(0x1FB8, 0x1FBB).addRange(0x1FC8, 0x1FCB).addRange(0x1FD8, 0x1FDB).addRange(0x1FE8, 0x1FEC).addRange(0x1FF8, 0x1FFB).addRange(0x210B, 0x210D).addRange(0x2110, 0x2112).addRange(0x2119, 0x211D).addRange(0x212A, 0x212D).addRange(0x2130, 0x2133).addRange(0x213E, 0x213F).addRange(0x2160, 0x216F);
      set.addRange(0x24B6, 0x24CF).addRange(0x2C00, 0x2C2F).addRange(0x2C62, 0x2C64).addRange(0x2C6D, 0x2C70).addRange(0x2C7E, 0x2C80).addRange(0xA77D, 0xA77E).addRange(0xA7AA, 0xA7AE).addRange(0xA7B0, 0xA7B4).addRange(0xA7C4, 0xA7C7).addRange(0xFF21, 0xFF3A).addRange(0x10400, 0x10427).addRange(0x104B0, 0x104D3).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10C80, 0x10CB2).addRange(0x118A0, 0x118BF).addRange(0x16E40, 0x16E5F).addRange(0x1D400, 0x1D419).addRange(0x1D434, 0x1D44D).addRange(0x1D468, 0x1D481).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B5).addRange(0x1D4D0, 0x1D4E9).addRange(0x1D504, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D538, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D56C, 0x1D585).addRange(0x1D5A0, 0x1D5B9).addRange(0x1D5D4, 0x1D5ED).addRange(0x1D608, 0x1D621).addRange(0x1D63C, 0x1D655).addRange(0x1D670, 0x1D689).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6E2, 0x1D6FA).addRange(0x1D71C, 0x1D734).addRange(0x1D756, 0x1D76E).addRange(0x1D790, 0x1D7A8).addRange(0x1E900, 0x1E921).addRange(0x1F130, 0x1F149).addRange(0x1F150, 0x1F169).addRange(0x1F170, 0x1F189);
      Uppercase.characters = set;
      return Uppercase;
    }
  
    var Variation_Selector = {};
  
    var hasRequiredVariation_Selector;
    function requireVariation_Selector() {
      if (hasRequiredVariation_Selector) return Variation_Selector;
      hasRequiredVariation_Selector = 1;
      var set = regenerate$2.exports(0x180F);
      set.addRange(0x180B, 0x180D).addRange(0xFE00, 0xFE0F).addRange(0xE0100, 0xE01EF);
      Variation_Selector.characters = set;
      return Variation_Selector;
    }
  
    var White_Space = {};
  
    var hasRequiredWhite_Space;
    function requireWhite_Space() {
      if (hasRequiredWhite_Space) return White_Space;
      hasRequiredWhite_Space = 1;
      var set = regenerate$2.exports(0x20, 0x85, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000);
      set.addRange(0x9, 0xD).addRange(0x2000, 0x200A).addRange(0x2028, 0x2029);
      White_Space.characters = set;
      return White_Space;
    }
  
    var XID_Continue = {};
  
    var hasRequiredXID_Continue;
    function requireXID_Continue() {
      if (hasRequiredXID_Continue) return XID_Continue;
      hasRequiredXID_Continue = 1;
      var set = regenerate$2.exports(0x5F, 0xAA, 0xB5, 0xB7, 0xBA, 0x2EC, 0x2EE, 0x37F, 0x38C, 0x559, 0x5BF, 0x5C7, 0x6FF, 0x7FA, 0x7FD, 0x9B2, 0x9D7, 0x9FC, 0x9FE, 0xA3C, 0xA51, 0xA5E, 0xAD0, 0xB71, 0xB9C, 0xBD0, 0xBD7, 0xC5D, 0xDBD, 0xDCA, 0xDD6, 0xE84, 0xEA5, 0xEC6, 0xF00, 0xF35, 0xF37, 0xF39, 0xFC6, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x17D7, 0x1AA7, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2054, 0x2071, 0x207F, 0x20E1, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x214E, 0x2D27, 0x2D2D, 0x2D6F, 0xA7D3, 0xA82C, 0xA8FB, 0xFB3E, 0xFE71, 0xFE73, 0xFE77, 0xFE79, 0xFE7B, 0xFE7D, 0xFF3F, 0x101FD, 0x102E0, 0x10808, 0x1083C, 0x10A3F, 0x10F27, 0x110C2, 0x11176, 0x111DC, 0x11288, 0x11350, 0x11357, 0x114C7, 0x11644, 0x11909, 0x11A47, 0x11A9D, 0x11D3A, 0x11FB0, 0x1B132, 0x1B155, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1DA75, 0x1DA84, 0x1E08F, 0x1E14E, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);
      set.addRange(0x30, 0x39).addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x2C1).addRange(0x2C6, 0x2D1).addRange(0x2E0, 0x2E4).addRange(0x300, 0x374).addRange(0x376, 0x377).addRange(0x37B, 0x37D).addRange(0x386, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3F5).addRange(0x3F7, 0x481).addRange(0x483, 0x487).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x560, 0x588).addRange(0x591, 0x5BD).addRange(0x5C1, 0x5C2).addRange(0x5C4, 0x5C5).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F2).addRange(0x610, 0x61A).addRange(0x620, 0x669).addRange(0x66E, 0x6D3).addRange(0x6D5, 0x6DC).addRange(0x6DF, 0x6E8).addRange(0x6EA, 0x6FC).addRange(0x710, 0x74A).addRange(0x74D, 0x7B1).addRange(0x7C0, 0x7F5).addRange(0x800, 0x82D).addRange(0x840, 0x85B).addRange(0x860, 0x86A).addRange(0x870, 0x887).addRange(0x889, 0x88E).addRange(0x898, 0x8E1).addRange(0x8E3, 0x963).addRange(0x966, 0x96F).addRange(0x971, 0x983).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9BC, 0x9C4).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CE).addRange(0x9DC, 0x9DD);
      set.addRange(0x9DF, 0x9E3).addRange(0x9E6, 0x9F1).addRange(0xA01, 0xA03).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA3E, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA59, 0xA5C).addRange(0xA66, 0xA75).addRange(0xA81, 0xA83).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xABC, 0xAC5).addRange(0xAC7, 0xAC9).addRange(0xACB, 0xACD).addRange(0xAE0, 0xAE3).addRange(0xAE6, 0xAEF).addRange(0xAF9, 0xAFF).addRange(0xB01, 0xB03).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB3C, 0xB44).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4D).addRange(0xB55, 0xB57).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB63).addRange(0xB66, 0xB6F).addRange(0xB82, 0xB83).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9);
      set.addRange(0xBBE, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCD).addRange(0xBE6, 0xBEF).addRange(0xC00, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC3C, 0xC44).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC63).addRange(0xC66, 0xC6F).addRange(0xC80, 0xC83).addRange(0xC85, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCBC, 0xCC4).addRange(0xCC6, 0xCC8).addRange(0xCCA, 0xCCD).addRange(0xCD5, 0xCD6).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE3).addRange(0xCE6, 0xCEF).addRange(0xCF1, 0xCF3).addRange(0xD00, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD44).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4E).addRange(0xD54, 0xD57).addRange(0xD5F, 0xD63).addRange(0xD66, 0xD6F).addRange(0xD7A, 0xD7F).addRange(0xD81, 0xD83).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xDCF, 0xDD4).addRange(0xDD8, 0xDDF).addRange(0xDE6, 0xDEF).addRange(0xDF2, 0xDF3).addRange(0xE01, 0xE3A).addRange(0xE40, 0xE4E).addRange(0xE50, 0xE59).addRange(0xE81, 0xE82);
      set.addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEBD).addRange(0xEC0, 0xEC4).addRange(0xEC8, 0xECE).addRange(0xED0, 0xED9).addRange(0xEDC, 0xEDF).addRange(0xF18, 0xF19).addRange(0xF20, 0xF29).addRange(0xF3E, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF71, 0xF84).addRange(0xF86, 0xF97).addRange(0xF99, 0xFBC).addRange(0x1000, 0x1049).addRange(0x1050, 0x109D).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FC, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x135D, 0x135F).addRange(0x1369, 0x1371).addRange(0x1380, 0x138F).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1401, 0x166C).addRange(0x166F, 0x167F).addRange(0x1681, 0x169A).addRange(0x16A0, 0x16EA).addRange(0x16EE, 0x16F8).addRange(0x1700, 0x1715).addRange(0x171F, 0x1734).addRange(0x1740, 0x1753).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1772, 0x1773).addRange(0x1780, 0x17D3).addRange(0x17DC, 0x17DD).addRange(0x17E0, 0x17E9);
      set.addRange(0x180B, 0x180D).addRange(0x180F, 0x1819).addRange(0x1820, 0x1878).addRange(0x1880, 0x18AA).addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E).addRange(0x1920, 0x192B).addRange(0x1930, 0x193B).addRange(0x1946, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x19D0, 0x19DA).addRange(0x1A00, 0x1A1B).addRange(0x1A20, 0x1A5E).addRange(0x1A60, 0x1A7C).addRange(0x1A7F, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1AB0, 0x1ABD).addRange(0x1ABF, 0x1ACE).addRange(0x1B00, 0x1B4C).addRange(0x1B50, 0x1B59).addRange(0x1B6B, 0x1B73).addRange(0x1B80, 0x1BF3).addRange(0x1C00, 0x1C37).addRange(0x1C40, 0x1C49).addRange(0x1C4D, 0x1C7D).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1CD0, 0x1CD2).addRange(0x1CD4, 0x1CFA).addRange(0x1D00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x203F, 0x2040).addRange(0x2090, 0x209C).addRange(0x20D0, 0x20DC).addRange(0x20E5, 0x20F0);
      set.addRange(0x210A, 0x2113).addRange(0x2118, 0x211D).addRange(0x212A, 0x2139).addRange(0x213C, 0x213F).addRange(0x2145, 0x2149).addRange(0x2160, 0x2188).addRange(0x2C00, 0x2CE4).addRange(0x2CEB, 0x2CF3).addRange(0x2D00, 0x2D25).addRange(0x2D30, 0x2D67).addRange(0x2D7F, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x2DE0, 0x2DFF).addRange(0x3005, 0x3007).addRange(0x3021, 0x302F).addRange(0x3031, 0x3035).addRange(0x3038, 0x303C).addRange(0x3041, 0x3096).addRange(0x3099, 0x309A).addRange(0x309D, 0x309F).addRange(0x30A1, 0x30FA).addRange(0x30FC, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x31A0, 0x31BF).addRange(0x31F0, 0x31FF).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0xA48C).addRange(0xA4D0, 0xA4FD).addRange(0xA500, 0xA60C).addRange(0xA610, 0xA62B).addRange(0xA640, 0xA66F).addRange(0xA674, 0xA67D).addRange(0xA67F, 0xA6F1).addRange(0xA717, 0xA71F).addRange(0xA722, 0xA788).addRange(0xA78B, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA827).addRange(0xA840, 0xA873).addRange(0xA880, 0xA8C5).addRange(0xA8D0, 0xA8D9).addRange(0xA8E0, 0xA8F7);
      set.addRange(0xA8FD, 0xA92D).addRange(0xA930, 0xA953).addRange(0xA960, 0xA97C).addRange(0xA980, 0xA9C0).addRange(0xA9CF, 0xA9D9).addRange(0xA9E0, 0xA9FE).addRange(0xAA00, 0xAA36).addRange(0xAA40, 0xAA4D).addRange(0xAA50, 0xAA59).addRange(0xAA60, 0xAA76).addRange(0xAA7A, 0xAAC2).addRange(0xAADB, 0xAADD).addRange(0xAAE0, 0xAAEF).addRange(0xAAF2, 0xAAF6).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB69).addRange(0xAB70, 0xABEA).addRange(0xABEC, 0xABED).addRange(0xABF0, 0xABF9).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1D, 0xFB28).addRange(0xFB2A, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBB1).addRange(0xFBD3, 0xFC5D).addRange(0xFC64, 0xFD3D).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDF9).addRange(0xFE00, 0xFE0F).addRange(0xFE20, 0xFE2F).addRange(0xFE33, 0xFE34).addRange(0xFE4D, 0xFE4F).addRange(0xFE7F, 0xFEFC).addRange(0xFF10, 0xFF19).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0xFF66, 0xFFBE);
      set.addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10140, 0x10174).addRange(0x10280, 0x1029C).addRange(0x102A0, 0x102D0).addRange(0x10300, 0x1031F).addRange(0x1032D, 0x1034A).addRange(0x10350, 0x1037A).addRange(0x10380, 0x1039D).addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103CF).addRange(0x103D1, 0x103D5).addRange(0x10400, 0x1049D).addRange(0x104A0, 0x104A9).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10860, 0x10876).addRange(0x10880, 0x1089E).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x10900, 0x10915).addRange(0x10920, 0x10939);
      set.addRange(0x10980, 0x109B7).addRange(0x109BE, 0x109BF).addRange(0x10A00, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A38, 0x10A3A).addRange(0x10A60, 0x10A7C).addRange(0x10A80, 0x10A9C).addRange(0x10AC0, 0x10AC7).addRange(0x10AC9, 0x10AE6).addRange(0x10B00, 0x10B35).addRange(0x10B40, 0x10B55).addRange(0x10B60, 0x10B72).addRange(0x10B80, 0x10B91).addRange(0x10C00, 0x10C48).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10D00, 0x10D27).addRange(0x10D30, 0x10D39).addRange(0x10E80, 0x10EA9).addRange(0x10EAB, 0x10EAC).addRange(0x10EB0, 0x10EB1).addRange(0x10EFD, 0x10F1C).addRange(0x10F30, 0x10F50).addRange(0x10F70, 0x10F85).addRange(0x10FB0, 0x10FC4).addRange(0x10FE0, 0x10FF6).addRange(0x11000, 0x11046).addRange(0x11066, 0x11075).addRange(0x1107F, 0x110BA).addRange(0x110D0, 0x110E8).addRange(0x110F0, 0x110F9).addRange(0x11100, 0x11134).addRange(0x11136, 0x1113F).addRange(0x11144, 0x11147).addRange(0x11150, 0x11173).addRange(0x11180, 0x111C4).addRange(0x111C9, 0x111CC).addRange(0x111CE, 0x111DA).addRange(0x11200, 0x11211).addRange(0x11213, 0x11237).addRange(0x1123E, 0x11241).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A8).addRange(0x112B0, 0x112EA).addRange(0x112F0, 0x112F9).addRange(0x11300, 0x11303);
      set.addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1133B, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x1135D, 0x11363).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x11400, 0x1144A).addRange(0x11450, 0x11459).addRange(0x1145E, 0x11461).addRange(0x11480, 0x114C5).addRange(0x114D0, 0x114D9).addRange(0x11580, 0x115B5).addRange(0x115B8, 0x115C0).addRange(0x115D8, 0x115DD).addRange(0x11600, 0x11640).addRange(0x11650, 0x11659).addRange(0x11680, 0x116B8).addRange(0x116C0, 0x116C9).addRange(0x11700, 0x1171A).addRange(0x1171D, 0x1172B).addRange(0x11730, 0x11739).addRange(0x11740, 0x11746).addRange(0x11800, 0x1183A).addRange(0x118A0, 0x118E9).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x11935).addRange(0x11937, 0x11938).addRange(0x1193B, 0x11943).addRange(0x11950, 0x11959).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D7).addRange(0x119DA, 0x119E1).addRange(0x119E3, 0x119E4).addRange(0x11A00, 0x11A3E).addRange(0x11A50, 0x11A99).addRange(0x11AB0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C36).addRange(0x11C38, 0x11C40).addRange(0x11C50, 0x11C59).addRange(0x11C72, 0x11C8F).addRange(0x11C92, 0x11CA7).addRange(0x11CA9, 0x11CB6);
      set.addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D47).addRange(0x11D50, 0x11D59).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D8E).addRange(0x11D90, 0x11D91).addRange(0x11D93, 0x11D98).addRange(0x11DA0, 0x11DA9).addRange(0x11EE0, 0x11EF6).addRange(0x11F00, 0x11F10).addRange(0x11F12, 0x11F3A).addRange(0x11F3E, 0x11F42).addRange(0x11F50, 0x11F59).addRange(0x12000, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF0).addRange(0x13000, 0x1342F).addRange(0x13440, 0x13455).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A60, 0x16A69).addRange(0x16A70, 0x16ABE).addRange(0x16AC0, 0x16AC9).addRange(0x16AD0, 0x16AED).addRange(0x16AF0, 0x16AF4).addRange(0x16B00, 0x16B36).addRange(0x16B40, 0x16B43).addRange(0x16B50, 0x16B59).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E7F).addRange(0x16F00, 0x16F4A).addRange(0x16F4F, 0x16F87).addRange(0x16F8F, 0x16F9F).addRange(0x16FE0, 0x16FE1).addRange(0x16FE3, 0x16FE4).addRange(0x16FF0, 0x16FF1).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B000, 0x1B122).addRange(0x1B150, 0x1B152);
      set.addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1BC9D, 0x1BC9E).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1D165, 0x1D169).addRange(0x1D16D, 0x1D172).addRange(0x1D17B, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0x1D242, 0x1D244).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6FA).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D734).addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D76E).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D7A8).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7CB).addRange(0x1D7CE, 0x1D7FF).addRange(0x1DA00, 0x1DA36).addRange(0x1DA3B, 0x1DA6C).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF).addRange(0x1DF00, 0x1DF1E).addRange(0x1DF25, 0x1DF2A).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018);
      set.addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A).addRange(0x1E030, 0x1E06D).addRange(0x1E100, 0x1E12C).addRange(0x1E130, 0x1E13D).addRange(0x1E140, 0x1E149).addRange(0x1E290, 0x1E2AE).addRange(0x1E2C0, 0x1E2F9).addRange(0x1E4D0, 0x1E4F9).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4).addRange(0x1E8D0, 0x1E8D6).addRange(0x1E900, 0x1E94B).addRange(0x1E950, 0x1E959).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1FBF0, 0x1FBF9).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B739).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A).addRange(0x31350, 0x323AF).addRange(0xE0100, 0xE01EF);
      XID_Continue.characters = set;
      return XID_Continue;
    }
  
    var XID_Start = {};
  
    var hasRequiredXID_Start;
    function requireXID_Start() {
      if (hasRequiredXID_Start) return XID_Start;
      hasRequiredXID_Start = 1;
      var set = regenerate$2.exports(0xAA, 0xB5, 0xBA, 0x2EC, 0x2EE, 0x37F, 0x386, 0x38C, 0x559, 0x6D5, 0x6FF, 0x710, 0x7B1, 0x7FA, 0x81A, 0x824, 0x828, 0x93D, 0x950, 0x9B2, 0x9BD, 0x9CE, 0x9FC, 0xA5E, 0xABD, 0xAD0, 0xAF9, 0xB3D, 0xB71, 0xB83, 0xB9C, 0xBD0, 0xC3D, 0xC5D, 0xC80, 0xCBD, 0xD3D, 0xD4E, 0xDBD, 0xE32, 0xE84, 0xEA5, 0xEB2, 0xEBD, 0xEC6, 0xF00, 0x103F, 0x1061, 0x108E, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x17D7, 0x17DC, 0x18AA, 0x1AA7, 0x1CFA, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2071, 0x207F, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x214E, 0x2D27, 0x2D2D, 0x2D6F, 0xA7D3, 0xA8FB, 0xA9CF, 0xAA7A, 0xAAB1, 0xAAC0, 0xAAC2, 0xFB1D, 0xFB3E, 0xFE71, 0xFE73, 0xFE77, 0xFE79, 0xFE7B, 0xFE7D, 0x10808, 0x1083C, 0x10A00, 0x10F27, 0x11075, 0x11144, 0x11147, 0x11176, 0x111DA, 0x111DC, 0x11288, 0x1133D, 0x11350, 0x114C7, 0x11644, 0x116B8, 0x11909, 0x1193F, 0x11941, 0x119E1, 0x119E3, 0x11A00, 0x11A3A, 0x11A50, 0x11A9D, 0x11C40, 0x11D46, 0x11D98, 0x11F02, 0x11FB0, 0x16F50, 0x16FE3, 0x1B132, 0x1B155, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1E14E, 0x1E94B, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);
      set.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x2C1).addRange(0x2C6, 0x2D1).addRange(0x2E0, 0x2E4).addRange(0x370, 0x374).addRange(0x376, 0x377).addRange(0x37B, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3F5).addRange(0x3F7, 0x481).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x560, 0x588).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F2).addRange(0x620, 0x64A).addRange(0x66E, 0x66F).addRange(0x671, 0x6D3).addRange(0x6E5, 0x6E6).addRange(0x6EE, 0x6EF).addRange(0x6FA, 0x6FC).addRange(0x712, 0x72F).addRange(0x74D, 0x7A5).addRange(0x7CA, 0x7EA).addRange(0x7F4, 0x7F5).addRange(0x800, 0x815).addRange(0x840, 0x858).addRange(0x860, 0x86A).addRange(0x870, 0x887).addRange(0x889, 0x88E).addRange(0x8A0, 0x8C9).addRange(0x904, 0x939).addRange(0x958, 0x961).addRange(0x971, 0x980).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E1).addRange(0x9F0, 0x9F1).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33);
      set.addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA59, 0xA5C).addRange(0xA72, 0xA74).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xAE0, 0xAE1).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB61).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xC05, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC61).addRange(0xC85, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE1).addRange(0xCF1, 0xCF2).addRange(0xD04, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD3A).addRange(0xD54, 0xD56).addRange(0xD5F, 0xD61).addRange(0xD7A, 0xD7F).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6);
      set.addRange(0xE01, 0xE30).addRange(0xE40, 0xE46).addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEB0).addRange(0xEC0, 0xEC4).addRange(0xEDC, 0xEDF).addRange(0xF40, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF88, 0xF8C).addRange(0x1000, 0x102A).addRange(0x1050, 0x1055).addRange(0x105A, 0x105D).addRange(0x1065, 0x1066).addRange(0x106E, 0x1070).addRange(0x1075, 0x1081).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FC, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x1380, 0x138F).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1401, 0x166C).addRange(0x166F, 0x167F).addRange(0x1681, 0x169A).addRange(0x16A0, 0x16EA).addRange(0x16EE, 0x16F8).addRange(0x1700, 0x1711).addRange(0x171F, 0x1731).addRange(0x1740, 0x1751).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1780, 0x17B3).addRange(0x1820, 0x1878).addRange(0x1880, 0x18A8).addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E);
      set.addRange(0x1950, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x1A00, 0x1A16).addRange(0x1A20, 0x1A54).addRange(0x1B05, 0x1B33).addRange(0x1B45, 0x1B4C).addRange(0x1B83, 0x1BA0).addRange(0x1BAE, 0x1BAF).addRange(0x1BBA, 0x1BE5).addRange(0x1C00, 0x1C23).addRange(0x1C4D, 0x1C4F).addRange(0x1C5A, 0x1C7D).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1CE9, 0x1CEC).addRange(0x1CEE, 0x1CF3).addRange(0x1CF5, 0x1CF6).addRange(0x1D00, 0x1DBF).addRange(0x1E00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x2090, 0x209C).addRange(0x210A, 0x2113).addRange(0x2118, 0x211D).addRange(0x212A, 0x2139).addRange(0x213C, 0x213F).addRange(0x2145, 0x2149).addRange(0x2160, 0x2188).addRange(0x2C00, 0x2CE4).addRange(0x2CEB, 0x2CEE).addRange(0x2CF2, 0x2CF3).addRange(0x2D00, 0x2D25).addRange(0x2D30, 0x2D67).addRange(0x2D80, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE);
      set.addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x3005, 0x3007).addRange(0x3021, 0x3029).addRange(0x3031, 0x3035).addRange(0x3038, 0x303C).addRange(0x3041, 0x3096).addRange(0x309D, 0x309F).addRange(0x30A1, 0x30FA).addRange(0x30FC, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x31A0, 0x31BF).addRange(0x31F0, 0x31FF).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0xA48C).addRange(0xA4D0, 0xA4FD).addRange(0xA500, 0xA60C).addRange(0xA610, 0xA61F).addRange(0xA62A, 0xA62B).addRange(0xA640, 0xA66E).addRange(0xA67F, 0xA69D).addRange(0xA6A0, 0xA6EF).addRange(0xA717, 0xA71F).addRange(0xA722, 0xA788).addRange(0xA78B, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA801).addRange(0xA803, 0xA805).addRange(0xA807, 0xA80A).addRange(0xA80C, 0xA822).addRange(0xA840, 0xA873).addRange(0xA882, 0xA8B3).addRange(0xA8F2, 0xA8F7).addRange(0xA8FD, 0xA8FE).addRange(0xA90A, 0xA925).addRange(0xA930, 0xA946).addRange(0xA960, 0xA97C).addRange(0xA984, 0xA9B2).addRange(0xA9E0, 0xA9E4).addRange(0xA9E6, 0xA9EF).addRange(0xA9FA, 0xA9FE).addRange(0xAA00, 0xAA28).addRange(0xAA40, 0xAA42).addRange(0xAA44, 0xAA4B).addRange(0xAA60, 0xAA76);
      set.addRange(0xAA7E, 0xAAAF).addRange(0xAAB5, 0xAAB6).addRange(0xAAB9, 0xAABD).addRange(0xAADB, 0xAADD).addRange(0xAAE0, 0xAAEA).addRange(0xAAF2, 0xAAF4).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB69).addRange(0xAB70, 0xABE2).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1F, 0xFB28).addRange(0xFB2A, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBB1).addRange(0xFBD3, 0xFC5D).addRange(0xFC64, 0xFD3D).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDF9).addRange(0xFE7F, 0xFEFC).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0xFF66, 0xFF9D).addRange(0xFFA0, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10140, 0x10174).addRange(0x10280, 0x1029C).addRange(0x102A0, 0x102D0);
      set.addRange(0x10300, 0x1031F).addRange(0x1032D, 0x1034A).addRange(0x10350, 0x10375).addRange(0x10380, 0x1039D).addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103CF).addRange(0x103D1, 0x103D5).addRange(0x10400, 0x1049D).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10860, 0x10876).addRange(0x10880, 0x1089E).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x10900, 0x10915).addRange(0x10920, 0x10939).addRange(0x10980, 0x109B7).addRange(0x109BE, 0x109BF).addRange(0x10A10, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A60, 0x10A7C).addRange(0x10A80, 0x10A9C).addRange(0x10AC0, 0x10AC7).addRange(0x10AC9, 0x10AE4).addRange(0x10B00, 0x10B35).addRange(0x10B40, 0x10B55).addRange(0x10B60, 0x10B72).addRange(0x10B80, 0x10B91).addRange(0x10C00, 0x10C48).addRange(0x10C80, 0x10CB2);
      set.addRange(0x10CC0, 0x10CF2).addRange(0x10D00, 0x10D23).addRange(0x10E80, 0x10EA9).addRange(0x10EB0, 0x10EB1).addRange(0x10F00, 0x10F1C).addRange(0x10F30, 0x10F45).addRange(0x10F70, 0x10F81).addRange(0x10FB0, 0x10FC4).addRange(0x10FE0, 0x10FF6).addRange(0x11003, 0x11037).addRange(0x11071, 0x11072).addRange(0x11083, 0x110AF).addRange(0x110D0, 0x110E8).addRange(0x11103, 0x11126).addRange(0x11150, 0x11172).addRange(0x11183, 0x111B2).addRange(0x111C1, 0x111C4).addRange(0x11200, 0x11211).addRange(0x11213, 0x1122B).addRange(0x1123F, 0x11240).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A8).addRange(0x112B0, 0x112DE).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1135D, 0x11361).addRange(0x11400, 0x11434).addRange(0x11447, 0x1144A).addRange(0x1145F, 0x11461).addRange(0x11480, 0x114AF).addRange(0x114C4, 0x114C5).addRange(0x11580, 0x115AE).addRange(0x115D8, 0x115DB).addRange(0x11600, 0x1162F).addRange(0x11680, 0x116AA).addRange(0x11700, 0x1171A).addRange(0x11740, 0x11746).addRange(0x11800, 0x1182B).addRange(0x118A0, 0x118DF).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x1192F).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D0);
      set.addRange(0x11A0B, 0x11A32).addRange(0x11A5C, 0x11A89).addRange(0x11AB0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C2E).addRange(0x11C72, 0x11C8F).addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D30).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D89).addRange(0x11EE0, 0x11EF2).addRange(0x11F04, 0x11F10).addRange(0x11F12, 0x11F33).addRange(0x12000, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF0).addRange(0x13000, 0x1342F).addRange(0x13441, 0x13446).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A70, 0x16ABE).addRange(0x16AD0, 0x16AED).addRange(0x16B00, 0x16B2F).addRange(0x16B40, 0x16B43).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E7F).addRange(0x16F00, 0x16F4A).addRange(0x16F93, 0x16F9F).addRange(0x16FE0, 0x16FE1).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B000, 0x1B122).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F);
      set.addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6FA).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D734).addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D76E).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D7A8).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7CB).addRange(0x1DF00, 0x1DF1E).addRange(0x1DF25, 0x1DF2A).addRange(0x1E030, 0x1E06D).addRange(0x1E100, 0x1E12C).addRange(0x1E137, 0x1E13D).addRange(0x1E290, 0x1E2AD).addRange(0x1E2C0, 0x1E2EB).addRange(0x1E4D0, 0x1E4EB).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4).addRange(0x1E900, 0x1E943).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89);
      set.addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B739).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A).addRange(0x31350, 0x323AF);
      XID_Start.characters = set;
      return XID_Start;
    }
  
    var Cased_Letter = {};
  
    var hasRequiredCased_Letter;
    function requireCased_Letter() {
      if (hasRequiredCased_Letter) return Cased_Letter;
      hasRequiredCased_Letter = 1;
      var set = regenerate$2.exports(0xB5, 0x37F, 0x386, 0x38C, 0x10C7, 0x10CD, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x2139, 0x214E, 0x2D27, 0x2D2D, 0xA7D3, 0xA7FA, 0x1D4A2, 0x1D4BB, 0x1D546);
      set.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x1BA).addRange(0x1BC, 0x1BF).addRange(0x1C4, 0x293).addRange(0x295, 0x2AF).addRange(0x370, 0x373).addRange(0x376, 0x377).addRange(0x37B, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3F5).addRange(0x3F7, 0x481).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x560, 0x588).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FD, 0x10FF).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1D00, 0x1D2B).addRange(0x1D6B, 0x1D77).addRange(0x1D79, 0x1D9A).addRange(0x1E00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x210A, 0x2113).addRange(0x2119, 0x211D).addRange(0x212A, 0x212D).addRange(0x212F, 0x2134).addRange(0x213C, 0x213F).addRange(0x2145, 0x2149).addRange(0x2183, 0x2184);
      set.addRange(0x2C00, 0x2C7B).addRange(0x2C7E, 0x2CE4).addRange(0x2CEB, 0x2CEE).addRange(0x2CF2, 0x2CF3).addRange(0x2D00, 0x2D25).addRange(0xA640, 0xA66D).addRange(0xA680, 0xA69B).addRange(0xA722, 0xA76F).addRange(0xA771, 0xA787).addRange(0xA78B, 0xA78E).addRange(0xA790, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F5, 0xA7F6).addRange(0xAB30, 0xAB5A).addRange(0xAB60, 0xAB68).addRange(0xAB70, 0xABBF).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0x10400, 0x1044F).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x118A0, 0x118DF).addRange(0x16E40, 0x16E7F).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550);
      set.addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6FA).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D734).addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D76E).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D7A8).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7CB).addRange(0x1DF00, 0x1DF09).addRange(0x1DF0B, 0x1DF1E).addRange(0x1DF25, 0x1DF2A).addRange(0x1E900, 0x1E943);
      Cased_Letter.characters = set;
      return Cased_Letter;
    }
  
    var Close_Punctuation = {};
  
    var hasRequiredClose_Punctuation;
    function requireClose_Punctuation() {
      if (hasRequiredClose_Punctuation) return Close_Punctuation;
      hasRequiredClose_Punctuation = 1;
      var set = regenerate$2.exports(0x29, 0x5D, 0x7D, 0xF3B, 0xF3D, 0x169C, 0x2046, 0x207E, 0x208E, 0x2309, 0x230B, 0x232A, 0x2769, 0x276B, 0x276D, 0x276F, 0x2771, 0x2773, 0x2775, 0x27C6, 0x27E7, 0x27E9, 0x27EB, 0x27ED, 0x27EF, 0x2984, 0x2986, 0x2988, 0x298A, 0x298C, 0x298E, 0x2990, 0x2992, 0x2994, 0x2996, 0x2998, 0x29D9, 0x29DB, 0x29FD, 0x2E23, 0x2E25, 0x2E27, 0x2E29, 0x2E56, 0x2E58, 0x2E5A, 0x2E5C, 0x3009, 0x300B, 0x300D, 0x300F, 0x3011, 0x3015, 0x3017, 0x3019, 0x301B, 0xFD3E, 0xFE18, 0xFE36, 0xFE38, 0xFE3A, 0xFE3C, 0xFE3E, 0xFE40, 0xFE42, 0xFE44, 0xFE48, 0xFE5A, 0xFE5C, 0xFE5E, 0xFF09, 0xFF3D, 0xFF5D, 0xFF60, 0xFF63);
      set.addRange(0x301E, 0x301F);
      Close_Punctuation.characters = set;
      return Close_Punctuation;
    }
  
    var Connector_Punctuation = {};
  
    var hasRequiredConnector_Punctuation;
    function requireConnector_Punctuation() {
      if (hasRequiredConnector_Punctuation) return Connector_Punctuation;
      hasRequiredConnector_Punctuation = 1;
      var set = regenerate$2.exports(0x5F, 0x2054, 0xFF3F);
      set.addRange(0x203F, 0x2040).addRange(0xFE33, 0xFE34).addRange(0xFE4D, 0xFE4F);
      Connector_Punctuation.characters = set;
      return Connector_Punctuation;
    }
  
    var Control = {};
  
    var hasRequiredControl;
    function requireControl() {
      if (hasRequiredControl) return Control;
      hasRequiredControl = 1;
      var set = regenerate$2.exports();
      set.addRange(0x0, 0x1F).addRange(0x7F, 0x9F);
      Control.characters = set;
      return Control;
    }
  
    var Currency_Symbol = {};
  
    var hasRequiredCurrency_Symbol;
    function requireCurrency_Symbol() {
      if (hasRequiredCurrency_Symbol) return Currency_Symbol;
      hasRequiredCurrency_Symbol = 1;
      var set = regenerate$2.exports(0x24, 0x58F, 0x60B, 0x9FB, 0xAF1, 0xBF9, 0xE3F, 0x17DB, 0xA838, 0xFDFC, 0xFE69, 0xFF04, 0x1E2FF, 0x1ECB0);
      set.addRange(0xA2, 0xA5).addRange(0x7FE, 0x7FF).addRange(0x9F2, 0x9F3).addRange(0x20A0, 0x20C0).addRange(0xFFE0, 0xFFE1).addRange(0xFFE5, 0xFFE6).addRange(0x11FDD, 0x11FE0);
      Currency_Symbol.characters = set;
      return Currency_Symbol;
    }
  
    var Dash_Punctuation = {};
  
    var hasRequiredDash_Punctuation;
    function requireDash_Punctuation() {
      if (hasRequiredDash_Punctuation) return Dash_Punctuation;
      hasRequiredDash_Punctuation = 1;
      var set = regenerate$2.exports(0x2D, 0x58A, 0x5BE, 0x1400, 0x1806, 0x2E17, 0x2E1A, 0x2E40, 0x2E5D, 0x301C, 0x3030, 0x30A0, 0xFE58, 0xFE63, 0xFF0D, 0x10EAD);
      set.addRange(0x2010, 0x2015).addRange(0x2E3A, 0x2E3B).addRange(0xFE31, 0xFE32);
      Dash_Punctuation.characters = set;
      return Dash_Punctuation;
    }
  
    var Decimal_Number = {};
  
    var hasRequiredDecimal_Number;
    function requireDecimal_Number() {
      if (hasRequiredDecimal_Number) return Decimal_Number;
      hasRequiredDecimal_Number = 1;
      var set = regenerate$2.exports();
      set.addRange(0x30, 0x39).addRange(0x660, 0x669).addRange(0x6F0, 0x6F9).addRange(0x7C0, 0x7C9).addRange(0x966, 0x96F).addRange(0x9E6, 0x9EF).addRange(0xA66, 0xA6F).addRange(0xAE6, 0xAEF).addRange(0xB66, 0xB6F).addRange(0xBE6, 0xBEF).addRange(0xC66, 0xC6F).addRange(0xCE6, 0xCEF).addRange(0xD66, 0xD6F).addRange(0xDE6, 0xDEF).addRange(0xE50, 0xE59).addRange(0xED0, 0xED9).addRange(0xF20, 0xF29).addRange(0x1040, 0x1049).addRange(0x1090, 0x1099).addRange(0x17E0, 0x17E9).addRange(0x1810, 0x1819).addRange(0x1946, 0x194F).addRange(0x19D0, 0x19D9).addRange(0x1A80, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1B50, 0x1B59).addRange(0x1BB0, 0x1BB9).addRange(0x1C40, 0x1C49).addRange(0x1C50, 0x1C59).addRange(0xA620, 0xA629).addRange(0xA8D0, 0xA8D9).addRange(0xA900, 0xA909).addRange(0xA9D0, 0xA9D9).addRange(0xA9F0, 0xA9F9).addRange(0xAA50, 0xAA59).addRange(0xABF0, 0xABF9).addRange(0xFF10, 0xFF19).addRange(0x104A0, 0x104A9).addRange(0x10D30, 0x10D39).addRange(0x11066, 0x1106F).addRange(0x110F0, 0x110F9).addRange(0x11136, 0x1113F).addRange(0x111D0, 0x111D9).addRange(0x112F0, 0x112F9).addRange(0x11450, 0x11459).addRange(0x114D0, 0x114D9).addRange(0x11650, 0x11659).addRange(0x116C0, 0x116C9).addRange(0x11730, 0x11739).addRange(0x118E0, 0x118E9).addRange(0x11950, 0x11959);
      set.addRange(0x11C50, 0x11C59).addRange(0x11D50, 0x11D59).addRange(0x11DA0, 0x11DA9).addRange(0x11F50, 0x11F59).addRange(0x16A60, 0x16A69).addRange(0x16AC0, 0x16AC9).addRange(0x16B50, 0x16B59).addRange(0x1D7CE, 0x1D7FF).addRange(0x1E140, 0x1E149).addRange(0x1E2F0, 0x1E2F9).addRange(0x1E4F0, 0x1E4F9).addRange(0x1E950, 0x1E959).addRange(0x1FBF0, 0x1FBF9);
      Decimal_Number.characters = set;
      return Decimal_Number;
    }
  
    var Enclosing_Mark = {};
  
    var hasRequiredEnclosing_Mark;
    function requireEnclosing_Mark() {
      if (hasRequiredEnclosing_Mark) return Enclosing_Mark;
      hasRequiredEnclosing_Mark = 1;
      var set = regenerate$2.exports(0x1ABE);
      set.addRange(0x488, 0x489).addRange(0x20DD, 0x20E0).addRange(0x20E2, 0x20E4).addRange(0xA670, 0xA672);
      Enclosing_Mark.characters = set;
      return Enclosing_Mark;
    }
  
    var Final_Punctuation = {};
  
    var hasRequiredFinal_Punctuation;
    function requireFinal_Punctuation() {
      if (hasRequiredFinal_Punctuation) return Final_Punctuation;
      hasRequiredFinal_Punctuation = 1;
      var set = regenerate$2.exports(0xBB, 0x2019, 0x201D, 0x203A, 0x2E03, 0x2E05, 0x2E0A, 0x2E0D, 0x2E1D, 0x2E21);
      Final_Punctuation.characters = set;
      return Final_Punctuation;
    }
  
    var Format = {};
  
    var hasRequiredFormat;
    function requireFormat() {
      if (hasRequiredFormat) return Format;
      hasRequiredFormat = 1;
      var set = regenerate$2.exports(0xAD, 0x61C, 0x6DD, 0x70F, 0x8E2, 0x180E, 0xFEFF, 0x110BD, 0x110CD, 0xE0001);
      set.addRange(0x600, 0x605).addRange(0x890, 0x891).addRange(0x200B, 0x200F).addRange(0x202A, 0x202E).addRange(0x2060, 0x2064).addRange(0x2066, 0x206F).addRange(0xFFF9, 0xFFFB).addRange(0x13430, 0x1343F).addRange(0x1BCA0, 0x1BCA3).addRange(0x1D173, 0x1D17A).addRange(0xE0020, 0xE007F);
      Format.characters = set;
      return Format;
    }
  
    var Initial_Punctuation = {};
  
    var hasRequiredInitial_Punctuation;
    function requireInitial_Punctuation() {
      if (hasRequiredInitial_Punctuation) return Initial_Punctuation;
      hasRequiredInitial_Punctuation = 1;
      var set = regenerate$2.exports(0xAB, 0x2018, 0x201F, 0x2039, 0x2E02, 0x2E04, 0x2E09, 0x2E0C, 0x2E1C, 0x2E20);
      set.addRange(0x201B, 0x201C);
      Initial_Punctuation.characters = set;
      return Initial_Punctuation;
    }
  
    var Letter_Number = {};
  
    var hasRequiredLetter_Number;
    function requireLetter_Number() {
      if (hasRequiredLetter_Number) return Letter_Number;
      hasRequiredLetter_Number = 1;
      var set = regenerate$2.exports(0x3007, 0x10341, 0x1034A);
      set.addRange(0x16EE, 0x16F0).addRange(0x2160, 0x2182).addRange(0x2185, 0x2188).addRange(0x3021, 0x3029).addRange(0x3038, 0x303A).addRange(0xA6E6, 0xA6EF).addRange(0x10140, 0x10174).addRange(0x103D1, 0x103D5).addRange(0x12400, 0x1246E);
      Letter_Number.characters = set;
      return Letter_Number;
    }
  
    var Letter = {};
  
    var hasRequiredLetter;
    function requireLetter() {
      if (hasRequiredLetter) return Letter;
      hasRequiredLetter = 1;
      var set = regenerate$2.exports(0xAA, 0xB5, 0xBA, 0x2EC, 0x2EE, 0x37F, 0x386, 0x38C, 0x559, 0x6D5, 0x6FF, 0x710, 0x7B1, 0x7FA, 0x81A, 0x824, 0x828, 0x93D, 0x950, 0x9B2, 0x9BD, 0x9CE, 0x9FC, 0xA5E, 0xABD, 0xAD0, 0xAF9, 0xB3D, 0xB71, 0xB83, 0xB9C, 0xBD0, 0xC3D, 0xC5D, 0xC80, 0xCBD, 0xD3D, 0xD4E, 0xDBD, 0xE84, 0xEA5, 0xEBD, 0xEC6, 0xF00, 0x103F, 0x1061, 0x108E, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x17D7, 0x17DC, 0x18AA, 0x1AA7, 0x1CFA, 0x1F59, 0x1F5B, 0x1F5D, 0x1FBE, 0x2071, 0x207F, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x214E, 0x2D27, 0x2D2D, 0x2D6F, 0x2E2F, 0xA7D3, 0xA8FB, 0xA9CF, 0xAA7A, 0xAAB1, 0xAAC0, 0xAAC2, 0xFB1D, 0xFB3E, 0x10808, 0x1083C, 0x10A00, 0x10F27, 0x11075, 0x11144, 0x11147, 0x11176, 0x111DA, 0x111DC, 0x11288, 0x1133D, 0x11350, 0x114C7, 0x11644, 0x116B8, 0x11909, 0x1193F, 0x11941, 0x119E1, 0x119E3, 0x11A00, 0x11A3A, 0x11A50, 0x11A9D, 0x11C40, 0x11D46, 0x11D98, 0x11F02, 0x11FB0, 0x16F50, 0x16FE3, 0x1B132, 0x1B155, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1E14E, 0x1E94B, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);
      set.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x2C1).addRange(0x2C6, 0x2D1).addRange(0x2E0, 0x2E4).addRange(0x370, 0x374).addRange(0x376, 0x377).addRange(0x37A, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3F5).addRange(0x3F7, 0x481).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x560, 0x588).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F2).addRange(0x620, 0x64A).addRange(0x66E, 0x66F).addRange(0x671, 0x6D3).addRange(0x6E5, 0x6E6).addRange(0x6EE, 0x6EF).addRange(0x6FA, 0x6FC).addRange(0x712, 0x72F).addRange(0x74D, 0x7A5).addRange(0x7CA, 0x7EA).addRange(0x7F4, 0x7F5).addRange(0x800, 0x815).addRange(0x840, 0x858).addRange(0x860, 0x86A).addRange(0x870, 0x887).addRange(0x889, 0x88E).addRange(0x8A0, 0x8C9).addRange(0x904, 0x939).addRange(0x958, 0x961).addRange(0x971, 0x980).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E1).addRange(0x9F0, 0x9F1).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33);
      set.addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA59, 0xA5C).addRange(0xA72, 0xA74).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xAE0, 0xAE1).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB61).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xC05, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC61).addRange(0xC85, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE1).addRange(0xCF1, 0xCF2).addRange(0xD04, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD3A).addRange(0xD54, 0xD56).addRange(0xD5F, 0xD61).addRange(0xD7A, 0xD7F).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6);
      set.addRange(0xE01, 0xE30).addRange(0xE32, 0xE33).addRange(0xE40, 0xE46).addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEB0).addRange(0xEB2, 0xEB3).addRange(0xEC0, 0xEC4).addRange(0xEDC, 0xEDF).addRange(0xF40, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF88, 0xF8C).addRange(0x1000, 0x102A).addRange(0x1050, 0x1055).addRange(0x105A, 0x105D).addRange(0x1065, 0x1066).addRange(0x106E, 0x1070).addRange(0x1075, 0x1081).addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FC, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x1380, 0x138F).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1401, 0x166C).addRange(0x166F, 0x167F).addRange(0x1681, 0x169A).addRange(0x16A0, 0x16EA).addRange(0x16F1, 0x16F8).addRange(0x1700, 0x1711).addRange(0x171F, 0x1731).addRange(0x1740, 0x1751).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1780, 0x17B3).addRange(0x1820, 0x1878).addRange(0x1880, 0x1884);
      set.addRange(0x1887, 0x18A8).addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E).addRange(0x1950, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x1A00, 0x1A16).addRange(0x1A20, 0x1A54).addRange(0x1B05, 0x1B33).addRange(0x1B45, 0x1B4C).addRange(0x1B83, 0x1BA0).addRange(0x1BAE, 0x1BAF).addRange(0x1BBA, 0x1BE5).addRange(0x1C00, 0x1C23).addRange(0x1C4D, 0x1C4F).addRange(0x1C5A, 0x1C7D).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1CE9, 0x1CEC).addRange(0x1CEE, 0x1CF3).addRange(0x1CF5, 0x1CF6).addRange(0x1D00, 0x1DBF).addRange(0x1E00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FBC).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FCC).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FE0, 0x1FEC).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFC).addRange(0x2090, 0x209C).addRange(0x210A, 0x2113).addRange(0x2119, 0x211D).addRange(0x212A, 0x212D).addRange(0x212F, 0x2139).addRange(0x213C, 0x213F).addRange(0x2145, 0x2149).addRange(0x2183, 0x2184).addRange(0x2C00, 0x2CE4).addRange(0x2CEB, 0x2CEE).addRange(0x2CF2, 0x2CF3).addRange(0x2D00, 0x2D25);
      set.addRange(0x2D30, 0x2D67).addRange(0x2D80, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x3005, 0x3006).addRange(0x3031, 0x3035).addRange(0x303B, 0x303C).addRange(0x3041, 0x3096).addRange(0x309D, 0x309F).addRange(0x30A1, 0x30FA).addRange(0x30FC, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x31A0, 0x31BF).addRange(0x31F0, 0x31FF).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0xA48C).addRange(0xA4D0, 0xA4FD).addRange(0xA500, 0xA60C).addRange(0xA610, 0xA61F).addRange(0xA62A, 0xA62B).addRange(0xA640, 0xA66E).addRange(0xA67F, 0xA69D).addRange(0xA6A0, 0xA6E5).addRange(0xA717, 0xA71F).addRange(0xA722, 0xA788).addRange(0xA78B, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA801).addRange(0xA803, 0xA805).addRange(0xA807, 0xA80A).addRange(0xA80C, 0xA822).addRange(0xA840, 0xA873).addRange(0xA882, 0xA8B3).addRange(0xA8F2, 0xA8F7).addRange(0xA8FD, 0xA8FE).addRange(0xA90A, 0xA925).addRange(0xA930, 0xA946).addRange(0xA960, 0xA97C).addRange(0xA984, 0xA9B2).addRange(0xA9E0, 0xA9E4).addRange(0xA9E6, 0xA9EF).addRange(0xA9FA, 0xA9FE).addRange(0xAA00, 0xAA28);
      set.addRange(0xAA40, 0xAA42).addRange(0xAA44, 0xAA4B).addRange(0xAA60, 0xAA76).addRange(0xAA7E, 0xAAAF).addRange(0xAAB5, 0xAAB6).addRange(0xAAB9, 0xAABD).addRange(0xAADB, 0xAADD).addRange(0xAAE0, 0xAAEA).addRange(0xAAF2, 0xAAF4).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB69).addRange(0xAB70, 0xABE2).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1F, 0xFB28).addRange(0xFB2A, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBB1).addRange(0xFBD3, 0xFD3D).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFB).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0xFF66, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10280, 0x1029C);
      set.addRange(0x102A0, 0x102D0).addRange(0x10300, 0x1031F).addRange(0x1032D, 0x10340).addRange(0x10342, 0x10349).addRange(0x10350, 0x10375).addRange(0x10380, 0x1039D).addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103CF).addRange(0x10400, 0x1049D).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10860, 0x10876).addRange(0x10880, 0x1089E).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x10900, 0x10915).addRange(0x10920, 0x10939).addRange(0x10980, 0x109B7).addRange(0x109BE, 0x109BF).addRange(0x10A10, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A60, 0x10A7C).addRange(0x10A80, 0x10A9C).addRange(0x10AC0, 0x10AC7).addRange(0x10AC9, 0x10AE4).addRange(0x10B00, 0x10B35).addRange(0x10B40, 0x10B55).addRange(0x10B60, 0x10B72).addRange(0x10B80, 0x10B91).addRange(0x10C00, 0x10C48);
      set.addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10D00, 0x10D23).addRange(0x10E80, 0x10EA9).addRange(0x10EB0, 0x10EB1).addRange(0x10F00, 0x10F1C).addRange(0x10F30, 0x10F45).addRange(0x10F70, 0x10F81).addRange(0x10FB0, 0x10FC4).addRange(0x10FE0, 0x10FF6).addRange(0x11003, 0x11037).addRange(0x11071, 0x11072).addRange(0x11083, 0x110AF).addRange(0x110D0, 0x110E8).addRange(0x11103, 0x11126).addRange(0x11150, 0x11172).addRange(0x11183, 0x111B2).addRange(0x111C1, 0x111C4).addRange(0x11200, 0x11211).addRange(0x11213, 0x1122B).addRange(0x1123F, 0x11240).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A8).addRange(0x112B0, 0x112DE).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1135D, 0x11361).addRange(0x11400, 0x11434).addRange(0x11447, 0x1144A).addRange(0x1145F, 0x11461).addRange(0x11480, 0x114AF).addRange(0x114C4, 0x114C5).addRange(0x11580, 0x115AE).addRange(0x115D8, 0x115DB).addRange(0x11600, 0x1162F).addRange(0x11680, 0x116AA).addRange(0x11700, 0x1171A).addRange(0x11740, 0x11746).addRange(0x11800, 0x1182B).addRange(0x118A0, 0x118DF).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x1192F).addRange(0x119A0, 0x119A7);
      set.addRange(0x119AA, 0x119D0).addRange(0x11A0B, 0x11A32).addRange(0x11A5C, 0x11A89).addRange(0x11AB0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C2E).addRange(0x11C72, 0x11C8F).addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D30).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D89).addRange(0x11EE0, 0x11EF2).addRange(0x11F04, 0x11F10).addRange(0x11F12, 0x11F33).addRange(0x12000, 0x12399).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF0).addRange(0x13000, 0x1342F).addRange(0x13441, 0x13446).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A70, 0x16ABE).addRange(0x16AD0, 0x16AED).addRange(0x16B00, 0x16B2F).addRange(0x16B40, 0x16B43).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E7F).addRange(0x16F00, 0x16F4A).addRange(0x16F93, 0x16F9F).addRange(0x16FE0, 0x16FE1).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B000, 0x1B122).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F);
      set.addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6FA).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D734).addRange(0x1D736, 0x1D74E).addRange(0x1D750, 0x1D76E).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D7A8).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7CB).addRange(0x1DF00, 0x1DF1E).addRange(0x1DF25, 0x1DF2A).addRange(0x1E030, 0x1E06D).addRange(0x1E100, 0x1E12C).addRange(0x1E137, 0x1E13D).addRange(0x1E290, 0x1E2AD).addRange(0x1E2C0, 0x1E2EB).addRange(0x1E4D0, 0x1E4EB).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4).addRange(0x1E900, 0x1E943).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89);
      set.addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B739).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A).addRange(0x31350, 0x323AF);
      Letter.characters = set;
      return Letter;
    }
  
    var Line_Separator = {};
  
    var hasRequiredLine_Separator;
    function requireLine_Separator() {
      if (hasRequiredLine_Separator) return Line_Separator;
      hasRequiredLine_Separator = 1;
      var set = regenerate$2.exports(0x2028);
      Line_Separator.characters = set;
      return Line_Separator;
    }
  
    var Lowercase_Letter = {};
  
    var hasRequiredLowercase_Letter;
    function requireLowercase_Letter() {
      if (hasRequiredLowercase_Letter) return Lowercase_Letter;
      hasRequiredLowercase_Letter = 1;
      var set = regenerate$2.exports(0xB5, 0x101, 0x103, 0x105, 0x107, 0x109, 0x10B, 0x10D, 0x10F, 0x111, 0x113, 0x115, 0x117, 0x119, 0x11B, 0x11D, 0x11F, 0x121, 0x123, 0x125, 0x127, 0x129, 0x12B, 0x12D, 0x12F, 0x131, 0x133, 0x135, 0x13A, 0x13C, 0x13E, 0x140, 0x142, 0x144, 0x146, 0x14B, 0x14D, 0x14F, 0x151, 0x153, 0x155, 0x157, 0x159, 0x15B, 0x15D, 0x15F, 0x161, 0x163, 0x165, 0x167, 0x169, 0x16B, 0x16D, 0x16F, 0x171, 0x173, 0x175, 0x177, 0x17A, 0x17C, 0x183, 0x185, 0x188, 0x192, 0x195, 0x19E, 0x1A1, 0x1A3, 0x1A5, 0x1A8, 0x1AD, 0x1B0, 0x1B4, 0x1B6, 0x1C6, 0x1C9, 0x1CC, 0x1CE, 0x1D0, 0x1D2, 0x1D4, 0x1D6, 0x1D8, 0x1DA, 0x1DF, 0x1E1, 0x1E3, 0x1E5, 0x1E7, 0x1E9, 0x1EB, 0x1ED, 0x1F3, 0x1F5, 0x1F9, 0x1FB, 0x1FD, 0x1FF, 0x201, 0x203, 0x205, 0x207, 0x209, 0x20B, 0x20D, 0x20F, 0x211, 0x213, 0x215, 0x217, 0x219, 0x21B, 0x21D, 0x21F, 0x221, 0x223, 0x225, 0x227, 0x229, 0x22B, 0x22D, 0x22F, 0x231, 0x23C, 0x242, 0x247, 0x249, 0x24B, 0x24D, 0x371, 0x373, 0x377, 0x390, 0x3D9, 0x3DB, 0x3DD, 0x3DF, 0x3E1, 0x3E3, 0x3E5, 0x3E7, 0x3E9, 0x3EB, 0x3ED, 0x3F5, 0x3F8, 0x461, 0x463, 0x465, 0x467, 0x469, 0x46B, 0x46D, 0x46F, 0x471, 0x473, 0x475, 0x477, 0x479, 0x47B, 0x47D, 0x47F, 0x481, 0x48B, 0x48D, 0x48F, 0x491, 0x493, 0x495, 0x497, 0x499, 0x49B, 0x49D, 0x49F, 0x4A1, 0x4A3, 0x4A5, 0x4A7, 0x4A9, 0x4AB, 0x4AD, 0x4AF, 0x4B1, 0x4B3, 0x4B5, 0x4B7, 0x4B9, 0x4BB, 0x4BD, 0x4BF, 0x4C2, 0x4C4, 0x4C6, 0x4C8, 0x4CA, 0x4CC, 0x4D1, 0x4D3, 0x4D5, 0x4D7, 0x4D9, 0x4DB, 0x4DD, 0x4DF, 0x4E1, 0x4E3, 0x4E5, 0x4E7, 0x4E9, 0x4EB, 0x4ED, 0x4EF, 0x4F1, 0x4F3, 0x4F5, 0x4F7, 0x4F9, 0x4FB, 0x4FD, 0x4FF, 0x501, 0x503, 0x505, 0x507, 0x509, 0x50B, 0x50D, 0x50F, 0x511, 0x513, 0x515, 0x517, 0x519, 0x51B, 0x51D, 0x51F, 0x521, 0x523, 0x525, 0x527, 0x529, 0x52B, 0x52D, 0x52F, 0x1E01, 0x1E03, 0x1E05, 0x1E07, 0x1E09, 0x1E0B, 0x1E0D, 0x1E0F, 0x1E11, 0x1E13, 0x1E15, 0x1E17, 0x1E19, 0x1E1B, 0x1E1D, 0x1E1F, 0x1E21, 0x1E23, 0x1E25, 0x1E27, 0x1E29, 0x1E2B, 0x1E2D, 0x1E2F, 0x1E31, 0x1E33, 0x1E35, 0x1E37, 0x1E39, 0x1E3B, 0x1E3D, 0x1E3F, 0x1E41, 0x1E43, 0x1E45, 0x1E47, 0x1E49, 0x1E4B, 0x1E4D, 0x1E4F, 0x1E51, 0x1E53, 0x1E55, 0x1E57, 0x1E59, 0x1E5B, 0x1E5D, 0x1E5F, 0x1E61, 0x1E63, 0x1E65, 0x1E67, 0x1E69, 0x1E6B, 0x1E6D, 0x1E6F, 0x1E71, 0x1E73, 0x1E75, 0x1E77, 0x1E79, 0x1E7B, 0x1E7D, 0x1E7F, 0x1E81, 0x1E83, 0x1E85, 0x1E87, 0x1E89, 0x1E8B, 0x1E8D, 0x1E8F, 0x1E91, 0x1E93, 0x1E9F, 0x1EA1, 0x1EA3, 0x1EA5, 0x1EA7, 0x1EA9, 0x1EAB, 0x1EAD, 0x1EAF, 0x1EB1, 0x1EB3, 0x1EB5, 0x1EB7, 0x1EB9, 0x1EBB, 0x1EBD, 0x1EBF, 0x1EC1, 0x1EC3, 0x1EC5, 0x1EC7, 0x1EC9, 0x1ECB, 0x1ECD, 0x1ECF, 0x1ED1, 0x1ED3, 0x1ED5, 0x1ED7, 0x1ED9, 0x1EDB, 0x1EDD, 0x1EDF, 0x1EE1, 0x1EE3, 0x1EE5, 0x1EE7, 0x1EE9, 0x1EEB, 0x1EED, 0x1EEF, 0x1EF1, 0x1EF3, 0x1EF5, 0x1EF7, 0x1EF9, 0x1EFB, 0x1EFD, 0x1FBE, 0x210A, 0x2113, 0x212F, 0x2134, 0x2139, 0x214E, 0x2184, 0x2C61, 0x2C68, 0x2C6A, 0x2C6C, 0x2C71, 0x2C81, 0x2C83, 0x2C85, 0x2C87, 0x2C89, 0x2C8B, 0x2C8D, 0x2C8F, 0x2C91, 0x2C93, 0x2C95, 0x2C97, 0x2C99, 0x2C9B, 0x2C9D, 0x2C9F, 0x2CA1, 0x2CA3, 0x2CA5, 0x2CA7, 0x2CA9, 0x2CAB, 0x2CAD, 0x2CAF, 0x2CB1, 0x2CB3, 0x2CB5, 0x2CB7, 0x2CB9, 0x2CBB, 0x2CBD, 0x2CBF, 0x2CC1, 0x2CC3, 0x2CC5, 0x2CC7, 0x2CC9, 0x2CCB, 0x2CCD, 0x2CCF, 0x2CD1, 0x2CD3, 0x2CD5, 0x2CD7, 0x2CD9, 0x2CDB, 0x2CDD, 0x2CDF, 0x2CE1, 0x2CEC, 0x2CEE, 0x2CF3, 0x2D27, 0x2D2D, 0xA641, 0xA643, 0xA645, 0xA647, 0xA649, 0xA64B, 0xA64D, 0xA64F, 0xA651, 0xA653, 0xA655, 0xA657, 0xA659, 0xA65B, 0xA65D, 0xA65F, 0xA661, 0xA663, 0xA665, 0xA667, 0xA669, 0xA66B, 0xA66D, 0xA681, 0xA683, 0xA685, 0xA687, 0xA689, 0xA68B, 0xA68D, 0xA68F, 0xA691, 0xA693, 0xA695, 0xA697, 0xA699, 0xA69B, 0xA723, 0xA725, 0xA727, 0xA729, 0xA72B, 0xA72D, 0xA733, 0xA735, 0xA737, 0xA739, 0xA73B, 0xA73D, 0xA73F, 0xA741, 0xA743, 0xA745, 0xA747, 0xA749, 0xA74B, 0xA74D, 0xA74F, 0xA751, 0xA753, 0xA755, 0xA757, 0xA759, 0xA75B, 0xA75D, 0xA75F, 0xA761, 0xA763, 0xA765, 0xA767, 0xA769, 0xA76B, 0xA76D, 0xA76F, 0xA77A, 0xA77C, 0xA77F, 0xA781, 0xA783, 0xA785, 0xA787, 0xA78C, 0xA78E, 0xA791, 0xA797, 0xA799, 0xA79B, 0xA79D, 0xA79F, 0xA7A1, 0xA7A3, 0xA7A5, 0xA7A7, 0xA7A9, 0xA7AF, 0xA7B5, 0xA7B7, 0xA7B9, 0xA7BB, 0xA7BD, 0xA7BF, 0xA7C1, 0xA7C3, 0xA7C8, 0xA7CA, 0xA7D1, 0xA7D3, 0xA7D5, 0xA7D7, 0xA7D9, 0xA7F6, 0xA7FA, 0x1D4BB, 0x1D7CB);
      set.addRange(0x61, 0x7A).addRange(0xDF, 0xF6).addRange(0xF8, 0xFF).addRange(0x137, 0x138).addRange(0x148, 0x149).addRange(0x17E, 0x180).addRange(0x18C, 0x18D).addRange(0x199, 0x19B).addRange(0x1AA, 0x1AB).addRange(0x1B9, 0x1BA).addRange(0x1BD, 0x1BF).addRange(0x1DC, 0x1DD).addRange(0x1EF, 0x1F0).addRange(0x233, 0x239).addRange(0x23F, 0x240).addRange(0x24F, 0x293).addRange(0x295, 0x2AF).addRange(0x37B, 0x37D).addRange(0x3AC, 0x3CE).addRange(0x3D0, 0x3D1).addRange(0x3D5, 0x3D7).addRange(0x3EF, 0x3F3).addRange(0x3FB, 0x3FC).addRange(0x430, 0x45F).addRange(0x4CE, 0x4CF).addRange(0x560, 0x588).addRange(0x10D0, 0x10FA).addRange(0x10FD, 0x10FF).addRange(0x13F8, 0x13FD).addRange(0x1C80, 0x1C88).addRange(0x1D00, 0x1D2B).addRange(0x1D6B, 0x1D77).addRange(0x1D79, 0x1D9A).addRange(0x1E95, 0x1E9D).addRange(0x1EFF, 0x1F07).addRange(0x1F10, 0x1F15).addRange(0x1F20, 0x1F27).addRange(0x1F30, 0x1F37).addRange(0x1F40, 0x1F45).addRange(0x1F50, 0x1F57).addRange(0x1F60, 0x1F67).addRange(0x1F70, 0x1F7D).addRange(0x1F80, 0x1F87).addRange(0x1F90, 0x1F97).addRange(0x1FA0, 0x1FA7).addRange(0x1FB0, 0x1FB4).addRange(0x1FB6, 0x1FB7).addRange(0x1FC2, 0x1FC4).addRange(0x1FC6, 0x1FC7).addRange(0x1FD0, 0x1FD3).addRange(0x1FD6, 0x1FD7);
      set.addRange(0x1FE0, 0x1FE7).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FF7).addRange(0x210E, 0x210F).addRange(0x213C, 0x213D).addRange(0x2146, 0x2149).addRange(0x2C30, 0x2C5F).addRange(0x2C65, 0x2C66).addRange(0x2C73, 0x2C74).addRange(0x2C76, 0x2C7B).addRange(0x2CE3, 0x2CE4).addRange(0x2D00, 0x2D25).addRange(0xA72F, 0xA731).addRange(0xA771, 0xA778).addRange(0xA793, 0xA795).addRange(0xAB30, 0xAB5A).addRange(0xAB60, 0xAB68).addRange(0xAB70, 0xABBF).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFF41, 0xFF5A).addRange(0x10428, 0x1044F).addRange(0x104D8, 0x104FB).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC).addRange(0x10CC0, 0x10CF2).addRange(0x118C0, 0x118DF).addRange(0x16E60, 0x16E7F).addRange(0x1D41A, 0x1D433).addRange(0x1D44E, 0x1D454).addRange(0x1D456, 0x1D467).addRange(0x1D482, 0x1D49B).addRange(0x1D4B6, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D4CF).addRange(0x1D4EA, 0x1D503).addRange(0x1D51E, 0x1D537).addRange(0x1D552, 0x1D56B).addRange(0x1D586, 0x1D59F).addRange(0x1D5BA, 0x1D5D3).addRange(0x1D5EE, 0x1D607).addRange(0x1D622, 0x1D63B).addRange(0x1D656, 0x1D66F).addRange(0x1D68A, 0x1D6A5).addRange(0x1D6C2, 0x1D6DA).addRange(0x1D6DC, 0x1D6E1).addRange(0x1D6FC, 0x1D714).addRange(0x1D716, 0x1D71B).addRange(0x1D736, 0x1D74E);
      set.addRange(0x1D750, 0x1D755).addRange(0x1D770, 0x1D788).addRange(0x1D78A, 0x1D78F).addRange(0x1D7AA, 0x1D7C2).addRange(0x1D7C4, 0x1D7C9).addRange(0x1DF00, 0x1DF09).addRange(0x1DF0B, 0x1DF1E).addRange(0x1DF25, 0x1DF2A).addRange(0x1E922, 0x1E943);
      Lowercase_Letter.characters = set;
      return Lowercase_Letter;
    }
  
    var Mark = {};
  
    var hasRequiredMark;
    function requireMark() {
      if (hasRequiredMark) return Mark;
      hasRequiredMark = 1;
      var set = regenerate$2.exports(0x5BF, 0x5C7, 0x670, 0x711, 0x7FD, 0x9BC, 0x9D7, 0x9FE, 0xA3C, 0xA51, 0xA75, 0xABC, 0xB3C, 0xB82, 0xBD7, 0xC3C, 0xCBC, 0xCF3, 0xD57, 0xDCA, 0xDD6, 0xE31, 0xEB1, 0xF35, 0xF37, 0xF39, 0xFC6, 0x108F, 0x17DD, 0x180F, 0x18A9, 0x1A7F, 0x1CED, 0x1CF4, 0x2D7F, 0xA802, 0xA806, 0xA80B, 0xA82C, 0xA8FF, 0xA9E5, 0xAA43, 0xAAB0, 0xAAC1, 0xFB1E, 0x101FD, 0x102E0, 0x10A3F, 0x11070, 0x110C2, 0x11173, 0x1123E, 0x11241, 0x11357, 0x1145E, 0x11940, 0x119E4, 0x11A47, 0x11D3A, 0x11D47, 0x11F03, 0x13440, 0x16F4F, 0x16FE4, 0x1DA75, 0x1DA84, 0x1E08F, 0x1E2AE);
      set.addRange(0x300, 0x36F).addRange(0x483, 0x489).addRange(0x591, 0x5BD).addRange(0x5C1, 0x5C2).addRange(0x5C4, 0x5C5).addRange(0x610, 0x61A).addRange(0x64B, 0x65F).addRange(0x6D6, 0x6DC).addRange(0x6DF, 0x6E4).addRange(0x6E7, 0x6E8).addRange(0x6EA, 0x6ED).addRange(0x730, 0x74A).addRange(0x7A6, 0x7B0).addRange(0x7EB, 0x7F3).addRange(0x816, 0x819).addRange(0x81B, 0x823).addRange(0x825, 0x827).addRange(0x829, 0x82D).addRange(0x859, 0x85B).addRange(0x898, 0x89F).addRange(0x8CA, 0x8E1).addRange(0x8E3, 0x903).addRange(0x93A, 0x93C).addRange(0x93E, 0x94F).addRange(0x951, 0x957).addRange(0x962, 0x963).addRange(0x981, 0x983).addRange(0x9BE, 0x9C4).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CD).addRange(0x9E2, 0x9E3).addRange(0xA01, 0xA03).addRange(0xA3E, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA70, 0xA71).addRange(0xA81, 0xA83).addRange(0xABE, 0xAC5).addRange(0xAC7, 0xAC9).addRange(0xACB, 0xACD).addRange(0xAE2, 0xAE3).addRange(0xAFA, 0xAFF).addRange(0xB01, 0xB03).addRange(0xB3E, 0xB44).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4D).addRange(0xB55, 0xB57).addRange(0xB62, 0xB63).addRange(0xBBE, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCD);
      set.addRange(0xC00, 0xC04).addRange(0xC3E, 0xC44).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC62, 0xC63).addRange(0xC81, 0xC83).addRange(0xCBE, 0xCC4).addRange(0xCC6, 0xCC8).addRange(0xCCA, 0xCCD).addRange(0xCD5, 0xCD6).addRange(0xCE2, 0xCE3).addRange(0xD00, 0xD03).addRange(0xD3B, 0xD3C).addRange(0xD3E, 0xD44).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4D).addRange(0xD62, 0xD63).addRange(0xD81, 0xD83).addRange(0xDCF, 0xDD4).addRange(0xDD8, 0xDDF).addRange(0xDF2, 0xDF3).addRange(0xE34, 0xE3A).addRange(0xE47, 0xE4E).addRange(0xEB4, 0xEBC).addRange(0xEC8, 0xECE).addRange(0xF18, 0xF19).addRange(0xF3E, 0xF3F).addRange(0xF71, 0xF84).addRange(0xF86, 0xF87).addRange(0xF8D, 0xF97).addRange(0xF99, 0xFBC).addRange(0x102B, 0x103E).addRange(0x1056, 0x1059).addRange(0x105E, 0x1060).addRange(0x1062, 0x1064).addRange(0x1067, 0x106D).addRange(0x1071, 0x1074).addRange(0x1082, 0x108D).addRange(0x109A, 0x109D).addRange(0x135D, 0x135F).addRange(0x1712, 0x1715).addRange(0x1732, 0x1734).addRange(0x1752, 0x1753).addRange(0x1772, 0x1773).addRange(0x17B4, 0x17D3).addRange(0x180B, 0x180D).addRange(0x1885, 0x1886).addRange(0x1920, 0x192B).addRange(0x1930, 0x193B).addRange(0x1A17, 0x1A1B);
      set.addRange(0x1A55, 0x1A5E).addRange(0x1A60, 0x1A7C).addRange(0x1AB0, 0x1ACE).addRange(0x1B00, 0x1B04).addRange(0x1B34, 0x1B44).addRange(0x1B6B, 0x1B73).addRange(0x1B80, 0x1B82).addRange(0x1BA1, 0x1BAD).addRange(0x1BE6, 0x1BF3).addRange(0x1C24, 0x1C37).addRange(0x1CD0, 0x1CD2).addRange(0x1CD4, 0x1CE8).addRange(0x1CF7, 0x1CF9).addRange(0x1DC0, 0x1DFF).addRange(0x20D0, 0x20F0).addRange(0x2CEF, 0x2CF1).addRange(0x2DE0, 0x2DFF).addRange(0x302A, 0x302F).addRange(0x3099, 0x309A).addRange(0xA66F, 0xA672).addRange(0xA674, 0xA67D).addRange(0xA69E, 0xA69F).addRange(0xA6F0, 0xA6F1).addRange(0xA823, 0xA827).addRange(0xA880, 0xA881).addRange(0xA8B4, 0xA8C5).addRange(0xA8E0, 0xA8F1).addRange(0xA926, 0xA92D).addRange(0xA947, 0xA953).addRange(0xA980, 0xA983).addRange(0xA9B3, 0xA9C0).addRange(0xAA29, 0xAA36).addRange(0xAA4C, 0xAA4D).addRange(0xAA7B, 0xAA7D).addRange(0xAAB2, 0xAAB4).addRange(0xAAB7, 0xAAB8).addRange(0xAABE, 0xAABF).addRange(0xAAEB, 0xAAEF).addRange(0xAAF5, 0xAAF6).addRange(0xABE3, 0xABEA).addRange(0xABEC, 0xABED).addRange(0xFE00, 0xFE0F).addRange(0xFE20, 0xFE2F).addRange(0x10376, 0x1037A).addRange(0x10A01, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A0F).addRange(0x10A38, 0x10A3A).addRange(0x10AE5, 0x10AE6).addRange(0x10D24, 0x10D27).addRange(0x10EAB, 0x10EAC);
      set.addRange(0x10EFD, 0x10EFF).addRange(0x10F46, 0x10F50).addRange(0x10F82, 0x10F85).addRange(0x11000, 0x11002).addRange(0x11038, 0x11046).addRange(0x11073, 0x11074).addRange(0x1107F, 0x11082).addRange(0x110B0, 0x110BA).addRange(0x11100, 0x11102).addRange(0x11127, 0x11134).addRange(0x11145, 0x11146).addRange(0x11180, 0x11182).addRange(0x111B3, 0x111C0).addRange(0x111C9, 0x111CC).addRange(0x111CE, 0x111CF).addRange(0x1122C, 0x11237).addRange(0x112DF, 0x112EA).addRange(0x11300, 0x11303).addRange(0x1133B, 0x1133C).addRange(0x1133E, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x11362, 0x11363).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x11435, 0x11446).addRange(0x114B0, 0x114C3).addRange(0x115AF, 0x115B5).addRange(0x115B8, 0x115C0).addRange(0x115DC, 0x115DD).addRange(0x11630, 0x11640).addRange(0x116AB, 0x116B7).addRange(0x1171D, 0x1172B).addRange(0x1182C, 0x1183A).addRange(0x11930, 0x11935).addRange(0x11937, 0x11938).addRange(0x1193B, 0x1193E).addRange(0x11942, 0x11943).addRange(0x119D1, 0x119D7).addRange(0x119DA, 0x119E0).addRange(0x11A01, 0x11A0A).addRange(0x11A33, 0x11A39).addRange(0x11A3B, 0x11A3E).addRange(0x11A51, 0x11A5B).addRange(0x11A8A, 0x11A99).addRange(0x11C2F, 0x11C36).addRange(0x11C38, 0x11C3F).addRange(0x11C92, 0x11CA7).addRange(0x11CA9, 0x11CB6).addRange(0x11D31, 0x11D36).addRange(0x11D3C, 0x11D3D);
      set.addRange(0x11D3F, 0x11D45).addRange(0x11D8A, 0x11D8E).addRange(0x11D90, 0x11D91).addRange(0x11D93, 0x11D97).addRange(0x11EF3, 0x11EF6).addRange(0x11F00, 0x11F01).addRange(0x11F34, 0x11F3A).addRange(0x11F3E, 0x11F42).addRange(0x13447, 0x13455).addRange(0x16AF0, 0x16AF4).addRange(0x16B30, 0x16B36).addRange(0x16F51, 0x16F87).addRange(0x16F8F, 0x16F92).addRange(0x16FF0, 0x16FF1).addRange(0x1BC9D, 0x1BC9E).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1D165, 0x1D169).addRange(0x1D16D, 0x1D172).addRange(0x1D17B, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0x1D242, 0x1D244).addRange(0x1DA00, 0x1DA36).addRange(0x1DA3B, 0x1DA6C).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A).addRange(0x1E130, 0x1E136).addRange(0x1E2EC, 0x1E2EF).addRange(0x1E4EC, 0x1E4EF).addRange(0x1E8D0, 0x1E8D6).addRange(0x1E944, 0x1E94A).addRange(0xE0100, 0xE01EF);
      Mark.characters = set;
      return Mark;
    }
  
    var Math_Symbol = {};
  
    var hasRequiredMath_Symbol;
    function requireMath_Symbol() {
      if (hasRequiredMath_Symbol) return Math_Symbol;
      hasRequiredMath_Symbol = 1;
      var set = regenerate$2.exports(0x2B, 0x7C, 0x7E, 0xAC, 0xB1, 0xD7, 0xF7, 0x3F6, 0x2044, 0x2052, 0x2118, 0x214B, 0x21A0, 0x21A3, 0x21A6, 0x21AE, 0x21D2, 0x21D4, 0x237C, 0x25B7, 0x25C1, 0x266F, 0xFB29, 0xFE62, 0xFF0B, 0xFF5C, 0xFF5E, 0xFFE2, 0x1D6C1, 0x1D6DB, 0x1D6FB, 0x1D715, 0x1D735, 0x1D74F, 0x1D76F, 0x1D789, 0x1D7A9, 0x1D7C3);
      set.addRange(0x3C, 0x3E).addRange(0x606, 0x608).addRange(0x207A, 0x207C).addRange(0x208A, 0x208C).addRange(0x2140, 0x2144).addRange(0x2190, 0x2194).addRange(0x219A, 0x219B).addRange(0x21CE, 0x21CF).addRange(0x21F4, 0x22FF).addRange(0x2320, 0x2321).addRange(0x239B, 0x23B3).addRange(0x23DC, 0x23E1).addRange(0x25F8, 0x25FF).addRange(0x27C0, 0x27C4).addRange(0x27C7, 0x27E5).addRange(0x27F0, 0x27FF).addRange(0x2900, 0x2982).addRange(0x2999, 0x29D7).addRange(0x29DC, 0x29FB).addRange(0x29FE, 0x2AFF).addRange(0x2B30, 0x2B44).addRange(0x2B47, 0x2B4C).addRange(0xFE64, 0xFE66).addRange(0xFF1C, 0xFF1E).addRange(0xFFE9, 0xFFEC).addRange(0x1EEF0, 0x1EEF1);
      Math_Symbol.characters = set;
      return Math_Symbol;
    }
  
    var Modifier_Letter = {};
  
    var hasRequiredModifier_Letter;
    function requireModifier_Letter() {
      if (hasRequiredModifier_Letter) return Modifier_Letter;
      hasRequiredModifier_Letter = 1;
      var set = regenerate$2.exports(0x2EC, 0x2EE, 0x374, 0x37A, 0x559, 0x640, 0x7FA, 0x81A, 0x824, 0x828, 0x8C9, 0x971, 0xE46, 0xEC6, 0x10FC, 0x17D7, 0x1843, 0x1AA7, 0x1D78, 0x2071, 0x207F, 0x2D6F, 0x2E2F, 0x3005, 0x303B, 0xA015, 0xA60C, 0xA67F, 0xA770, 0xA788, 0xA9CF, 0xA9E6, 0xAA70, 0xAADD, 0xAB69, 0xFF70, 0x16FE3, 0x1E4EB, 0x1E94B);
      set.addRange(0x2B0, 0x2C1).addRange(0x2C6, 0x2D1).addRange(0x2E0, 0x2E4).addRange(0x6E5, 0x6E6).addRange(0x7F4, 0x7F5).addRange(0x1C78, 0x1C7D).addRange(0x1D2C, 0x1D6A).addRange(0x1D9B, 0x1DBF).addRange(0x2090, 0x209C).addRange(0x2C7C, 0x2C7D).addRange(0x3031, 0x3035).addRange(0x309D, 0x309E).addRange(0x30FC, 0x30FE).addRange(0xA4F8, 0xA4FD).addRange(0xA69C, 0xA69D).addRange(0xA717, 0xA71F).addRange(0xA7F2, 0xA7F4).addRange(0xA7F8, 0xA7F9).addRange(0xAAF3, 0xAAF4).addRange(0xAB5C, 0xAB5F).addRange(0xFF9E, 0xFF9F).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x16B40, 0x16B43).addRange(0x16F93, 0x16F9F).addRange(0x16FE0, 0x16FE1).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1E030, 0x1E06D).addRange(0x1E137, 0x1E13D);
      Modifier_Letter.characters = set;
      return Modifier_Letter;
    }
  
    var Modifier_Symbol = {};
  
    var hasRequiredModifier_Symbol;
    function requireModifier_Symbol() {
      if (hasRequiredModifier_Symbol) return Modifier_Symbol;
      hasRequiredModifier_Symbol = 1;
      var set = regenerate$2.exports(0x5E, 0x60, 0xA8, 0xAF, 0xB4, 0xB8, 0x2ED, 0x375, 0x888, 0x1FBD, 0xAB5B, 0xFF3E, 0xFF40, 0xFFE3);
      set.addRange(0x2C2, 0x2C5).addRange(0x2D2, 0x2DF).addRange(0x2E5, 0x2EB).addRange(0x2EF, 0x2FF).addRange(0x384, 0x385).addRange(0x1FBF, 0x1FC1).addRange(0x1FCD, 0x1FCF).addRange(0x1FDD, 0x1FDF).addRange(0x1FED, 0x1FEF).addRange(0x1FFD, 0x1FFE).addRange(0x309B, 0x309C).addRange(0xA700, 0xA716).addRange(0xA720, 0xA721).addRange(0xA789, 0xA78A).addRange(0xAB6A, 0xAB6B).addRange(0xFBB2, 0xFBC2).addRange(0x1F3FB, 0x1F3FF);
      Modifier_Symbol.characters = set;
      return Modifier_Symbol;
    }
  
    var Nonspacing_Mark = {};
  
    var hasRequiredNonspacing_Mark;
    function requireNonspacing_Mark() {
      if (hasRequiredNonspacing_Mark) return Nonspacing_Mark;
      hasRequiredNonspacing_Mark = 1;
      var set = regenerate$2.exports(0x5BF, 0x5C7, 0x670, 0x711, 0x7FD, 0x93A, 0x93C, 0x94D, 0x981, 0x9BC, 0x9CD, 0x9FE, 0xA3C, 0xA51, 0xA75, 0xABC, 0xACD, 0xB01, 0xB3C, 0xB3F, 0xB4D, 0xB82, 0xBC0, 0xBCD, 0xC00, 0xC04, 0xC3C, 0xC81, 0xCBC, 0xCBF, 0xCC6, 0xD4D, 0xD81, 0xDCA, 0xDD6, 0xE31, 0xEB1, 0xF35, 0xF37, 0xF39, 0xFC6, 0x1082, 0x108D, 0x109D, 0x17C6, 0x17DD, 0x180F, 0x18A9, 0x1932, 0x1A1B, 0x1A56, 0x1A60, 0x1A62, 0x1A7F, 0x1B34, 0x1B3C, 0x1B42, 0x1BE6, 0x1BED, 0x1CED, 0x1CF4, 0x20E1, 0x2D7F, 0xA66F, 0xA802, 0xA806, 0xA80B, 0xA82C, 0xA8FF, 0xA9B3, 0xA9E5, 0xAA43, 0xAA4C, 0xAA7C, 0xAAB0, 0xAAC1, 0xAAF6, 0xABE5, 0xABE8, 0xABED, 0xFB1E, 0x101FD, 0x102E0, 0x10A3F, 0x11001, 0x11070, 0x110C2, 0x11173, 0x111CF, 0x11234, 0x1123E, 0x11241, 0x112DF, 0x11340, 0x11446, 0x1145E, 0x114BA, 0x1163D, 0x116AB, 0x116AD, 0x116B7, 0x1193E, 0x11943, 0x119E0, 0x11A47, 0x11C3F, 0x11D3A, 0x11D47, 0x11D95, 0x11D97, 0x11F40, 0x11F42, 0x13440, 0x16F4F, 0x16FE4, 0x1DA75, 0x1DA84, 0x1E08F, 0x1E2AE);
      set.addRange(0x300, 0x36F).addRange(0x483, 0x487).addRange(0x591, 0x5BD).addRange(0x5C1, 0x5C2).addRange(0x5C4, 0x5C5).addRange(0x610, 0x61A).addRange(0x64B, 0x65F).addRange(0x6D6, 0x6DC).addRange(0x6DF, 0x6E4).addRange(0x6E7, 0x6E8).addRange(0x6EA, 0x6ED).addRange(0x730, 0x74A).addRange(0x7A6, 0x7B0).addRange(0x7EB, 0x7F3).addRange(0x816, 0x819).addRange(0x81B, 0x823).addRange(0x825, 0x827).addRange(0x829, 0x82D).addRange(0x859, 0x85B).addRange(0x898, 0x89F).addRange(0x8CA, 0x8E1).addRange(0x8E3, 0x902).addRange(0x941, 0x948).addRange(0x951, 0x957).addRange(0x962, 0x963).addRange(0x9C1, 0x9C4).addRange(0x9E2, 0x9E3).addRange(0xA01, 0xA02).addRange(0xA41, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA70, 0xA71).addRange(0xA81, 0xA82).addRange(0xAC1, 0xAC5).addRange(0xAC7, 0xAC8).addRange(0xAE2, 0xAE3).addRange(0xAFA, 0xAFF).addRange(0xB41, 0xB44).addRange(0xB55, 0xB56).addRange(0xB62, 0xB63).addRange(0xC3E, 0xC40).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC62, 0xC63).addRange(0xCCC, 0xCCD).addRange(0xCE2, 0xCE3).addRange(0xD00, 0xD01).addRange(0xD3B, 0xD3C).addRange(0xD41, 0xD44).addRange(0xD62, 0xD63);
      set.addRange(0xDD2, 0xDD4).addRange(0xE34, 0xE3A).addRange(0xE47, 0xE4E).addRange(0xEB4, 0xEBC).addRange(0xEC8, 0xECE).addRange(0xF18, 0xF19).addRange(0xF71, 0xF7E).addRange(0xF80, 0xF84).addRange(0xF86, 0xF87).addRange(0xF8D, 0xF97).addRange(0xF99, 0xFBC).addRange(0x102D, 0x1030).addRange(0x1032, 0x1037).addRange(0x1039, 0x103A).addRange(0x103D, 0x103E).addRange(0x1058, 0x1059).addRange(0x105E, 0x1060).addRange(0x1071, 0x1074).addRange(0x1085, 0x1086).addRange(0x135D, 0x135F).addRange(0x1712, 0x1714).addRange(0x1732, 0x1733).addRange(0x1752, 0x1753).addRange(0x1772, 0x1773).addRange(0x17B4, 0x17B5).addRange(0x17B7, 0x17BD).addRange(0x17C9, 0x17D3).addRange(0x180B, 0x180D).addRange(0x1885, 0x1886).addRange(0x1920, 0x1922).addRange(0x1927, 0x1928).addRange(0x1939, 0x193B).addRange(0x1A17, 0x1A18).addRange(0x1A58, 0x1A5E).addRange(0x1A65, 0x1A6C).addRange(0x1A73, 0x1A7C).addRange(0x1AB0, 0x1ABD).addRange(0x1ABF, 0x1ACE).addRange(0x1B00, 0x1B03).addRange(0x1B36, 0x1B3A).addRange(0x1B6B, 0x1B73).addRange(0x1B80, 0x1B81).addRange(0x1BA2, 0x1BA5).addRange(0x1BA8, 0x1BA9).addRange(0x1BAB, 0x1BAD).addRange(0x1BE8, 0x1BE9).addRange(0x1BEF, 0x1BF1).addRange(0x1C2C, 0x1C33).addRange(0x1C36, 0x1C37).addRange(0x1CD0, 0x1CD2).addRange(0x1CD4, 0x1CE0);
      set.addRange(0x1CE2, 0x1CE8).addRange(0x1CF8, 0x1CF9).addRange(0x1DC0, 0x1DFF).addRange(0x20D0, 0x20DC).addRange(0x20E5, 0x20F0).addRange(0x2CEF, 0x2CF1).addRange(0x2DE0, 0x2DFF).addRange(0x302A, 0x302D).addRange(0x3099, 0x309A).addRange(0xA674, 0xA67D).addRange(0xA69E, 0xA69F).addRange(0xA6F0, 0xA6F1).addRange(0xA825, 0xA826).addRange(0xA8C4, 0xA8C5).addRange(0xA8E0, 0xA8F1).addRange(0xA926, 0xA92D).addRange(0xA947, 0xA951).addRange(0xA980, 0xA982).addRange(0xA9B6, 0xA9B9).addRange(0xA9BC, 0xA9BD).addRange(0xAA29, 0xAA2E).addRange(0xAA31, 0xAA32).addRange(0xAA35, 0xAA36).addRange(0xAAB2, 0xAAB4).addRange(0xAAB7, 0xAAB8).addRange(0xAABE, 0xAABF).addRange(0xAAEC, 0xAAED).addRange(0xFE00, 0xFE0F).addRange(0xFE20, 0xFE2F).addRange(0x10376, 0x1037A).addRange(0x10A01, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A0F).addRange(0x10A38, 0x10A3A).addRange(0x10AE5, 0x10AE6).addRange(0x10D24, 0x10D27).addRange(0x10EAB, 0x10EAC).addRange(0x10EFD, 0x10EFF).addRange(0x10F46, 0x10F50).addRange(0x10F82, 0x10F85).addRange(0x11038, 0x11046).addRange(0x11073, 0x11074).addRange(0x1107F, 0x11081).addRange(0x110B3, 0x110B6).addRange(0x110B9, 0x110BA).addRange(0x11100, 0x11102).addRange(0x11127, 0x1112B).addRange(0x1112D, 0x11134).addRange(0x11180, 0x11181).addRange(0x111B6, 0x111BE).addRange(0x111C9, 0x111CC);
      set.addRange(0x1122F, 0x11231).addRange(0x11236, 0x11237).addRange(0x112E3, 0x112EA).addRange(0x11300, 0x11301).addRange(0x1133B, 0x1133C).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x11438, 0x1143F).addRange(0x11442, 0x11444).addRange(0x114B3, 0x114B8).addRange(0x114BF, 0x114C0).addRange(0x114C2, 0x114C3).addRange(0x115B2, 0x115B5).addRange(0x115BC, 0x115BD).addRange(0x115BF, 0x115C0).addRange(0x115DC, 0x115DD).addRange(0x11633, 0x1163A).addRange(0x1163F, 0x11640).addRange(0x116B0, 0x116B5).addRange(0x1171D, 0x1171F).addRange(0x11722, 0x11725).addRange(0x11727, 0x1172B).addRange(0x1182F, 0x11837).addRange(0x11839, 0x1183A).addRange(0x1193B, 0x1193C).addRange(0x119D4, 0x119D7).addRange(0x119DA, 0x119DB).addRange(0x11A01, 0x11A0A).addRange(0x11A33, 0x11A38).addRange(0x11A3B, 0x11A3E).addRange(0x11A51, 0x11A56).addRange(0x11A59, 0x11A5B).addRange(0x11A8A, 0x11A96).addRange(0x11A98, 0x11A99).addRange(0x11C30, 0x11C36).addRange(0x11C38, 0x11C3D).addRange(0x11C92, 0x11CA7).addRange(0x11CAA, 0x11CB0).addRange(0x11CB2, 0x11CB3).addRange(0x11CB5, 0x11CB6).addRange(0x11D31, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D45).addRange(0x11D90, 0x11D91).addRange(0x11EF3, 0x11EF4).addRange(0x11F00, 0x11F01).addRange(0x11F36, 0x11F3A).addRange(0x13447, 0x13455).addRange(0x16AF0, 0x16AF4).addRange(0x16B30, 0x16B36).addRange(0x16F8F, 0x16F92);
      set.addRange(0x1BC9D, 0x1BC9E).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1D167, 0x1D169).addRange(0x1D17B, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0x1D242, 0x1D244).addRange(0x1DA00, 0x1DA36).addRange(0x1DA3B, 0x1DA6C).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A).addRange(0x1E130, 0x1E136).addRange(0x1E2EC, 0x1E2EF).addRange(0x1E4EC, 0x1E4EF).addRange(0x1E8D0, 0x1E8D6).addRange(0x1E944, 0x1E94A).addRange(0xE0100, 0xE01EF);
      Nonspacing_Mark.characters = set;
      return Nonspacing_Mark;
    }
  
    var _Number = {};
  
    var hasRequired_Number;
    function require_Number() {
      if (hasRequired_Number) return _Number;
      hasRequired_Number = 1;
      var set = regenerate$2.exports(0xB9, 0x2070, 0x2CFD, 0x3007, 0x10341, 0x1034A);
      set.addRange(0x30, 0x39).addRange(0xB2, 0xB3).addRange(0xBC, 0xBE).addRange(0x660, 0x669).addRange(0x6F0, 0x6F9).addRange(0x7C0, 0x7C9).addRange(0x966, 0x96F).addRange(0x9E6, 0x9EF).addRange(0x9F4, 0x9F9).addRange(0xA66, 0xA6F).addRange(0xAE6, 0xAEF).addRange(0xB66, 0xB6F).addRange(0xB72, 0xB77).addRange(0xBE6, 0xBF2).addRange(0xC66, 0xC6F).addRange(0xC78, 0xC7E).addRange(0xCE6, 0xCEF).addRange(0xD58, 0xD5E).addRange(0xD66, 0xD78).addRange(0xDE6, 0xDEF).addRange(0xE50, 0xE59).addRange(0xED0, 0xED9).addRange(0xF20, 0xF33).addRange(0x1040, 0x1049).addRange(0x1090, 0x1099).addRange(0x1369, 0x137C).addRange(0x16EE, 0x16F0).addRange(0x17E0, 0x17E9).addRange(0x17F0, 0x17F9).addRange(0x1810, 0x1819).addRange(0x1946, 0x194F).addRange(0x19D0, 0x19DA).addRange(0x1A80, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1B50, 0x1B59).addRange(0x1BB0, 0x1BB9).addRange(0x1C40, 0x1C49).addRange(0x1C50, 0x1C59).addRange(0x2074, 0x2079).addRange(0x2080, 0x2089).addRange(0x2150, 0x2182).addRange(0x2185, 0x2189).addRange(0x2460, 0x249B).addRange(0x24EA, 0x24FF).addRange(0x2776, 0x2793).addRange(0x3021, 0x3029).addRange(0x3038, 0x303A).addRange(0x3192, 0x3195).addRange(0x3220, 0x3229).addRange(0x3248, 0x324F).addRange(0x3251, 0x325F);
      set.addRange(0x3280, 0x3289).addRange(0x32B1, 0x32BF).addRange(0xA620, 0xA629).addRange(0xA6E6, 0xA6EF).addRange(0xA830, 0xA835).addRange(0xA8D0, 0xA8D9).addRange(0xA900, 0xA909).addRange(0xA9D0, 0xA9D9).addRange(0xA9F0, 0xA9F9).addRange(0xAA50, 0xAA59).addRange(0xABF0, 0xABF9).addRange(0xFF10, 0xFF19).addRange(0x10107, 0x10133).addRange(0x10140, 0x10178).addRange(0x1018A, 0x1018B).addRange(0x102E1, 0x102FB).addRange(0x10320, 0x10323).addRange(0x103D1, 0x103D5).addRange(0x104A0, 0x104A9).addRange(0x10858, 0x1085F).addRange(0x10879, 0x1087F).addRange(0x108A7, 0x108AF).addRange(0x108FB, 0x108FF).addRange(0x10916, 0x1091B).addRange(0x109BC, 0x109BD).addRange(0x109C0, 0x109CF).addRange(0x109D2, 0x109FF).addRange(0x10A40, 0x10A48).addRange(0x10A7D, 0x10A7E).addRange(0x10A9D, 0x10A9F).addRange(0x10AEB, 0x10AEF).addRange(0x10B58, 0x10B5F).addRange(0x10B78, 0x10B7F).addRange(0x10BA9, 0x10BAF).addRange(0x10CFA, 0x10CFF).addRange(0x10D30, 0x10D39).addRange(0x10E60, 0x10E7E).addRange(0x10F1D, 0x10F26).addRange(0x10F51, 0x10F54).addRange(0x10FC5, 0x10FCB).addRange(0x11052, 0x1106F).addRange(0x110F0, 0x110F9).addRange(0x11136, 0x1113F).addRange(0x111D0, 0x111D9).addRange(0x111E1, 0x111F4).addRange(0x112F0, 0x112F9).addRange(0x11450, 0x11459).addRange(0x114D0, 0x114D9).addRange(0x11650, 0x11659).addRange(0x116C0, 0x116C9).addRange(0x11730, 0x1173B);
      set.addRange(0x118E0, 0x118F2).addRange(0x11950, 0x11959).addRange(0x11C50, 0x11C6C).addRange(0x11D50, 0x11D59).addRange(0x11DA0, 0x11DA9).addRange(0x11F50, 0x11F59).addRange(0x11FC0, 0x11FD4).addRange(0x12400, 0x1246E).addRange(0x16A60, 0x16A69).addRange(0x16AC0, 0x16AC9).addRange(0x16B50, 0x16B59).addRange(0x16B5B, 0x16B61).addRange(0x16E80, 0x16E96).addRange(0x1D2C0, 0x1D2D3).addRange(0x1D2E0, 0x1D2F3).addRange(0x1D360, 0x1D378).addRange(0x1D7CE, 0x1D7FF).addRange(0x1E140, 0x1E149).addRange(0x1E2F0, 0x1E2F9).addRange(0x1E4F0, 0x1E4F9).addRange(0x1E8C7, 0x1E8CF).addRange(0x1E950, 0x1E959).addRange(0x1EC71, 0x1ECAB).addRange(0x1ECAD, 0x1ECAF).addRange(0x1ECB1, 0x1ECB4).addRange(0x1ED01, 0x1ED2D).addRange(0x1ED2F, 0x1ED3D).addRange(0x1F100, 0x1F10C).addRange(0x1FBF0, 0x1FBF9);
      _Number.characters = set;
      return _Number;
    }
  
    var Open_Punctuation = {};
  
    var hasRequiredOpen_Punctuation;
    function requireOpen_Punctuation() {
      if (hasRequiredOpen_Punctuation) return Open_Punctuation;
      hasRequiredOpen_Punctuation = 1;
      var set = regenerate$2.exports(0x28, 0x5B, 0x7B, 0xF3A, 0xF3C, 0x169B, 0x201A, 0x201E, 0x2045, 0x207D, 0x208D, 0x2308, 0x230A, 0x2329, 0x2768, 0x276A, 0x276C, 0x276E, 0x2770, 0x2772, 0x2774, 0x27C5, 0x27E6, 0x27E8, 0x27EA, 0x27EC, 0x27EE, 0x2983, 0x2985, 0x2987, 0x2989, 0x298B, 0x298D, 0x298F, 0x2991, 0x2993, 0x2995, 0x2997, 0x29D8, 0x29DA, 0x29FC, 0x2E22, 0x2E24, 0x2E26, 0x2E28, 0x2E42, 0x2E55, 0x2E57, 0x2E59, 0x2E5B, 0x3008, 0x300A, 0x300C, 0x300E, 0x3010, 0x3014, 0x3016, 0x3018, 0x301A, 0x301D, 0xFD3F, 0xFE17, 0xFE35, 0xFE37, 0xFE39, 0xFE3B, 0xFE3D, 0xFE3F, 0xFE41, 0xFE43, 0xFE47, 0xFE59, 0xFE5B, 0xFE5D, 0xFF08, 0xFF3B, 0xFF5B, 0xFF5F, 0xFF62);
      Open_Punctuation.characters = set;
      return Open_Punctuation;
    }
  
    var Other_Letter = {};
  
    var hasRequiredOther_Letter;
    function requireOther_Letter() {
      if (hasRequiredOther_Letter) return Other_Letter;
      hasRequiredOther_Letter = 1;
      var set = regenerate$2.exports(0xAA, 0xBA, 0x1BB, 0x294, 0x6D5, 0x6FF, 0x710, 0x7B1, 0x93D, 0x950, 0x9B2, 0x9BD, 0x9CE, 0x9FC, 0xA5E, 0xABD, 0xAD0, 0xAF9, 0xB3D, 0xB71, 0xB83, 0xB9C, 0xBD0, 0xC3D, 0xC5D, 0xC80, 0xCBD, 0xD3D, 0xD4E, 0xDBD, 0xE84, 0xEA5, 0xEBD, 0xF00, 0x103F, 0x1061, 0x108E, 0x1258, 0x12C0, 0x17DC, 0x18AA, 0x1CFA, 0x3006, 0x303C, 0x309F, 0x30FF, 0xA66E, 0xA78F, 0xA7F7, 0xA8FB, 0xAA7A, 0xAAB1, 0xAAC0, 0xAAC2, 0xAAF2, 0xFB1D, 0xFB3E, 0x10808, 0x1083C, 0x10A00, 0x10F27, 0x11075, 0x11144, 0x11147, 0x11176, 0x111DA, 0x111DC, 0x11288, 0x1133D, 0x11350, 0x114C7, 0x11644, 0x116B8, 0x11909, 0x1193F, 0x11941, 0x119E1, 0x119E3, 0x11A00, 0x11A3A, 0x11A50, 0x11A9D, 0x11C40, 0x11D46, 0x11D98, 0x11F02, 0x11FB0, 0x16F50, 0x1B132, 0x1B155, 0x1DF0A, 0x1E14E, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);
      set.addRange(0x1C0, 0x1C3).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F2).addRange(0x620, 0x63F).addRange(0x641, 0x64A).addRange(0x66E, 0x66F).addRange(0x671, 0x6D3).addRange(0x6EE, 0x6EF).addRange(0x6FA, 0x6FC).addRange(0x712, 0x72F).addRange(0x74D, 0x7A5).addRange(0x7CA, 0x7EA).addRange(0x800, 0x815).addRange(0x840, 0x858).addRange(0x860, 0x86A).addRange(0x870, 0x887).addRange(0x889, 0x88E).addRange(0x8A0, 0x8C8).addRange(0x904, 0x939).addRange(0x958, 0x961).addRange(0x972, 0x980).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E1).addRange(0x9F0, 0x9F1).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA59, 0xA5C).addRange(0xA72, 0xA74).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xAE0, 0xAE1).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39);
      set.addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB61).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xC05, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC61).addRange(0xC85, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE1).addRange(0xCF1, 0xCF2).addRange(0xD04, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD3A).addRange(0xD54, 0xD56).addRange(0xD5F, 0xD61).addRange(0xD7A, 0xD7F).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xE01, 0xE30).addRange(0xE32, 0xE33).addRange(0xE40, 0xE45).addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEB0).addRange(0xEB2, 0xEB3).addRange(0xEC0, 0xEC4).addRange(0xEDC, 0xEDF).addRange(0xF40, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF88, 0xF8C).addRange(0x1000, 0x102A).addRange(0x1050, 0x1055).addRange(0x105A, 0x105D).addRange(0x1065, 0x1066);
      set.addRange(0x106E, 0x1070).addRange(0x1075, 0x1081).addRange(0x1100, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x1380, 0x138F).addRange(0x1401, 0x166C).addRange(0x166F, 0x167F).addRange(0x1681, 0x169A).addRange(0x16A0, 0x16EA).addRange(0x16F1, 0x16F8).addRange(0x1700, 0x1711).addRange(0x171F, 0x1731).addRange(0x1740, 0x1751).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1780, 0x17B3).addRange(0x1820, 0x1842).addRange(0x1844, 0x1878).addRange(0x1880, 0x1884).addRange(0x1887, 0x18A8).addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E).addRange(0x1950, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x1A00, 0x1A16).addRange(0x1A20, 0x1A54).addRange(0x1B05, 0x1B33).addRange(0x1B45, 0x1B4C).addRange(0x1B83, 0x1BA0).addRange(0x1BAE, 0x1BAF).addRange(0x1BBA, 0x1BE5).addRange(0x1C00, 0x1C23).addRange(0x1C4D, 0x1C4F).addRange(0x1C5A, 0x1C77).addRange(0x1CE9, 0x1CEC).addRange(0x1CEE, 0x1CF3).addRange(0x1CF5, 0x1CF6);
      set.addRange(0x2135, 0x2138).addRange(0x2D30, 0x2D67).addRange(0x2D80, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x3041, 0x3096).addRange(0x30A1, 0x30FA).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x31A0, 0x31BF).addRange(0x31F0, 0x31FF).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0xA014).addRange(0xA016, 0xA48C).addRange(0xA4D0, 0xA4F7).addRange(0xA500, 0xA60B).addRange(0xA610, 0xA61F).addRange(0xA62A, 0xA62B).addRange(0xA6A0, 0xA6E5).addRange(0xA7FB, 0xA801).addRange(0xA803, 0xA805).addRange(0xA807, 0xA80A).addRange(0xA80C, 0xA822).addRange(0xA840, 0xA873).addRange(0xA882, 0xA8B3).addRange(0xA8F2, 0xA8F7).addRange(0xA8FD, 0xA8FE).addRange(0xA90A, 0xA925).addRange(0xA930, 0xA946).addRange(0xA960, 0xA97C).addRange(0xA984, 0xA9B2).addRange(0xA9E0, 0xA9E4).addRange(0xA9E7, 0xA9EF).addRange(0xA9FA, 0xA9FE).addRange(0xAA00, 0xAA28).addRange(0xAA40, 0xAA42).addRange(0xAA44, 0xAA4B).addRange(0xAA60, 0xAA6F).addRange(0xAA71, 0xAA76).addRange(0xAA7E, 0xAAAF).addRange(0xAAB5, 0xAAB6).addRange(0xAAB9, 0xAABD).addRange(0xAADB, 0xAADC).addRange(0xAAE0, 0xAAEA).addRange(0xAB01, 0xAB06);
      set.addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xABC0, 0xABE2).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB1F, 0xFB28).addRange(0xFB2A, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBB1).addRange(0xFBD3, 0xFD3D).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFB).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0xFF66, 0xFF6F).addRange(0xFF71, 0xFF9D).addRange(0xFFA0, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10280, 0x1029C).addRange(0x102A0, 0x102D0).addRange(0x10300, 0x1031F).addRange(0x1032D, 0x10340).addRange(0x10342, 0x10349).addRange(0x10350, 0x10375).addRange(0x10380, 0x1039D).addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103CF).addRange(0x10450, 0x1049D).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767);
      set.addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10860, 0x10876).addRange(0x10880, 0x1089E).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x10900, 0x10915).addRange(0x10920, 0x10939).addRange(0x10980, 0x109B7).addRange(0x109BE, 0x109BF).addRange(0x10A10, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A60, 0x10A7C).addRange(0x10A80, 0x10A9C).addRange(0x10AC0, 0x10AC7).addRange(0x10AC9, 0x10AE4).addRange(0x10B00, 0x10B35).addRange(0x10B40, 0x10B55).addRange(0x10B60, 0x10B72).addRange(0x10B80, 0x10B91).addRange(0x10C00, 0x10C48).addRange(0x10D00, 0x10D23).addRange(0x10E80, 0x10EA9).addRange(0x10EB0, 0x10EB1).addRange(0x10F00, 0x10F1C).addRange(0x10F30, 0x10F45).addRange(0x10F70, 0x10F81).addRange(0x10FB0, 0x10FC4).addRange(0x10FE0, 0x10FF6).addRange(0x11003, 0x11037).addRange(0x11071, 0x11072).addRange(0x11083, 0x110AF).addRange(0x110D0, 0x110E8).addRange(0x11103, 0x11126).addRange(0x11150, 0x11172).addRange(0x11183, 0x111B2).addRange(0x111C1, 0x111C4).addRange(0x11200, 0x11211).addRange(0x11213, 0x1122B).addRange(0x1123F, 0x11240).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A8).addRange(0x112B0, 0x112DE).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328);
      set.addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1135D, 0x11361).addRange(0x11400, 0x11434).addRange(0x11447, 0x1144A).addRange(0x1145F, 0x11461).addRange(0x11480, 0x114AF).addRange(0x114C4, 0x114C5).addRange(0x11580, 0x115AE).addRange(0x115D8, 0x115DB).addRange(0x11600, 0x1162F).addRange(0x11680, 0x116AA).addRange(0x11700, 0x1171A).addRange(0x11740, 0x11746).addRange(0x11800, 0x1182B).addRange(0x118FF, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x1192F).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D0).addRange(0x11A0B, 0x11A32).addRange(0x11A5C, 0x11A89).addRange(0x11AB0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C2E).addRange(0x11C72, 0x11C8F).addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D30).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D89).addRange(0x11EE0, 0x11EF2).addRange(0x11F04, 0x11F10).addRange(0x11F12, 0x11F33).addRange(0x12000, 0x12399).addRange(0x12480, 0x12543).addRange(0x12F90, 0x12FF0).addRange(0x13000, 0x1342F).addRange(0x13441, 0x13446).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A70, 0x16ABE).addRange(0x16AD0, 0x16AED).addRange(0x16B00, 0x16B2F).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16F00, 0x16F4A);
      set.addRange(0x17000, 0x187F7).addRange(0x18800, 0x18CD5).addRange(0x18D00, 0x18D08).addRange(0x1B000, 0x1B122).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1E100, 0x1E12C).addRange(0x1E290, 0x1E2AD).addRange(0x1E2C0, 0x1E2EB).addRange(0x1E4D0, 0x1E4EA).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE).addRange(0x1E800, 0x1E8C4).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B739).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A).addRange(0x31350, 0x323AF);
      Other_Letter.characters = set;
      return Other_Letter;
    }
  
    var Other_Number = {};
  
    var hasRequiredOther_Number;
    function requireOther_Number() {
      if (hasRequiredOther_Number) return Other_Number;
      hasRequiredOther_Number = 1;
      var set = regenerate$2.exports(0xB9, 0x19DA, 0x2070, 0x2189, 0x2CFD);
      set.addRange(0xB2, 0xB3).addRange(0xBC, 0xBE).addRange(0x9F4, 0x9F9).addRange(0xB72, 0xB77).addRange(0xBF0, 0xBF2).addRange(0xC78, 0xC7E).addRange(0xD58, 0xD5E).addRange(0xD70, 0xD78).addRange(0xF2A, 0xF33).addRange(0x1369, 0x137C).addRange(0x17F0, 0x17F9).addRange(0x2074, 0x2079).addRange(0x2080, 0x2089).addRange(0x2150, 0x215F).addRange(0x2460, 0x249B).addRange(0x24EA, 0x24FF).addRange(0x2776, 0x2793).addRange(0x3192, 0x3195).addRange(0x3220, 0x3229).addRange(0x3248, 0x324F).addRange(0x3251, 0x325F).addRange(0x3280, 0x3289).addRange(0x32B1, 0x32BF).addRange(0xA830, 0xA835).addRange(0x10107, 0x10133).addRange(0x10175, 0x10178).addRange(0x1018A, 0x1018B).addRange(0x102E1, 0x102FB).addRange(0x10320, 0x10323).addRange(0x10858, 0x1085F).addRange(0x10879, 0x1087F).addRange(0x108A7, 0x108AF).addRange(0x108FB, 0x108FF).addRange(0x10916, 0x1091B).addRange(0x109BC, 0x109BD).addRange(0x109C0, 0x109CF).addRange(0x109D2, 0x109FF).addRange(0x10A40, 0x10A48).addRange(0x10A7D, 0x10A7E).addRange(0x10A9D, 0x10A9F).addRange(0x10AEB, 0x10AEF).addRange(0x10B58, 0x10B5F).addRange(0x10B78, 0x10B7F).addRange(0x10BA9, 0x10BAF).addRange(0x10CFA, 0x10CFF).addRange(0x10E60, 0x10E7E).addRange(0x10F1D, 0x10F26).addRange(0x10F51, 0x10F54).addRange(0x10FC5, 0x10FCB).addRange(0x11052, 0x11065).addRange(0x111E1, 0x111F4);
      set.addRange(0x1173A, 0x1173B).addRange(0x118EA, 0x118F2).addRange(0x11C5A, 0x11C6C).addRange(0x11FC0, 0x11FD4).addRange(0x16B5B, 0x16B61).addRange(0x16E80, 0x16E96).addRange(0x1D2C0, 0x1D2D3).addRange(0x1D2E0, 0x1D2F3).addRange(0x1D360, 0x1D378).addRange(0x1E8C7, 0x1E8CF).addRange(0x1EC71, 0x1ECAB).addRange(0x1ECAD, 0x1ECAF).addRange(0x1ECB1, 0x1ECB4).addRange(0x1ED01, 0x1ED2D).addRange(0x1ED2F, 0x1ED3D).addRange(0x1F100, 0x1F10C);
      Other_Number.characters = set;
      return Other_Number;
    }
  
    var Other_Punctuation = {};
  
    var hasRequiredOther_Punctuation;
    function requireOther_Punctuation() {
      if (hasRequiredOther_Punctuation) return Other_Punctuation;
      hasRequiredOther_Punctuation = 1;
      var set = regenerate$2.exports(0x2A, 0x2C, 0x5C, 0xA1, 0xA7, 0xBF, 0x37E, 0x387, 0x589, 0x5C0, 0x5C3, 0x5C6, 0x61B, 0x6D4, 0x85E, 0x970, 0x9FD, 0xA76, 0xAF0, 0xC77, 0xC84, 0xDF4, 0xE4F, 0xF14, 0xF85, 0x10FB, 0x166E, 0x1CD3, 0x2053, 0x2D70, 0x2E0B, 0x2E1B, 0x2E41, 0x303D, 0x30FB, 0xA673, 0xA67E, 0xA8FC, 0xA95F, 0xABEB, 0xFE19, 0xFE30, 0xFE68, 0xFF0A, 0xFF0C, 0xFF3C, 0xFF61, 0x1039F, 0x103D0, 0x1056F, 0x10857, 0x1091F, 0x1093F, 0x10A7F, 0x111CD, 0x111DB, 0x112A9, 0x1145D, 0x114C6, 0x116B9, 0x1183B, 0x119E2, 0x11FFF, 0x16AF5, 0x16B44, 0x16FE2, 0x1BC9F);
      set.addRange(0x21, 0x23).addRange(0x25, 0x27).addRange(0x2E, 0x2F).addRange(0x3A, 0x3B).addRange(0x3F, 0x40).addRange(0xB6, 0xB7).addRange(0x55A, 0x55F).addRange(0x5F3, 0x5F4).addRange(0x609, 0x60A).addRange(0x60C, 0x60D).addRange(0x61D, 0x61F).addRange(0x66A, 0x66D).addRange(0x700, 0x70D).addRange(0x7F7, 0x7F9).addRange(0x830, 0x83E).addRange(0x964, 0x965).addRange(0xE5A, 0xE5B).addRange(0xF04, 0xF12).addRange(0xFD0, 0xFD4).addRange(0xFD9, 0xFDA).addRange(0x104A, 0x104F).addRange(0x1360, 0x1368).addRange(0x16EB, 0x16ED).addRange(0x1735, 0x1736).addRange(0x17D4, 0x17D6).addRange(0x17D8, 0x17DA).addRange(0x1800, 0x1805).addRange(0x1807, 0x180A).addRange(0x1944, 0x1945).addRange(0x1A1E, 0x1A1F).addRange(0x1AA0, 0x1AA6).addRange(0x1AA8, 0x1AAD).addRange(0x1B5A, 0x1B60).addRange(0x1B7D, 0x1B7E).addRange(0x1BFC, 0x1BFF).addRange(0x1C3B, 0x1C3F).addRange(0x1C7E, 0x1C7F).addRange(0x1CC0, 0x1CC7).addRange(0x2016, 0x2017).addRange(0x2020, 0x2027).addRange(0x2030, 0x2038).addRange(0x203B, 0x203E).addRange(0x2041, 0x2043).addRange(0x2047, 0x2051).addRange(0x2055, 0x205E).addRange(0x2CF9, 0x2CFC).addRange(0x2CFE, 0x2CFF).addRange(0x2E00, 0x2E01).addRange(0x2E06, 0x2E08).addRange(0x2E0E, 0x2E16).addRange(0x2E18, 0x2E19);
      set.addRange(0x2E1E, 0x2E1F).addRange(0x2E2A, 0x2E2E).addRange(0x2E30, 0x2E39).addRange(0x2E3C, 0x2E3F).addRange(0x2E43, 0x2E4F).addRange(0x2E52, 0x2E54).addRange(0x3001, 0x3003).addRange(0xA4FE, 0xA4FF).addRange(0xA60D, 0xA60F).addRange(0xA6F2, 0xA6F7).addRange(0xA874, 0xA877).addRange(0xA8CE, 0xA8CF).addRange(0xA8F8, 0xA8FA).addRange(0xA92E, 0xA92F).addRange(0xA9C1, 0xA9CD).addRange(0xA9DE, 0xA9DF).addRange(0xAA5C, 0xAA5F).addRange(0xAADE, 0xAADF).addRange(0xAAF0, 0xAAF1).addRange(0xFE10, 0xFE16).addRange(0xFE45, 0xFE46).addRange(0xFE49, 0xFE4C).addRange(0xFE50, 0xFE52).addRange(0xFE54, 0xFE57).addRange(0xFE5F, 0xFE61).addRange(0xFE6A, 0xFE6B).addRange(0xFF01, 0xFF03).addRange(0xFF05, 0xFF07).addRange(0xFF0E, 0xFF0F).addRange(0xFF1A, 0xFF1B).addRange(0xFF1F, 0xFF20).addRange(0xFF64, 0xFF65).addRange(0x10100, 0x10102).addRange(0x10A50, 0x10A58).addRange(0x10AF0, 0x10AF6).addRange(0x10B39, 0x10B3F).addRange(0x10B99, 0x10B9C).addRange(0x10F55, 0x10F59).addRange(0x10F86, 0x10F89).addRange(0x11047, 0x1104D).addRange(0x110BB, 0x110BC).addRange(0x110BE, 0x110C1).addRange(0x11140, 0x11143).addRange(0x11174, 0x11175).addRange(0x111C5, 0x111C8).addRange(0x111DD, 0x111DF).addRange(0x11238, 0x1123D).addRange(0x1144B, 0x1144F).addRange(0x1145A, 0x1145B).addRange(0x115C1, 0x115D7).addRange(0x11641, 0x11643);
      set.addRange(0x11660, 0x1166C).addRange(0x1173C, 0x1173E).addRange(0x11944, 0x11946).addRange(0x11A3F, 0x11A46).addRange(0x11A9A, 0x11A9C).addRange(0x11A9E, 0x11AA2).addRange(0x11B00, 0x11B09).addRange(0x11C41, 0x11C45).addRange(0x11C70, 0x11C71).addRange(0x11EF7, 0x11EF8).addRange(0x11F43, 0x11F4F).addRange(0x12470, 0x12474).addRange(0x12FF1, 0x12FF2).addRange(0x16A6E, 0x16A6F).addRange(0x16B37, 0x16B3B).addRange(0x16E97, 0x16E9A).addRange(0x1DA87, 0x1DA8B).addRange(0x1E95E, 0x1E95F);
      Other_Punctuation.characters = set;
      return Other_Punctuation;
    }
  
    var Other_Symbol = {};
  
    var hasRequiredOther_Symbol;
    function requireOther_Symbol() {
      if (hasRequiredOther_Symbol) return Other_Symbol;
      hasRequiredOther_Symbol = 1;
      var set = regenerate$2.exports(0xA6, 0xA9, 0xAE, 0xB0, 0x482, 0x6DE, 0x6E9, 0x7F6, 0x9FA, 0xB70, 0xBFA, 0xC7F, 0xD4F, 0xD79, 0xF13, 0xF34, 0xF36, 0xF38, 0x166D, 0x1940, 0x2114, 0x2125, 0x2127, 0x2129, 0x212E, 0x214A, 0x214F, 0x21D3, 0x3004, 0x3020, 0x3250, 0xA839, 0xFDCF, 0xFFE4, 0xFFE8, 0x101A0, 0x10AC8, 0x1173F, 0x16B45, 0x1BC9C, 0x1D245, 0x1E14F, 0x1ECAC, 0x1ED2E, 0x1F7F0);
      set.addRange(0x58D, 0x58E).addRange(0x60E, 0x60F).addRange(0x6FD, 0x6FE).addRange(0xBF3, 0xBF8).addRange(0xF01, 0xF03).addRange(0xF15, 0xF17).addRange(0xF1A, 0xF1F).addRange(0xFBE, 0xFC5).addRange(0xFC7, 0xFCC).addRange(0xFCE, 0xFCF).addRange(0xFD5, 0xFD8).addRange(0x109E, 0x109F).addRange(0x1390, 0x1399).addRange(0x19DE, 0x19FF).addRange(0x1B61, 0x1B6A).addRange(0x1B74, 0x1B7C).addRange(0x2100, 0x2101).addRange(0x2103, 0x2106).addRange(0x2108, 0x2109).addRange(0x2116, 0x2117).addRange(0x211E, 0x2123).addRange(0x213A, 0x213B).addRange(0x214C, 0x214D).addRange(0x218A, 0x218B).addRange(0x2195, 0x2199).addRange(0x219C, 0x219F).addRange(0x21A1, 0x21A2).addRange(0x21A4, 0x21A5).addRange(0x21A7, 0x21AD).addRange(0x21AF, 0x21CD).addRange(0x21D0, 0x21D1).addRange(0x21D5, 0x21F3).addRange(0x2300, 0x2307).addRange(0x230C, 0x231F).addRange(0x2322, 0x2328).addRange(0x232B, 0x237B).addRange(0x237D, 0x239A).addRange(0x23B4, 0x23DB).addRange(0x23E2, 0x2426).addRange(0x2440, 0x244A).addRange(0x249C, 0x24E9).addRange(0x2500, 0x25B6).addRange(0x25B8, 0x25C0).addRange(0x25C2, 0x25F7).addRange(0x2600, 0x266E).addRange(0x2670, 0x2767).addRange(0x2794, 0x27BF).addRange(0x2800, 0x28FF).addRange(0x2B00, 0x2B2F).addRange(0x2B45, 0x2B46).addRange(0x2B4D, 0x2B73);
      set.addRange(0x2B76, 0x2B95).addRange(0x2B97, 0x2BFF).addRange(0x2CE5, 0x2CEA).addRange(0x2E50, 0x2E51).addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x2FF0, 0x2FFB).addRange(0x3012, 0x3013).addRange(0x3036, 0x3037).addRange(0x303E, 0x303F).addRange(0x3190, 0x3191).addRange(0x3196, 0x319F).addRange(0x31C0, 0x31E3).addRange(0x3200, 0x321E).addRange(0x322A, 0x3247).addRange(0x3260, 0x327F).addRange(0x328A, 0x32B0).addRange(0x32C0, 0x33FF).addRange(0x4DC0, 0x4DFF).addRange(0xA490, 0xA4C6).addRange(0xA828, 0xA82B).addRange(0xA836, 0xA837).addRange(0xAA77, 0xAA79).addRange(0xFD40, 0xFD4F).addRange(0xFDFD, 0xFDFF).addRange(0xFFED, 0xFFEE).addRange(0xFFFC, 0xFFFD).addRange(0x10137, 0x1013F).addRange(0x10179, 0x10189).addRange(0x1018C, 0x1018E).addRange(0x10190, 0x1019C).addRange(0x101D0, 0x101FC).addRange(0x10877, 0x10878).addRange(0x11FD5, 0x11FDC).addRange(0x11FE1, 0x11FF1).addRange(0x16B3C, 0x16B3F).addRange(0x1CF50, 0x1CFC3).addRange(0x1D000, 0x1D0F5).addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D164).addRange(0x1D16A, 0x1D16C).addRange(0x1D183, 0x1D184).addRange(0x1D18C, 0x1D1A9).addRange(0x1D1AE, 0x1D1EA).addRange(0x1D200, 0x1D241).addRange(0x1D300, 0x1D356).addRange(0x1D800, 0x1D9FF).addRange(0x1DA37, 0x1DA3A).addRange(0x1DA6D, 0x1DA74).addRange(0x1DA76, 0x1DA83);
      set.addRange(0x1DA85, 0x1DA86).addRange(0x1F000, 0x1F02B).addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F10D, 0x1F1AD).addRange(0x1F1E6, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F3FA).addRange(0x1F400, 0x1F6D7).addRange(0x1F6DC, 0x1F6EC).addRange(0x1F6F0, 0x1F6FC).addRange(0x1F700, 0x1F776).addRange(0x1F77B, 0x1F7D9).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887).addRange(0x1F890, 0x1F8AD).addRange(0x1F8B0, 0x1F8B1).addRange(0x1F900, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA7C).addRange(0x1FA80, 0x1FA88).addRange(0x1FA90, 0x1FABD).addRange(0x1FABF, 0x1FAC5).addRange(0x1FACE, 0x1FADB).addRange(0x1FAE0, 0x1FAE8).addRange(0x1FAF0, 0x1FAF8).addRange(0x1FB00, 0x1FB92).addRange(0x1FB94, 0x1FBCA);
      Other_Symbol.characters = set;
      return Other_Symbol;
    }
  
    var Other = {};
  
    var hasRequiredOther;
    function requireOther() {
      if (hasRequiredOther) return Other;
      hasRequiredOther = 1;
      var set = regenerate$2.exports(0xAD, 0x38B, 0x38D, 0x3A2, 0x530, 0x590, 0x61C, 0x6DD, 0x83F, 0x85F, 0x8E2, 0x984, 0x9A9, 0x9B1, 0x9DE, 0xA04, 0xA29, 0xA31, 0xA34, 0xA37, 0xA3D, 0xA5D, 0xA84, 0xA8E, 0xA92, 0xAA9, 0xAB1, 0xAB4, 0xAC6, 0xACA, 0xB00, 0xB04, 0xB29, 0xB31, 0xB34, 0xB5E, 0xB84, 0xB91, 0xB9B, 0xB9D, 0xBC9, 0xC0D, 0xC11, 0xC29, 0xC45, 0xC49, 0xC57, 0xC8D, 0xC91, 0xCA9, 0xCB4, 0xCC5, 0xCC9, 0xCDF, 0xCF0, 0xD0D, 0xD11, 0xD45, 0xD49, 0xD80, 0xD84, 0xDB2, 0xDBC, 0xDD5, 0xDD7, 0xE83, 0xE85, 0xE8B, 0xEA4, 0xEA6, 0xEC5, 0xEC7, 0xECF, 0xF48, 0xF98, 0xFBD, 0xFCD, 0x10C6, 0x1249, 0x1257, 0x1259, 0x1289, 0x12B1, 0x12BF, 0x12C1, 0x12D7, 0x1311, 0x176D, 0x1771, 0x180E, 0x191F, 0x1A5F, 0x1B7F, 0x1F58, 0x1F5A, 0x1F5C, 0x1F5E, 0x1FB5, 0x1FC5, 0x1FDC, 0x1FF5, 0x1FFF, 0x208F, 0x2B96, 0x2D26, 0x2DA7, 0x2DAF, 0x2DB7, 0x2DBF, 0x2DC7, 0x2DCF, 0x2DD7, 0x2DDF, 0x2E9A, 0x3040, 0x3130, 0x318F, 0x321F, 0xA7D2, 0xA7D4, 0xA9CE, 0xA9FF, 0xAB27, 0xAB2F, 0xFB37, 0xFB3D, 0xFB3F, 0xFB42, 0xFB45, 0xFE53, 0xFE67, 0xFE75, 0xFFE7, 0x1000C, 0x10027, 0x1003B, 0x1003E, 0x1018F, 0x1039E, 0x1057B, 0x1058B, 0x10593, 0x10596, 0x105A2, 0x105B2, 0x105BA, 0x10786, 0x107B1, 0x10809, 0x10836, 0x10856, 0x108F3, 0x10A04, 0x10A14, 0x10A18, 0x10E7F, 0x10EAA, 0x110BD, 0x11135, 0x111E0, 0x11212, 0x11287, 0x11289, 0x1128E, 0x1129E, 0x11304, 0x11329, 0x11331, 0x11334, 0x1133A, 0x1145C, 0x11914, 0x11917, 0x11936, 0x11C09, 0x11C37, 0x11CA8, 0x11D07, 0x11D0A, 0x11D3B, 0x11D3E, 0x11D66, 0x11D69, 0x11D8F, 0x11D92, 0x11F11, 0x1246F, 0x16A5F, 0x16ABF, 0x16B5A, 0x16B62, 0x1AFF4, 0x1AFFC, 0x1AFFF, 0x1D455, 0x1D49D, 0x1D4AD, 0x1D4BA, 0x1D4BC, 0x1D4C4, 0x1D506, 0x1D515, 0x1D51D, 0x1D53A, 0x1D53F, 0x1D545, 0x1D551, 0x1DAA0, 0x1E007, 0x1E022, 0x1E025, 0x1E7E7, 0x1E7EC, 0x1E7EF, 0x1E7FF, 0x1EE04, 0x1EE20, 0x1EE23, 0x1EE28, 0x1EE33, 0x1EE38, 0x1EE3A, 0x1EE48, 0x1EE4A, 0x1EE4C, 0x1EE50, 0x1EE53, 0x1EE58, 0x1EE5A, 0x1EE5C, 0x1EE5E, 0x1EE60, 0x1EE63, 0x1EE6B, 0x1EE73, 0x1EE78, 0x1EE7D, 0x1EE7F, 0x1EE8A, 0x1EEA4, 0x1EEAA, 0x1F0C0, 0x1F0D0, 0x1FABE, 0x1FB93);
      set.addRange(0x0, 0x1F).addRange(0x7F, 0x9F).addRange(0x378, 0x379).addRange(0x380, 0x383).addRange(0x557, 0x558).addRange(0x58B, 0x58C).addRange(0x5C8, 0x5CF).addRange(0x5EB, 0x5EE).addRange(0x5F5, 0x605).addRange(0x70E, 0x70F).addRange(0x74B, 0x74C).addRange(0x7B2, 0x7BF).addRange(0x7FB, 0x7FC).addRange(0x82E, 0x82F).addRange(0x85C, 0x85D).addRange(0x86B, 0x86F).addRange(0x88F, 0x897).addRange(0x98D, 0x98E).addRange(0x991, 0x992).addRange(0x9B3, 0x9B5).addRange(0x9BA, 0x9BB).addRange(0x9C5, 0x9C6).addRange(0x9C9, 0x9CA).addRange(0x9CF, 0x9D6).addRange(0x9D8, 0x9DB).addRange(0x9E4, 0x9E5).addRange(0x9FF, 0xA00).addRange(0xA0B, 0xA0E).addRange(0xA11, 0xA12).addRange(0xA3A, 0xA3B).addRange(0xA43, 0xA46).addRange(0xA49, 0xA4A).addRange(0xA4E, 0xA50).addRange(0xA52, 0xA58).addRange(0xA5F, 0xA65).addRange(0xA77, 0xA80).addRange(0xABA, 0xABB).addRange(0xACE, 0xACF).addRange(0xAD1, 0xADF).addRange(0xAE4, 0xAE5).addRange(0xAF2, 0xAF8).addRange(0xB0D, 0xB0E).addRange(0xB11, 0xB12).addRange(0xB3A, 0xB3B).addRange(0xB45, 0xB46).addRange(0xB49, 0xB4A).addRange(0xB4E, 0xB54).addRange(0xB58, 0xB5B).addRange(0xB64, 0xB65).addRange(0xB78, 0xB81).addRange(0xB8B, 0xB8D);
      set.addRange(0xB96, 0xB98).addRange(0xBA0, 0xBA2).addRange(0xBA5, 0xBA7).addRange(0xBAB, 0xBAD).addRange(0xBBA, 0xBBD).addRange(0xBC3, 0xBC5).addRange(0xBCE, 0xBCF).addRange(0xBD1, 0xBD6).addRange(0xBD8, 0xBE5).addRange(0xBFB, 0xBFF).addRange(0xC3A, 0xC3B).addRange(0xC4E, 0xC54).addRange(0xC5B, 0xC5C).addRange(0xC5E, 0xC5F).addRange(0xC64, 0xC65).addRange(0xC70, 0xC76).addRange(0xCBA, 0xCBB).addRange(0xCCE, 0xCD4).addRange(0xCD7, 0xCDC).addRange(0xCE4, 0xCE5).addRange(0xCF4, 0xCFF).addRange(0xD50, 0xD53).addRange(0xD64, 0xD65).addRange(0xD97, 0xD99).addRange(0xDBE, 0xDBF).addRange(0xDC7, 0xDC9).addRange(0xDCB, 0xDCE).addRange(0xDE0, 0xDE5).addRange(0xDF0, 0xDF1).addRange(0xDF5, 0xE00).addRange(0xE3B, 0xE3E).addRange(0xE5C, 0xE80).addRange(0xEBE, 0xEBF).addRange(0xEDA, 0xEDB).addRange(0xEE0, 0xEFF).addRange(0xF6D, 0xF70).addRange(0xFDB, 0xFFF).addRange(0x10C8, 0x10CC).addRange(0x10CE, 0x10CF).addRange(0x124E, 0x124F).addRange(0x125E, 0x125F).addRange(0x128E, 0x128F).addRange(0x12B6, 0x12B7).addRange(0x12C6, 0x12C7).addRange(0x1316, 0x1317).addRange(0x135B, 0x135C).addRange(0x137D, 0x137F).addRange(0x139A, 0x139F).addRange(0x13F6, 0x13F7).addRange(0x13FE, 0x13FF).addRange(0x169D, 0x169F);
      set.addRange(0x16F9, 0x16FF).addRange(0x1716, 0x171E).addRange(0x1737, 0x173F).addRange(0x1754, 0x175F).addRange(0x1774, 0x177F).addRange(0x17DE, 0x17DF).addRange(0x17EA, 0x17EF).addRange(0x17FA, 0x17FF).addRange(0x181A, 0x181F).addRange(0x1879, 0x187F).addRange(0x18AB, 0x18AF).addRange(0x18F6, 0x18FF).addRange(0x192C, 0x192F).addRange(0x193C, 0x193F).addRange(0x1941, 0x1943).addRange(0x196E, 0x196F).addRange(0x1975, 0x197F).addRange(0x19AC, 0x19AF).addRange(0x19CA, 0x19CF).addRange(0x19DB, 0x19DD).addRange(0x1A1C, 0x1A1D).addRange(0x1A7D, 0x1A7E).addRange(0x1A8A, 0x1A8F).addRange(0x1A9A, 0x1A9F).addRange(0x1AAE, 0x1AAF).addRange(0x1ACF, 0x1AFF).addRange(0x1B4D, 0x1B4F).addRange(0x1BF4, 0x1BFB).addRange(0x1C38, 0x1C3A).addRange(0x1C4A, 0x1C4C).addRange(0x1C89, 0x1C8F).addRange(0x1CBB, 0x1CBC).addRange(0x1CC8, 0x1CCF).addRange(0x1CFB, 0x1CFF).addRange(0x1F16, 0x1F17).addRange(0x1F1E, 0x1F1F).addRange(0x1F46, 0x1F47).addRange(0x1F4E, 0x1F4F).addRange(0x1F7E, 0x1F7F).addRange(0x1FD4, 0x1FD5).addRange(0x1FF0, 0x1FF1).addRange(0x200B, 0x200F).addRange(0x202A, 0x202E).addRange(0x2060, 0x206F).addRange(0x2072, 0x2073).addRange(0x209D, 0x209F).addRange(0x20C1, 0x20CF).addRange(0x20F1, 0x20FF).addRange(0x218C, 0x218F).addRange(0x2427, 0x243F).addRange(0x244B, 0x245F);
      set.addRange(0x2B74, 0x2B75).addRange(0x2CF4, 0x2CF8).addRange(0x2D28, 0x2D2C).addRange(0x2D2E, 0x2D2F).addRange(0x2D68, 0x2D6E).addRange(0x2D71, 0x2D7E).addRange(0x2D97, 0x2D9F).addRange(0x2E5E, 0x2E7F).addRange(0x2EF4, 0x2EFF).addRange(0x2FD6, 0x2FEF).addRange(0x2FFC, 0x2FFF).addRange(0x3097, 0x3098).addRange(0x3100, 0x3104).addRange(0x31E4, 0x31EF).addRange(0xA48D, 0xA48F).addRange(0xA4C7, 0xA4CF).addRange(0xA62C, 0xA63F).addRange(0xA6F8, 0xA6FF).addRange(0xA7CB, 0xA7CF).addRange(0xA7DA, 0xA7F1).addRange(0xA82D, 0xA82F).addRange(0xA83A, 0xA83F).addRange(0xA878, 0xA87F).addRange(0xA8C6, 0xA8CD).addRange(0xA8DA, 0xA8DF).addRange(0xA954, 0xA95E).addRange(0xA97D, 0xA97F).addRange(0xA9DA, 0xA9DD).addRange(0xAA37, 0xAA3F).addRange(0xAA4E, 0xAA4F).addRange(0xAA5A, 0xAA5B).addRange(0xAAC3, 0xAADA).addRange(0xAAF7, 0xAB00).addRange(0xAB07, 0xAB08).addRange(0xAB0F, 0xAB10).addRange(0xAB17, 0xAB1F).addRange(0xAB6C, 0xAB6F).addRange(0xABEE, 0xABEF).addRange(0xABFA, 0xABFF).addRange(0xD7A4, 0xD7AF).addRange(0xD7C7, 0xD7CA).addRange(0xD7FC, 0xF8FF).addRange(0xFA6E, 0xFA6F).addRange(0xFADA, 0xFAFF).addRange(0xFB07, 0xFB12).addRange(0xFB18, 0xFB1C).addRange(0xFBC3, 0xFBD2).addRange(0xFD90, 0xFD91).addRange(0xFDC8, 0xFDCE).addRange(0xFDD0, 0xFDEF).addRange(0xFE1A, 0xFE1F);
      set.addRange(0xFE6C, 0xFE6F).addRange(0xFEFD, 0xFF00).addRange(0xFFBF, 0xFFC1).addRange(0xFFC8, 0xFFC9).addRange(0xFFD0, 0xFFD1).addRange(0xFFD8, 0xFFD9).addRange(0xFFDD, 0xFFDF).addRange(0xFFEF, 0xFFFB).addRange(0xFFFE, 0xFFFF).addRange(0x1004E, 0x1004F).addRange(0x1005E, 0x1007F).addRange(0x100FB, 0x100FF).addRange(0x10103, 0x10106).addRange(0x10134, 0x10136).addRange(0x1019D, 0x1019F).addRange(0x101A1, 0x101CF).addRange(0x101FE, 0x1027F).addRange(0x1029D, 0x1029F).addRange(0x102D1, 0x102DF).addRange(0x102FC, 0x102FF).addRange(0x10324, 0x1032C).addRange(0x1034B, 0x1034F).addRange(0x1037B, 0x1037F).addRange(0x103C4, 0x103C7).addRange(0x103D6, 0x103FF).addRange(0x1049E, 0x1049F).addRange(0x104AA, 0x104AF).addRange(0x104D4, 0x104D7).addRange(0x104FC, 0x104FF).addRange(0x10528, 0x1052F).addRange(0x10564, 0x1056E).addRange(0x105BD, 0x105FF).addRange(0x10737, 0x1073F).addRange(0x10756, 0x1075F).addRange(0x10768, 0x1077F).addRange(0x107BB, 0x107FF).addRange(0x10806, 0x10807).addRange(0x10839, 0x1083B).addRange(0x1083D, 0x1083E).addRange(0x1089F, 0x108A6).addRange(0x108B0, 0x108DF).addRange(0x108F6, 0x108FA).addRange(0x1091C, 0x1091E).addRange(0x1093A, 0x1093E).addRange(0x10940, 0x1097F).addRange(0x109B8, 0x109BB).addRange(0x109D0, 0x109D1).addRange(0x10A07, 0x10A0B).addRange(0x10A36, 0x10A37).addRange(0x10A3B, 0x10A3E).addRange(0x10A49, 0x10A4F);
      set.addRange(0x10A59, 0x10A5F).addRange(0x10AA0, 0x10ABF).addRange(0x10AE7, 0x10AEA).addRange(0x10AF7, 0x10AFF).addRange(0x10B36, 0x10B38).addRange(0x10B56, 0x10B57).addRange(0x10B73, 0x10B77).addRange(0x10B92, 0x10B98).addRange(0x10B9D, 0x10BA8).addRange(0x10BB0, 0x10BFF).addRange(0x10C49, 0x10C7F).addRange(0x10CB3, 0x10CBF).addRange(0x10CF3, 0x10CF9).addRange(0x10D28, 0x10D2F).addRange(0x10D3A, 0x10E5F).addRange(0x10EAE, 0x10EAF).addRange(0x10EB2, 0x10EFC).addRange(0x10F28, 0x10F2F).addRange(0x10F5A, 0x10F6F).addRange(0x10F8A, 0x10FAF).addRange(0x10FCC, 0x10FDF).addRange(0x10FF7, 0x10FFF).addRange(0x1104E, 0x11051).addRange(0x11076, 0x1107E).addRange(0x110C3, 0x110CF).addRange(0x110E9, 0x110EF).addRange(0x110FA, 0x110FF).addRange(0x11148, 0x1114F).addRange(0x11177, 0x1117F).addRange(0x111F5, 0x111FF).addRange(0x11242, 0x1127F).addRange(0x112AA, 0x112AF).addRange(0x112EB, 0x112EF).addRange(0x112FA, 0x112FF).addRange(0x1130D, 0x1130E).addRange(0x11311, 0x11312).addRange(0x11345, 0x11346).addRange(0x11349, 0x1134A).addRange(0x1134E, 0x1134F).addRange(0x11351, 0x11356).addRange(0x11358, 0x1135C).addRange(0x11364, 0x11365).addRange(0x1136D, 0x1136F).addRange(0x11375, 0x113FF).addRange(0x11462, 0x1147F).addRange(0x114C8, 0x114CF).addRange(0x114DA, 0x1157F).addRange(0x115B6, 0x115B7).addRange(0x115DE, 0x115FF).addRange(0x11645, 0x1164F).addRange(0x1165A, 0x1165F);
      set.addRange(0x1166D, 0x1167F).addRange(0x116BA, 0x116BF).addRange(0x116CA, 0x116FF).addRange(0x1171B, 0x1171C).addRange(0x1172C, 0x1172F).addRange(0x11747, 0x117FF).addRange(0x1183C, 0x1189F).addRange(0x118F3, 0x118FE).addRange(0x11907, 0x11908).addRange(0x1190A, 0x1190B).addRange(0x11939, 0x1193A).addRange(0x11947, 0x1194F).addRange(0x1195A, 0x1199F).addRange(0x119A8, 0x119A9).addRange(0x119D8, 0x119D9).addRange(0x119E5, 0x119FF).addRange(0x11A48, 0x11A4F).addRange(0x11AA3, 0x11AAF).addRange(0x11AF9, 0x11AFF).addRange(0x11B0A, 0x11BFF).addRange(0x11C46, 0x11C4F).addRange(0x11C6D, 0x11C6F).addRange(0x11C90, 0x11C91).addRange(0x11CB7, 0x11CFF).addRange(0x11D37, 0x11D39).addRange(0x11D48, 0x11D4F).addRange(0x11D5A, 0x11D5F).addRange(0x11D99, 0x11D9F).addRange(0x11DAA, 0x11EDF).addRange(0x11EF9, 0x11EFF).addRange(0x11F3B, 0x11F3D).addRange(0x11F5A, 0x11FAF).addRange(0x11FB1, 0x11FBF).addRange(0x11FF2, 0x11FFE).addRange(0x1239A, 0x123FF).addRange(0x12475, 0x1247F).addRange(0x12544, 0x12F8F).addRange(0x12FF3, 0x12FFF).addRange(0x13430, 0x1343F).addRange(0x13456, 0x143FF).addRange(0x14647, 0x167FF).addRange(0x16A39, 0x16A3F).addRange(0x16A6A, 0x16A6D).addRange(0x16ACA, 0x16ACF).addRange(0x16AEE, 0x16AEF).addRange(0x16AF6, 0x16AFF).addRange(0x16B46, 0x16B4F).addRange(0x16B78, 0x16B7C).addRange(0x16B90, 0x16E3F).addRange(0x16E9B, 0x16EFF).addRange(0x16F4B, 0x16F4E);
      set.addRange(0x16F88, 0x16F8E).addRange(0x16FA0, 0x16FDF).addRange(0x16FE5, 0x16FEF).addRange(0x16FF2, 0x16FFF).addRange(0x187F8, 0x187FF).addRange(0x18CD6, 0x18CFF).addRange(0x18D09, 0x1AFEF).addRange(0x1B123, 0x1B131).addRange(0x1B133, 0x1B14F).addRange(0x1B153, 0x1B154).addRange(0x1B156, 0x1B163).addRange(0x1B168, 0x1B16F).addRange(0x1B2FC, 0x1BBFF).addRange(0x1BC6B, 0x1BC6F).addRange(0x1BC7D, 0x1BC7F).addRange(0x1BC89, 0x1BC8F).addRange(0x1BC9A, 0x1BC9B).addRange(0x1BCA0, 0x1CEFF).addRange(0x1CF2E, 0x1CF2F).addRange(0x1CF47, 0x1CF4F).addRange(0x1CFC4, 0x1CFFF).addRange(0x1D0F6, 0x1D0FF).addRange(0x1D127, 0x1D128).addRange(0x1D173, 0x1D17A).addRange(0x1D1EB, 0x1D1FF).addRange(0x1D246, 0x1D2BF).addRange(0x1D2D4, 0x1D2DF).addRange(0x1D2F4, 0x1D2FF).addRange(0x1D357, 0x1D35F).addRange(0x1D379, 0x1D3FF).addRange(0x1D4A0, 0x1D4A1).addRange(0x1D4A3, 0x1D4A4).addRange(0x1D4A7, 0x1D4A8).addRange(0x1D50B, 0x1D50C).addRange(0x1D547, 0x1D549).addRange(0x1D6A6, 0x1D6A7).addRange(0x1D7CC, 0x1D7CD).addRange(0x1DA8C, 0x1DA9A).addRange(0x1DAB0, 0x1DEFF).addRange(0x1DF1F, 0x1DF24).addRange(0x1DF2B, 0x1DFFF).addRange(0x1E019, 0x1E01A).addRange(0x1E02B, 0x1E02F).addRange(0x1E06E, 0x1E08E).addRange(0x1E090, 0x1E0FF).addRange(0x1E12D, 0x1E12F).addRange(0x1E13E, 0x1E13F).addRange(0x1E14A, 0x1E14D).addRange(0x1E150, 0x1E28F).addRange(0x1E2AF, 0x1E2BF).addRange(0x1E2FA, 0x1E2FE);
      set.addRange(0x1E300, 0x1E4CF).addRange(0x1E4FA, 0x1E7DF).addRange(0x1E8C5, 0x1E8C6).addRange(0x1E8D7, 0x1E8FF).addRange(0x1E94C, 0x1E94F).addRange(0x1E95A, 0x1E95D).addRange(0x1E960, 0x1EC70).addRange(0x1ECB5, 0x1ED00).addRange(0x1ED3E, 0x1EDFF).addRange(0x1EE25, 0x1EE26).addRange(0x1EE3C, 0x1EE41).addRange(0x1EE43, 0x1EE46).addRange(0x1EE55, 0x1EE56).addRange(0x1EE65, 0x1EE66).addRange(0x1EE9C, 0x1EEA0).addRange(0x1EEBC, 0x1EEEF).addRange(0x1EEF2, 0x1EFFF).addRange(0x1F02C, 0x1F02F).addRange(0x1F094, 0x1F09F).addRange(0x1F0AF, 0x1F0B0).addRange(0x1F0F6, 0x1F0FF).addRange(0x1F1AE, 0x1F1E5).addRange(0x1F203, 0x1F20F).addRange(0x1F23C, 0x1F23F).addRange(0x1F249, 0x1F24F).addRange(0x1F252, 0x1F25F).addRange(0x1F266, 0x1F2FF).addRange(0x1F6D8, 0x1F6DB).addRange(0x1F6ED, 0x1F6EF).addRange(0x1F6FD, 0x1F6FF).addRange(0x1F777, 0x1F77A).addRange(0x1F7DA, 0x1F7DF).addRange(0x1F7EC, 0x1F7EF).addRange(0x1F7F1, 0x1F7FF).addRange(0x1F80C, 0x1F80F).addRange(0x1F848, 0x1F84F).addRange(0x1F85A, 0x1F85F).addRange(0x1F888, 0x1F88F).addRange(0x1F8AE, 0x1F8AF).addRange(0x1F8B2, 0x1F8FF).addRange(0x1FA54, 0x1FA5F).addRange(0x1FA6E, 0x1FA6F).addRange(0x1FA7D, 0x1FA7F).addRange(0x1FA89, 0x1FA8F).addRange(0x1FAC6, 0x1FACD).addRange(0x1FADC, 0x1FADF).addRange(0x1FAE9, 0x1FAEF).addRange(0x1FAF9, 0x1FAFF).addRange(0x1FBCB, 0x1FBEF).addRange(0x1FBFA, 0x1FFFF).addRange(0x2A6E0, 0x2A6FF);
      set.addRange(0x2B73A, 0x2B73F).addRange(0x2B81E, 0x2B81F).addRange(0x2CEA2, 0x2CEAF).addRange(0x2EBE1, 0x2F7FF).addRange(0x2FA1E, 0x2FFFF).addRange(0x3134B, 0x3134F).addRange(0x323B0, 0xE00FF).addRange(0xE01F0, 0x10FFFF);
      Other.characters = set;
      return Other;
    }
  
    var Paragraph_Separator = {};
  
    var hasRequiredParagraph_Separator;
    function requireParagraph_Separator() {
      if (hasRequiredParagraph_Separator) return Paragraph_Separator;
      hasRequiredParagraph_Separator = 1;
      var set = regenerate$2.exports(0x2029);
      Paragraph_Separator.characters = set;
      return Paragraph_Separator;
    }
  
    var Private_Use = {};
  
    var hasRequiredPrivate_Use;
    function requirePrivate_Use() {
      if (hasRequiredPrivate_Use) return Private_Use;
      hasRequiredPrivate_Use = 1;
      var set = regenerate$2.exports();
      set.addRange(0xE000, 0xF8FF).addRange(0xF0000, 0xFFFFD).addRange(0x100000, 0x10FFFD);
      Private_Use.characters = set;
      return Private_Use;
    }
  
    var Punctuation = {};
  
    var hasRequiredPunctuation;
    function requirePunctuation() {
      if (hasRequiredPunctuation) return Punctuation;
      hasRequiredPunctuation = 1;
      var set = regenerate$2.exports(0x5F, 0x7B, 0x7D, 0xA1, 0xA7, 0xAB, 0xBB, 0xBF, 0x37E, 0x387, 0x5BE, 0x5C0, 0x5C3, 0x5C6, 0x61B, 0x6D4, 0x85E, 0x970, 0x9FD, 0xA76, 0xAF0, 0xC77, 0xC84, 0xDF4, 0xE4F, 0xF14, 0xF85, 0x10FB, 0x1400, 0x166E, 0x1CD3, 0x2D70, 0x3030, 0x303D, 0x30A0, 0x30FB, 0xA673, 0xA67E, 0xA8FC, 0xA95F, 0xABEB, 0xFE63, 0xFE68, 0xFF3F, 0xFF5B, 0xFF5D, 0x1039F, 0x103D0, 0x1056F, 0x10857, 0x1091F, 0x1093F, 0x10A7F, 0x10EAD, 0x111CD, 0x111DB, 0x112A9, 0x1145D, 0x114C6, 0x116B9, 0x1183B, 0x119E2, 0x11FFF, 0x16AF5, 0x16B44, 0x16FE2, 0x1BC9F);
      set.addRange(0x21, 0x23).addRange(0x25, 0x2A).addRange(0x2C, 0x2F).addRange(0x3A, 0x3B).addRange(0x3F, 0x40).addRange(0x5B, 0x5D).addRange(0xB6, 0xB7).addRange(0x55A, 0x55F).addRange(0x589, 0x58A).addRange(0x5F3, 0x5F4).addRange(0x609, 0x60A).addRange(0x60C, 0x60D).addRange(0x61D, 0x61F).addRange(0x66A, 0x66D).addRange(0x700, 0x70D).addRange(0x7F7, 0x7F9).addRange(0x830, 0x83E).addRange(0x964, 0x965).addRange(0xE5A, 0xE5B).addRange(0xF04, 0xF12).addRange(0xF3A, 0xF3D).addRange(0xFD0, 0xFD4).addRange(0xFD9, 0xFDA).addRange(0x104A, 0x104F).addRange(0x1360, 0x1368).addRange(0x169B, 0x169C).addRange(0x16EB, 0x16ED).addRange(0x1735, 0x1736).addRange(0x17D4, 0x17D6).addRange(0x17D8, 0x17DA).addRange(0x1800, 0x180A).addRange(0x1944, 0x1945).addRange(0x1A1E, 0x1A1F).addRange(0x1AA0, 0x1AA6).addRange(0x1AA8, 0x1AAD).addRange(0x1B5A, 0x1B60).addRange(0x1B7D, 0x1B7E).addRange(0x1BFC, 0x1BFF).addRange(0x1C3B, 0x1C3F).addRange(0x1C7E, 0x1C7F).addRange(0x1CC0, 0x1CC7).addRange(0x2010, 0x2027).addRange(0x2030, 0x2043).addRange(0x2045, 0x2051).addRange(0x2053, 0x205E).addRange(0x207D, 0x207E).addRange(0x208D, 0x208E).addRange(0x2308, 0x230B).addRange(0x2329, 0x232A).addRange(0x2768, 0x2775).addRange(0x27C5, 0x27C6);
      set.addRange(0x27E6, 0x27EF).addRange(0x2983, 0x2998).addRange(0x29D8, 0x29DB).addRange(0x29FC, 0x29FD).addRange(0x2CF9, 0x2CFC).addRange(0x2CFE, 0x2CFF).addRange(0x2E00, 0x2E2E).addRange(0x2E30, 0x2E4F).addRange(0x2E52, 0x2E5D).addRange(0x3001, 0x3003).addRange(0x3008, 0x3011).addRange(0x3014, 0x301F).addRange(0xA4FE, 0xA4FF).addRange(0xA60D, 0xA60F).addRange(0xA6F2, 0xA6F7).addRange(0xA874, 0xA877).addRange(0xA8CE, 0xA8CF).addRange(0xA8F8, 0xA8FA).addRange(0xA92E, 0xA92F).addRange(0xA9C1, 0xA9CD).addRange(0xA9DE, 0xA9DF).addRange(0xAA5C, 0xAA5F).addRange(0xAADE, 0xAADF).addRange(0xAAF0, 0xAAF1).addRange(0xFD3E, 0xFD3F).addRange(0xFE10, 0xFE19).addRange(0xFE30, 0xFE52).addRange(0xFE54, 0xFE61).addRange(0xFE6A, 0xFE6B).addRange(0xFF01, 0xFF03).addRange(0xFF05, 0xFF0A).addRange(0xFF0C, 0xFF0F).addRange(0xFF1A, 0xFF1B).addRange(0xFF1F, 0xFF20).addRange(0xFF3B, 0xFF3D).addRange(0xFF5F, 0xFF65).addRange(0x10100, 0x10102).addRange(0x10A50, 0x10A58).addRange(0x10AF0, 0x10AF6).addRange(0x10B39, 0x10B3F).addRange(0x10B99, 0x10B9C).addRange(0x10F55, 0x10F59).addRange(0x10F86, 0x10F89).addRange(0x11047, 0x1104D).addRange(0x110BB, 0x110BC).addRange(0x110BE, 0x110C1).addRange(0x11140, 0x11143).addRange(0x11174, 0x11175).addRange(0x111C5, 0x111C8).addRange(0x111DD, 0x111DF).addRange(0x11238, 0x1123D);
      set.addRange(0x1144B, 0x1144F).addRange(0x1145A, 0x1145B).addRange(0x115C1, 0x115D7).addRange(0x11641, 0x11643).addRange(0x11660, 0x1166C).addRange(0x1173C, 0x1173E).addRange(0x11944, 0x11946).addRange(0x11A3F, 0x11A46).addRange(0x11A9A, 0x11A9C).addRange(0x11A9E, 0x11AA2).addRange(0x11B00, 0x11B09).addRange(0x11C41, 0x11C45).addRange(0x11C70, 0x11C71).addRange(0x11EF7, 0x11EF8).addRange(0x11F43, 0x11F4F).addRange(0x12470, 0x12474).addRange(0x12FF1, 0x12FF2).addRange(0x16A6E, 0x16A6F).addRange(0x16B37, 0x16B3B).addRange(0x16E97, 0x16E9A).addRange(0x1DA87, 0x1DA8B).addRange(0x1E95E, 0x1E95F);
      Punctuation.characters = set;
      return Punctuation;
    }
  
    var Separator = {};
  
    var hasRequiredSeparator;
    function requireSeparator() {
      if (hasRequiredSeparator) return Separator;
      hasRequiredSeparator = 1;
      var set = regenerate$2.exports(0x20, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000);
      set.addRange(0x2000, 0x200A).addRange(0x2028, 0x2029);
      Separator.characters = set;
      return Separator;
    }
  
    var Space_Separator = {};
  
    var hasRequiredSpace_Separator;
    function requireSpace_Separator() {
      if (hasRequiredSpace_Separator) return Space_Separator;
      hasRequiredSpace_Separator = 1;
      var set = regenerate$2.exports(0x20, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000);
      set.addRange(0x2000, 0x200A);
      Space_Separator.characters = set;
      return Space_Separator;
    }
  
    var Spacing_Mark = {};
  
    var hasRequiredSpacing_Mark;
    function requireSpacing_Mark() {
      if (hasRequiredSpacing_Mark) return Spacing_Mark;
      hasRequiredSpacing_Mark = 1;
      var set = regenerate$2.exports(0x903, 0x93B, 0x9D7, 0xA03, 0xA83, 0xAC9, 0xB3E, 0xB40, 0xB57, 0xBD7, 0xCBE, 0xCF3, 0xD57, 0xF7F, 0x1031, 0x1038, 0x108F, 0x1715, 0x1734, 0x17B6, 0x1A55, 0x1A57, 0x1A61, 0x1B04, 0x1B35, 0x1B3B, 0x1B82, 0x1BA1, 0x1BAA, 0x1BE7, 0x1BEE, 0x1CE1, 0x1CF7, 0xA827, 0xA983, 0xAA4D, 0xAA7B, 0xAA7D, 0xAAEB, 0xAAF5, 0xABEC, 0x11000, 0x11002, 0x11082, 0x1112C, 0x11182, 0x111CE, 0x11235, 0x11357, 0x11445, 0x114B9, 0x114C1, 0x115BE, 0x1163E, 0x116AC, 0x116B6, 0x11726, 0x11838, 0x1193D, 0x11940, 0x11942, 0x119E4, 0x11A39, 0x11A97, 0x11C2F, 0x11C3E, 0x11CA9, 0x11CB1, 0x11CB4, 0x11D96, 0x11F03, 0x11F41);
      set.addRange(0x93E, 0x940).addRange(0x949, 0x94C).addRange(0x94E, 0x94F).addRange(0x982, 0x983).addRange(0x9BE, 0x9C0).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CC).addRange(0xA3E, 0xA40).addRange(0xABE, 0xAC0).addRange(0xACB, 0xACC).addRange(0xB02, 0xB03).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4C).addRange(0xBBE, 0xBBF).addRange(0xBC1, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCC).addRange(0xC01, 0xC03).addRange(0xC41, 0xC44).addRange(0xC82, 0xC83).addRange(0xCC0, 0xCC4).addRange(0xCC7, 0xCC8).addRange(0xCCA, 0xCCB).addRange(0xCD5, 0xCD6).addRange(0xD02, 0xD03).addRange(0xD3E, 0xD40).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4C).addRange(0xD82, 0xD83).addRange(0xDCF, 0xDD1).addRange(0xDD8, 0xDDF).addRange(0xDF2, 0xDF3).addRange(0xF3E, 0xF3F).addRange(0x102B, 0x102C).addRange(0x103B, 0x103C).addRange(0x1056, 0x1057).addRange(0x1062, 0x1064).addRange(0x1067, 0x106D).addRange(0x1083, 0x1084).addRange(0x1087, 0x108C).addRange(0x109A, 0x109C).addRange(0x17BE, 0x17C5).addRange(0x17C7, 0x17C8).addRange(0x1923, 0x1926).addRange(0x1929, 0x192B).addRange(0x1930, 0x1931).addRange(0x1933, 0x1938).addRange(0x1A19, 0x1A1A).addRange(0x1A63, 0x1A64).addRange(0x1A6D, 0x1A72).addRange(0x1B3D, 0x1B41);
      set.addRange(0x1B43, 0x1B44).addRange(0x1BA6, 0x1BA7).addRange(0x1BEA, 0x1BEC).addRange(0x1BF2, 0x1BF3).addRange(0x1C24, 0x1C2B).addRange(0x1C34, 0x1C35).addRange(0x302E, 0x302F).addRange(0xA823, 0xA824).addRange(0xA880, 0xA881).addRange(0xA8B4, 0xA8C3).addRange(0xA952, 0xA953).addRange(0xA9B4, 0xA9B5).addRange(0xA9BA, 0xA9BB).addRange(0xA9BE, 0xA9C0).addRange(0xAA2F, 0xAA30).addRange(0xAA33, 0xAA34).addRange(0xAAEE, 0xAAEF).addRange(0xABE3, 0xABE4).addRange(0xABE6, 0xABE7).addRange(0xABE9, 0xABEA).addRange(0x110B0, 0x110B2).addRange(0x110B7, 0x110B8).addRange(0x11145, 0x11146).addRange(0x111B3, 0x111B5).addRange(0x111BF, 0x111C0).addRange(0x1122C, 0x1122E).addRange(0x11232, 0x11233).addRange(0x112E0, 0x112E2).addRange(0x11302, 0x11303).addRange(0x1133E, 0x1133F).addRange(0x11341, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x11362, 0x11363).addRange(0x11435, 0x11437).addRange(0x11440, 0x11441).addRange(0x114B0, 0x114B2).addRange(0x114BB, 0x114BE).addRange(0x115AF, 0x115B1).addRange(0x115B8, 0x115BB).addRange(0x11630, 0x11632).addRange(0x1163B, 0x1163C).addRange(0x116AE, 0x116AF).addRange(0x11720, 0x11721).addRange(0x1182C, 0x1182E).addRange(0x11930, 0x11935).addRange(0x11937, 0x11938).addRange(0x119D1, 0x119D3).addRange(0x119DC, 0x119DF).addRange(0x11A57, 0x11A58).addRange(0x11D8A, 0x11D8E);
      set.addRange(0x11D93, 0x11D94).addRange(0x11EF5, 0x11EF6).addRange(0x11F34, 0x11F35).addRange(0x11F3E, 0x11F3F).addRange(0x16F51, 0x16F87).addRange(0x16FF0, 0x16FF1).addRange(0x1D165, 0x1D166).addRange(0x1D16D, 0x1D172);
      Spacing_Mark.characters = set;
      return Spacing_Mark;
    }
  
    var Surrogate = {};
  
    var hasRequiredSurrogate;
    function requireSurrogate() {
      if (hasRequiredSurrogate) return Surrogate;
      hasRequiredSurrogate = 1;
      var set = regenerate$2.exports();
      set.addRange(0xD800, 0xDFFF);
      Surrogate.characters = set;
      return Surrogate;
    }
  
    var _Symbol = {};
  
    var hasRequired_Symbol;
    function require_Symbol() {
      if (hasRequired_Symbol) return _Symbol;
      hasRequired_Symbol = 1;
      var set = regenerate$2.exports(0x24, 0x2B, 0x5E, 0x60, 0x7C, 0x7E, 0xAC, 0xB4, 0xB8, 0xD7, 0xF7, 0x2ED, 0x375, 0x3F6, 0x482, 0x60B, 0x6DE, 0x6E9, 0x7F6, 0x888, 0xAF1, 0xB70, 0xC7F, 0xD4F, 0xD79, 0xE3F, 0xF13, 0xF34, 0xF36, 0xF38, 0x166D, 0x17DB, 0x1940, 0x1FBD, 0x2044, 0x2052, 0x2114, 0x2125, 0x2127, 0x2129, 0x212E, 0x214F, 0x3004, 0x3020, 0x3250, 0xAB5B, 0xFB29, 0xFDCF, 0xFE62, 0xFE69, 0xFF04, 0xFF0B, 0xFF3E, 0xFF40, 0xFF5C, 0xFF5E, 0x101A0, 0x10AC8, 0x1173F, 0x16B45, 0x1BC9C, 0x1D245, 0x1D6C1, 0x1D6DB, 0x1D6FB, 0x1D715, 0x1D735, 0x1D74F, 0x1D76F, 0x1D789, 0x1D7A9, 0x1D7C3, 0x1E14F, 0x1E2FF, 0x1ECAC, 0x1ECB0, 0x1ED2E, 0x1F7F0);
      set.addRange(0x3C, 0x3E).addRange(0xA2, 0xA6).addRange(0xA8, 0xA9).addRange(0xAE, 0xB1).addRange(0x2C2, 0x2C5).addRange(0x2D2, 0x2DF).addRange(0x2E5, 0x2EB).addRange(0x2EF, 0x2FF).addRange(0x384, 0x385).addRange(0x58D, 0x58F).addRange(0x606, 0x608).addRange(0x60E, 0x60F).addRange(0x6FD, 0x6FE).addRange(0x7FE, 0x7FF).addRange(0x9F2, 0x9F3).addRange(0x9FA, 0x9FB).addRange(0xBF3, 0xBFA).addRange(0xF01, 0xF03).addRange(0xF15, 0xF17).addRange(0xF1A, 0xF1F).addRange(0xFBE, 0xFC5).addRange(0xFC7, 0xFCC).addRange(0xFCE, 0xFCF).addRange(0xFD5, 0xFD8).addRange(0x109E, 0x109F).addRange(0x1390, 0x1399).addRange(0x19DE, 0x19FF).addRange(0x1B61, 0x1B6A).addRange(0x1B74, 0x1B7C).addRange(0x1FBF, 0x1FC1).addRange(0x1FCD, 0x1FCF).addRange(0x1FDD, 0x1FDF).addRange(0x1FED, 0x1FEF).addRange(0x1FFD, 0x1FFE).addRange(0x207A, 0x207C).addRange(0x208A, 0x208C).addRange(0x20A0, 0x20C0).addRange(0x2100, 0x2101).addRange(0x2103, 0x2106).addRange(0x2108, 0x2109).addRange(0x2116, 0x2118).addRange(0x211E, 0x2123).addRange(0x213A, 0x213B).addRange(0x2140, 0x2144).addRange(0x214A, 0x214D).addRange(0x218A, 0x218B).addRange(0x2190, 0x2307).addRange(0x230C, 0x2328).addRange(0x232B, 0x2426).addRange(0x2440, 0x244A).addRange(0x249C, 0x24E9);
      set.addRange(0x2500, 0x2767).addRange(0x2794, 0x27C4).addRange(0x27C7, 0x27E5).addRange(0x27F0, 0x2982).addRange(0x2999, 0x29D7).addRange(0x29DC, 0x29FB).addRange(0x29FE, 0x2B73).addRange(0x2B76, 0x2B95).addRange(0x2B97, 0x2BFF).addRange(0x2CE5, 0x2CEA).addRange(0x2E50, 0x2E51).addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x2FF0, 0x2FFB).addRange(0x3012, 0x3013).addRange(0x3036, 0x3037).addRange(0x303E, 0x303F).addRange(0x309B, 0x309C).addRange(0x3190, 0x3191).addRange(0x3196, 0x319F).addRange(0x31C0, 0x31E3).addRange(0x3200, 0x321E).addRange(0x322A, 0x3247).addRange(0x3260, 0x327F).addRange(0x328A, 0x32B0).addRange(0x32C0, 0x33FF).addRange(0x4DC0, 0x4DFF).addRange(0xA490, 0xA4C6).addRange(0xA700, 0xA716).addRange(0xA720, 0xA721).addRange(0xA789, 0xA78A).addRange(0xA828, 0xA82B).addRange(0xA836, 0xA839).addRange(0xAA77, 0xAA79).addRange(0xAB6A, 0xAB6B).addRange(0xFBB2, 0xFBC2).addRange(0xFD40, 0xFD4F).addRange(0xFDFC, 0xFDFF).addRange(0xFE64, 0xFE66).addRange(0xFF1C, 0xFF1E).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE).addRange(0xFFFC, 0xFFFD).addRange(0x10137, 0x1013F).addRange(0x10179, 0x10189).addRange(0x1018C, 0x1018E).addRange(0x10190, 0x1019C).addRange(0x101D0, 0x101FC).addRange(0x10877, 0x10878).addRange(0x11FD5, 0x11FF1);
      set.addRange(0x16B3C, 0x16B3F).addRange(0x1CF50, 0x1CFC3).addRange(0x1D000, 0x1D0F5).addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D164).addRange(0x1D16A, 0x1D16C).addRange(0x1D183, 0x1D184).addRange(0x1D18C, 0x1D1A9).addRange(0x1D1AE, 0x1D1EA).addRange(0x1D200, 0x1D241).addRange(0x1D300, 0x1D356).addRange(0x1D800, 0x1D9FF).addRange(0x1DA37, 0x1DA3A).addRange(0x1DA6D, 0x1DA74).addRange(0x1DA76, 0x1DA83).addRange(0x1DA85, 0x1DA86).addRange(0x1EEF0, 0x1EEF1).addRange(0x1F000, 0x1F02B).addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F10D, 0x1F1AD).addRange(0x1F1E6, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F6D7).addRange(0x1F6DC, 0x1F6EC).addRange(0x1F6F0, 0x1F6FC).addRange(0x1F700, 0x1F776).addRange(0x1F77B, 0x1F7D9).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887).addRange(0x1F890, 0x1F8AD).addRange(0x1F8B0, 0x1F8B1).addRange(0x1F900, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA7C).addRange(0x1FA80, 0x1FA88).addRange(0x1FA90, 0x1FABD).addRange(0x1FABF, 0x1FAC5).addRange(0x1FACE, 0x1FADB).addRange(0x1FAE0, 0x1FAE8).addRange(0x1FAF0, 0x1FAF8).addRange(0x1FB00, 0x1FB92);
      set.addRange(0x1FB94, 0x1FBCA);
      _Symbol.characters = set;
      return _Symbol;
    }
  
    var Titlecase_Letter = {};
  
    var hasRequiredTitlecase_Letter;
    function requireTitlecase_Letter() {
      if (hasRequiredTitlecase_Letter) return Titlecase_Letter;
      hasRequiredTitlecase_Letter = 1;
      var set = regenerate$2.exports(0x1C5, 0x1C8, 0x1CB, 0x1F2, 0x1FBC, 0x1FCC, 0x1FFC);
      set.addRange(0x1F88, 0x1F8F).addRange(0x1F98, 0x1F9F).addRange(0x1FA8, 0x1FAF);
      Titlecase_Letter.characters = set;
      return Titlecase_Letter;
    }
  
    var Unassigned = {};
  
    var hasRequiredUnassigned;
    function requireUnassigned() {
      if (hasRequiredUnassigned) return Unassigned;
      hasRequiredUnassigned = 1;
      var set = regenerate$2.exports(0x38B, 0x38D, 0x3A2, 0x530, 0x590, 0x70E, 0x83F, 0x85F, 0x88F, 0x984, 0x9A9, 0x9B1, 0x9DE, 0xA04, 0xA29, 0xA31, 0xA34, 0xA37, 0xA3D, 0xA5D, 0xA84, 0xA8E, 0xA92, 0xAA9, 0xAB1, 0xAB4, 0xAC6, 0xACA, 0xB00, 0xB04, 0xB29, 0xB31, 0xB34, 0xB5E, 0xB84, 0xB91, 0xB9B, 0xB9D, 0xBC9, 0xC0D, 0xC11, 0xC29, 0xC45, 0xC49, 0xC57, 0xC8D, 0xC91, 0xCA9, 0xCB4, 0xCC5, 0xCC9, 0xCDF, 0xCF0, 0xD0D, 0xD11, 0xD45, 0xD49, 0xD80, 0xD84, 0xDB2, 0xDBC, 0xDD5, 0xDD7, 0xE83, 0xE85, 0xE8B, 0xEA4, 0xEA6, 0xEC5, 0xEC7, 0xECF, 0xF48, 0xF98, 0xFBD, 0xFCD, 0x10C6, 0x1249, 0x1257, 0x1259, 0x1289, 0x12B1, 0x12BF, 0x12C1, 0x12D7, 0x1311, 0x176D, 0x1771, 0x191F, 0x1A5F, 0x1B7F, 0x1F58, 0x1F5A, 0x1F5C, 0x1F5E, 0x1FB5, 0x1FC5, 0x1FDC, 0x1FF5, 0x1FFF, 0x2065, 0x208F, 0x2B96, 0x2D26, 0x2DA7, 0x2DAF, 0x2DB7, 0x2DBF, 0x2DC7, 0x2DCF, 0x2DD7, 0x2DDF, 0x2E9A, 0x3040, 0x3130, 0x318F, 0x321F, 0xA7D2, 0xA7D4, 0xA9CE, 0xA9FF, 0xAB27, 0xAB2F, 0xFB37, 0xFB3D, 0xFB3F, 0xFB42, 0xFB45, 0xFE53, 0xFE67, 0xFE75, 0xFF00, 0xFFE7, 0x1000C, 0x10027, 0x1003B, 0x1003E, 0x1018F, 0x1039E, 0x1057B, 0x1058B, 0x10593, 0x10596, 0x105A2, 0x105B2, 0x105BA, 0x10786, 0x107B1, 0x10809, 0x10836, 0x10856, 0x108F3, 0x10A04, 0x10A14, 0x10A18, 0x10E7F, 0x10EAA, 0x11135, 0x111E0, 0x11212, 0x11287, 0x11289, 0x1128E, 0x1129E, 0x11304, 0x11329, 0x11331, 0x11334, 0x1133A, 0x1145C, 0x11914, 0x11917, 0x11936, 0x11C09, 0x11C37, 0x11CA8, 0x11D07, 0x11D0A, 0x11D3B, 0x11D3E, 0x11D66, 0x11D69, 0x11D8F, 0x11D92, 0x11F11, 0x1246F, 0x16A5F, 0x16ABF, 0x16B5A, 0x16B62, 0x1AFF4, 0x1AFFC, 0x1AFFF, 0x1D455, 0x1D49D, 0x1D4AD, 0x1D4BA, 0x1D4BC, 0x1D4C4, 0x1D506, 0x1D515, 0x1D51D, 0x1D53A, 0x1D53F, 0x1D545, 0x1D551, 0x1DAA0, 0x1E007, 0x1E022, 0x1E025, 0x1E7E7, 0x1E7EC, 0x1E7EF, 0x1E7FF, 0x1EE04, 0x1EE20, 0x1EE23, 0x1EE28, 0x1EE33, 0x1EE38, 0x1EE3A, 0x1EE48, 0x1EE4A, 0x1EE4C, 0x1EE50, 0x1EE53, 0x1EE58, 0x1EE5A, 0x1EE5C, 0x1EE5E, 0x1EE60, 0x1EE63, 0x1EE6B, 0x1EE73, 0x1EE78, 0x1EE7D, 0x1EE7F, 0x1EE8A, 0x1EEA4, 0x1EEAA, 0x1F0C0, 0x1F0D0, 0x1FABE, 0x1FB93);
      set.addRange(0x378, 0x379).addRange(0x380, 0x383).addRange(0x557, 0x558).addRange(0x58B, 0x58C).addRange(0x5C8, 0x5CF).addRange(0x5EB, 0x5EE).addRange(0x5F5, 0x5FF).addRange(0x74B, 0x74C).addRange(0x7B2, 0x7BF).addRange(0x7FB, 0x7FC).addRange(0x82E, 0x82F).addRange(0x85C, 0x85D).addRange(0x86B, 0x86F).addRange(0x892, 0x897).addRange(0x98D, 0x98E).addRange(0x991, 0x992).addRange(0x9B3, 0x9B5).addRange(0x9BA, 0x9BB).addRange(0x9C5, 0x9C6).addRange(0x9C9, 0x9CA).addRange(0x9CF, 0x9D6).addRange(0x9D8, 0x9DB).addRange(0x9E4, 0x9E5).addRange(0x9FF, 0xA00).addRange(0xA0B, 0xA0E).addRange(0xA11, 0xA12).addRange(0xA3A, 0xA3B).addRange(0xA43, 0xA46).addRange(0xA49, 0xA4A).addRange(0xA4E, 0xA50).addRange(0xA52, 0xA58).addRange(0xA5F, 0xA65).addRange(0xA77, 0xA80).addRange(0xABA, 0xABB).addRange(0xACE, 0xACF).addRange(0xAD1, 0xADF).addRange(0xAE4, 0xAE5).addRange(0xAF2, 0xAF8).addRange(0xB0D, 0xB0E).addRange(0xB11, 0xB12).addRange(0xB3A, 0xB3B).addRange(0xB45, 0xB46).addRange(0xB49, 0xB4A).addRange(0xB4E, 0xB54).addRange(0xB58, 0xB5B).addRange(0xB64, 0xB65).addRange(0xB78, 0xB81).addRange(0xB8B, 0xB8D).addRange(0xB96, 0xB98).addRange(0xBA0, 0xBA2).addRange(0xBA5, 0xBA7);
      set.addRange(0xBAB, 0xBAD).addRange(0xBBA, 0xBBD).addRange(0xBC3, 0xBC5).addRange(0xBCE, 0xBCF).addRange(0xBD1, 0xBD6).addRange(0xBD8, 0xBE5).addRange(0xBFB, 0xBFF).addRange(0xC3A, 0xC3B).addRange(0xC4E, 0xC54).addRange(0xC5B, 0xC5C).addRange(0xC5E, 0xC5F).addRange(0xC64, 0xC65).addRange(0xC70, 0xC76).addRange(0xCBA, 0xCBB).addRange(0xCCE, 0xCD4).addRange(0xCD7, 0xCDC).addRange(0xCE4, 0xCE5).addRange(0xCF4, 0xCFF).addRange(0xD50, 0xD53).addRange(0xD64, 0xD65).addRange(0xD97, 0xD99).addRange(0xDBE, 0xDBF).addRange(0xDC7, 0xDC9).addRange(0xDCB, 0xDCE).addRange(0xDE0, 0xDE5).addRange(0xDF0, 0xDF1).addRange(0xDF5, 0xE00).addRange(0xE3B, 0xE3E).addRange(0xE5C, 0xE80).addRange(0xEBE, 0xEBF).addRange(0xEDA, 0xEDB).addRange(0xEE0, 0xEFF).addRange(0xF6D, 0xF70).addRange(0xFDB, 0xFFF).addRange(0x10C8, 0x10CC).addRange(0x10CE, 0x10CF).addRange(0x124E, 0x124F).addRange(0x125E, 0x125F).addRange(0x128E, 0x128F).addRange(0x12B6, 0x12B7).addRange(0x12C6, 0x12C7).addRange(0x1316, 0x1317).addRange(0x135B, 0x135C).addRange(0x137D, 0x137F).addRange(0x139A, 0x139F).addRange(0x13F6, 0x13F7).addRange(0x13FE, 0x13FF).addRange(0x169D, 0x169F).addRange(0x16F9, 0x16FF).addRange(0x1716, 0x171E).addRange(0x1737, 0x173F);
      set.addRange(0x1754, 0x175F).addRange(0x1774, 0x177F).addRange(0x17DE, 0x17DF).addRange(0x17EA, 0x17EF).addRange(0x17FA, 0x17FF).addRange(0x181A, 0x181F).addRange(0x1879, 0x187F).addRange(0x18AB, 0x18AF).addRange(0x18F6, 0x18FF).addRange(0x192C, 0x192F).addRange(0x193C, 0x193F).addRange(0x1941, 0x1943).addRange(0x196E, 0x196F).addRange(0x1975, 0x197F).addRange(0x19AC, 0x19AF).addRange(0x19CA, 0x19CF).addRange(0x19DB, 0x19DD).addRange(0x1A1C, 0x1A1D).addRange(0x1A7D, 0x1A7E).addRange(0x1A8A, 0x1A8F).addRange(0x1A9A, 0x1A9F).addRange(0x1AAE, 0x1AAF).addRange(0x1ACF, 0x1AFF).addRange(0x1B4D, 0x1B4F).addRange(0x1BF4, 0x1BFB).addRange(0x1C38, 0x1C3A).addRange(0x1C4A, 0x1C4C).addRange(0x1C89, 0x1C8F).addRange(0x1CBB, 0x1CBC).addRange(0x1CC8, 0x1CCF).addRange(0x1CFB, 0x1CFF).addRange(0x1F16, 0x1F17).addRange(0x1F1E, 0x1F1F).addRange(0x1F46, 0x1F47).addRange(0x1F4E, 0x1F4F).addRange(0x1F7E, 0x1F7F).addRange(0x1FD4, 0x1FD5).addRange(0x1FF0, 0x1FF1).addRange(0x2072, 0x2073).addRange(0x209D, 0x209F).addRange(0x20C1, 0x20CF).addRange(0x20F1, 0x20FF).addRange(0x218C, 0x218F).addRange(0x2427, 0x243F).addRange(0x244B, 0x245F).addRange(0x2B74, 0x2B75).addRange(0x2CF4, 0x2CF8).addRange(0x2D28, 0x2D2C).addRange(0x2D2E, 0x2D2F).addRange(0x2D68, 0x2D6E).addRange(0x2D71, 0x2D7E);
      set.addRange(0x2D97, 0x2D9F).addRange(0x2E5E, 0x2E7F).addRange(0x2EF4, 0x2EFF).addRange(0x2FD6, 0x2FEF).addRange(0x2FFC, 0x2FFF).addRange(0x3097, 0x3098).addRange(0x3100, 0x3104).addRange(0x31E4, 0x31EF).addRange(0xA48D, 0xA48F).addRange(0xA4C7, 0xA4CF).addRange(0xA62C, 0xA63F).addRange(0xA6F8, 0xA6FF).addRange(0xA7CB, 0xA7CF).addRange(0xA7DA, 0xA7F1).addRange(0xA82D, 0xA82F).addRange(0xA83A, 0xA83F).addRange(0xA878, 0xA87F).addRange(0xA8C6, 0xA8CD).addRange(0xA8DA, 0xA8DF).addRange(0xA954, 0xA95E).addRange(0xA97D, 0xA97F).addRange(0xA9DA, 0xA9DD).addRange(0xAA37, 0xAA3F).addRange(0xAA4E, 0xAA4F).addRange(0xAA5A, 0xAA5B).addRange(0xAAC3, 0xAADA).addRange(0xAAF7, 0xAB00).addRange(0xAB07, 0xAB08).addRange(0xAB0F, 0xAB10).addRange(0xAB17, 0xAB1F).addRange(0xAB6C, 0xAB6F).addRange(0xABEE, 0xABEF).addRange(0xABFA, 0xABFF).addRange(0xD7A4, 0xD7AF).addRange(0xD7C7, 0xD7CA).addRange(0xD7FC, 0xD7FF).addRange(0xFA6E, 0xFA6F).addRange(0xFADA, 0xFAFF).addRange(0xFB07, 0xFB12).addRange(0xFB18, 0xFB1C).addRange(0xFBC3, 0xFBD2).addRange(0xFD90, 0xFD91).addRange(0xFDC8, 0xFDCE).addRange(0xFDD0, 0xFDEF).addRange(0xFE1A, 0xFE1F).addRange(0xFE6C, 0xFE6F).addRange(0xFEFD, 0xFEFE).addRange(0xFFBF, 0xFFC1).addRange(0xFFC8, 0xFFC9).addRange(0xFFD0, 0xFFD1).addRange(0xFFD8, 0xFFD9);
      set.addRange(0xFFDD, 0xFFDF).addRange(0xFFEF, 0xFFF8).addRange(0xFFFE, 0xFFFF).addRange(0x1004E, 0x1004F).addRange(0x1005E, 0x1007F).addRange(0x100FB, 0x100FF).addRange(0x10103, 0x10106).addRange(0x10134, 0x10136).addRange(0x1019D, 0x1019F).addRange(0x101A1, 0x101CF).addRange(0x101FE, 0x1027F).addRange(0x1029D, 0x1029F).addRange(0x102D1, 0x102DF).addRange(0x102FC, 0x102FF).addRange(0x10324, 0x1032C).addRange(0x1034B, 0x1034F).addRange(0x1037B, 0x1037F).addRange(0x103C4, 0x103C7).addRange(0x103D6, 0x103FF).addRange(0x1049E, 0x1049F).addRange(0x104AA, 0x104AF).addRange(0x104D4, 0x104D7).addRange(0x104FC, 0x104FF).addRange(0x10528, 0x1052F).addRange(0x10564, 0x1056E).addRange(0x105BD, 0x105FF).addRange(0x10737, 0x1073F).addRange(0x10756, 0x1075F).addRange(0x10768, 0x1077F).addRange(0x107BB, 0x107FF).addRange(0x10806, 0x10807).addRange(0x10839, 0x1083B).addRange(0x1083D, 0x1083E).addRange(0x1089F, 0x108A6).addRange(0x108B0, 0x108DF).addRange(0x108F6, 0x108FA).addRange(0x1091C, 0x1091E).addRange(0x1093A, 0x1093E).addRange(0x10940, 0x1097F).addRange(0x109B8, 0x109BB).addRange(0x109D0, 0x109D1).addRange(0x10A07, 0x10A0B).addRange(0x10A36, 0x10A37).addRange(0x10A3B, 0x10A3E).addRange(0x10A49, 0x10A4F).addRange(0x10A59, 0x10A5F).addRange(0x10AA0, 0x10ABF).addRange(0x10AE7, 0x10AEA).addRange(0x10AF7, 0x10AFF).addRange(0x10B36, 0x10B38).addRange(0x10B56, 0x10B57);
      set.addRange(0x10B73, 0x10B77).addRange(0x10B92, 0x10B98).addRange(0x10B9D, 0x10BA8).addRange(0x10BB0, 0x10BFF).addRange(0x10C49, 0x10C7F).addRange(0x10CB3, 0x10CBF).addRange(0x10CF3, 0x10CF9).addRange(0x10D28, 0x10D2F).addRange(0x10D3A, 0x10E5F).addRange(0x10EAE, 0x10EAF).addRange(0x10EB2, 0x10EFC).addRange(0x10F28, 0x10F2F).addRange(0x10F5A, 0x10F6F).addRange(0x10F8A, 0x10FAF).addRange(0x10FCC, 0x10FDF).addRange(0x10FF7, 0x10FFF).addRange(0x1104E, 0x11051).addRange(0x11076, 0x1107E).addRange(0x110C3, 0x110CC).addRange(0x110CE, 0x110CF).addRange(0x110E9, 0x110EF).addRange(0x110FA, 0x110FF).addRange(0x11148, 0x1114F).addRange(0x11177, 0x1117F).addRange(0x111F5, 0x111FF).addRange(0x11242, 0x1127F).addRange(0x112AA, 0x112AF).addRange(0x112EB, 0x112EF).addRange(0x112FA, 0x112FF).addRange(0x1130D, 0x1130E).addRange(0x11311, 0x11312).addRange(0x11345, 0x11346).addRange(0x11349, 0x1134A).addRange(0x1134E, 0x1134F).addRange(0x11351, 0x11356).addRange(0x11358, 0x1135C).addRange(0x11364, 0x11365).addRange(0x1136D, 0x1136F).addRange(0x11375, 0x113FF).addRange(0x11462, 0x1147F).addRange(0x114C8, 0x114CF).addRange(0x114DA, 0x1157F).addRange(0x115B6, 0x115B7).addRange(0x115DE, 0x115FF).addRange(0x11645, 0x1164F).addRange(0x1165A, 0x1165F).addRange(0x1166D, 0x1167F).addRange(0x116BA, 0x116BF).addRange(0x116CA, 0x116FF).addRange(0x1171B, 0x1171C).addRange(0x1172C, 0x1172F);
      set.addRange(0x11747, 0x117FF).addRange(0x1183C, 0x1189F).addRange(0x118F3, 0x118FE).addRange(0x11907, 0x11908).addRange(0x1190A, 0x1190B).addRange(0x11939, 0x1193A).addRange(0x11947, 0x1194F).addRange(0x1195A, 0x1199F).addRange(0x119A8, 0x119A9).addRange(0x119D8, 0x119D9).addRange(0x119E5, 0x119FF).addRange(0x11A48, 0x11A4F).addRange(0x11AA3, 0x11AAF).addRange(0x11AF9, 0x11AFF).addRange(0x11B0A, 0x11BFF).addRange(0x11C46, 0x11C4F).addRange(0x11C6D, 0x11C6F).addRange(0x11C90, 0x11C91).addRange(0x11CB7, 0x11CFF).addRange(0x11D37, 0x11D39).addRange(0x11D48, 0x11D4F).addRange(0x11D5A, 0x11D5F).addRange(0x11D99, 0x11D9F).addRange(0x11DAA, 0x11EDF).addRange(0x11EF9, 0x11EFF).addRange(0x11F3B, 0x11F3D).addRange(0x11F5A, 0x11FAF).addRange(0x11FB1, 0x11FBF).addRange(0x11FF2, 0x11FFE).addRange(0x1239A, 0x123FF).addRange(0x12475, 0x1247F).addRange(0x12544, 0x12F8F).addRange(0x12FF3, 0x12FFF).addRange(0x13456, 0x143FF).addRange(0x14647, 0x167FF).addRange(0x16A39, 0x16A3F).addRange(0x16A6A, 0x16A6D).addRange(0x16ACA, 0x16ACF).addRange(0x16AEE, 0x16AEF).addRange(0x16AF6, 0x16AFF).addRange(0x16B46, 0x16B4F).addRange(0x16B78, 0x16B7C).addRange(0x16B90, 0x16E3F).addRange(0x16E9B, 0x16EFF).addRange(0x16F4B, 0x16F4E).addRange(0x16F88, 0x16F8E).addRange(0x16FA0, 0x16FDF).addRange(0x16FE5, 0x16FEF).addRange(0x16FF2, 0x16FFF).addRange(0x187F8, 0x187FF).addRange(0x18CD6, 0x18CFF);
      set.addRange(0x18D09, 0x1AFEF).addRange(0x1B123, 0x1B131).addRange(0x1B133, 0x1B14F).addRange(0x1B153, 0x1B154).addRange(0x1B156, 0x1B163).addRange(0x1B168, 0x1B16F).addRange(0x1B2FC, 0x1BBFF).addRange(0x1BC6B, 0x1BC6F).addRange(0x1BC7D, 0x1BC7F).addRange(0x1BC89, 0x1BC8F).addRange(0x1BC9A, 0x1BC9B).addRange(0x1BCA4, 0x1CEFF).addRange(0x1CF2E, 0x1CF2F).addRange(0x1CF47, 0x1CF4F).addRange(0x1CFC4, 0x1CFFF).addRange(0x1D0F6, 0x1D0FF).addRange(0x1D127, 0x1D128).addRange(0x1D1EB, 0x1D1FF).addRange(0x1D246, 0x1D2BF).addRange(0x1D2D4, 0x1D2DF).addRange(0x1D2F4, 0x1D2FF).addRange(0x1D357, 0x1D35F).addRange(0x1D379, 0x1D3FF).addRange(0x1D4A0, 0x1D4A1).addRange(0x1D4A3, 0x1D4A4).addRange(0x1D4A7, 0x1D4A8).addRange(0x1D50B, 0x1D50C).addRange(0x1D547, 0x1D549).addRange(0x1D6A6, 0x1D6A7).addRange(0x1D7CC, 0x1D7CD).addRange(0x1DA8C, 0x1DA9A).addRange(0x1DAB0, 0x1DEFF).addRange(0x1DF1F, 0x1DF24).addRange(0x1DF2B, 0x1DFFF).addRange(0x1E019, 0x1E01A).addRange(0x1E02B, 0x1E02F).addRange(0x1E06E, 0x1E08E).addRange(0x1E090, 0x1E0FF).addRange(0x1E12D, 0x1E12F).addRange(0x1E13E, 0x1E13F).addRange(0x1E14A, 0x1E14D).addRange(0x1E150, 0x1E28F).addRange(0x1E2AF, 0x1E2BF).addRange(0x1E2FA, 0x1E2FE).addRange(0x1E300, 0x1E4CF).addRange(0x1E4FA, 0x1E7DF).addRange(0x1E8C5, 0x1E8C6).addRange(0x1E8D7, 0x1E8FF).addRange(0x1E94C, 0x1E94F).addRange(0x1E95A, 0x1E95D).addRange(0x1E960, 0x1EC70);
      set.addRange(0x1ECB5, 0x1ED00).addRange(0x1ED3E, 0x1EDFF).addRange(0x1EE25, 0x1EE26).addRange(0x1EE3C, 0x1EE41).addRange(0x1EE43, 0x1EE46).addRange(0x1EE55, 0x1EE56).addRange(0x1EE65, 0x1EE66).addRange(0x1EE9C, 0x1EEA0).addRange(0x1EEBC, 0x1EEEF).addRange(0x1EEF2, 0x1EFFF).addRange(0x1F02C, 0x1F02F).addRange(0x1F094, 0x1F09F).addRange(0x1F0AF, 0x1F0B0).addRange(0x1F0F6, 0x1F0FF).addRange(0x1F1AE, 0x1F1E5).addRange(0x1F203, 0x1F20F).addRange(0x1F23C, 0x1F23F).addRange(0x1F249, 0x1F24F).addRange(0x1F252, 0x1F25F).addRange(0x1F266, 0x1F2FF).addRange(0x1F6D8, 0x1F6DB).addRange(0x1F6ED, 0x1F6EF).addRange(0x1F6FD, 0x1F6FF).addRange(0x1F777, 0x1F77A).addRange(0x1F7DA, 0x1F7DF).addRange(0x1F7EC, 0x1F7EF).addRange(0x1F7F1, 0x1F7FF).addRange(0x1F80C, 0x1F80F).addRange(0x1F848, 0x1F84F).addRange(0x1F85A, 0x1F85F).addRange(0x1F888, 0x1F88F).addRange(0x1F8AE, 0x1F8AF).addRange(0x1F8B2, 0x1F8FF).addRange(0x1FA54, 0x1FA5F).addRange(0x1FA6E, 0x1FA6F).addRange(0x1FA7D, 0x1FA7F).addRange(0x1FA89, 0x1FA8F).addRange(0x1FAC6, 0x1FACD).addRange(0x1FADC, 0x1FADF).addRange(0x1FAE9, 0x1FAEF).addRange(0x1FAF9, 0x1FAFF).addRange(0x1FBCB, 0x1FBEF).addRange(0x1FBFA, 0x1FFFF).addRange(0x2A6E0, 0x2A6FF).addRange(0x2B73A, 0x2B73F).addRange(0x2B81E, 0x2B81F).addRange(0x2CEA2, 0x2CEAF).addRange(0x2EBE1, 0x2F7FF).addRange(0x2FA1E, 0x2FFFF).addRange(0x3134B, 0x3134F).addRange(0x323B0, 0xE0000);
      set.addRange(0xE0002, 0xE001F).addRange(0xE0080, 0xE00FF).addRange(0xE01F0, 0xEFFFF).addRange(0xFFFFE, 0xFFFFF).addRange(0x10FFFE, 0x10FFFF);
      Unassigned.characters = set;
      return Unassigned;
    }
  
    var Uppercase_Letter = {};
  
    var hasRequiredUppercase_Letter;
    function requireUppercase_Letter() {
      if (hasRequiredUppercase_Letter) return Uppercase_Letter;
      hasRequiredUppercase_Letter = 1;
      var set = regenerate$2.exports(0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, 0x10E, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, 0x11C, 0x11E, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12A, 0x12C, 0x12E, 0x130, 0x132, 0x134, 0x136, 0x139, 0x13B, 0x13D, 0x13F, 0x141, 0x143, 0x145, 0x147, 0x14A, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, 0x172, 0x174, 0x176, 0x17B, 0x17D, 0x184, 0x1A2, 0x1A4, 0x1A9, 0x1AC, 0x1B5, 0x1BC, 0x1C4, 0x1C7, 0x1CA, 0x1CD, 0x1CF, 0x1D1, 0x1D3, 0x1D5, 0x1D7, 0x1D9, 0x1DB, 0x1DE, 0x1E0, 0x1E2, 0x1E4, 0x1E6, 0x1E8, 0x1EA, 0x1EC, 0x1EE, 0x1F1, 0x1F4, 0x1FA, 0x1FC, 0x1FE, 0x200, 0x202, 0x204, 0x206, 0x208, 0x20A, 0x20C, 0x20E, 0x210, 0x212, 0x214, 0x216, 0x218, 0x21A, 0x21C, 0x21E, 0x220, 0x222, 0x224, 0x226, 0x228, 0x22A, 0x22C, 0x22E, 0x230, 0x232, 0x241, 0x248, 0x24A, 0x24C, 0x24E, 0x370, 0x372, 0x376, 0x37F, 0x386, 0x38C, 0x3CF, 0x3D8, 0x3DA, 0x3DC, 0x3DE, 0x3E0, 0x3E2, 0x3E4, 0x3E6, 0x3E8, 0x3EA, 0x3EC, 0x3EE, 0x3F4, 0x3F7, 0x460, 0x462, 0x464, 0x466, 0x468, 0x46A, 0x46C, 0x46E, 0x470, 0x472, 0x474, 0x476, 0x478, 0x47A, 0x47C, 0x47E, 0x480, 0x48A, 0x48C, 0x48E, 0x490, 0x492, 0x494, 0x496, 0x498, 0x49A, 0x49C, 0x49E, 0x4A0, 0x4A2, 0x4A4, 0x4A6, 0x4A8, 0x4AA, 0x4AC, 0x4AE, 0x4B0, 0x4B2, 0x4B4, 0x4B6, 0x4B8, 0x4BA, 0x4BC, 0x4BE, 0x4C3, 0x4C5, 0x4C7, 0x4C9, 0x4CB, 0x4CD, 0x4D0, 0x4D2, 0x4D4, 0x4D6, 0x4D8, 0x4DA, 0x4DC, 0x4DE, 0x4E0, 0x4E2, 0x4E4, 0x4E6, 0x4E8, 0x4EA, 0x4EC, 0x4EE, 0x4F0, 0x4F2, 0x4F4, 0x4F6, 0x4F8, 0x4FA, 0x4FC, 0x4FE, 0x500, 0x502, 0x504, 0x506, 0x508, 0x50A, 0x50C, 0x50E, 0x510, 0x512, 0x514, 0x516, 0x518, 0x51A, 0x51C, 0x51E, 0x520, 0x522, 0x524, 0x526, 0x528, 0x52A, 0x52C, 0x52E, 0x10C7, 0x10CD, 0x1E00, 0x1E02, 0x1E04, 0x1E06, 0x1E08, 0x1E0A, 0x1E0C, 0x1E0E, 0x1E10, 0x1E12, 0x1E14, 0x1E16, 0x1E18, 0x1E1A, 0x1E1C, 0x1E1E, 0x1E20, 0x1E22, 0x1E24, 0x1E26, 0x1E28, 0x1E2A, 0x1E2C, 0x1E2E, 0x1E30, 0x1E32, 0x1E34, 0x1E36, 0x1E38, 0x1E3A, 0x1E3C, 0x1E3E, 0x1E40, 0x1E42, 0x1E44, 0x1E46, 0x1E48, 0x1E4A, 0x1E4C, 0x1E4E, 0x1E50, 0x1E52, 0x1E54, 0x1E56, 0x1E58, 0x1E5A, 0x1E5C, 0x1E5E, 0x1E60, 0x1E62, 0x1E64, 0x1E66, 0x1E68, 0x1E6A, 0x1E6C, 0x1E6E, 0x1E70, 0x1E72, 0x1E74, 0x1E76, 0x1E78, 0x1E7A, 0x1E7C, 0x1E7E, 0x1E80, 0x1E82, 0x1E84, 0x1E86, 0x1E88, 0x1E8A, 0x1E8C, 0x1E8E, 0x1E90, 0x1E92, 0x1E94, 0x1E9E, 0x1EA0, 0x1EA2, 0x1EA4, 0x1EA6, 0x1EA8, 0x1EAA, 0x1EAC, 0x1EAE, 0x1EB0, 0x1EB2, 0x1EB4, 0x1EB6, 0x1EB8, 0x1EBA, 0x1EBC, 0x1EBE, 0x1EC0, 0x1EC2, 0x1EC4, 0x1EC6, 0x1EC8, 0x1ECA, 0x1ECC, 0x1ECE, 0x1ED0, 0x1ED2, 0x1ED4, 0x1ED6, 0x1ED8, 0x1EDA, 0x1EDC, 0x1EDE, 0x1EE0, 0x1EE2, 0x1EE4, 0x1EE6, 0x1EE8, 0x1EEA, 0x1EEC, 0x1EEE, 0x1EF0, 0x1EF2, 0x1EF4, 0x1EF6, 0x1EF8, 0x1EFA, 0x1EFC, 0x1EFE, 0x1F59, 0x1F5B, 0x1F5D, 0x1F5F, 0x2102, 0x2107, 0x2115, 0x2124, 0x2126, 0x2128, 0x2145, 0x2183, 0x2C60, 0x2C67, 0x2C69, 0x2C6B, 0x2C72, 0x2C75, 0x2C82, 0x2C84, 0x2C86, 0x2C88, 0x2C8A, 0x2C8C, 0x2C8E, 0x2C90, 0x2C92, 0x2C94, 0x2C96, 0x2C98, 0x2C9A, 0x2C9C, 0x2C9E, 0x2CA0, 0x2CA2, 0x2CA4, 0x2CA6, 0x2CA8, 0x2CAA, 0x2CAC, 0x2CAE, 0x2CB0, 0x2CB2, 0x2CB4, 0x2CB6, 0x2CB8, 0x2CBA, 0x2CBC, 0x2CBE, 0x2CC0, 0x2CC2, 0x2CC4, 0x2CC6, 0x2CC8, 0x2CCA, 0x2CCC, 0x2CCE, 0x2CD0, 0x2CD2, 0x2CD4, 0x2CD6, 0x2CD8, 0x2CDA, 0x2CDC, 0x2CDE, 0x2CE0, 0x2CE2, 0x2CEB, 0x2CED, 0x2CF2, 0xA640, 0xA642, 0xA644, 0xA646, 0xA648, 0xA64A, 0xA64C, 0xA64E, 0xA650, 0xA652, 0xA654, 0xA656, 0xA658, 0xA65A, 0xA65C, 0xA65E, 0xA660, 0xA662, 0xA664, 0xA666, 0xA668, 0xA66A, 0xA66C, 0xA680, 0xA682, 0xA684, 0xA686, 0xA688, 0xA68A, 0xA68C, 0xA68E, 0xA690, 0xA692, 0xA694, 0xA696, 0xA698, 0xA69A, 0xA722, 0xA724, 0xA726, 0xA728, 0xA72A, 0xA72C, 0xA72E, 0xA732, 0xA734, 0xA736, 0xA738, 0xA73A, 0xA73C, 0xA73E, 0xA740, 0xA742, 0xA744, 0xA746, 0xA748, 0xA74A, 0xA74C, 0xA74E, 0xA750, 0xA752, 0xA754, 0xA756, 0xA758, 0xA75A, 0xA75C, 0xA75E, 0xA760, 0xA762, 0xA764, 0xA766, 0xA768, 0xA76A, 0xA76C, 0xA76E, 0xA779, 0xA77B, 0xA780, 0xA782, 0xA784, 0xA786, 0xA78B, 0xA78D, 0xA790, 0xA792, 0xA796, 0xA798, 0xA79A, 0xA79C, 0xA79E, 0xA7A0, 0xA7A2, 0xA7A4, 0xA7A6, 0xA7A8, 0xA7B6, 0xA7B8, 0xA7BA, 0xA7BC, 0xA7BE, 0xA7C0, 0xA7C2, 0xA7C9, 0xA7D0, 0xA7D6, 0xA7D8, 0xA7F5, 0x1D49C, 0x1D4A2, 0x1D546, 0x1D7CA);
      set.addRange(0x41, 0x5A).addRange(0xC0, 0xD6).addRange(0xD8, 0xDE).addRange(0x178, 0x179).addRange(0x181, 0x182).addRange(0x186, 0x187).addRange(0x189, 0x18B).addRange(0x18E, 0x191).addRange(0x193, 0x194).addRange(0x196, 0x198).addRange(0x19C, 0x19D).addRange(0x19F, 0x1A0).addRange(0x1A6, 0x1A7).addRange(0x1AE, 0x1AF).addRange(0x1B1, 0x1B3).addRange(0x1B7, 0x1B8).addRange(0x1F6, 0x1F8).addRange(0x23A, 0x23B).addRange(0x23D, 0x23E).addRange(0x243, 0x246).addRange(0x388, 0x38A).addRange(0x38E, 0x38F).addRange(0x391, 0x3A1).addRange(0x3A3, 0x3AB).addRange(0x3D2, 0x3D4).addRange(0x3F9, 0x3FA).addRange(0x3FD, 0x42F).addRange(0x4C0, 0x4C1).addRange(0x531, 0x556).addRange(0x10A0, 0x10C5).addRange(0x13A0, 0x13F5).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1F08, 0x1F0F).addRange(0x1F18, 0x1F1D).addRange(0x1F28, 0x1F2F).addRange(0x1F38, 0x1F3F).addRange(0x1F48, 0x1F4D).addRange(0x1F68, 0x1F6F).addRange(0x1FB8, 0x1FBB).addRange(0x1FC8, 0x1FCB).addRange(0x1FD8, 0x1FDB).addRange(0x1FE8, 0x1FEC).addRange(0x1FF8, 0x1FFB).addRange(0x210B, 0x210D).addRange(0x2110, 0x2112).addRange(0x2119, 0x211D).addRange(0x212A, 0x212D).addRange(0x2130, 0x2133).addRange(0x213E, 0x213F).addRange(0x2C00, 0x2C2F);
      set.addRange(0x2C62, 0x2C64).addRange(0x2C6D, 0x2C70).addRange(0x2C7E, 0x2C80).addRange(0xA77D, 0xA77E).addRange(0xA7AA, 0xA7AE).addRange(0xA7B0, 0xA7B4).addRange(0xA7C4, 0xA7C7).addRange(0xFF21, 0xFF3A).addRange(0x10400, 0x10427).addRange(0x104B0, 0x104D3).addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10C80, 0x10CB2).addRange(0x118A0, 0x118BF).addRange(0x16E40, 0x16E5F).addRange(0x1D400, 0x1D419).addRange(0x1D434, 0x1D44D).addRange(0x1D468, 0x1D481).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B5).addRange(0x1D4D0, 0x1D4E9).addRange(0x1D504, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D538, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D56C, 0x1D585).addRange(0x1D5A0, 0x1D5B9).addRange(0x1D5D4, 0x1D5ED).addRange(0x1D608, 0x1D621).addRange(0x1D63C, 0x1D655).addRange(0x1D670, 0x1D689).addRange(0x1D6A8, 0x1D6C0).addRange(0x1D6E2, 0x1D6FA).addRange(0x1D71C, 0x1D734).addRange(0x1D756, 0x1D76E).addRange(0x1D790, 0x1D7A8).addRange(0x1E900, 0x1E921);
      Uppercase_Letter.characters = set;
      return Uppercase_Letter;
    }
  
    var regenerateUnicodeProperties;
    var hasRequiredRegenerateUnicodeProperties;
    function requireRegenerateUnicodeProperties() {
      if (hasRequiredRegenerateUnicodeProperties) return regenerateUnicodeProperties;
      hasRequiredRegenerateUnicodeProperties = 1;
      regenerateUnicodeProperties = new Map([['General_Category', ['Cased_Letter', 'Close_Punctuation', 'Connector_Punctuation', 'Control', 'Currency_Symbol', 'Dash_Punctuation', 'Decimal_Number', 'Enclosing_Mark', 'Final_Punctuation', 'Format', 'Initial_Punctuation', 'Letter', 'Letter_Number', 'Line_Separator', 'Lowercase_Letter', 'Mark', 'Math_Symbol', 'Modifier_Letter', 'Modifier_Symbol', 'Nonspacing_Mark', 'Number', 'Open_Punctuation', 'Other', 'Other_Letter', 'Other_Number', 'Other_Punctuation', 'Other_Symbol', 'Paragraph_Separator', 'Private_Use', 'Punctuation', 'Separator', 'Space_Separator', 'Spacing_Mark', 'Surrogate', 'Symbol', 'Titlecase_Letter', 'Unassigned', 'Uppercase_Letter']], ['Script', ['Adlam', 'Ahom', 'Anatolian_Hieroglyphs', 'Arabic', 'Armenian', 'Avestan', 'Balinese', 'Bamum', 'Bassa_Vah', 'Batak', 'Bengali', 'Bhaiksuki', 'Bopomofo', 'Brahmi', 'Braille', 'Buginese', 'Buhid', 'Canadian_Aboriginal', 'Carian', 'Caucasian_Albanian', 'Chakma', 'Cham', 'Cherokee', 'Chorasmian', 'Common', 'Coptic', 'Cuneiform', 'Cypriot', 'Cypro_Minoan', 'Cyrillic', 'Deseret', 'Devanagari', 'Dives_Akuru', 'Dogra', 'Duployan', 'Egyptian_Hieroglyphs', 'Elbasan', 'Elymaic', 'Ethiopic', 'Georgian', 'Glagolitic', 'Gothic', 'Grantha', 'Greek', 'Gujarati', 'Gunjala_Gondi', 'Gurmukhi', 'Han', 'Hangul', 'Hanifi_Rohingya', 'Hanunoo', 'Hatran', 'Hebrew', 'Hiragana', 'Imperial_Aramaic', 'Inherited', 'Inscriptional_Pahlavi', 'Inscriptional_Parthian', 'Javanese', 'Kaithi', 'Kannada', 'Katakana', 'Kawi', 'Kayah_Li', 'Kharoshthi', 'Khitan_Small_Script', 'Khmer', 'Khojki', 'Khudawadi', 'Lao', 'Latin', 'Lepcha', 'Limbu', 'Linear_A', 'Linear_B', 'Lisu', 'Lycian', 'Lydian', 'Mahajani', 'Makasar', 'Malayalam', 'Mandaic', 'Manichaean', 'Marchen', 'Masaram_Gondi', 'Medefaidrin', 'Meetei_Mayek', 'Mende_Kikakui', 'Meroitic_Cursive', 'Meroitic_Hieroglyphs', 'Miao', 'Modi', 'Mongolian', 'Mro', 'Multani', 'Myanmar', 'Nabataean', 'Nag_Mundari', 'Nandinagari', 'New_Tai_Lue', 'Newa', 'Nko', 'Nushu', 'Nyiakeng_Puachue_Hmong', 'Ogham', 'Ol_Chiki', 'Old_Hungarian', 'Old_Italic', 'Old_North_Arabian', 'Old_Permic', 'Old_Persian', 'Old_Sogdian', 'Old_South_Arabian', 'Old_Turkic', 'Old_Uyghur', 'Oriya', 'Osage', 'Osmanya', 'Pahawh_Hmong', 'Palmyrene', 'Pau_Cin_Hau', 'Phags_Pa', 'Phoenician', 'Psalter_Pahlavi', 'Rejang', 'Runic', 'Samaritan', 'Saurashtra', 'Sharada', 'Shavian', 'Siddham', 'SignWriting', 'Sinhala', 'Sogdian', 'Sora_Sompeng', 'Soyombo', 'Sundanese', 'Syloti_Nagri', 'Syriac', 'Tagalog', 'Tagbanwa', 'Tai_Le', 'Tai_Tham', 'Tai_Viet', 'Takri', 'Tamil', 'Tangsa', 'Tangut', 'Telugu', 'Thaana', 'Thai', 'Tibetan', 'Tifinagh', 'Tirhuta', 'Toto', 'Ugaritic', 'Vai', 'Vithkuqi', 'Wancho', 'Warang_Citi', 'Yezidi', 'Yi', 'Zanabazar_Square']], ['Script_Extensions', ['Adlam', 'Ahom', 'Anatolian_Hieroglyphs', 'Arabic', 'Armenian', 'Avestan', 'Balinese', 'Bamum', 'Bassa_Vah', 'Batak', 'Bengali', 'Bhaiksuki', 'Bopomofo', 'Brahmi', 'Braille', 'Buginese', 'Buhid', 'Canadian_Aboriginal', 'Carian', 'Caucasian_Albanian', 'Chakma', 'Cham', 'Cherokee', 'Chorasmian', 'Common', 'Coptic', 'Cuneiform', 'Cypriot', 'Cypro_Minoan', 'Cyrillic', 'Deseret', 'Devanagari', 'Dives_Akuru', 'Dogra', 'Duployan', 'Egyptian_Hieroglyphs', 'Elbasan', 'Elymaic', 'Ethiopic', 'Georgian', 'Glagolitic', 'Gothic', 'Grantha', 'Greek', 'Gujarati', 'Gunjala_Gondi', 'Gurmukhi', 'Han', 'Hangul', 'Hanifi_Rohingya', 'Hanunoo', 'Hatran', 'Hebrew', 'Hiragana', 'Imperial_Aramaic', 'Inherited', 'Inscriptional_Pahlavi', 'Inscriptional_Parthian', 'Javanese', 'Kaithi', 'Kannada', 'Katakana', 'Kawi', 'Kayah_Li', 'Kharoshthi', 'Khitan_Small_Script', 'Khmer', 'Khojki', 'Khudawadi', 'Lao', 'Latin', 'Lepcha', 'Limbu', 'Linear_A', 'Linear_B', 'Lisu', 'Lycian', 'Lydian', 'Mahajani', 'Makasar', 'Malayalam', 'Mandaic', 'Manichaean', 'Marchen', 'Masaram_Gondi', 'Medefaidrin', 'Meetei_Mayek', 'Mende_Kikakui', 'Meroitic_Cursive', 'Meroitic_Hieroglyphs', 'Miao', 'Modi', 'Mongolian', 'Mro', 'Multani', 'Myanmar', 'Nabataean', 'Nag_Mundari', 'Nandinagari', 'New_Tai_Lue', 'Newa', 'Nko', 'Nushu', 'Nyiakeng_Puachue_Hmong', 'Ogham', 'Ol_Chiki', 'Old_Hungarian', 'Old_Italic', 'Old_North_Arabian', 'Old_Permic', 'Old_Persian', 'Old_Sogdian', 'Old_South_Arabian', 'Old_Turkic', 'Old_Uyghur', 'Oriya', 'Osage', 'Osmanya', 'Pahawh_Hmong', 'Palmyrene', 'Pau_Cin_Hau', 'Phags_Pa', 'Phoenician', 'Psalter_Pahlavi', 'Rejang', 'Runic', 'Samaritan', 'Saurashtra', 'Sharada', 'Shavian', 'Siddham', 'SignWriting', 'Sinhala', 'Sogdian', 'Sora_Sompeng', 'Soyombo', 'Sundanese', 'Syloti_Nagri', 'Syriac', 'Tagalog', 'Tagbanwa', 'Tai_Le', 'Tai_Tham', 'Tai_Viet', 'Takri', 'Tamil', 'Tangsa', 'Tangut', 'Telugu', 'Thaana', 'Thai', 'Tibetan', 'Tifinagh', 'Tirhuta', 'Toto', 'Ugaritic', 'Vai', 'Vithkuqi', 'Wancho', 'Warang_Citi', 'Yezidi', 'Yi', 'Zanabazar_Square']], ['Binary_Property', ['ASCII', 'ASCII_Hex_Digit', 'Alphabetic', 'Any', 'Assigned', 'Bidi_Control', 'Bidi_Mirrored', 'Case_Ignorable', 'Cased', 'Changes_When_Casefolded', 'Changes_When_Casemapped', 'Changes_When_Lowercased', 'Changes_When_NFKC_Casefolded', 'Changes_When_Titlecased', 'Changes_When_Uppercased', 'Dash', 'Default_Ignorable_Code_Point', 'Deprecated', 'Diacritic', 'Emoji', 'Emoji_Component', 'Emoji_Modifier', 'Emoji_Modifier_Base', 'Emoji_Presentation', 'Extended_Pictographic', 'Extender', 'Grapheme_Base', 'Grapheme_Extend', 'Hex_Digit', 'IDS_Binary_Operator', 'IDS_Trinary_Operator', 'ID_Continue', 'ID_Start', 'Ideographic', 'Join_Control', 'Logical_Order_Exception', 'Lowercase', 'Math', 'Noncharacter_Code_Point', 'Pattern_Syntax', 'Pattern_White_Space', 'Quotation_Mark', 'Radical', 'Regional_Indicator', 'Sentence_Terminal', 'Soft_Dotted', 'Terminal_Punctuation', 'Unified_Ideograph', 'Uppercase', 'Variation_Selector', 'White_Space', 'XID_Continue', 'XID_Start']], ['Property_of_Strings', ['Basic_Emoji', 'Emoji_Keycap_Sequence', 'RGI_Emoji', 'RGI_Emoji_Flag_Sequence', 'RGI_Emoji_Modifier_Sequence', 'RGI_Emoji_Tag_Sequence', 'RGI_Emoji_ZWJ_Sequence']]]);
      return regenerateUnicodeProperties;
    }
  
    var Basic_Emoji = {};
  
    var hasRequiredBasic_Emoji;
    function requireBasic_Emoji() {
      if (hasRequiredBasic_Emoji) return Basic_Emoji;
      hasRequiredBasic_Emoji = 1;
      var set = regenerate$2.exports(0x23F0, 0x23F3, 0x267F, 0x2693, 0x26A1, 0x26CE, 0x26D4, 0x26EA, 0x26F5, 0x26FA, 0x26FD, 0x2705, 0x2728, 0x274C, 0x274E, 0x2757, 0x27B0, 0x27BF, 0x2B50, 0x2B55, 0x1F004, 0x1F0CF, 0x1F18E, 0x1F201, 0x1F21A, 0x1F22F, 0x1F3F4, 0x1F440, 0x1F57A, 0x1F5A4, 0x1F6CC, 0x1F7F0);
      set.addRange(0x231A, 0x231B).addRange(0x23E9, 0x23EC).addRange(0x25FD, 0x25FE).addRange(0x2614, 0x2615).addRange(0x2648, 0x2653).addRange(0x26AA, 0x26AB).addRange(0x26BD, 0x26BE).addRange(0x26C4, 0x26C5).addRange(0x26F2, 0x26F3).addRange(0x270A, 0x270B).addRange(0x2753, 0x2755).addRange(0x2795, 0x2797).addRange(0x2B1B, 0x2B1C).addRange(0x1F191, 0x1F19A).addRange(0x1F232, 0x1F236).addRange(0x1F238, 0x1F23A).addRange(0x1F250, 0x1F251).addRange(0x1F300, 0x1F320).addRange(0x1F32D, 0x1F335).addRange(0x1F337, 0x1F37C).addRange(0x1F37E, 0x1F393).addRange(0x1F3A0, 0x1F3CA).addRange(0x1F3CF, 0x1F3D3).addRange(0x1F3E0, 0x1F3F0).addRange(0x1F3F8, 0x1F43E).addRange(0x1F442, 0x1F4FC).addRange(0x1F4FF, 0x1F53D).addRange(0x1F54B, 0x1F54E).addRange(0x1F550, 0x1F567).addRange(0x1F595, 0x1F596).addRange(0x1F5FB, 0x1F64F).addRange(0x1F680, 0x1F6C5).addRange(0x1F6D0, 0x1F6D2).addRange(0x1F6D5, 0x1F6D7).addRange(0x1F6DC, 0x1F6DF).addRange(0x1F6EB, 0x1F6EC).addRange(0x1F6F4, 0x1F6FC).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F90C, 0x1F93A).addRange(0x1F93C, 0x1F945).addRange(0x1F947, 0x1F9FF).addRange(0x1FA70, 0x1FA7C).addRange(0x1FA80, 0x1FA88).addRange(0x1FA90, 0x1FABD).addRange(0x1FABF, 0x1FAC5).addRange(0x1FACE, 0x1FADB).addRange(0x1FAE0, 0x1FAE8).addRange(0x1FAF0, 0x1FAF8);
      Basic_Emoji.characters = set;
      Basic_Emoji.strings = ["\xA9\uFE0F", "\xAE\uFE0F", "\u203C\uFE0F", "\u2049\uFE0F", "\u2122\uFE0F", "\u2139\uFE0F", "\u2194\uFE0F", "\u2195\uFE0F", "\u2196\uFE0F", "\u2197\uFE0F", "\u2198\uFE0F", "\u2199\uFE0F", "\u21A9\uFE0F", "\u21AA\uFE0F", "\u2328\uFE0F", "\u23CF\uFE0F", "\u23ED\uFE0F", "\u23EE\uFE0F", "\u23EF\uFE0F", "\u23F1\uFE0F", "\u23F2\uFE0F", "\u23F8\uFE0F", "\u23F9\uFE0F", "\u23FA\uFE0F", "\u24C2\uFE0F", "\u25AA\uFE0F", "\u25AB\uFE0F", "\u25B6\uFE0F", "\u25C0\uFE0F", "\u25FB\uFE0F", "\u25FC\uFE0F", "\u2600\uFE0F", "\u2601\uFE0F", "\u2602\uFE0F", "\u2603\uFE0F", "\u2604\uFE0F", "\u260E\uFE0F", "\u2611\uFE0F", "\u2618\uFE0F", "\u261D\uFE0F", "\u2620\uFE0F", "\u2622\uFE0F", "\u2623\uFE0F", "\u2626\uFE0F", "\u262A\uFE0F", "\u262E\uFE0F", "\u262F\uFE0F", "\u2638\uFE0F", "\u2639\uFE0F", "\u263A\uFE0F", "\u2640\uFE0F", "\u2642\uFE0F", "\u265F\uFE0F", "\u2660\uFE0F", "\u2663\uFE0F", "\u2665\uFE0F", "\u2666\uFE0F", "\u2668\uFE0F", "\u267B\uFE0F", "\u267E\uFE0F", "\u2692\uFE0F", "\u2694\uFE0F", "\u2695\uFE0F", "\u2696\uFE0F", "\u2697\uFE0F", "\u2699\uFE0F", "\u269B\uFE0F", "\u269C\uFE0F", "\u26A0\uFE0F", "\u26A7\uFE0F", "\u26B0\uFE0F", "\u26B1\uFE0F", "\u26C8\uFE0F", "\u26CF\uFE0F", "\u26D1\uFE0F", "\u26D3\uFE0F", "\u26E9\uFE0F", "\u26F0\uFE0F", "\u26F1\uFE0F", "\u26F4\uFE0F", "\u26F7\uFE0F", "\u26F8\uFE0F", "\u26F9\uFE0F", "\u2702\uFE0F", "\u2708\uFE0F", "\u2709\uFE0F", "\u270C\uFE0F", "\u270D\uFE0F", "\u270F\uFE0F", "\u2712\uFE0F", "\u2714\uFE0F", "\u2716\uFE0F", "\u271D\uFE0F", "\u2721\uFE0F", "\u2733\uFE0F", "\u2734\uFE0F", "\u2744\uFE0F", "\u2747\uFE0F", "\u2763\uFE0F", "\u2764\uFE0F", "\u27A1\uFE0F", "\u2934\uFE0F", "\u2935\uFE0F", "\u2B05\uFE0F", "\u2B06\uFE0F", "\u2B07\uFE0F", "\u3030\uFE0F", "\u303D\uFE0F", "\u3297\uFE0F", "\u3299\uFE0F", "\uD83C\uDD70\uFE0F", "\uD83C\uDD71\uFE0F", "\uD83C\uDD7E\uFE0F", "\uD83C\uDD7F\uFE0F", "\uD83C\uDE02\uFE0F", "\uD83C\uDE37\uFE0F", "\uD83C\uDF21\uFE0F", "\uD83C\uDF24\uFE0F", "\uD83C\uDF25\uFE0F", "\uD83C\uDF26\uFE0F", "\uD83C\uDF27\uFE0F", "\uD83C\uDF28\uFE0F", "\uD83C\uDF29\uFE0F", "\uD83C\uDF2A\uFE0F", "\uD83C\uDF2B\uFE0F", "\uD83C\uDF2C\uFE0F", "\uD83C\uDF36\uFE0F", "\uD83C\uDF7D\uFE0F", "\uD83C\uDF96\uFE0F", "\uD83C\uDF97\uFE0F", "\uD83C\uDF99\uFE0F", "\uD83C\uDF9A\uFE0F", "\uD83C\uDF9B\uFE0F", "\uD83C\uDF9E\uFE0F", "\uD83C\uDF9F\uFE0F", "\uD83C\uDFCB\uFE0F", "\uD83C\uDFCC\uFE0F", "\uD83C\uDFCD\uFE0F", "\uD83C\uDFCE\uFE0F", "\uD83C\uDFD4\uFE0F", "\uD83C\uDFD5\uFE0F", "\uD83C\uDFD6\uFE0F", "\uD83C\uDFD7\uFE0F", "\uD83C\uDFD8\uFE0F", "\uD83C\uDFD9\uFE0F", "\uD83C\uDFDA\uFE0F", "\uD83C\uDFDB\uFE0F", "\uD83C\uDFDC\uFE0F", "\uD83C\uDFDD\uFE0F", "\uD83C\uDFDE\uFE0F", "\uD83C\uDFDF\uFE0F", "\uD83C\uDFF3\uFE0F", "\uD83C\uDFF5\uFE0F", "\uD83C\uDFF7\uFE0F", "\uD83D\uDC3F\uFE0F", "\uD83D\uDC41\uFE0F", "\uD83D\uDCFD\uFE0F", "\uD83D\uDD49\uFE0F", "\uD83D\uDD4A\uFE0F", "\uD83D\uDD6F\uFE0F", "\uD83D\uDD70\uFE0F", "\uD83D\uDD73\uFE0F", "\uD83D\uDD74\uFE0F", "\uD83D\uDD75\uFE0F", "\uD83D\uDD76\uFE0F", "\uD83D\uDD77\uFE0F", "\uD83D\uDD78\uFE0F", "\uD83D\uDD79\uFE0F", "\uD83D\uDD87\uFE0F", "\uD83D\uDD8A\uFE0F", "\uD83D\uDD8B\uFE0F", "\uD83D\uDD8C\uFE0F", "\uD83D\uDD8D\uFE0F", "\uD83D\uDD90\uFE0F", "\uD83D\uDDA5\uFE0F", "\uD83D\uDDA8\uFE0F", "\uD83D\uDDB1\uFE0F", "\uD83D\uDDB2\uFE0F", "\uD83D\uDDBC\uFE0F", "\uD83D\uDDC2\uFE0F", "\uD83D\uDDC3\uFE0F", "\uD83D\uDDC4\uFE0F", "\uD83D\uDDD1\uFE0F", "\uD83D\uDDD2\uFE0F", "\uD83D\uDDD3\uFE0F", "\uD83D\uDDDC\uFE0F", "\uD83D\uDDDD\uFE0F", "\uD83D\uDDDE\uFE0F", "\uD83D\uDDE1\uFE0F", "\uD83D\uDDE3\uFE0F", "\uD83D\uDDE8\uFE0F", "\uD83D\uDDEF\uFE0F", "\uD83D\uDDF3\uFE0F", "\uD83D\uDDFA\uFE0F", "\uD83D\uDECB\uFE0F", "\uD83D\uDECD\uFE0F", "\uD83D\uDECE\uFE0F", "\uD83D\uDECF\uFE0F", "\uD83D\uDEE0\uFE0F", "\uD83D\uDEE1\uFE0F", "\uD83D\uDEE2\uFE0F", "\uD83D\uDEE3\uFE0F", "\uD83D\uDEE4\uFE0F", "\uD83D\uDEE5\uFE0F", "\uD83D\uDEE9\uFE0F", "\uD83D\uDEF0\uFE0F", "\uD83D\uDEF3\uFE0F"];
      return Basic_Emoji;
    }
  
    var Emoji_Keycap_Sequence = {};
  
    var hasRequiredEmoji_Keycap_Sequence;
    function requireEmoji_Keycap_Sequence() {
      if (hasRequiredEmoji_Keycap_Sequence) return Emoji_Keycap_Sequence;
      hasRequiredEmoji_Keycap_Sequence = 1;
      var set = regenerate$2.exports();
      Emoji_Keycap_Sequence.characters = set;
      Emoji_Keycap_Sequence.strings = ["#\uFE0F\u20E3", "*\uFE0F\u20E3", "0\uFE0F\u20E3", "1\uFE0F\u20E3", "2\uFE0F\u20E3", "3\uFE0F\u20E3", "4\uFE0F\u20E3", "5\uFE0F\u20E3", "6\uFE0F\u20E3", "7\uFE0F\u20E3", "8\uFE0F\u20E3", "9\uFE0F\u20E3"];
      return Emoji_Keycap_Sequence;
    }
  
    var RGI_Emoji_Flag_Sequence = {};
  
    var hasRequiredRGI_Emoji_Flag_Sequence;
    function requireRGI_Emoji_Flag_Sequence() {
      if (hasRequiredRGI_Emoji_Flag_Sequence) return RGI_Emoji_Flag_Sequence;
      hasRequiredRGI_Emoji_Flag_Sequence = 1;
      var set = regenerate$2.exports();
      RGI_Emoji_Flag_Sequence.characters = set;
      RGI_Emoji_Flag_Sequence.strings = ["\uD83C\uDDE6\uD83C\uDDE8", "\uD83C\uDDE6\uD83C\uDDE9", "\uD83C\uDDE6\uD83C\uDDEA", "\uD83C\uDDE6\uD83C\uDDEB", "\uD83C\uDDE6\uD83C\uDDEC", "\uD83C\uDDE6\uD83C\uDDEE", "\uD83C\uDDE6\uD83C\uDDF1", "\uD83C\uDDE6\uD83C\uDDF2", "\uD83C\uDDE6\uD83C\uDDF4", "\uD83C\uDDE6\uD83C\uDDF6", "\uD83C\uDDE6\uD83C\uDDF7", "\uD83C\uDDE6\uD83C\uDDF8", "\uD83C\uDDE6\uD83C\uDDF9", "\uD83C\uDDE6\uD83C\uDDFA", "\uD83C\uDDE6\uD83C\uDDFC", "\uD83C\uDDE6\uD83C\uDDFD", "\uD83C\uDDE6\uD83C\uDDFF", "\uD83C\uDDE7\uD83C\uDDE6", "\uD83C\uDDE7\uD83C\uDDE7", "\uD83C\uDDE7\uD83C\uDDE9", "\uD83C\uDDE7\uD83C\uDDEA", "\uD83C\uDDE7\uD83C\uDDEB", "\uD83C\uDDE7\uD83C\uDDEC", "\uD83C\uDDE7\uD83C\uDDED", "\uD83C\uDDE7\uD83C\uDDEE", "\uD83C\uDDE7\uD83C\uDDEF", "\uD83C\uDDE7\uD83C\uDDF1", "\uD83C\uDDE7\uD83C\uDDF2", "\uD83C\uDDE7\uD83C\uDDF3", "\uD83C\uDDE7\uD83C\uDDF4", "\uD83C\uDDE7\uD83C\uDDF6", "\uD83C\uDDE7\uD83C\uDDF7", "\uD83C\uDDE7\uD83C\uDDF8", "\uD83C\uDDE7\uD83C\uDDF9", "\uD83C\uDDE7\uD83C\uDDFB", "\uD83C\uDDE7\uD83C\uDDFC", "\uD83C\uDDE7\uD83C\uDDFE", "\uD83C\uDDE7\uD83C\uDDFF", "\uD83C\uDDE8\uD83C\uDDE6", "\uD83C\uDDE8\uD83C\uDDE8", "\uD83C\uDDE8\uD83C\uDDE9", "\uD83C\uDDE8\uD83C\uDDEB", "\uD83C\uDDE8\uD83C\uDDEC", "\uD83C\uDDE8\uD83C\uDDED", "\uD83C\uDDE8\uD83C\uDDEE", "\uD83C\uDDE8\uD83C\uDDF0", "\uD83C\uDDE8\uD83C\uDDF1", "\uD83C\uDDE8\uD83C\uDDF2", "\uD83C\uDDE8\uD83C\uDDF3", "\uD83C\uDDE8\uD83C\uDDF4", "\uD83C\uDDE8\uD83C\uDDF5", "\uD83C\uDDE8\uD83C\uDDF7", "\uD83C\uDDE8\uD83C\uDDFA", "\uD83C\uDDE8\uD83C\uDDFB", "\uD83C\uDDE8\uD83C\uDDFC", "\uD83C\uDDE8\uD83C\uDDFD", "\uD83C\uDDE8\uD83C\uDDFE", "\uD83C\uDDE8\uD83C\uDDFF", "\uD83C\uDDE9\uD83C\uDDEA", "\uD83C\uDDE9\uD83C\uDDEC", "\uD83C\uDDE9\uD83C\uDDEF", "\uD83C\uDDE9\uD83C\uDDF0", "\uD83C\uDDE9\uD83C\uDDF2", "\uD83C\uDDE9\uD83C\uDDF4", "\uD83C\uDDE9\uD83C\uDDFF", "\uD83C\uDDEA\uD83C\uDDE6", "\uD83C\uDDEA\uD83C\uDDE8", "\uD83C\uDDEA\uD83C\uDDEA", "\uD83C\uDDEA\uD83C\uDDEC", "\uD83C\uDDEA\uD83C\uDDED", "\uD83C\uDDEA\uD83C\uDDF7", "\uD83C\uDDEA\uD83C\uDDF8", "\uD83C\uDDEA\uD83C\uDDF9", "\uD83C\uDDEA\uD83C\uDDFA", "\uD83C\uDDEB\uD83C\uDDEE", "\uD83C\uDDEB\uD83C\uDDEF", "\uD83C\uDDEB\uD83C\uDDF0", "\uD83C\uDDEB\uD83C\uDDF2", "\uD83C\uDDEB\uD83C\uDDF4", "\uD83C\uDDEB\uD83C\uDDF7", "\uD83C\uDDEC\uD83C\uDDE6", "\uD83C\uDDEC\uD83C\uDDE7", "\uD83C\uDDEC\uD83C\uDDE9", "\uD83C\uDDEC\uD83C\uDDEA", "\uD83C\uDDEC\uD83C\uDDEB", "\uD83C\uDDEC\uD83C\uDDEC", "\uD83C\uDDEC\uD83C\uDDED", "\uD83C\uDDEC\uD83C\uDDEE", "\uD83C\uDDEC\uD83C\uDDF1", "\uD83C\uDDEC\uD83C\uDDF2", "\uD83C\uDDEC\uD83C\uDDF3", "\uD83C\uDDEC\uD83C\uDDF5", "\uD83C\uDDEC\uD83C\uDDF6", "\uD83C\uDDEC\uD83C\uDDF7", "\uD83C\uDDEC\uD83C\uDDF8", "\uD83C\uDDEC\uD83C\uDDF9", "\uD83C\uDDEC\uD83C\uDDFA", "\uD83C\uDDEC\uD83C\uDDFC", "\uD83C\uDDEC\uD83C\uDDFE", "\uD83C\uDDED\uD83C\uDDF0", "\uD83C\uDDED\uD83C\uDDF2", "\uD83C\uDDED\uD83C\uDDF3", "\uD83C\uDDED\uD83C\uDDF7", "\uD83C\uDDED\uD83C\uDDF9", "\uD83C\uDDED\uD83C\uDDFA", "\uD83C\uDDEE\uD83C\uDDE8", "\uD83C\uDDEE\uD83C\uDDE9", "\uD83C\uDDEE\uD83C\uDDEA", "\uD83C\uDDEE\uD83C\uDDF1", "\uD83C\uDDEE\uD83C\uDDF2", "\uD83C\uDDEE\uD83C\uDDF3", "\uD83C\uDDEE\uD83C\uDDF4", "\uD83C\uDDEE\uD83C\uDDF6", "\uD83C\uDDEE\uD83C\uDDF7", "\uD83C\uDDEE\uD83C\uDDF8", "\uD83C\uDDEE\uD83C\uDDF9", "\uD83C\uDDEF\uD83C\uDDEA", "\uD83C\uDDEF\uD83C\uDDF2", "\uD83C\uDDEF\uD83C\uDDF4", "\uD83C\uDDEF\uD83C\uDDF5", "\uD83C\uDDF0\uD83C\uDDEA", "\uD83C\uDDF0\uD83C\uDDEC", "\uD83C\uDDF0\uD83C\uDDED", "\uD83C\uDDF0\uD83C\uDDEE", "\uD83C\uDDF0\uD83C\uDDF2", "\uD83C\uDDF0\uD83C\uDDF3", "\uD83C\uDDF0\uD83C\uDDF5", "\uD83C\uDDF0\uD83C\uDDF7", "\uD83C\uDDF0\uD83C\uDDFC", "\uD83C\uDDF0\uD83C\uDDFE", "\uD83C\uDDF0\uD83C\uDDFF", "\uD83C\uDDF1\uD83C\uDDE6", "\uD83C\uDDF1\uD83C\uDDE7", "\uD83C\uDDF1\uD83C\uDDE8", "\uD83C\uDDF1\uD83C\uDDEE", "\uD83C\uDDF1\uD83C\uDDF0", "\uD83C\uDDF1\uD83C\uDDF7", "\uD83C\uDDF1\uD83C\uDDF8", "\uD83C\uDDF1\uD83C\uDDF9", "\uD83C\uDDF1\uD83C\uDDFA", "\uD83C\uDDF1\uD83C\uDDFB", "\uD83C\uDDF1\uD83C\uDDFE", "\uD83C\uDDF2\uD83C\uDDE6", "\uD83C\uDDF2\uD83C\uDDE8", "\uD83C\uDDF2\uD83C\uDDE9", "\uD83C\uDDF2\uD83C\uDDEA", "\uD83C\uDDF2\uD83C\uDDEB", "\uD83C\uDDF2\uD83C\uDDEC", "\uD83C\uDDF2\uD83C\uDDED", "\uD83C\uDDF2\uD83C\uDDF0", "\uD83C\uDDF2\uD83C\uDDF1", "\uD83C\uDDF2\uD83C\uDDF2", "\uD83C\uDDF2\uD83C\uDDF3", "\uD83C\uDDF2\uD83C\uDDF4", "\uD83C\uDDF2\uD83C\uDDF5", "\uD83C\uDDF2\uD83C\uDDF6", "\uD83C\uDDF2\uD83C\uDDF7", "\uD83C\uDDF2\uD83C\uDDF8", "\uD83C\uDDF2\uD83C\uDDF9", "\uD83C\uDDF2\uD83C\uDDFA", "\uD83C\uDDF2\uD83C\uDDFB", "\uD83C\uDDF2\uD83C\uDDFC", "\uD83C\uDDF2\uD83C\uDDFD", "\uD83C\uDDF2\uD83C\uDDFE", "\uD83C\uDDF2\uD83C\uDDFF", "\uD83C\uDDF3\uD83C\uDDE6", "\uD83C\uDDF3\uD83C\uDDE8", "\uD83C\uDDF3\uD83C\uDDEA", "\uD83C\uDDF3\uD83C\uDDEB", "\uD83C\uDDF3\uD83C\uDDEC", "\uD83C\uDDF3\uD83C\uDDEE", "\uD83C\uDDF3\uD83C\uDDF1", "\uD83C\uDDF3\uD83C\uDDF4", "\uD83C\uDDF3\uD83C\uDDF5", "\uD83C\uDDF3\uD83C\uDDF7", "\uD83C\uDDF3\uD83C\uDDFA", "\uD83C\uDDF3\uD83C\uDDFF", "\uD83C\uDDF4\uD83C\uDDF2", "\uD83C\uDDF5\uD83C\uDDE6", "\uD83C\uDDF5\uD83C\uDDEA", "\uD83C\uDDF5\uD83C\uDDEB", "\uD83C\uDDF5\uD83C\uDDEC", "\uD83C\uDDF5\uD83C\uDDED", "\uD83C\uDDF5\uD83C\uDDF0", "\uD83C\uDDF5\uD83C\uDDF1", "\uD83C\uDDF5\uD83C\uDDF2", "\uD83C\uDDF5\uD83C\uDDF3", "\uD83C\uDDF5\uD83C\uDDF7", "\uD83C\uDDF5\uD83C\uDDF8", "\uD83C\uDDF5\uD83C\uDDF9", "\uD83C\uDDF5\uD83C\uDDFC", "\uD83C\uDDF5\uD83C\uDDFE", "\uD83C\uDDF6\uD83C\uDDE6", "\uD83C\uDDF7\uD83C\uDDEA", "\uD83C\uDDF7\uD83C\uDDF4", "\uD83C\uDDF7\uD83C\uDDF8", "\uD83C\uDDF7\uD83C\uDDFA", "\uD83C\uDDF7\uD83C\uDDFC", "\uD83C\uDDF8\uD83C\uDDE6", "\uD83C\uDDF8\uD83C\uDDE7", "\uD83C\uDDF8\uD83C\uDDE8", "\uD83C\uDDF8\uD83C\uDDE9", "\uD83C\uDDF8\uD83C\uDDEA", "\uD83C\uDDF8\uD83C\uDDEC", "\uD83C\uDDF8\uD83C\uDDED", "\uD83C\uDDF8\uD83C\uDDEE", "\uD83C\uDDF8\uD83C\uDDEF", "\uD83C\uDDF8\uD83C\uDDF0", "\uD83C\uDDF8\uD83C\uDDF1", "\uD83C\uDDF8\uD83C\uDDF2", "\uD83C\uDDF8\uD83C\uDDF3", "\uD83C\uDDF8\uD83C\uDDF4", "\uD83C\uDDF8\uD83C\uDDF7", "\uD83C\uDDF8\uD83C\uDDF8", "\uD83C\uDDF8\uD83C\uDDF9", "\uD83C\uDDF8\uD83C\uDDFB", "\uD83C\uDDF8\uD83C\uDDFD", "\uD83C\uDDF8\uD83C\uDDFE", "\uD83C\uDDF8\uD83C\uDDFF", "\uD83C\uDDF9\uD83C\uDDE6", "\uD83C\uDDF9\uD83C\uDDE8", "\uD83C\uDDF9\uD83C\uDDE9", "\uD83C\uDDF9\uD83C\uDDEB", "\uD83C\uDDF9\uD83C\uDDEC", "\uD83C\uDDF9\uD83C\uDDED", "\uD83C\uDDF9\uD83C\uDDEF", "\uD83C\uDDF9\uD83C\uDDF0", "\uD83C\uDDF9\uD83C\uDDF1", "\uD83C\uDDF9\uD83C\uDDF2", "\uD83C\uDDF9\uD83C\uDDF3", "\uD83C\uDDF9\uD83C\uDDF4", "\uD83C\uDDF9\uD83C\uDDF7", "\uD83C\uDDF9\uD83C\uDDF9", "\uD83C\uDDF9\uD83C\uDDFB", "\uD83C\uDDF9\uD83C\uDDFC", "\uD83C\uDDF9\uD83C\uDDFF", "\uD83C\uDDFA\uD83C\uDDE6", "\uD83C\uDDFA\uD83C\uDDEC", "\uD83C\uDDFA\uD83C\uDDF2", "\uD83C\uDDFA\uD83C\uDDF3", "\uD83C\uDDFA\uD83C\uDDF8", "\uD83C\uDDFA\uD83C\uDDFE", "\uD83C\uDDFA\uD83C\uDDFF", "\uD83C\uDDFB\uD83C\uDDE6", "\uD83C\uDDFB\uD83C\uDDE8", "\uD83C\uDDFB\uD83C\uDDEA", "\uD83C\uDDFB\uD83C\uDDEC", "\uD83C\uDDFB\uD83C\uDDEE", "\uD83C\uDDFB\uD83C\uDDF3", "\uD83C\uDDFB\uD83C\uDDFA", "\uD83C\uDDFC\uD83C\uDDEB", "\uD83C\uDDFC\uD83C\uDDF8", "\uD83C\uDDFD\uD83C\uDDF0", "\uD83C\uDDFE\uD83C\uDDEA", "\uD83C\uDDFE\uD83C\uDDF9", "\uD83C\uDDFF\uD83C\uDDE6", "\uD83C\uDDFF\uD83C\uDDF2", "\uD83C\uDDFF\uD83C\uDDFC"];
      return RGI_Emoji_Flag_Sequence;
    }
  
    var RGI_Emoji_Modifier_Sequence = {};
  
    var hasRequiredRGI_Emoji_Modifier_Sequence;
    function requireRGI_Emoji_Modifier_Sequence() {
      if (hasRequiredRGI_Emoji_Modifier_Sequence) return RGI_Emoji_Modifier_Sequence;
      hasRequiredRGI_Emoji_Modifier_Sequence = 1;
      var set = regenerate$2.exports();
      RGI_Emoji_Modifier_Sequence.characters = set;
      RGI_Emoji_Modifier_Sequence.strings = ["\u261D\uD83C\uDFFB", "\u261D\uD83C\uDFFC", "\u261D\uD83C\uDFFD", "\u261D\uD83C\uDFFE", "\u261D\uD83C\uDFFF", "\u26F9\uD83C\uDFFB", "\u26F9\uD83C\uDFFC", "\u26F9\uD83C\uDFFD", "\u26F9\uD83C\uDFFE", "\u26F9\uD83C\uDFFF", "\u270A\uD83C\uDFFB", "\u270A\uD83C\uDFFC", "\u270A\uD83C\uDFFD", "\u270A\uD83C\uDFFE", "\u270A\uD83C\uDFFF", "\u270B\uD83C\uDFFB", "\u270B\uD83C\uDFFC", "\u270B\uD83C\uDFFD", "\u270B\uD83C\uDFFE", "\u270B\uD83C\uDFFF", "\u270C\uD83C\uDFFB", "\u270C\uD83C\uDFFC", "\u270C\uD83C\uDFFD", "\u270C\uD83C\uDFFE", "\u270C\uD83C\uDFFF", "\u270D\uD83C\uDFFB", "\u270D\uD83C\uDFFC", "\u270D\uD83C\uDFFD", "\u270D\uD83C\uDFFE", "\u270D\uD83C\uDFFF", "\uD83C\uDF85\uD83C\uDFFB", "\uD83C\uDF85\uD83C\uDFFC", "\uD83C\uDF85\uD83C\uDFFD", "\uD83C\uDF85\uD83C\uDFFE", "\uD83C\uDF85\uD83C\uDFFF", "\uD83C\uDFC2\uD83C\uDFFB", "\uD83C\uDFC2\uD83C\uDFFC", "\uD83C\uDFC2\uD83C\uDFFD", "\uD83C\uDFC2\uD83C\uDFFE", "\uD83C\uDFC2\uD83C\uDFFF", "\uD83C\uDFC3\uD83C\uDFFB", "\uD83C\uDFC3\uD83C\uDFFC", "\uD83C\uDFC3\uD83C\uDFFD", "\uD83C\uDFC3\uD83C\uDFFE", "\uD83C\uDFC3\uD83C\uDFFF", "\uD83C\uDFC4\uD83C\uDFFB", "\uD83C\uDFC4\uD83C\uDFFC", "\uD83C\uDFC4\uD83C\uDFFD", "\uD83C\uDFC4\uD83C\uDFFE", "\uD83C\uDFC4\uD83C\uDFFF", "\uD83C\uDFC7\uD83C\uDFFB", "\uD83C\uDFC7\uD83C\uDFFC", "\uD83C\uDFC7\uD83C\uDFFD", "\uD83C\uDFC7\uD83C\uDFFE", "\uD83C\uDFC7\uD83C\uDFFF", "\uD83C\uDFCA\uD83C\uDFFB", "\uD83C\uDFCA\uD83C\uDFFC", "\uD83C\uDFCA\uD83C\uDFFD", "\uD83C\uDFCA\uD83C\uDFFE", "\uD83C\uDFCA\uD83C\uDFFF", "\uD83C\uDFCB\uD83C\uDFFB", "\uD83C\uDFCB\uD83C\uDFFC", "\uD83C\uDFCB\uD83C\uDFFD", "\uD83C\uDFCB\uD83C\uDFFE", "\uD83C\uDFCB\uD83C\uDFFF", "\uD83C\uDFCC\uD83C\uDFFB", "\uD83C\uDFCC\uD83C\uDFFC", "\uD83C\uDFCC\uD83C\uDFFD", "\uD83C\uDFCC\uD83C\uDFFE", "\uD83C\uDFCC\uD83C\uDFFF", "\uD83D\uDC42\uD83C\uDFFB", "\uD83D\uDC42\uD83C\uDFFC", "\uD83D\uDC42\uD83C\uDFFD", "\uD83D\uDC42\uD83C\uDFFE", "\uD83D\uDC42\uD83C\uDFFF", "\uD83D\uDC43\uD83C\uDFFB", "\uD83D\uDC43\uD83C\uDFFC", "\uD83D\uDC43\uD83C\uDFFD", "\uD83D\uDC43\uD83C\uDFFE", "\uD83D\uDC43\uD83C\uDFFF", "\uD83D\uDC46\uD83C\uDFFB", "\uD83D\uDC46\uD83C\uDFFC", "\uD83D\uDC46\uD83C\uDFFD", "\uD83D\uDC46\uD83C\uDFFE", "\uD83D\uDC46\uD83C\uDFFF", "\uD83D\uDC47\uD83C\uDFFB", "\uD83D\uDC47\uD83C\uDFFC", "\uD83D\uDC47\uD83C\uDFFD", "\uD83D\uDC47\uD83C\uDFFE", "\uD83D\uDC47\uD83C\uDFFF", "\uD83D\uDC48\uD83C\uDFFB", "\uD83D\uDC48\uD83C\uDFFC", "\uD83D\uDC48\uD83C\uDFFD", "\uD83D\uDC48\uD83C\uDFFE", "\uD83D\uDC48\uD83C\uDFFF", "\uD83D\uDC49\uD83C\uDFFB", "\uD83D\uDC49\uD83C\uDFFC", "\uD83D\uDC49\uD83C\uDFFD", "\uD83D\uDC49\uD83C\uDFFE", "\uD83D\uDC49\uD83C\uDFFF", "\uD83D\uDC4A\uD83C\uDFFB", "\uD83D\uDC4A\uD83C\uDFFC", "\uD83D\uDC4A\uD83C\uDFFD", "\uD83D\uDC4A\uD83C\uDFFE", "\uD83D\uDC4A\uD83C\uDFFF", "\uD83D\uDC4B\uD83C\uDFFB", "\uD83D\uDC4B\uD83C\uDFFC", "\uD83D\uDC4B\uD83C\uDFFD", "\uD83D\uDC4B\uD83C\uDFFE", "\uD83D\uDC4B\uD83C\uDFFF", "\uD83D\uDC4C\uD83C\uDFFB", "\uD83D\uDC4C\uD83C\uDFFC", "\uD83D\uDC4C\uD83C\uDFFD", "\uD83D\uDC4C\uD83C\uDFFE", "\uD83D\uDC4C\uD83C\uDFFF", "\uD83D\uDC4D\uD83C\uDFFB", "\uD83D\uDC4D\uD83C\uDFFC", "\uD83D\uDC4D\uD83C\uDFFD", "\uD83D\uDC4D\uD83C\uDFFE", "\uD83D\uDC4D\uD83C\uDFFF", "\uD83D\uDC4E\uD83C\uDFFB", "\uD83D\uDC4E\uD83C\uDFFC", "\uD83D\uDC4E\uD83C\uDFFD", "\uD83D\uDC4E\uD83C\uDFFE", "\uD83D\uDC4E\uD83C\uDFFF", "\uD83D\uDC4F\uD83C\uDFFB", "\uD83D\uDC4F\uD83C\uDFFC", "\uD83D\uDC4F\uD83C\uDFFD", "\uD83D\uDC4F\uD83C\uDFFE", "\uD83D\uDC4F\uD83C\uDFFF", "\uD83D\uDC50\uD83C\uDFFB", "\uD83D\uDC50\uD83C\uDFFC", "\uD83D\uDC50\uD83C\uDFFD", "\uD83D\uDC50\uD83C\uDFFE", "\uD83D\uDC50\uD83C\uDFFF", "\uD83D\uDC66\uD83C\uDFFB", "\uD83D\uDC66\uD83C\uDFFC", "\uD83D\uDC66\uD83C\uDFFD", "\uD83D\uDC66\uD83C\uDFFE", "\uD83D\uDC66\uD83C\uDFFF", "\uD83D\uDC67\uD83C\uDFFB", "\uD83D\uDC67\uD83C\uDFFC", "\uD83D\uDC67\uD83C\uDFFD", "\uD83D\uDC67\uD83C\uDFFE", "\uD83D\uDC67\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC6B\uD83C\uDFFB", "\uD83D\uDC6B\uD83C\uDFFC", "\uD83D\uDC6B\uD83C\uDFFD", "\uD83D\uDC6B\uD83C\uDFFE", "\uD83D\uDC6B\uD83C\uDFFF", "\uD83D\uDC6C\uD83C\uDFFB", "\uD83D\uDC6C\uD83C\uDFFC", "\uD83D\uDC6C\uD83C\uDFFD", "\uD83D\uDC6C\uD83C\uDFFE", "\uD83D\uDC6C\uD83C\uDFFF", "\uD83D\uDC6D\uD83C\uDFFB", "\uD83D\uDC6D\uD83C\uDFFC", "\uD83D\uDC6D\uD83C\uDFFD", "\uD83D\uDC6D\uD83C\uDFFE", "\uD83D\uDC6D\uD83C\uDFFF", "\uD83D\uDC6E\uD83C\uDFFB", "\uD83D\uDC6E\uD83C\uDFFC", "\uD83D\uDC6E\uD83C\uDFFD", "\uD83D\uDC6E\uD83C\uDFFE", "\uD83D\uDC6E\uD83C\uDFFF", "\uD83D\uDC70\uD83C\uDFFB", "\uD83D\uDC70\uD83C\uDFFC", "\uD83D\uDC70\uD83C\uDFFD", "\uD83D\uDC70\uD83C\uDFFE", "\uD83D\uDC70\uD83C\uDFFF", "\uD83D\uDC71\uD83C\uDFFB", "\uD83D\uDC71\uD83C\uDFFC", "\uD83D\uDC71\uD83C\uDFFD", "\uD83D\uDC71\uD83C\uDFFE", "\uD83D\uDC71\uD83C\uDFFF", "\uD83D\uDC72\uD83C\uDFFB", "\uD83D\uDC72\uD83C\uDFFC", "\uD83D\uDC72\uD83C\uDFFD", "\uD83D\uDC72\uD83C\uDFFE", "\uD83D\uDC72\uD83C\uDFFF", "\uD83D\uDC73\uD83C\uDFFB", "\uD83D\uDC73\uD83C\uDFFC", "\uD83D\uDC73\uD83C\uDFFD", "\uD83D\uDC73\uD83C\uDFFE", "\uD83D\uDC73\uD83C\uDFFF", "\uD83D\uDC74\uD83C\uDFFB", "\uD83D\uDC74\uD83C\uDFFC", "\uD83D\uDC74\uD83C\uDFFD", "\uD83D\uDC74\uD83C\uDFFE", "\uD83D\uDC74\uD83C\uDFFF", "\uD83D\uDC75\uD83C\uDFFB", "\uD83D\uDC75\uD83C\uDFFC", "\uD83D\uDC75\uD83C\uDFFD", "\uD83D\uDC75\uD83C\uDFFE", "\uD83D\uDC75\uD83C\uDFFF", "\uD83D\uDC76\uD83C\uDFFB", "\uD83D\uDC76\uD83C\uDFFC", "\uD83D\uDC76\uD83C\uDFFD", "\uD83D\uDC76\uD83C\uDFFE", "\uD83D\uDC76\uD83C\uDFFF", "\uD83D\uDC77\uD83C\uDFFB", "\uD83D\uDC77\uD83C\uDFFC", "\uD83D\uDC77\uD83C\uDFFD", "\uD83D\uDC77\uD83C\uDFFE", "\uD83D\uDC77\uD83C\uDFFF", "\uD83D\uDC78\uD83C\uDFFB", "\uD83D\uDC78\uD83C\uDFFC", "\uD83D\uDC78\uD83C\uDFFD", "\uD83D\uDC78\uD83C\uDFFE", "\uD83D\uDC78\uD83C\uDFFF", "\uD83D\uDC7C\uD83C\uDFFB", "\uD83D\uDC7C\uD83C\uDFFC", "\uD83D\uDC7C\uD83C\uDFFD", "\uD83D\uDC7C\uD83C\uDFFE", "\uD83D\uDC7C\uD83C\uDFFF", "\uD83D\uDC81\uD83C\uDFFB", "\uD83D\uDC81\uD83C\uDFFC", "\uD83D\uDC81\uD83C\uDFFD", "\uD83D\uDC81\uD83C\uDFFE", "\uD83D\uDC81\uD83C\uDFFF", "\uD83D\uDC82\uD83C\uDFFB", "\uD83D\uDC82\uD83C\uDFFC", "\uD83D\uDC82\uD83C\uDFFD", "\uD83D\uDC82\uD83C\uDFFE", "\uD83D\uDC82\uD83C\uDFFF", "\uD83D\uDC83\uD83C\uDFFB", "\uD83D\uDC83\uD83C\uDFFC", "\uD83D\uDC83\uD83C\uDFFD", "\uD83D\uDC83\uD83C\uDFFE", "\uD83D\uDC83\uD83C\uDFFF", "\uD83D\uDC85\uD83C\uDFFB", "\uD83D\uDC85\uD83C\uDFFC", "\uD83D\uDC85\uD83C\uDFFD", "\uD83D\uDC85\uD83C\uDFFE", "\uD83D\uDC85\uD83C\uDFFF", "\uD83D\uDC86\uD83C\uDFFB", "\uD83D\uDC86\uD83C\uDFFC", "\uD83D\uDC86\uD83C\uDFFD", "\uD83D\uDC86\uD83C\uDFFE", "\uD83D\uDC86\uD83C\uDFFF", "\uD83D\uDC87\uD83C\uDFFB", "\uD83D\uDC87\uD83C\uDFFC", "\uD83D\uDC87\uD83C\uDFFD", "\uD83D\uDC87\uD83C\uDFFE", "\uD83D\uDC87\uD83C\uDFFF", "\uD83D\uDC8F\uD83C\uDFFB", "\uD83D\uDC8F\uD83C\uDFFC", "\uD83D\uDC8F\uD83C\uDFFD", "\uD83D\uDC8F\uD83C\uDFFE", "\uD83D\uDC8F\uD83C\uDFFF", "\uD83D\uDC91\uD83C\uDFFB", "\uD83D\uDC91\uD83C\uDFFC", "\uD83D\uDC91\uD83C\uDFFD", "\uD83D\uDC91\uD83C\uDFFE", "\uD83D\uDC91\uD83C\uDFFF", "\uD83D\uDCAA\uD83C\uDFFB", "\uD83D\uDCAA\uD83C\uDFFC", "\uD83D\uDCAA\uD83C\uDFFD", "\uD83D\uDCAA\uD83C\uDFFE", "\uD83D\uDCAA\uD83C\uDFFF", "\uD83D\uDD74\uD83C\uDFFB", "\uD83D\uDD74\uD83C\uDFFC", "\uD83D\uDD74\uD83C\uDFFD", "\uD83D\uDD74\uD83C\uDFFE", "\uD83D\uDD74\uD83C\uDFFF", "\uD83D\uDD75\uD83C\uDFFB", "\uD83D\uDD75\uD83C\uDFFC", "\uD83D\uDD75\uD83C\uDFFD", "\uD83D\uDD75\uD83C\uDFFE", "\uD83D\uDD75\uD83C\uDFFF", "\uD83D\uDD7A\uD83C\uDFFB", "\uD83D\uDD7A\uD83C\uDFFC", "\uD83D\uDD7A\uD83C\uDFFD", "\uD83D\uDD7A\uD83C\uDFFE", "\uD83D\uDD7A\uD83C\uDFFF", "\uD83D\uDD90\uD83C\uDFFB", "\uD83D\uDD90\uD83C\uDFFC", "\uD83D\uDD90\uD83C\uDFFD", "\uD83D\uDD90\uD83C\uDFFE", "\uD83D\uDD90\uD83C\uDFFF", "\uD83D\uDD95\uD83C\uDFFB", "\uD83D\uDD95\uD83C\uDFFC", "\uD83D\uDD95\uD83C\uDFFD", "\uD83D\uDD95\uD83C\uDFFE", "\uD83D\uDD95\uD83C\uDFFF", "\uD83D\uDD96\uD83C\uDFFB", "\uD83D\uDD96\uD83C\uDFFC", "\uD83D\uDD96\uD83C\uDFFD", "\uD83D\uDD96\uD83C\uDFFE", "\uD83D\uDD96\uD83C\uDFFF", "\uD83D\uDE45\uD83C\uDFFB", "\uD83D\uDE45\uD83C\uDFFC", "\uD83D\uDE45\uD83C\uDFFD", "\uD83D\uDE45\uD83C\uDFFE", "\uD83D\uDE45\uD83C\uDFFF", "\uD83D\uDE46\uD83C\uDFFB", "\uD83D\uDE46\uD83C\uDFFC", "\uD83D\uDE46\uD83C\uDFFD", "\uD83D\uDE46\uD83C\uDFFE", "\uD83D\uDE46\uD83C\uDFFF", "\uD83D\uDE47\uD83C\uDFFB", "\uD83D\uDE47\uD83C\uDFFC", "\uD83D\uDE47\uD83C\uDFFD", "\uD83D\uDE47\uD83C\uDFFE", "\uD83D\uDE47\uD83C\uDFFF", "\uD83D\uDE4B\uD83C\uDFFB", "\uD83D\uDE4B\uD83C\uDFFC", "\uD83D\uDE4B\uD83C\uDFFD", "\uD83D\uDE4B\uD83C\uDFFE", "\uD83D\uDE4B\uD83C\uDFFF", "\uD83D\uDE4C\uD83C\uDFFB", "\uD83D\uDE4C\uD83C\uDFFC", "\uD83D\uDE4C\uD83C\uDFFD", "\uD83D\uDE4C\uD83C\uDFFE", "\uD83D\uDE4C\uD83C\uDFFF", "\uD83D\uDE4D\uD83C\uDFFB", "\uD83D\uDE4D\uD83C\uDFFC", "\uD83D\uDE4D\uD83C\uDFFD", "\uD83D\uDE4D\uD83C\uDFFE", "\uD83D\uDE4D\uD83C\uDFFF", "\uD83D\uDE4E\uD83C\uDFFB", "\uD83D\uDE4E\uD83C\uDFFC", "\uD83D\uDE4E\uD83C\uDFFD", "\uD83D\uDE4E\uD83C\uDFFE", "\uD83D\uDE4E\uD83C\uDFFF", "\uD83D\uDE4F\uD83C\uDFFB", "\uD83D\uDE4F\uD83C\uDFFC", "\uD83D\uDE4F\uD83C\uDFFD", "\uD83D\uDE4F\uD83C\uDFFE", "\uD83D\uDE4F\uD83C\uDFFF", "\uD83D\uDEA3\uD83C\uDFFB", "\uD83D\uDEA3\uD83C\uDFFC", "\uD83D\uDEA3\uD83C\uDFFD", "\uD83D\uDEA3\uD83C\uDFFE", "\uD83D\uDEA3\uD83C\uDFFF", "\uD83D\uDEB4\uD83C\uDFFB", "\uD83D\uDEB4\uD83C\uDFFC", "\uD83D\uDEB4\uD83C\uDFFD", "\uD83D\uDEB4\uD83C\uDFFE", "\uD83D\uDEB4\uD83C\uDFFF", "\uD83D\uDEB5\uD83C\uDFFB", "\uD83D\uDEB5\uD83C\uDFFC", "\uD83D\uDEB5\uD83C\uDFFD", "\uD83D\uDEB5\uD83C\uDFFE", "\uD83D\uDEB5\uD83C\uDFFF", "\uD83D\uDEB6\uD83C\uDFFB", "\uD83D\uDEB6\uD83C\uDFFC", "\uD83D\uDEB6\uD83C\uDFFD", "\uD83D\uDEB6\uD83C\uDFFE", "\uD83D\uDEB6\uD83C\uDFFF", "\uD83D\uDEC0\uD83C\uDFFB", "\uD83D\uDEC0\uD83C\uDFFC", "\uD83D\uDEC0\uD83C\uDFFD", "\uD83D\uDEC0\uD83C\uDFFE", "\uD83D\uDEC0\uD83C\uDFFF", "\uD83D\uDECC\uD83C\uDFFB", "\uD83D\uDECC\uD83C\uDFFC", "\uD83D\uDECC\uD83C\uDFFD", "\uD83D\uDECC\uD83C\uDFFE", "\uD83D\uDECC\uD83C\uDFFF", "\uD83E\uDD0C\uD83C\uDFFB", "\uD83E\uDD0C\uD83C\uDFFC", "\uD83E\uDD0C\uD83C\uDFFD", "\uD83E\uDD0C\uD83C\uDFFE", "\uD83E\uDD0C\uD83C\uDFFF", "\uD83E\uDD0F\uD83C\uDFFB", "\uD83E\uDD0F\uD83C\uDFFC", "\uD83E\uDD0F\uD83C\uDFFD", "\uD83E\uDD0F\uD83C\uDFFE", "\uD83E\uDD0F\uD83C\uDFFF", "\uD83E\uDD18\uD83C\uDFFB", "\uD83E\uDD18\uD83C\uDFFC", "\uD83E\uDD18\uD83C\uDFFD", "\uD83E\uDD18\uD83C\uDFFE", "\uD83E\uDD18\uD83C\uDFFF", "\uD83E\uDD19\uD83C\uDFFB", "\uD83E\uDD19\uD83C\uDFFC", "\uD83E\uDD19\uD83C\uDFFD", "\uD83E\uDD19\uD83C\uDFFE", "\uD83E\uDD19\uD83C\uDFFF", "\uD83E\uDD1A\uD83C\uDFFB", "\uD83E\uDD1A\uD83C\uDFFC", "\uD83E\uDD1A\uD83C\uDFFD", "\uD83E\uDD1A\uD83C\uDFFE", "\uD83E\uDD1A\uD83C\uDFFF", "\uD83E\uDD1B\uD83C\uDFFB", "\uD83E\uDD1B\uD83C\uDFFC", "\uD83E\uDD1B\uD83C\uDFFD", "\uD83E\uDD1B\uD83C\uDFFE", "\uD83E\uDD1B\uD83C\uDFFF", "\uD83E\uDD1C\uD83C\uDFFB", "\uD83E\uDD1C\uD83C\uDFFC", "\uD83E\uDD1C\uD83C\uDFFD", "\uD83E\uDD1C\uD83C\uDFFE", "\uD83E\uDD1C\uD83C\uDFFF", "\uD83E\uDD1D\uD83C\uDFFB", "\uD83E\uDD1D\uD83C\uDFFC", "\uD83E\uDD1D\uD83C\uDFFD", "\uD83E\uDD1D\uD83C\uDFFE", "\uD83E\uDD1D\uD83C\uDFFF", "\uD83E\uDD1E\uD83C\uDFFB", "\uD83E\uDD1E\uD83C\uDFFC", "\uD83E\uDD1E\uD83C\uDFFD", "\uD83E\uDD1E\uD83C\uDFFE", "\uD83E\uDD1E\uD83C\uDFFF", "\uD83E\uDD1F\uD83C\uDFFB", "\uD83E\uDD1F\uD83C\uDFFC", "\uD83E\uDD1F\uD83C\uDFFD", "\uD83E\uDD1F\uD83C\uDFFE", "\uD83E\uDD1F\uD83C\uDFFF", "\uD83E\uDD26\uD83C\uDFFB", "\uD83E\uDD26\uD83C\uDFFC", "\uD83E\uDD26\uD83C\uDFFD", "\uD83E\uDD26\uD83C\uDFFE", "\uD83E\uDD26\uD83C\uDFFF", "\uD83E\uDD30\uD83C\uDFFB", "\uD83E\uDD30\uD83C\uDFFC", "\uD83E\uDD30\uD83C\uDFFD", "\uD83E\uDD30\uD83C\uDFFE", "\uD83E\uDD30\uD83C\uDFFF", "\uD83E\uDD31\uD83C\uDFFB", "\uD83E\uDD31\uD83C\uDFFC", "\uD83E\uDD31\uD83C\uDFFD", "\uD83E\uDD31\uD83C\uDFFE", "\uD83E\uDD31\uD83C\uDFFF", "\uD83E\uDD32\uD83C\uDFFB", "\uD83E\uDD32\uD83C\uDFFC", "\uD83E\uDD32\uD83C\uDFFD", "\uD83E\uDD32\uD83C\uDFFE", "\uD83E\uDD32\uD83C\uDFFF", "\uD83E\uDD33\uD83C\uDFFB", "\uD83E\uDD33\uD83C\uDFFC", "\uD83E\uDD33\uD83C\uDFFD", "\uD83E\uDD33\uD83C\uDFFE", "\uD83E\uDD33\uD83C\uDFFF", "\uD83E\uDD34\uD83C\uDFFB", "\uD83E\uDD34\uD83C\uDFFC", "\uD83E\uDD34\uD83C\uDFFD", "\uD83E\uDD34\uD83C\uDFFE", "\uD83E\uDD34\uD83C\uDFFF", "\uD83E\uDD35\uD83C\uDFFB", "\uD83E\uDD35\uD83C\uDFFC", "\uD83E\uDD35\uD83C\uDFFD", "\uD83E\uDD35\uD83C\uDFFE", "\uD83E\uDD35\uD83C\uDFFF", "\uD83E\uDD36\uD83C\uDFFB", "\uD83E\uDD36\uD83C\uDFFC", "\uD83E\uDD36\uD83C\uDFFD", "\uD83E\uDD36\uD83C\uDFFE", "\uD83E\uDD36\uD83C\uDFFF", "\uD83E\uDD37\uD83C\uDFFB", "\uD83E\uDD37\uD83C\uDFFC", "\uD83E\uDD37\uD83C\uDFFD", "\uD83E\uDD37\uD83C\uDFFE", "\uD83E\uDD37\uD83C\uDFFF", "\uD83E\uDD38\uD83C\uDFFB", "\uD83E\uDD38\uD83C\uDFFC", "\uD83E\uDD38\uD83C\uDFFD", "\uD83E\uDD38\uD83C\uDFFE", "\uD83E\uDD38\uD83C\uDFFF", "\uD83E\uDD39\uD83C\uDFFB", "\uD83E\uDD39\uD83C\uDFFC", "\uD83E\uDD39\uD83C\uDFFD", "\uD83E\uDD39\uD83C\uDFFE", "\uD83E\uDD39\uD83C\uDFFF", "\uD83E\uDD3D\uD83C\uDFFB", "\uD83E\uDD3D\uD83C\uDFFC", "\uD83E\uDD3D\uD83C\uDFFD", "\uD83E\uDD3D\uD83C\uDFFE", "\uD83E\uDD3D\uD83C\uDFFF", "\uD83E\uDD3E\uD83C\uDFFB", "\uD83E\uDD3E\uD83C\uDFFC", "\uD83E\uDD3E\uD83C\uDFFD", "\uD83E\uDD3E\uD83C\uDFFE", "\uD83E\uDD3E\uD83C\uDFFF", "\uD83E\uDD77\uD83C\uDFFB", "\uD83E\uDD77\uD83C\uDFFC", "\uD83E\uDD77\uD83C\uDFFD", "\uD83E\uDD77\uD83C\uDFFE", "\uD83E\uDD77\uD83C\uDFFF", "\uD83E\uDDB5\uD83C\uDFFB", "\uD83E\uDDB5\uD83C\uDFFC", "\uD83E\uDDB5\uD83C\uDFFD", "\uD83E\uDDB5\uD83C\uDFFE", "\uD83E\uDDB5\uD83C\uDFFF", "\uD83E\uDDB6\uD83C\uDFFB", "\uD83E\uDDB6\uD83C\uDFFC", "\uD83E\uDDB6\uD83C\uDFFD", "\uD83E\uDDB6\uD83C\uDFFE", "\uD83E\uDDB6\uD83C\uDFFF", "\uD83E\uDDB8\uD83C\uDFFB", "\uD83E\uDDB8\uD83C\uDFFC", "\uD83E\uDDB8\uD83C\uDFFD", "\uD83E\uDDB8\uD83C\uDFFE", "\uD83E\uDDB8\uD83C\uDFFF", "\uD83E\uDDB9\uD83C\uDFFB", "\uD83E\uDDB9\uD83C\uDFFC", "\uD83E\uDDB9\uD83C\uDFFD", "\uD83E\uDDB9\uD83C\uDFFE", "\uD83E\uDDB9\uD83C\uDFFF", "\uD83E\uDDBB\uD83C\uDFFB", "\uD83E\uDDBB\uD83C\uDFFC", "\uD83E\uDDBB\uD83C\uDFFD", "\uD83E\uDDBB\uD83C\uDFFE", "\uD83E\uDDBB\uD83C\uDFFF", "\uD83E\uDDCD\uD83C\uDFFB", "\uD83E\uDDCD\uD83C\uDFFC", "\uD83E\uDDCD\uD83C\uDFFD", "\uD83E\uDDCD\uD83C\uDFFE", "\uD83E\uDDCD\uD83C\uDFFF", "\uD83E\uDDCE\uD83C\uDFFB", "\uD83E\uDDCE\uD83C\uDFFC", "\uD83E\uDDCE\uD83C\uDFFD", "\uD83E\uDDCE\uD83C\uDFFE", "\uD83E\uDDCE\uD83C\uDFFF", "\uD83E\uDDCF\uD83C\uDFFB", "\uD83E\uDDCF\uD83C\uDFFC", "\uD83E\uDDCF\uD83C\uDFFD", "\uD83E\uDDCF\uD83C\uDFFE", "\uD83E\uDDCF\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD2\uD83C\uDFFB", "\uD83E\uDDD2\uD83C\uDFFC", "\uD83E\uDDD2\uD83C\uDFFD", "\uD83E\uDDD2\uD83C\uDFFE", "\uD83E\uDDD2\uD83C\uDFFF", "\uD83E\uDDD3\uD83C\uDFFB", "\uD83E\uDDD3\uD83C\uDFFC", "\uD83E\uDDD3\uD83C\uDFFD", "\uD83E\uDDD3\uD83C\uDFFE", "\uD83E\uDDD3\uD83C\uDFFF", "\uD83E\uDDD4\uD83C\uDFFB", "\uD83E\uDDD4\uD83C\uDFFC", "\uD83E\uDDD4\uD83C\uDFFD", "\uD83E\uDDD4\uD83C\uDFFE", "\uD83E\uDDD4\uD83C\uDFFF", "\uD83E\uDDD5\uD83C\uDFFB", "\uD83E\uDDD5\uD83C\uDFFC", "\uD83E\uDDD5\uD83C\uDFFD", "\uD83E\uDDD5\uD83C\uDFFE", "\uD83E\uDDD5\uD83C\uDFFF", "\uD83E\uDDD6\uD83C\uDFFB", "\uD83E\uDDD6\uD83C\uDFFC", "\uD83E\uDDD6\uD83C\uDFFD", "\uD83E\uDDD6\uD83C\uDFFE", "\uD83E\uDDD6\uD83C\uDFFF", "\uD83E\uDDD7\uD83C\uDFFB", "\uD83E\uDDD7\uD83C\uDFFC", "\uD83E\uDDD7\uD83C\uDFFD", "\uD83E\uDDD7\uD83C\uDFFE", "\uD83E\uDDD7\uD83C\uDFFF", "\uD83E\uDDD8\uD83C\uDFFB", "\uD83E\uDDD8\uD83C\uDFFC", "\uD83E\uDDD8\uD83C\uDFFD", "\uD83E\uDDD8\uD83C\uDFFE", "\uD83E\uDDD8\uD83C\uDFFF", "\uD83E\uDDD9\uD83C\uDFFB", "\uD83E\uDDD9\uD83C\uDFFC", "\uD83E\uDDD9\uD83C\uDFFD", "\uD83E\uDDD9\uD83C\uDFFE", "\uD83E\uDDD9\uD83C\uDFFF", "\uD83E\uDDDA\uD83C\uDFFB", "\uD83E\uDDDA\uD83C\uDFFC", "\uD83E\uDDDA\uD83C\uDFFD", "\uD83E\uDDDA\uD83C\uDFFE", "\uD83E\uDDDA\uD83C\uDFFF", "\uD83E\uDDDB\uD83C\uDFFB", "\uD83E\uDDDB\uD83C\uDFFC", "\uD83E\uDDDB\uD83C\uDFFD", "\uD83E\uDDDB\uD83C\uDFFE", "\uD83E\uDDDB\uD83C\uDFFF", "\uD83E\uDDDC\uD83C\uDFFB", "\uD83E\uDDDC\uD83C\uDFFC", "\uD83E\uDDDC\uD83C\uDFFD", "\uD83E\uDDDC\uD83C\uDFFE", "\uD83E\uDDDC\uD83C\uDFFF", "\uD83E\uDDDD\uD83C\uDFFB", "\uD83E\uDDDD\uD83C\uDFFC", "\uD83E\uDDDD\uD83C\uDFFD", "\uD83E\uDDDD\uD83C\uDFFE", "\uD83E\uDDDD\uD83C\uDFFF", "\uD83E\uDEC3\uD83C\uDFFB", "\uD83E\uDEC3\uD83C\uDFFC", "\uD83E\uDEC3\uD83C\uDFFD", "\uD83E\uDEC3\uD83C\uDFFE", "\uD83E\uDEC3\uD83C\uDFFF", "\uD83E\uDEC4\uD83C\uDFFB", "\uD83E\uDEC4\uD83C\uDFFC", "\uD83E\uDEC4\uD83C\uDFFD", "\uD83E\uDEC4\uD83C\uDFFE", "\uD83E\uDEC4\uD83C\uDFFF", "\uD83E\uDEC5\uD83C\uDFFB", "\uD83E\uDEC5\uD83C\uDFFC", "\uD83E\uDEC5\uD83C\uDFFD", "\uD83E\uDEC5\uD83C\uDFFE", "\uD83E\uDEC5\uD83C\uDFFF", "\uD83E\uDEF0\uD83C\uDFFB", "\uD83E\uDEF0\uD83C\uDFFC", "\uD83E\uDEF0\uD83C\uDFFD", "\uD83E\uDEF0\uD83C\uDFFE", "\uD83E\uDEF0\uD83C\uDFFF", "\uD83E\uDEF1\uD83C\uDFFB", "\uD83E\uDEF1\uD83C\uDFFC", "\uD83E\uDEF1\uD83C\uDFFD", "\uD83E\uDEF1\uD83C\uDFFE", "\uD83E\uDEF1\uD83C\uDFFF", "\uD83E\uDEF2\uD83C\uDFFB", "\uD83E\uDEF2\uD83C\uDFFC", "\uD83E\uDEF2\uD83C\uDFFD", "\uD83E\uDEF2\uD83C\uDFFE", "\uD83E\uDEF2\uD83C\uDFFF", "\uD83E\uDEF3\uD83C\uDFFB", "\uD83E\uDEF3\uD83C\uDFFC", "\uD83E\uDEF3\uD83C\uDFFD", "\uD83E\uDEF3\uD83C\uDFFE", "\uD83E\uDEF3\uD83C\uDFFF", "\uD83E\uDEF4\uD83C\uDFFB", "\uD83E\uDEF4\uD83C\uDFFC", "\uD83E\uDEF4\uD83C\uDFFD", "\uD83E\uDEF4\uD83C\uDFFE", "\uD83E\uDEF4\uD83C\uDFFF", "\uD83E\uDEF5\uD83C\uDFFB", "\uD83E\uDEF5\uD83C\uDFFC", "\uD83E\uDEF5\uD83C\uDFFD", "\uD83E\uDEF5\uD83C\uDFFE", "\uD83E\uDEF5\uD83C\uDFFF", "\uD83E\uDEF6\uD83C\uDFFB", "\uD83E\uDEF6\uD83C\uDFFC", "\uD83E\uDEF6\uD83C\uDFFD", "\uD83E\uDEF6\uD83C\uDFFE", "\uD83E\uDEF6\uD83C\uDFFF", "\uD83E\uDEF7\uD83C\uDFFB", "\uD83E\uDEF7\uD83C\uDFFC", "\uD83E\uDEF7\uD83C\uDFFD", "\uD83E\uDEF7\uD83C\uDFFE", "\uD83E\uDEF7\uD83C\uDFFF", "\uD83E\uDEF8\uD83C\uDFFB", "\uD83E\uDEF8\uD83C\uDFFC", "\uD83E\uDEF8\uD83C\uDFFD", "\uD83E\uDEF8\uD83C\uDFFE", "\uD83E\uDEF8\uD83C\uDFFF"];
      return RGI_Emoji_Modifier_Sequence;
    }
  
    var RGI_Emoji_Tag_Sequence = {};
  
    var hasRequiredRGI_Emoji_Tag_Sequence;
    function requireRGI_Emoji_Tag_Sequence() {
      if (hasRequiredRGI_Emoji_Tag_Sequence) return RGI_Emoji_Tag_Sequence;
      hasRequiredRGI_Emoji_Tag_Sequence = 1;
      var set = regenerate$2.exports();
      RGI_Emoji_Tag_Sequence.characters = set;
      RGI_Emoji_Tag_Sequence.strings = ["\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67\uDB40\uDC7F", "\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74\uDB40\uDC7F", "\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73\uDB40\uDC7F"];
      return RGI_Emoji_Tag_Sequence;
    }
  
    var RGI_Emoji_ZWJ_Sequence = {};
  
    var hasRequiredRGI_Emoji_ZWJ_Sequence;
    function requireRGI_Emoji_ZWJ_Sequence() {
      if (hasRequiredRGI_Emoji_ZWJ_Sequence) return RGI_Emoji_ZWJ_Sequence;
      hasRequiredRGI_Emoji_ZWJ_Sequence = 1;
      var set = regenerate$2.exports();
      RGI_Emoji_ZWJ_Sequence.characters = set;
      RGI_Emoji_ZWJ_Sequence.strings = ["\uD83D\uDC68\u200D\u2764\uFE0F\u200D\uD83D\uDC68", "\uD83D\uDC68\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68", "\uD83D\uDC68\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC66\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC67", "\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC67", "\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC66\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC67", "\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC67", "\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC67", "\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC67", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC68", "\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC69", "\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68", "\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69", "\uD83D\uDC69\u200D\uD83D\uDC66", "\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66", "\uD83D\uDC69\u200D\uD83D\uDC67", "\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC66", "\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC67", "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC66", "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66", "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC67", "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC66", "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC67", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83E\uDDD1\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDF84", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDF84", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDF84", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDF84", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDF84", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDEF1\uD83C\uDFFB\u200D\uD83E\uDEF2\uD83C\uDFFC", "\uD83E\uDEF1\uD83C\uDFFB\u200D\uD83E\uDEF2\uD83C\uDFFD", "\uD83E\uDEF1\uD83C\uDFFB\u200D\uD83E\uDEF2\uD83C\uDFFE", "\uD83E\uDEF1\uD83C\uDFFB\u200D\uD83E\uDEF2\uD83C\uDFFF", "\uD83E\uDEF1\uD83C\uDFFC\u200D\uD83E\uDEF2\uD83C\uDFFB", "\uD83E\uDEF1\uD83C\uDFFC\u200D\uD83E\uDEF2\uD83C\uDFFD", "\uD83E\uDEF1\uD83C\uDFFC\u200D\uD83E\uDEF2\uD83C\uDFFE", "\uD83E\uDEF1\uD83C\uDFFC\u200D\uD83E\uDEF2\uD83C\uDFFF", "\uD83E\uDEF1\uD83C\uDFFD\u200D\uD83E\uDEF2\uD83C\uDFFB", "\uD83E\uDEF1\uD83C\uDFFD\u200D\uD83E\uDEF2\uD83C\uDFFC", "\uD83E\uDEF1\uD83C\uDFFD\u200D\uD83E\uDEF2\uD83C\uDFFE", "\uD83E\uDEF1\uD83C\uDFFD\u200D\uD83E\uDEF2\uD83C\uDFFF", "\uD83E\uDEF1\uD83C\uDFFE\u200D\uD83E\uDEF2\uD83C\uDFFB", "\uD83E\uDEF1\uD83C\uDFFE\u200D\uD83E\uDEF2\uD83C\uDFFC", "\uD83E\uDEF1\uD83C\uDFFE\u200D\uD83E\uDEF2\uD83C\uDFFD", "\uD83E\uDEF1\uD83C\uDFFE\u200D\uD83E\uDEF2\uD83C\uDFFF", "\uD83E\uDEF1\uD83C\uDFFF\u200D\uD83E\uDEF2\uD83C\uDFFB", "\uD83E\uDEF1\uD83C\uDFFF\u200D\uD83E\uDEF2\uD83C\uDFFC", "\uD83E\uDEF1\uD83C\uDFFF\u200D\uD83E\uDEF2\uD83C\uDFFD", "\uD83E\uDEF1\uD83C\uDFFF\u200D\uD83E\uDEF2\uD83C\uDFFE", "\uD83D\uDC68\u200D\u2695\uFE0F", "\uD83D\uDC68\u200D\u2696\uFE0F", "\uD83D\uDC68\u200D\u2708\uFE0F", "\uD83D\uDC68\u200D\uD83C\uDF3E", "\uD83D\uDC68\u200D\uD83C\uDF73", "\uD83D\uDC68\u200D\uD83C\uDF7C", "\uD83D\uDC68\u200D\uD83C\uDF93", "\uD83D\uDC68\u200D\uD83C\uDFA4", "\uD83D\uDC68\u200D\uD83C\uDFA8", "\uD83D\uDC68\u200D\uD83C\uDFEB", "\uD83D\uDC68\u200D\uD83C\uDFED", "\uD83D\uDC68\u200D\uD83D\uDCBB", "\uD83D\uDC68\u200D\uD83D\uDCBC", "\uD83D\uDC68\u200D\uD83D\uDD27", "\uD83D\uDC68\u200D\uD83D\uDD2C", "\uD83D\uDC68\u200D\uD83D\uDE80", "\uD83D\uDC68\u200D\uD83D\uDE92", "\uD83D\uDC68\u200D\uD83E\uDDAF", "\uD83D\uDC68\u200D\uD83E\uDDBC", "\uD83D\uDC68\u200D\uD83E\uDDBD", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2695\uFE0F", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2696\uFE0F", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2708\uFE0F", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDF3E", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDF73", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDF7C", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDF93", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFA4", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFA8", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFEB", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFED", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDCBB", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDCBC", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDD27", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDD2C", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDE80", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDE92", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDAF", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDBC", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDBD", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2695\uFE0F", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2696\uFE0F", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2708\uFE0F", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDF3E", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDF73", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDF7C", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDF93", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA4", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFEB", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFED", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDCBB", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDCBC", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDD27", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDD2C", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDE80", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDE92", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDAF", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDBC", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDBD", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2695\uFE0F", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2696\uFE0F", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2708\uFE0F", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDF3E", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDF73", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDF7C", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDF93", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFA4", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFA8", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFEB", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFED", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDCBB", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDCBC", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDD27", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDD2C", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDE80", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDE92", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDAF", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDBC", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDBD", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2695\uFE0F", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2696\uFE0F", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2708\uFE0F", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDF3E", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDF73", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDF7C", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDF93", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFA4", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFA8", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFEB", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFED", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDCBB", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDCBC", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDD27", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDD2C", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDE80", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDE92", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDAF", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDBC", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDBD", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2695\uFE0F", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2696\uFE0F", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2708\uFE0F", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDF3E", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDF73", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDF7C", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDF93", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFA4", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFA8", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFEB", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFED", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDCBB", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDCBC", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDD27", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDD2C", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDE80", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDE92", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDAF", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDBC", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDBD", "\uD83D\uDC69\u200D\u2695\uFE0F", "\uD83D\uDC69\u200D\u2696\uFE0F", "\uD83D\uDC69\u200D\u2708\uFE0F", "\uD83D\uDC69\u200D\uD83C\uDF3E", "\uD83D\uDC69\u200D\uD83C\uDF73", "\uD83D\uDC69\u200D\uD83C\uDF7C", "\uD83D\uDC69\u200D\uD83C\uDF93", "\uD83D\uDC69\u200D\uD83C\uDFA4", "\uD83D\uDC69\u200D\uD83C\uDFA8", "\uD83D\uDC69\u200D\uD83C\uDFEB", "\uD83D\uDC69\u200D\uD83C\uDFED", "\uD83D\uDC69\u200D\uD83D\uDCBB", "\uD83D\uDC69\u200D\uD83D\uDCBC", "\uD83D\uDC69\u200D\uD83D\uDD27", "\uD83D\uDC69\u200D\uD83D\uDD2C", "\uD83D\uDC69\u200D\uD83D\uDE80", "\uD83D\uDC69\u200D\uD83D\uDE92", "\uD83D\uDC69\u200D\uD83E\uDDAF", "\uD83D\uDC69\u200D\uD83E\uDDBC", "\uD83D\uDC69\u200D\uD83E\uDDBD", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2695\uFE0F", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2696\uFE0F", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2708\uFE0F", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDF3E", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDF73", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDF7C", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDF93", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFA4", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFA8", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFEB", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFED", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDCBB", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDCBC", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDD27", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDD2C", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDE80", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDE92", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDAF", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDBC", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDBD", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2695\uFE0F", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2696\uFE0F", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2708\uFE0F", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDF3E", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDF73", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDF7C", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDF93", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFA4", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFA8", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFEB", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFED", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDCBB", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDCBC", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDD27", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDD2C", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDE80", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDE92", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDAF", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDBC", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDBD", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2695\uFE0F", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2696\uFE0F", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2708\uFE0F", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDF3E", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDF73", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDF7C", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDF93", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFA4", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFA8", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFEB", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFED", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDCBB", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDCBC", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDD27", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDD2C", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDE80", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDE92", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDAF", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDBC", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDBD", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2695\uFE0F", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2696\uFE0F", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2708\uFE0F", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDF3E", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDF73", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDF7C", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDF93", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFA4", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFA8", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFEB", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFED", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDCBB", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDCBC", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDD27", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDD2C", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDE80", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDE92", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDAF", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDBC", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDBD", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2695\uFE0F", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2696\uFE0F", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2708\uFE0F", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDF3E", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDF73", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDF7C", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDF93", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFA4", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFA8", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFEB", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFED", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDCBB", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDCBC", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDD27", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDD2C", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDE80", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDE92", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDAF", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDBC", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDBD", "\uD83E\uDDD1\u200D\u2695\uFE0F", "\uD83E\uDDD1\u200D\u2696\uFE0F", "\uD83E\uDDD1\u200D\u2708\uFE0F", "\uD83E\uDDD1\u200D\uD83C\uDF3E", "\uD83E\uDDD1\u200D\uD83C\uDF73", "\uD83E\uDDD1\u200D\uD83C\uDF7C", "\uD83E\uDDD1\u200D\uD83C\uDF93", "\uD83E\uDDD1\u200D\uD83C\uDFA4", "\uD83E\uDDD1\u200D\uD83C\uDFA8", "\uD83E\uDDD1\u200D\uD83C\uDFEB", "\uD83E\uDDD1\u200D\uD83C\uDFED", "\uD83E\uDDD1\u200D\uD83D\uDCBB", "\uD83E\uDDD1\u200D\uD83D\uDCBC", "\uD83E\uDDD1\u200D\uD83D\uDD27", "\uD83E\uDDD1\u200D\uD83D\uDD2C", "\uD83E\uDDD1\u200D\uD83D\uDE80", "\uD83E\uDDD1\u200D\uD83D\uDE92", "\uD83E\uDDD1\u200D\uD83E\uDDAF", "\uD83E\uDDD1\u200D\uD83E\uDDBC", "\uD83E\uDDD1\u200D\uD83E\uDDBD", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2695\uFE0F", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2696\uFE0F", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2708\uFE0F", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDF3E", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDF73", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDF7C", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDF93", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDFA4", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDFA8", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDFEB", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDFED", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83D\uDCBB", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83D\uDCBC", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83D\uDD27", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83D\uDD2C", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83D\uDE80", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83D\uDE92", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDAF", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDBC", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDBD", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2695\uFE0F", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2696\uFE0F", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2708\uFE0F", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDF3E", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDF73", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDF7C", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDF93", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDFA4", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDFA8", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDFEB", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDFED", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83D\uDCBB", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83D\uDCBC", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83D\uDD27", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83D\uDD2C", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83D\uDE80", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83D\uDE92", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDAF", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDBC", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDBD", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2695\uFE0F", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2696\uFE0F", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2708\uFE0F", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDF3E", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDF73", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDF7C", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDF93", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDFA4", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDFA8", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDFEB", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDFED", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83D\uDCBB", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83D\uDCBC", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83D\uDD27", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83D\uDD2C", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83D\uDE80", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83D\uDE92", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDAF", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDBC", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDBD", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2695\uFE0F", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2696\uFE0F", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2708\uFE0F", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDF3E", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDF73", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDF7C", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDF93", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDFA4", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDFA8", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDFEB", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDFED", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83D\uDCBB", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83D\uDCBC", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83D\uDD27", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83D\uDD2C", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83D\uDE80", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83D\uDE92", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDAF", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDBC", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDBD", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2695\uFE0F", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2696\uFE0F", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2708\uFE0F", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDF3E", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDF73", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDF7C", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDF93", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDFA4", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDFA8", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDFEB", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDFED", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83D\uDCBB", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83D\uDCBC", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83D\uDD27", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83D\uDD2C", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83D\uDE80", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83D\uDE92", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDAF", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDBC", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDBD", "\u26F9\uD83C\uDFFB\u200D\u2640\uFE0F", "\u26F9\uD83C\uDFFB\u200D\u2642\uFE0F", "\u26F9\uD83C\uDFFC\u200D\u2640\uFE0F", "\u26F9\uD83C\uDFFC\u200D\u2642\uFE0F", "\u26F9\uD83C\uDFFD\u200D\u2640\uFE0F", "\u26F9\uD83C\uDFFD\u200D\u2642\uFE0F", "\u26F9\uD83C\uDFFE\u200D\u2640\uFE0F", "\u26F9\uD83C\uDFFE\u200D\u2642\uFE0F", "\u26F9\uD83C\uDFFF\u200D\u2640\uFE0F", "\u26F9\uD83C\uDFFF\u200D\u2642\uFE0F", "\u26F9\uFE0F\u200D\u2640\uFE0F", "\u26F9\uFE0F\u200D\u2642\uFE0F", "\uD83C\uDFC3\u200D\u2640\uFE0F", "\uD83C\uDFC3\u200D\u2642\uFE0F", "\uD83C\uDFC3\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83C\uDFC3\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83C\uDFC3\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83C\uDFC3\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83C\uDFC3\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83C\uDFC3\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83C\uDFC3\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83C\uDFC3\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83C\uDFC3\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83C\uDFC3\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83C\uDFC4\u200D\u2640\uFE0F", "\uD83C\uDFC4\u200D\u2642\uFE0F", "\uD83C\uDFC4\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83C\uDFC4\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83C\uDFC4\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83C\uDFC4\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83C\uDFC4\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83C\uDFC4\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83C\uDFC4\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83C\uDFC4\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83C\uDFC4\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83C\uDFC4\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83C\uDFCA\u200D\u2640\uFE0F", "\uD83C\uDFCA\u200D\u2642\uFE0F", "\uD83C\uDFCA\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83C\uDFCA\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83C\uDFCA\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83C\uDFCA\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83C\uDFCA\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83C\uDFCA\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83C\uDFCA\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83C\uDFCA\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83C\uDFCA\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83C\uDFCA\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83C\uDFCB\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83C\uDFCB\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83C\uDFCB\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83C\uDFCB\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83C\uDFCB\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83C\uDFCB\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83C\uDFCB\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83C\uDFCB\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83C\uDFCB\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83C\uDFCB\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83C\uDFCB\uFE0F\u200D\u2640\uFE0F", "\uD83C\uDFCB\uFE0F\u200D\u2642\uFE0F", "\uD83C\uDFCC\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83C\uDFCC\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83C\uDFCC\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83C\uDFCC\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83C\uDFCC\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83C\uDFCC\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83C\uDFCC\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83C\uDFCC\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83C\uDFCC\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83C\uDFCC\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83C\uDFCC\uFE0F\u200D\u2640\uFE0F", "\uD83C\uDFCC\uFE0F\u200D\u2642\uFE0F", "\uD83D\uDC6E\u200D\u2640\uFE0F", "\uD83D\uDC6E\u200D\u2642\uFE0F", "\uD83D\uDC6E\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC6E\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC6E\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC6E\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC6E\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC6E\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC6E\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC6E\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC6E\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC6E\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC6F\u200D\u2640\uFE0F", "\uD83D\uDC6F\u200D\u2642\uFE0F", "\uD83D\uDC70\u200D\u2640\uFE0F", "\uD83D\uDC70\u200D\u2642\uFE0F", "\uD83D\uDC70\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC70\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC70\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC70\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC70\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC70\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC70\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC70\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC70\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC70\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC71\u200D\u2640\uFE0F", "\uD83D\uDC71\u200D\u2642\uFE0F", "\uD83D\uDC71\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC71\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC71\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC71\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC71\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC71\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC71\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC71\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC71\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC71\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC73\u200D\u2640\uFE0F", "\uD83D\uDC73\u200D\u2642\uFE0F", "\uD83D\uDC73\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC73\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC73\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC73\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC73\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC73\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC73\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC73\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC73\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC73\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC77\u200D\u2640\uFE0F", "\uD83D\uDC77\u200D\u2642\uFE0F", "\uD83D\uDC77\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC77\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC77\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC77\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC77\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC77\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC77\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC77\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC77\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC77\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC81\u200D\u2640\uFE0F", "\uD83D\uDC81\u200D\u2642\uFE0F", "\uD83D\uDC81\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC81\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC81\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC81\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC81\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC81\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC81\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC81\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC81\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC81\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC82\u200D\u2640\uFE0F", "\uD83D\uDC82\u200D\u2642\uFE0F", "\uD83D\uDC82\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC82\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC82\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC82\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC82\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC82\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC82\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC82\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC82\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC82\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC86\u200D\u2640\uFE0F", "\uD83D\uDC86\u200D\u2642\uFE0F", "\uD83D\uDC86\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC86\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC86\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC86\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC86\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC86\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC86\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC86\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC86\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC86\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC87\u200D\u2640\uFE0F", "\uD83D\uDC87\u200D\u2642\uFE0F", "\uD83D\uDC87\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC87\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC87\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC87\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC87\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC87\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC87\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC87\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC87\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC87\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDD75\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDD75\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDD75\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDD75\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDD75\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDD75\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDD75\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDD75\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDD75\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDD75\uFE0F\u200D\u2640\uFE0F", "\uD83D\uDD75\uFE0F\u200D\u2642\uFE0F", "\uD83D\uDE45\u200D\u2640\uFE0F", "\uD83D\uDE45\u200D\u2642\uFE0F", "\uD83D\uDE45\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDE45\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDE45\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDE45\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDE45\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDE45\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDE45\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDE45\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDE45\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDE45\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDE46\u200D\u2640\uFE0F", "\uD83D\uDE46\u200D\u2642\uFE0F", "\uD83D\uDE46\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDE46\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDE46\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDE46\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDE46\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDE46\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDE46\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDE46\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDE46\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDE46\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDE47\u200D\u2640\uFE0F", "\uD83D\uDE47\u200D\u2642\uFE0F", "\uD83D\uDE47\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDE47\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDE47\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDE47\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDE47\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDE47\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDE47\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDE47\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDE47\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDE47\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDE4B\u200D\u2640\uFE0F", "\uD83D\uDE4B\u200D\u2642\uFE0F", "\uD83D\uDE4B\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDE4B\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDE4B\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDE4B\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDE4B\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDE4B\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDE4B\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDE4B\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDE4B\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDE4B\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDE4D\u200D\u2640\uFE0F", "\uD83D\uDE4D\u200D\u2642\uFE0F", "\uD83D\uDE4D\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDE4D\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDE4D\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDE4D\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDE4D\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDE4D\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDE4D\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDE4D\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDE4D\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDE4D\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDE4E\u200D\u2640\uFE0F", "\uD83D\uDE4E\u200D\u2642\uFE0F", "\uD83D\uDE4E\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDE4E\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDE4E\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDE4E\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDE4E\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDE4E\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDE4E\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDE4E\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDE4E\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDE4E\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDEA3\u200D\u2640\uFE0F", "\uD83D\uDEA3\u200D\u2642\uFE0F", "\uD83D\uDEA3\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDEA3\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDEA3\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDEA3\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDEA3\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDEA3\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDEA3\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDEA3\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDEA3\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDEA3\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDEB4\u200D\u2640\uFE0F", "\uD83D\uDEB4\u200D\u2642\uFE0F", "\uD83D\uDEB4\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDEB4\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDEB4\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDEB4\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDEB4\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDEB4\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDEB4\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDEB4\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDEB4\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDEB4\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDEB5\u200D\u2640\uFE0F", "\uD83D\uDEB5\u200D\u2642\uFE0F", "\uD83D\uDEB5\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDEB5\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDEB5\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDEB5\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDEB5\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDEB5\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDEB5\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDEB5\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDEB5\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDEB5\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDEB6\u200D\u2640\uFE0F", "\uD83D\uDEB6\u200D\u2642\uFE0F", "\uD83D\uDEB6\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDEB6\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDEB6\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDEB6\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDEB6\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDEB6\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDEB6\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDEB6\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDEB6\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDEB6\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD26\u200D\u2640\uFE0F", "\uD83E\uDD26\u200D\u2642\uFE0F", "\uD83E\uDD26\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD26\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD26\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD26\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD26\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD26\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD26\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD26\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD26\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD26\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD35\u200D\u2640\uFE0F", "\uD83E\uDD35\u200D\u2642\uFE0F", "\uD83E\uDD35\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD35\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD35\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD35\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD35\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD35\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD35\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD35\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD35\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD35\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD37\u200D\u2640\uFE0F", "\uD83E\uDD37\u200D\u2642\uFE0F", "\uD83E\uDD37\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD37\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD37\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD37\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD37\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD37\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD37\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD37\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD37\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD37\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD38\u200D\u2640\uFE0F", "\uD83E\uDD38\u200D\u2642\uFE0F", "\uD83E\uDD38\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD38\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD38\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD38\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD38\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD38\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD38\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD38\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD38\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD38\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD39\u200D\u2640\uFE0F", "\uD83E\uDD39\u200D\u2642\uFE0F", "\uD83E\uDD39\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD39\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD39\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD39\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD39\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD39\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD39\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD39\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD39\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD39\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD3C\u200D\u2640\uFE0F", "\uD83E\uDD3C\u200D\u2642\uFE0F", "\uD83E\uDD3D\u200D\u2640\uFE0F", "\uD83E\uDD3D\u200D\u2642\uFE0F", "\uD83E\uDD3D\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD3D\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD3D\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD3D\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD3D\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD3D\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD3D\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD3D\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD3D\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD3D\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD3E\u200D\u2640\uFE0F", "\uD83E\uDD3E\u200D\u2642\uFE0F", "\uD83E\uDD3E\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD3E\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD3E\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD3E\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD3E\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD3E\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD3E\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD3E\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD3E\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD3E\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDB8\u200D\u2640\uFE0F", "\uD83E\uDDB8\u200D\u2642\uFE0F", "\uD83E\uDDB8\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDB8\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDB8\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDB8\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDB8\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDB8\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDB8\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDB8\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDB8\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDB8\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDB9\u200D\u2640\uFE0F", "\uD83E\uDDB9\u200D\u2642\uFE0F", "\uD83E\uDDB9\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDB9\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDB9\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDB9\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDB9\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDB9\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDB9\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDB9\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDB9\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDB9\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDCD\u200D\u2640\uFE0F", "\uD83E\uDDCD\u200D\u2642\uFE0F", "\uD83E\uDDCD\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDCD\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDCD\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDCD\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDCD\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDCD\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDCD\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDCD\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDCD\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDCD\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDCE\u200D\u2640\uFE0F", "\uD83E\uDDCE\u200D\u2642\uFE0F", "\uD83E\uDDCE\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDCE\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDCE\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDCE\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDCE\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDCE\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDCE\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDCE\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDCE\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDCE\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDCF\u200D\u2640\uFE0F", "\uD83E\uDDCF\u200D\u2642\uFE0F", "\uD83E\uDDCF\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDCF\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDCF\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDCF\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDCF\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDCF\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDCF\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDCF\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDCF\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDCF\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDD4\u200D\u2640\uFE0F", "\uD83E\uDDD4\u200D\u2642\uFE0F", "\uD83E\uDDD4\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDD4\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDD4\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDD4\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDD4\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDD4\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDD4\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDD4\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDD4\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDD4\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDD6\u200D\u2640\uFE0F", "\uD83E\uDDD6\u200D\u2642\uFE0F", "\uD83E\uDDD6\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDD6\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDD6\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDD6\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDD6\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDD6\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDD6\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDD6\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDD6\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDD6\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDD7\u200D\u2640\uFE0F", "\uD83E\uDDD7\u200D\u2642\uFE0F", "\uD83E\uDDD7\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDD7\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDD7\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDD7\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDD7\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDD7\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDD7\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDD7\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDD7\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDD7\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDD8\u200D\u2640\uFE0F", "\uD83E\uDDD8\u200D\u2642\uFE0F", "\uD83E\uDDD8\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDD8\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDD8\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDD8\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDD8\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDD8\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDD8\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDD8\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDD8\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDD8\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDD9\u200D\u2640\uFE0F", "\uD83E\uDDD9\u200D\u2642\uFE0F", "\uD83E\uDDD9\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDD9\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDD9\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDD9\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDD9\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDD9\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDD9\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDD9\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDD9\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDD9\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDDA\u200D\u2640\uFE0F", "\uD83E\uDDDA\u200D\u2642\uFE0F", "\uD83E\uDDDA\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDDA\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDDA\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDDA\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDDA\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDDA\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDDA\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDDA\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDDA\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDDA\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDDB\u200D\u2640\uFE0F", "\uD83E\uDDDB\u200D\u2642\uFE0F", "\uD83E\uDDDB\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDDB\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDDB\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDDB\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDDB\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDDB\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDDB\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDDB\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDDB\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDDB\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDDC\u200D\u2640\uFE0F", "\uD83E\uDDDC\u200D\u2642\uFE0F", "\uD83E\uDDDC\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDDC\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDDC\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDDC\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDDC\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDDC\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDDC\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDDC\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDDC\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDDC\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDDD\u200D\u2640\uFE0F", "\uD83E\uDDDD\u200D\u2642\uFE0F", "\uD83E\uDDDD\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDDD\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDDD\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDDD\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDDD\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDDD\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDDD\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDDD\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDDD\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDDD\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDDE\u200D\u2640\uFE0F", "\uD83E\uDDDE\u200D\u2642\uFE0F", "\uD83E\uDDDF\u200D\u2640\uFE0F", "\uD83E\uDDDF\u200D\u2642\uFE0F", "\uD83D\uDC68\u200D\uD83E\uDDB0", "\uD83D\uDC68\u200D\uD83E\uDDB1", "\uD83D\uDC68\u200D\uD83E\uDDB2", "\uD83D\uDC68\u200D\uD83E\uDDB3", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB0", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB1", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB2", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB3", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB0", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB1", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB2", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB3", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB0", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB1", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB2", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB3", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB0", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB1", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB2", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB3", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB0", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB1", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB2", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB3", "\uD83D\uDC69\u200D\uD83E\uDDB0", "\uD83D\uDC69\u200D\uD83E\uDDB1", "\uD83D\uDC69\u200D\uD83E\uDDB2", "\uD83D\uDC69\u200D\uD83E\uDDB3", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB0", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB1", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB2", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB3", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB0", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB1", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB2", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB3", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB0", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB1", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB2", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB3", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB0", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB1", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB2", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB3", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB0", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB1", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB2", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB3", "\uD83E\uDDD1\u200D\uD83E\uDDB0", "\uD83E\uDDD1\u200D\uD83E\uDDB1", "\uD83E\uDDD1\u200D\uD83E\uDDB2", "\uD83E\uDDD1\u200D\uD83E\uDDB3", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDB0", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDB1", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDB2", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDB3", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDB0", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDB1", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDB2", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDB3", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDB0", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDB1", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDB2", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDB3", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDB0", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDB1", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDB2", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDB3", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDB0", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDB1", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDB2", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDB3", "\u2764\uFE0F\u200D\uD83D\uDD25", "\u2764\uFE0F\u200D\uD83E\uDE79", "\uD83C\uDFF3\uFE0F\u200D\u26A7\uFE0F", "\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08", "\uD83C\uDFF4\u200D\u2620\uFE0F", "\uD83D\uDC08\u200D\u2B1B", "\uD83D\uDC15\u200D\uD83E\uDDBA", "\uD83D\uDC26\u200D\u2B1B", "\uD83D\uDC3B\u200D\u2744\uFE0F", "\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8\uFE0F", "\uD83D\uDE2E\u200D\uD83D\uDCA8", "\uD83D\uDE35\u200D\uD83D\uDCAB", "\uD83D\uDE36\u200D\uD83C\uDF2B\uFE0F", "\uD83E\uDDD1\u200D\uD83C\uDF84"];
      return RGI_Emoji_ZWJ_Sequence;
    }
  
    var RGI_Emoji = {};
  
    var hasRequiredRGI_Emoji;
    function requireRGI_Emoji() {
      if (hasRequiredRGI_Emoji) return RGI_Emoji;
      hasRequiredRGI_Emoji = 1;
      var set = regenerate$2.exports(0x23F0, 0x23F3, 0x267F, 0x2693, 0x26A1, 0x26CE, 0x26D4, 0x26EA, 0x26F5, 0x26FA, 0x26FD, 0x2705, 0x2728, 0x274C, 0x274E, 0x2757, 0x27B0, 0x27BF, 0x2B50, 0x2B55, 0x1F004, 0x1F0CF, 0x1F18E, 0x1F201, 0x1F21A, 0x1F22F, 0x1F3F4, 0x1F440, 0x1F57A, 0x1F5A4, 0x1F6CC, 0x1F7F0);
      set.addRange(0x231A, 0x231B).addRange(0x23E9, 0x23EC).addRange(0x25FD, 0x25FE).addRange(0x2614, 0x2615).addRange(0x2648, 0x2653).addRange(0x26AA, 0x26AB).addRange(0x26BD, 0x26BE).addRange(0x26C4, 0x26C5).addRange(0x26F2, 0x26F3).addRange(0x270A, 0x270B).addRange(0x2753, 0x2755).addRange(0x2795, 0x2797).addRange(0x2B1B, 0x2B1C).addRange(0x1F191, 0x1F19A).addRange(0x1F232, 0x1F236).addRange(0x1F238, 0x1F23A).addRange(0x1F250, 0x1F251).addRange(0x1F300, 0x1F320).addRange(0x1F32D, 0x1F335).addRange(0x1F337, 0x1F37C).addRange(0x1F37E, 0x1F393).addRange(0x1F3A0, 0x1F3CA).addRange(0x1F3CF, 0x1F3D3).addRange(0x1F3E0, 0x1F3F0).addRange(0x1F3F8, 0x1F43E).addRange(0x1F442, 0x1F4FC).addRange(0x1F4FF, 0x1F53D).addRange(0x1F54B, 0x1F54E).addRange(0x1F550, 0x1F567).addRange(0x1F595, 0x1F596).addRange(0x1F5FB, 0x1F64F).addRange(0x1F680, 0x1F6C5).addRange(0x1F6D0, 0x1F6D2).addRange(0x1F6D5, 0x1F6D7).addRange(0x1F6DC, 0x1F6DF).addRange(0x1F6EB, 0x1F6EC).addRange(0x1F6F4, 0x1F6FC).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F90C, 0x1F93A).addRange(0x1F93C, 0x1F945).addRange(0x1F947, 0x1F9FF).addRange(0x1FA70, 0x1FA7C).addRange(0x1FA80, 0x1FA88).addRange(0x1FA90, 0x1FABD).addRange(0x1FABF, 0x1FAC5).addRange(0x1FACE, 0x1FADB).addRange(0x1FAE0, 0x1FAE8).addRange(0x1FAF0, 0x1FAF8);
      RGI_Emoji.characters = set;
      RGI_Emoji.strings = ["#\uFE0F\u20E3", "*\uFE0F\u20E3", "0\uFE0F\u20E3", "1\uFE0F\u20E3", "2\uFE0F\u20E3", "3\uFE0F\u20E3", "4\uFE0F\u20E3", "5\uFE0F\u20E3", "6\uFE0F\u20E3", "7\uFE0F\u20E3", "8\uFE0F\u20E3", "9\uFE0F\u20E3", "\xA9\uFE0F", "\xAE\uFE0F", "\u203C\uFE0F", "\u2049\uFE0F", "\u2122\uFE0F", "\u2139\uFE0F", "\u2194\uFE0F", "\u2195\uFE0F", "\u2196\uFE0F", "\u2197\uFE0F", "\u2198\uFE0F", "\u2199\uFE0F", "\u21A9\uFE0F", "\u21AA\uFE0F", "\u2328\uFE0F", "\u23CF\uFE0F", "\u23ED\uFE0F", "\u23EE\uFE0F", "\u23EF\uFE0F", "\u23F1\uFE0F", "\u23F2\uFE0F", "\u23F8\uFE0F", "\u23F9\uFE0F", "\u23FA\uFE0F", "\u24C2\uFE0F", "\u25AA\uFE0F", "\u25AB\uFE0F", "\u25B6\uFE0F", "\u25C0\uFE0F", "\u25FB\uFE0F", "\u25FC\uFE0F", "\u2600\uFE0F", "\u2601\uFE0F", "\u2602\uFE0F", "\u2603\uFE0F", "\u2604\uFE0F", "\u260E\uFE0F", "\u2611\uFE0F", "\u2618\uFE0F", "\u261D\uD83C\uDFFB", "\u261D\uD83C\uDFFC", "\u261D\uD83C\uDFFD", "\u261D\uD83C\uDFFE", "\u261D\uD83C\uDFFF", "\u261D\uFE0F", "\u2620\uFE0F", "\u2622\uFE0F", "\u2623\uFE0F", "\u2626\uFE0F", "\u262A\uFE0F", "\u262E\uFE0F", "\u262F\uFE0F", "\u2638\uFE0F", "\u2639\uFE0F", "\u263A\uFE0F", "\u2640\uFE0F", "\u2642\uFE0F", "\u265F\uFE0F", "\u2660\uFE0F", "\u2663\uFE0F", "\u2665\uFE0F", "\u2666\uFE0F", "\u2668\uFE0F", "\u267B\uFE0F", "\u267E\uFE0F", "\u2692\uFE0F", "\u2694\uFE0F", "\u2695\uFE0F", "\u2696\uFE0F", "\u2697\uFE0F", "\u2699\uFE0F", "\u269B\uFE0F", "\u269C\uFE0F", "\u26A0\uFE0F", "\u26A7\uFE0F", "\u26B0\uFE0F", "\u26B1\uFE0F", "\u26C8\uFE0F", "\u26CF\uFE0F", "\u26D1\uFE0F", "\u26D3\uFE0F", "\u26E9\uFE0F", "\u26F0\uFE0F", "\u26F1\uFE0F", "\u26F4\uFE0F", "\u26F7\uFE0F", "\u26F8\uFE0F", "\u26F9\uD83C\uDFFB", "\u26F9\uD83C\uDFFB\u200D\u2640\uFE0F", "\u26F9\uD83C\uDFFB\u200D\u2642\uFE0F", "\u26F9\uD83C\uDFFC", "\u26F9\uD83C\uDFFC\u200D\u2640\uFE0F", "\u26F9\uD83C\uDFFC\u200D\u2642\uFE0F", "\u26F9\uD83C\uDFFD", "\u26F9\uD83C\uDFFD\u200D\u2640\uFE0F", "\u26F9\uD83C\uDFFD\u200D\u2642\uFE0F", "\u26F9\uD83C\uDFFE", "\u26F9\uD83C\uDFFE\u200D\u2640\uFE0F", "\u26F9\uD83C\uDFFE\u200D\u2642\uFE0F", "\u26F9\uD83C\uDFFF", "\u26F9\uD83C\uDFFF\u200D\u2640\uFE0F", "\u26F9\uD83C\uDFFF\u200D\u2642\uFE0F", "\u26F9\uFE0F", "\u26F9\uFE0F\u200D\u2640\uFE0F", "\u26F9\uFE0F\u200D\u2642\uFE0F", "\u2702\uFE0F", "\u2708\uFE0F", "\u2709\uFE0F", "\u270A\uD83C\uDFFB", "\u270A\uD83C\uDFFC", "\u270A\uD83C\uDFFD", "\u270A\uD83C\uDFFE", "\u270A\uD83C\uDFFF", "\u270B\uD83C\uDFFB", "\u270B\uD83C\uDFFC", "\u270B\uD83C\uDFFD", "\u270B\uD83C\uDFFE", "\u270B\uD83C\uDFFF", "\u270C\uD83C\uDFFB", "\u270C\uD83C\uDFFC", "\u270C\uD83C\uDFFD", "\u270C\uD83C\uDFFE", "\u270C\uD83C\uDFFF", "\u270C\uFE0F", "\u270D\uD83C\uDFFB", "\u270D\uD83C\uDFFC", "\u270D\uD83C\uDFFD", "\u270D\uD83C\uDFFE", "\u270D\uD83C\uDFFF", "\u270D\uFE0F", "\u270F\uFE0F", "\u2712\uFE0F", "\u2714\uFE0F", "\u2716\uFE0F", "\u271D\uFE0F", "\u2721\uFE0F", "\u2733\uFE0F", "\u2734\uFE0F", "\u2744\uFE0F", "\u2747\uFE0F", "\u2763\uFE0F", "\u2764\uFE0F", "\u2764\uFE0F\u200D\uD83D\uDD25", "\u2764\uFE0F\u200D\uD83E\uDE79", "\u27A1\uFE0F", "\u2934\uFE0F", "\u2935\uFE0F", "\u2B05\uFE0F", "\u2B06\uFE0F", "\u2B07\uFE0F", "\u3030\uFE0F", "\u303D\uFE0F", "\u3297\uFE0F", "\u3299\uFE0F", "\uD83C\uDD70\uFE0F", "\uD83C\uDD71\uFE0F", "\uD83C\uDD7E\uFE0F", "\uD83C\uDD7F\uFE0F", "\uD83C\uDDE6\uD83C\uDDE8", "\uD83C\uDDE6\uD83C\uDDE9", "\uD83C\uDDE6\uD83C\uDDEA", "\uD83C\uDDE6\uD83C\uDDEB", "\uD83C\uDDE6\uD83C\uDDEC", "\uD83C\uDDE6\uD83C\uDDEE", "\uD83C\uDDE6\uD83C\uDDF1", "\uD83C\uDDE6\uD83C\uDDF2", "\uD83C\uDDE6\uD83C\uDDF4", "\uD83C\uDDE6\uD83C\uDDF6", "\uD83C\uDDE6\uD83C\uDDF7", "\uD83C\uDDE6\uD83C\uDDF8", "\uD83C\uDDE6\uD83C\uDDF9", "\uD83C\uDDE6\uD83C\uDDFA", "\uD83C\uDDE6\uD83C\uDDFC", "\uD83C\uDDE6\uD83C\uDDFD", "\uD83C\uDDE6\uD83C\uDDFF", "\uD83C\uDDE7\uD83C\uDDE6", "\uD83C\uDDE7\uD83C\uDDE7", "\uD83C\uDDE7\uD83C\uDDE9", "\uD83C\uDDE7\uD83C\uDDEA", "\uD83C\uDDE7\uD83C\uDDEB", "\uD83C\uDDE7\uD83C\uDDEC", "\uD83C\uDDE7\uD83C\uDDED", "\uD83C\uDDE7\uD83C\uDDEE", "\uD83C\uDDE7\uD83C\uDDEF", "\uD83C\uDDE7\uD83C\uDDF1", "\uD83C\uDDE7\uD83C\uDDF2", "\uD83C\uDDE7\uD83C\uDDF3", "\uD83C\uDDE7\uD83C\uDDF4", "\uD83C\uDDE7\uD83C\uDDF6", "\uD83C\uDDE7\uD83C\uDDF7", "\uD83C\uDDE7\uD83C\uDDF8", "\uD83C\uDDE7\uD83C\uDDF9", "\uD83C\uDDE7\uD83C\uDDFB", "\uD83C\uDDE7\uD83C\uDDFC", "\uD83C\uDDE7\uD83C\uDDFE", "\uD83C\uDDE7\uD83C\uDDFF", "\uD83C\uDDE8\uD83C\uDDE6", "\uD83C\uDDE8\uD83C\uDDE8", "\uD83C\uDDE8\uD83C\uDDE9", "\uD83C\uDDE8\uD83C\uDDEB", "\uD83C\uDDE8\uD83C\uDDEC", "\uD83C\uDDE8\uD83C\uDDED", "\uD83C\uDDE8\uD83C\uDDEE", "\uD83C\uDDE8\uD83C\uDDF0", "\uD83C\uDDE8\uD83C\uDDF1", "\uD83C\uDDE8\uD83C\uDDF2", "\uD83C\uDDE8\uD83C\uDDF3", "\uD83C\uDDE8\uD83C\uDDF4", "\uD83C\uDDE8\uD83C\uDDF5", "\uD83C\uDDE8\uD83C\uDDF7", "\uD83C\uDDE8\uD83C\uDDFA", "\uD83C\uDDE8\uD83C\uDDFB", "\uD83C\uDDE8\uD83C\uDDFC", "\uD83C\uDDE8\uD83C\uDDFD", "\uD83C\uDDE8\uD83C\uDDFE", "\uD83C\uDDE8\uD83C\uDDFF", "\uD83C\uDDE9\uD83C\uDDEA", "\uD83C\uDDE9\uD83C\uDDEC", "\uD83C\uDDE9\uD83C\uDDEF", "\uD83C\uDDE9\uD83C\uDDF0", "\uD83C\uDDE9\uD83C\uDDF2", "\uD83C\uDDE9\uD83C\uDDF4", "\uD83C\uDDE9\uD83C\uDDFF", "\uD83C\uDDEA\uD83C\uDDE6", "\uD83C\uDDEA\uD83C\uDDE8", "\uD83C\uDDEA\uD83C\uDDEA", "\uD83C\uDDEA\uD83C\uDDEC", "\uD83C\uDDEA\uD83C\uDDED", "\uD83C\uDDEA\uD83C\uDDF7", "\uD83C\uDDEA\uD83C\uDDF8", "\uD83C\uDDEA\uD83C\uDDF9", "\uD83C\uDDEA\uD83C\uDDFA", "\uD83C\uDDEB\uD83C\uDDEE", "\uD83C\uDDEB\uD83C\uDDEF", "\uD83C\uDDEB\uD83C\uDDF0", "\uD83C\uDDEB\uD83C\uDDF2", "\uD83C\uDDEB\uD83C\uDDF4", "\uD83C\uDDEB\uD83C\uDDF7", "\uD83C\uDDEC\uD83C\uDDE6", "\uD83C\uDDEC\uD83C\uDDE7", "\uD83C\uDDEC\uD83C\uDDE9", "\uD83C\uDDEC\uD83C\uDDEA", "\uD83C\uDDEC\uD83C\uDDEB", "\uD83C\uDDEC\uD83C\uDDEC", "\uD83C\uDDEC\uD83C\uDDED", "\uD83C\uDDEC\uD83C\uDDEE", "\uD83C\uDDEC\uD83C\uDDF1", "\uD83C\uDDEC\uD83C\uDDF2", "\uD83C\uDDEC\uD83C\uDDF3", "\uD83C\uDDEC\uD83C\uDDF5", "\uD83C\uDDEC\uD83C\uDDF6", "\uD83C\uDDEC\uD83C\uDDF7", "\uD83C\uDDEC\uD83C\uDDF8", "\uD83C\uDDEC\uD83C\uDDF9", "\uD83C\uDDEC\uD83C\uDDFA", "\uD83C\uDDEC\uD83C\uDDFC", "\uD83C\uDDEC\uD83C\uDDFE", "\uD83C\uDDED\uD83C\uDDF0", "\uD83C\uDDED\uD83C\uDDF2", "\uD83C\uDDED\uD83C\uDDF3", "\uD83C\uDDED\uD83C\uDDF7", "\uD83C\uDDED\uD83C\uDDF9", "\uD83C\uDDED\uD83C\uDDFA", "\uD83C\uDDEE\uD83C\uDDE8", "\uD83C\uDDEE\uD83C\uDDE9", "\uD83C\uDDEE\uD83C\uDDEA", "\uD83C\uDDEE\uD83C\uDDF1", "\uD83C\uDDEE\uD83C\uDDF2", "\uD83C\uDDEE\uD83C\uDDF3", "\uD83C\uDDEE\uD83C\uDDF4", "\uD83C\uDDEE\uD83C\uDDF6", "\uD83C\uDDEE\uD83C\uDDF7", "\uD83C\uDDEE\uD83C\uDDF8", "\uD83C\uDDEE\uD83C\uDDF9", "\uD83C\uDDEF\uD83C\uDDEA", "\uD83C\uDDEF\uD83C\uDDF2", "\uD83C\uDDEF\uD83C\uDDF4", "\uD83C\uDDEF\uD83C\uDDF5", "\uD83C\uDDF0\uD83C\uDDEA", "\uD83C\uDDF0\uD83C\uDDEC", "\uD83C\uDDF0\uD83C\uDDED", "\uD83C\uDDF0\uD83C\uDDEE", "\uD83C\uDDF0\uD83C\uDDF2", "\uD83C\uDDF0\uD83C\uDDF3", "\uD83C\uDDF0\uD83C\uDDF5", "\uD83C\uDDF0\uD83C\uDDF7", "\uD83C\uDDF0\uD83C\uDDFC", "\uD83C\uDDF0\uD83C\uDDFE", "\uD83C\uDDF0\uD83C\uDDFF", "\uD83C\uDDF1\uD83C\uDDE6", "\uD83C\uDDF1\uD83C\uDDE7", "\uD83C\uDDF1\uD83C\uDDE8", "\uD83C\uDDF1\uD83C\uDDEE", "\uD83C\uDDF1\uD83C\uDDF0", "\uD83C\uDDF1\uD83C\uDDF7", "\uD83C\uDDF1\uD83C\uDDF8", "\uD83C\uDDF1\uD83C\uDDF9", "\uD83C\uDDF1\uD83C\uDDFA", "\uD83C\uDDF1\uD83C\uDDFB", "\uD83C\uDDF1\uD83C\uDDFE", "\uD83C\uDDF2\uD83C\uDDE6", "\uD83C\uDDF2\uD83C\uDDE8", "\uD83C\uDDF2\uD83C\uDDE9", "\uD83C\uDDF2\uD83C\uDDEA", "\uD83C\uDDF2\uD83C\uDDEB", "\uD83C\uDDF2\uD83C\uDDEC", "\uD83C\uDDF2\uD83C\uDDED", "\uD83C\uDDF2\uD83C\uDDF0", "\uD83C\uDDF2\uD83C\uDDF1", "\uD83C\uDDF2\uD83C\uDDF2", "\uD83C\uDDF2\uD83C\uDDF3", "\uD83C\uDDF2\uD83C\uDDF4", "\uD83C\uDDF2\uD83C\uDDF5", "\uD83C\uDDF2\uD83C\uDDF6", "\uD83C\uDDF2\uD83C\uDDF7", "\uD83C\uDDF2\uD83C\uDDF8", "\uD83C\uDDF2\uD83C\uDDF9", "\uD83C\uDDF2\uD83C\uDDFA", "\uD83C\uDDF2\uD83C\uDDFB", "\uD83C\uDDF2\uD83C\uDDFC", "\uD83C\uDDF2\uD83C\uDDFD", "\uD83C\uDDF2\uD83C\uDDFE", "\uD83C\uDDF2\uD83C\uDDFF", "\uD83C\uDDF3\uD83C\uDDE6", "\uD83C\uDDF3\uD83C\uDDE8", "\uD83C\uDDF3\uD83C\uDDEA", "\uD83C\uDDF3\uD83C\uDDEB", "\uD83C\uDDF3\uD83C\uDDEC", "\uD83C\uDDF3\uD83C\uDDEE", "\uD83C\uDDF3\uD83C\uDDF1", "\uD83C\uDDF3\uD83C\uDDF4", "\uD83C\uDDF3\uD83C\uDDF5", "\uD83C\uDDF3\uD83C\uDDF7", "\uD83C\uDDF3\uD83C\uDDFA", "\uD83C\uDDF3\uD83C\uDDFF", "\uD83C\uDDF4\uD83C\uDDF2", "\uD83C\uDDF5\uD83C\uDDE6", "\uD83C\uDDF5\uD83C\uDDEA", "\uD83C\uDDF5\uD83C\uDDEB", "\uD83C\uDDF5\uD83C\uDDEC", "\uD83C\uDDF5\uD83C\uDDED", "\uD83C\uDDF5\uD83C\uDDF0", "\uD83C\uDDF5\uD83C\uDDF1", "\uD83C\uDDF5\uD83C\uDDF2", "\uD83C\uDDF5\uD83C\uDDF3", "\uD83C\uDDF5\uD83C\uDDF7", "\uD83C\uDDF5\uD83C\uDDF8", "\uD83C\uDDF5\uD83C\uDDF9", "\uD83C\uDDF5\uD83C\uDDFC", "\uD83C\uDDF5\uD83C\uDDFE", "\uD83C\uDDF6\uD83C\uDDE6", "\uD83C\uDDF7\uD83C\uDDEA", "\uD83C\uDDF7\uD83C\uDDF4", "\uD83C\uDDF7\uD83C\uDDF8", "\uD83C\uDDF7\uD83C\uDDFA", "\uD83C\uDDF7\uD83C\uDDFC", "\uD83C\uDDF8\uD83C\uDDE6", "\uD83C\uDDF8\uD83C\uDDE7", "\uD83C\uDDF8\uD83C\uDDE8", "\uD83C\uDDF8\uD83C\uDDE9", "\uD83C\uDDF8\uD83C\uDDEA", "\uD83C\uDDF8\uD83C\uDDEC", "\uD83C\uDDF8\uD83C\uDDED", "\uD83C\uDDF8\uD83C\uDDEE", "\uD83C\uDDF8\uD83C\uDDEF", "\uD83C\uDDF8\uD83C\uDDF0", "\uD83C\uDDF8\uD83C\uDDF1", "\uD83C\uDDF8\uD83C\uDDF2", "\uD83C\uDDF8\uD83C\uDDF3", "\uD83C\uDDF8\uD83C\uDDF4", "\uD83C\uDDF8\uD83C\uDDF7", "\uD83C\uDDF8\uD83C\uDDF8", "\uD83C\uDDF8\uD83C\uDDF9", "\uD83C\uDDF8\uD83C\uDDFB", "\uD83C\uDDF8\uD83C\uDDFD", "\uD83C\uDDF8\uD83C\uDDFE", "\uD83C\uDDF8\uD83C\uDDFF", "\uD83C\uDDF9\uD83C\uDDE6", "\uD83C\uDDF9\uD83C\uDDE8", "\uD83C\uDDF9\uD83C\uDDE9", "\uD83C\uDDF9\uD83C\uDDEB", "\uD83C\uDDF9\uD83C\uDDEC", "\uD83C\uDDF9\uD83C\uDDED", "\uD83C\uDDF9\uD83C\uDDEF", "\uD83C\uDDF9\uD83C\uDDF0", "\uD83C\uDDF9\uD83C\uDDF1", "\uD83C\uDDF9\uD83C\uDDF2", "\uD83C\uDDF9\uD83C\uDDF3", "\uD83C\uDDF9\uD83C\uDDF4", "\uD83C\uDDF9\uD83C\uDDF7", "\uD83C\uDDF9\uD83C\uDDF9", "\uD83C\uDDF9\uD83C\uDDFB", "\uD83C\uDDF9\uD83C\uDDFC", "\uD83C\uDDF9\uD83C\uDDFF", "\uD83C\uDDFA\uD83C\uDDE6", "\uD83C\uDDFA\uD83C\uDDEC", "\uD83C\uDDFA\uD83C\uDDF2", "\uD83C\uDDFA\uD83C\uDDF3", "\uD83C\uDDFA\uD83C\uDDF8", "\uD83C\uDDFA\uD83C\uDDFE", "\uD83C\uDDFA\uD83C\uDDFF", "\uD83C\uDDFB\uD83C\uDDE6", "\uD83C\uDDFB\uD83C\uDDE8", "\uD83C\uDDFB\uD83C\uDDEA", "\uD83C\uDDFB\uD83C\uDDEC", "\uD83C\uDDFB\uD83C\uDDEE", "\uD83C\uDDFB\uD83C\uDDF3", "\uD83C\uDDFB\uD83C\uDDFA", "\uD83C\uDDFC\uD83C\uDDEB", "\uD83C\uDDFC\uD83C\uDDF8", "\uD83C\uDDFD\uD83C\uDDF0", "\uD83C\uDDFE\uD83C\uDDEA", "\uD83C\uDDFE\uD83C\uDDF9", "\uD83C\uDDFF\uD83C\uDDE6", "\uD83C\uDDFF\uD83C\uDDF2", "\uD83C\uDDFF\uD83C\uDDFC", "\uD83C\uDE02\uFE0F", "\uD83C\uDE37\uFE0F", "\uD83C\uDF21\uFE0F", "\uD83C\uDF24\uFE0F", "\uD83C\uDF25\uFE0F", "\uD83C\uDF26\uFE0F", "\uD83C\uDF27\uFE0F", "\uD83C\uDF28\uFE0F", "\uD83C\uDF29\uFE0F", "\uD83C\uDF2A\uFE0F", "\uD83C\uDF2B\uFE0F", "\uD83C\uDF2C\uFE0F", "\uD83C\uDF36\uFE0F", "\uD83C\uDF7D\uFE0F", "\uD83C\uDF85\uD83C\uDFFB", "\uD83C\uDF85\uD83C\uDFFC", "\uD83C\uDF85\uD83C\uDFFD", "\uD83C\uDF85\uD83C\uDFFE", "\uD83C\uDF85\uD83C\uDFFF", "\uD83C\uDF96\uFE0F", "\uD83C\uDF97\uFE0F", "\uD83C\uDF99\uFE0F", "\uD83C\uDF9A\uFE0F", "\uD83C\uDF9B\uFE0F", "\uD83C\uDF9E\uFE0F", "\uD83C\uDF9F\uFE0F", "\uD83C\uDFC2\uD83C\uDFFB", "\uD83C\uDFC2\uD83C\uDFFC", "\uD83C\uDFC2\uD83C\uDFFD", "\uD83C\uDFC2\uD83C\uDFFE", "\uD83C\uDFC2\uD83C\uDFFF", "\uD83C\uDFC3\u200D\u2640\uFE0F", "\uD83C\uDFC3\u200D\u2642\uFE0F", "\uD83C\uDFC3\uD83C\uDFFB", "\uD83C\uDFC3\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83C\uDFC3\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83C\uDFC3\uD83C\uDFFC", "\uD83C\uDFC3\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83C\uDFC3\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83C\uDFC3\uD83C\uDFFD", "\uD83C\uDFC3\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83C\uDFC3\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83C\uDFC3\uD83C\uDFFE", "\uD83C\uDFC3\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83C\uDFC3\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83C\uDFC3\uD83C\uDFFF", "\uD83C\uDFC3\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83C\uDFC3\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83C\uDFC4\u200D\u2640\uFE0F", "\uD83C\uDFC4\u200D\u2642\uFE0F", "\uD83C\uDFC4\uD83C\uDFFB", "\uD83C\uDFC4\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83C\uDFC4\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83C\uDFC4\uD83C\uDFFC", "\uD83C\uDFC4\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83C\uDFC4\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83C\uDFC4\uD83C\uDFFD", "\uD83C\uDFC4\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83C\uDFC4\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83C\uDFC4\uD83C\uDFFE", "\uD83C\uDFC4\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83C\uDFC4\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83C\uDFC4\uD83C\uDFFF", "\uD83C\uDFC4\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83C\uDFC4\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83C\uDFC7\uD83C\uDFFB", "\uD83C\uDFC7\uD83C\uDFFC", "\uD83C\uDFC7\uD83C\uDFFD", "\uD83C\uDFC7\uD83C\uDFFE", "\uD83C\uDFC7\uD83C\uDFFF", "\uD83C\uDFCA\u200D\u2640\uFE0F", "\uD83C\uDFCA\u200D\u2642\uFE0F", "\uD83C\uDFCA\uD83C\uDFFB", "\uD83C\uDFCA\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83C\uDFCA\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83C\uDFCA\uD83C\uDFFC", "\uD83C\uDFCA\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83C\uDFCA\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83C\uDFCA\uD83C\uDFFD", "\uD83C\uDFCA\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83C\uDFCA\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83C\uDFCA\uD83C\uDFFE", "\uD83C\uDFCA\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83C\uDFCA\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83C\uDFCA\uD83C\uDFFF", "\uD83C\uDFCA\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83C\uDFCA\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83C\uDFCB\uD83C\uDFFB", "\uD83C\uDFCB\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83C\uDFCB\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83C\uDFCB\uD83C\uDFFC", "\uD83C\uDFCB\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83C\uDFCB\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83C\uDFCB\uD83C\uDFFD", "\uD83C\uDFCB\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83C\uDFCB\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83C\uDFCB\uD83C\uDFFE", "\uD83C\uDFCB\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83C\uDFCB\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83C\uDFCB\uD83C\uDFFF", "\uD83C\uDFCB\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83C\uDFCB\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83C\uDFCB\uFE0F", "\uD83C\uDFCB\uFE0F\u200D\u2640\uFE0F", "\uD83C\uDFCB\uFE0F\u200D\u2642\uFE0F", "\uD83C\uDFCC\uD83C\uDFFB", "\uD83C\uDFCC\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83C\uDFCC\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83C\uDFCC\uD83C\uDFFC", "\uD83C\uDFCC\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83C\uDFCC\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83C\uDFCC\uD83C\uDFFD", "\uD83C\uDFCC\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83C\uDFCC\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83C\uDFCC\uD83C\uDFFE", "\uD83C\uDFCC\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83C\uDFCC\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83C\uDFCC\uD83C\uDFFF", "\uD83C\uDFCC\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83C\uDFCC\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83C\uDFCC\uFE0F", "\uD83C\uDFCC\uFE0F\u200D\u2640\uFE0F", "\uD83C\uDFCC\uFE0F\u200D\u2642\uFE0F", "\uD83C\uDFCD\uFE0F", "\uD83C\uDFCE\uFE0F", "\uD83C\uDFD4\uFE0F", "\uD83C\uDFD5\uFE0F", "\uD83C\uDFD6\uFE0F", "\uD83C\uDFD7\uFE0F", "\uD83C\uDFD8\uFE0F", "\uD83C\uDFD9\uFE0F", "\uD83C\uDFDA\uFE0F", "\uD83C\uDFDB\uFE0F", "\uD83C\uDFDC\uFE0F", "\uD83C\uDFDD\uFE0F", "\uD83C\uDFDE\uFE0F", "\uD83C\uDFDF\uFE0F", "\uD83C\uDFF3\uFE0F", "\uD83C\uDFF3\uFE0F\u200D\u26A7\uFE0F", "\uD83C\uDFF3\uFE0F\u200D\uD83C\uDF08", "\uD83C\uDFF4\u200D\u2620\uFE0F", "\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62\uDB40\uDC65\uDB40\uDC6E\uDB40\uDC67\uDB40\uDC7F", "\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62\uDB40\uDC73\uDB40\uDC63\uDB40\uDC74\uDB40\uDC7F", "\uD83C\uDFF4\uDB40\uDC67\uDB40\uDC62\uDB40\uDC77\uDB40\uDC6C\uDB40\uDC73\uDB40\uDC7F", "\uD83C\uDFF5\uFE0F", "\uD83C\uDFF7\uFE0F", "\uD83D\uDC08\u200D\u2B1B", "\uD83D\uDC15\u200D\uD83E\uDDBA", "\uD83D\uDC26\u200D\u2B1B", "\uD83D\uDC3B\u200D\u2744\uFE0F", "\uD83D\uDC3F\uFE0F", "\uD83D\uDC41\uFE0F", "\uD83D\uDC41\uFE0F\u200D\uD83D\uDDE8\uFE0F", "\uD83D\uDC42\uD83C\uDFFB", "\uD83D\uDC42\uD83C\uDFFC", "\uD83D\uDC42\uD83C\uDFFD", "\uD83D\uDC42\uD83C\uDFFE", "\uD83D\uDC42\uD83C\uDFFF", "\uD83D\uDC43\uD83C\uDFFB", "\uD83D\uDC43\uD83C\uDFFC", "\uD83D\uDC43\uD83C\uDFFD", "\uD83D\uDC43\uD83C\uDFFE", "\uD83D\uDC43\uD83C\uDFFF", "\uD83D\uDC46\uD83C\uDFFB", "\uD83D\uDC46\uD83C\uDFFC", "\uD83D\uDC46\uD83C\uDFFD", "\uD83D\uDC46\uD83C\uDFFE", "\uD83D\uDC46\uD83C\uDFFF", "\uD83D\uDC47\uD83C\uDFFB", "\uD83D\uDC47\uD83C\uDFFC", "\uD83D\uDC47\uD83C\uDFFD", "\uD83D\uDC47\uD83C\uDFFE", "\uD83D\uDC47\uD83C\uDFFF", "\uD83D\uDC48\uD83C\uDFFB", "\uD83D\uDC48\uD83C\uDFFC", "\uD83D\uDC48\uD83C\uDFFD", "\uD83D\uDC48\uD83C\uDFFE", "\uD83D\uDC48\uD83C\uDFFF", "\uD83D\uDC49\uD83C\uDFFB", "\uD83D\uDC49\uD83C\uDFFC", "\uD83D\uDC49\uD83C\uDFFD", "\uD83D\uDC49\uD83C\uDFFE", "\uD83D\uDC49\uD83C\uDFFF", "\uD83D\uDC4A\uD83C\uDFFB", "\uD83D\uDC4A\uD83C\uDFFC", "\uD83D\uDC4A\uD83C\uDFFD", "\uD83D\uDC4A\uD83C\uDFFE", "\uD83D\uDC4A\uD83C\uDFFF", "\uD83D\uDC4B\uD83C\uDFFB", "\uD83D\uDC4B\uD83C\uDFFC", "\uD83D\uDC4B\uD83C\uDFFD", "\uD83D\uDC4B\uD83C\uDFFE", "\uD83D\uDC4B\uD83C\uDFFF", "\uD83D\uDC4C\uD83C\uDFFB", "\uD83D\uDC4C\uD83C\uDFFC", "\uD83D\uDC4C\uD83C\uDFFD", "\uD83D\uDC4C\uD83C\uDFFE", "\uD83D\uDC4C\uD83C\uDFFF", "\uD83D\uDC4D\uD83C\uDFFB", "\uD83D\uDC4D\uD83C\uDFFC", "\uD83D\uDC4D\uD83C\uDFFD", "\uD83D\uDC4D\uD83C\uDFFE", "\uD83D\uDC4D\uD83C\uDFFF", "\uD83D\uDC4E\uD83C\uDFFB", "\uD83D\uDC4E\uD83C\uDFFC", "\uD83D\uDC4E\uD83C\uDFFD", "\uD83D\uDC4E\uD83C\uDFFE", "\uD83D\uDC4E\uD83C\uDFFF", "\uD83D\uDC4F\uD83C\uDFFB", "\uD83D\uDC4F\uD83C\uDFFC", "\uD83D\uDC4F\uD83C\uDFFD", "\uD83D\uDC4F\uD83C\uDFFE", "\uD83D\uDC4F\uD83C\uDFFF", "\uD83D\uDC50\uD83C\uDFFB", "\uD83D\uDC50\uD83C\uDFFC", "\uD83D\uDC50\uD83C\uDFFD", "\uD83D\uDC50\uD83C\uDFFE", "\uD83D\uDC50\uD83C\uDFFF", "\uD83D\uDC66\uD83C\uDFFB", "\uD83D\uDC66\uD83C\uDFFC", "\uD83D\uDC66\uD83C\uDFFD", "\uD83D\uDC66\uD83C\uDFFE", "\uD83D\uDC66\uD83C\uDFFF", "\uD83D\uDC67\uD83C\uDFFB", "\uD83D\uDC67\uD83C\uDFFC", "\uD83D\uDC67\uD83C\uDFFD", "\uD83D\uDC67\uD83C\uDFFE", "\uD83D\uDC67\uD83C\uDFFF", "\uD83D\uDC68\u200D\u2695\uFE0F", "\uD83D\uDC68\u200D\u2696\uFE0F", "\uD83D\uDC68\u200D\u2708\uFE0F", "\uD83D\uDC68\u200D\u2764\uFE0F\u200D\uD83D\uDC68", "\uD83D\uDC68\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68", "\uD83D\uDC68\u200D\uD83C\uDF3E", "\uD83D\uDC68\u200D\uD83C\uDF73", "\uD83D\uDC68\u200D\uD83C\uDF7C", "\uD83D\uDC68\u200D\uD83C\uDF93", "\uD83D\uDC68\u200D\uD83C\uDFA4", "\uD83D\uDC68\u200D\uD83C\uDFA8", "\uD83D\uDC68\u200D\uD83C\uDFEB", "\uD83D\uDC68\u200D\uD83C\uDFED", "\uD83D\uDC68\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC66\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC67", "\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC67", "\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC66\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC67", "\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC68\u200D\uD83D\uDC67\u200D\uD83D\uDC67", "\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC67", "\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC66", "\uD83D\uDC68\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC67", "\uD83D\uDC68\u200D\uD83D\uDCBB", "\uD83D\uDC68\u200D\uD83D\uDCBC", "\uD83D\uDC68\u200D\uD83D\uDD27", "\uD83D\uDC68\u200D\uD83D\uDD2C", "\uD83D\uDC68\u200D\uD83D\uDE80", "\uD83D\uDC68\u200D\uD83D\uDE92", "\uD83D\uDC68\u200D\uD83E\uDDAF", "\uD83D\uDC68\u200D\uD83E\uDDB0", "\uD83D\uDC68\u200D\uD83E\uDDB1", "\uD83D\uDC68\u200D\uD83E\uDDB2", "\uD83D\uDC68\u200D\uD83E\uDDB3", "\uD83D\uDC68\u200D\uD83E\uDDBC", "\uD83D\uDC68\u200D\uD83E\uDDBD", "\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2695\uFE0F", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2696\uFE0F", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2708\uFE0F", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDF3E", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDF73", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDF7C", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDF93", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFA4", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFA8", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFEB", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83C\uDFED", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDCBB", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDCBC", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDD27", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDD2C", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDE80", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83D\uDE92", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDAF", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB0", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB1", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB2", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDB3", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDBC", "\uD83D\uDC68\uD83C\uDFFB\u200D\uD83E\uDDBD", "\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2695\uFE0F", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2696\uFE0F", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2708\uFE0F", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDF3E", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDF73", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDF7C", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDF93", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA4", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFA8", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFEB", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83C\uDFED", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDCBB", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDCBC", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDD27", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDD2C", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDE80", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83D\uDE92", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDAF", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB0", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB1", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB2", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDB3", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDBC", "\uD83D\uDC68\uD83C\uDFFC\u200D\uD83E\uDDBD", "\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2695\uFE0F", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2696\uFE0F", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2708\uFE0F", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDF3E", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDF73", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDF7C", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDF93", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFA4", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFA8", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFEB", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83C\uDFED", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDCBB", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDCBC", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDD27", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDD2C", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDE80", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83D\uDE92", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDAF", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB0", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB1", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB2", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDB3", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDBC", "\uD83D\uDC68\uD83C\uDFFD\u200D\uD83E\uDDBD", "\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2695\uFE0F", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2696\uFE0F", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2708\uFE0F", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDF3E", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDF73", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDF7C", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDF93", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFA4", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFA8", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFEB", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83C\uDFED", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDCBB", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDCBC", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDD27", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDD2C", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDE80", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83D\uDE92", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDAF", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB0", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB1", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB2", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDB3", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDBC", "\uD83D\uDC68\uD83C\uDFFE\u200D\uD83E\uDDBD", "\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2695\uFE0F", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2696\uFE0F", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2708\uFE0F", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDF3E", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDF73", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDF7C", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDF93", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFA4", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFA8", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFEB", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83C\uDFED", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDCBB", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDCBC", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDD27", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDD2C", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDE80", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83D\uDE92", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDAF", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB0", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB1", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB2", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDB3", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDBC", "\uD83D\uDC68\uD83C\uDFFF\u200D\uD83E\uDDBD", "\uD83D\uDC69\u200D\u2695\uFE0F", "\uD83D\uDC69\u200D\u2696\uFE0F", "\uD83D\uDC69\u200D\u2708\uFE0F", "\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC68", "\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC69", "\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68", "\uD83D\uDC69\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69", "\uD83D\uDC69\u200D\uD83C\uDF3E", "\uD83D\uDC69\u200D\uD83C\uDF73", "\uD83D\uDC69\u200D\uD83C\uDF7C", "\uD83D\uDC69\u200D\uD83C\uDF93", "\uD83D\uDC69\u200D\uD83C\uDFA4", "\uD83D\uDC69\u200D\uD83C\uDFA8", "\uD83D\uDC69\u200D\uD83C\uDFEB", "\uD83D\uDC69\u200D\uD83C\uDFED", "\uD83D\uDC69\u200D\uD83D\uDC66", "\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66", "\uD83D\uDC69\u200D\uD83D\uDC67", "\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC66", "\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC67", "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC66", "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC66\u200D\uD83D\uDC66", "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC67", "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC66", "\uD83D\uDC69\u200D\uD83D\uDC69\u200D\uD83D\uDC67\u200D\uD83D\uDC67", "\uD83D\uDC69\u200D\uD83D\uDCBB", "\uD83D\uDC69\u200D\uD83D\uDCBC", "\uD83D\uDC69\u200D\uD83D\uDD27", "\uD83D\uDC69\u200D\uD83D\uDD2C", "\uD83D\uDC69\u200D\uD83D\uDE80", "\uD83D\uDC69\u200D\uD83D\uDE92", "\uD83D\uDC69\u200D\uD83E\uDDAF", "\uD83D\uDC69\u200D\uD83E\uDDB0", "\uD83D\uDC69\u200D\uD83E\uDDB1", "\uD83D\uDC69\u200D\uD83E\uDDB2", "\uD83D\uDC69\u200D\uD83E\uDDB3", "\uD83D\uDC69\u200D\uD83E\uDDBC", "\uD83D\uDC69\u200D\uD83E\uDDBD", "\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2695\uFE0F", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2696\uFE0F", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2708\uFE0F", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDF3E", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDF73", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDF7C", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDF93", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFA4", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFA8", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFEB", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83C\uDFED", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDCBB", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDCBC", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDD27", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDD2C", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDE80", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83D\uDE92", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDAF", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB0", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB1", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB2", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDB3", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDBC", "\uD83D\uDC69\uD83C\uDFFB\u200D\uD83E\uDDBD", "\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2695\uFE0F", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2696\uFE0F", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2708\uFE0F", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDF3E", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDF73", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDF7C", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDF93", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFA4", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFA8", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFEB", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83C\uDFED", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDCBB", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDCBC", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDD27", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDD2C", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDE80", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83D\uDE92", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDAF", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB0", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB1", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB2", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDB3", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDBC", "\uD83D\uDC69\uD83C\uDFFC\u200D\uD83E\uDDBD", "\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2695\uFE0F", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2696\uFE0F", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2708\uFE0F", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDF3E", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDF73", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDF7C", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDF93", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFA4", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFA8", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFEB", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83C\uDFED", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDCBB", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDCBC", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDD27", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDD2C", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDE80", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83D\uDE92", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDAF", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB0", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB1", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB2", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDB3", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDBC", "\uD83D\uDC69\uD83C\uDFFD\u200D\uD83E\uDDBD", "\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2695\uFE0F", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2696\uFE0F", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2708\uFE0F", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDF3E", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDF73", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDF7C", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDF93", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFA4", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFA8", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFEB", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83C\uDFED", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDCBB", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDCBC", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDD27", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDD2C", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDE80", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83D\uDE92", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDAF", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB0", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB1", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB2", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDB3", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDBC", "\uD83D\uDC69\uD83C\uDFFE\u200D\uD83E\uDDBD", "\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2695\uFE0F", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2696\uFE0F", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2708\uFE0F", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC68\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83D\uDC69\uD83C\uDFFF", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDF3E", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDF73", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDF7C", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDF93", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFA4", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFA8", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFEB", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83C\uDFED", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDCBB", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDCBC", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDD27", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDD2C", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDE80", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83D\uDE92", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC68\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFB", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFC", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFD", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83D\uDC69\uD83C\uDFFE", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDAF", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB0", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB1", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB2", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDB3", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDBC", "\uD83D\uDC69\uD83C\uDFFF\u200D\uD83E\uDDBD", "\uD83D\uDC6B\uD83C\uDFFB", "\uD83D\uDC6B\uD83C\uDFFC", "\uD83D\uDC6B\uD83C\uDFFD", "\uD83D\uDC6B\uD83C\uDFFE", "\uD83D\uDC6B\uD83C\uDFFF", "\uD83D\uDC6C\uD83C\uDFFB", "\uD83D\uDC6C\uD83C\uDFFC", "\uD83D\uDC6C\uD83C\uDFFD", "\uD83D\uDC6C\uD83C\uDFFE", "\uD83D\uDC6C\uD83C\uDFFF", "\uD83D\uDC6D\uD83C\uDFFB", "\uD83D\uDC6D\uD83C\uDFFC", "\uD83D\uDC6D\uD83C\uDFFD", "\uD83D\uDC6D\uD83C\uDFFE", "\uD83D\uDC6D\uD83C\uDFFF", "\uD83D\uDC6E\u200D\u2640\uFE0F", "\uD83D\uDC6E\u200D\u2642\uFE0F", "\uD83D\uDC6E\uD83C\uDFFB", "\uD83D\uDC6E\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC6E\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC6E\uD83C\uDFFC", "\uD83D\uDC6E\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC6E\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC6E\uD83C\uDFFD", "\uD83D\uDC6E\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC6E\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC6E\uD83C\uDFFE", "\uD83D\uDC6E\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC6E\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC6E\uD83C\uDFFF", "\uD83D\uDC6E\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC6E\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC6F\u200D\u2640\uFE0F", "\uD83D\uDC6F\u200D\u2642\uFE0F", "\uD83D\uDC70\u200D\u2640\uFE0F", "\uD83D\uDC70\u200D\u2642\uFE0F", "\uD83D\uDC70\uD83C\uDFFB", "\uD83D\uDC70\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC70\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC70\uD83C\uDFFC", "\uD83D\uDC70\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC70\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC70\uD83C\uDFFD", "\uD83D\uDC70\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC70\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC70\uD83C\uDFFE", "\uD83D\uDC70\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC70\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC70\uD83C\uDFFF", "\uD83D\uDC70\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC70\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC71\u200D\u2640\uFE0F", "\uD83D\uDC71\u200D\u2642\uFE0F", "\uD83D\uDC71\uD83C\uDFFB", "\uD83D\uDC71\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC71\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC71\uD83C\uDFFC", "\uD83D\uDC71\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC71\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC71\uD83C\uDFFD", "\uD83D\uDC71\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC71\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC71\uD83C\uDFFE", "\uD83D\uDC71\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC71\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC71\uD83C\uDFFF", "\uD83D\uDC71\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC71\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC72\uD83C\uDFFB", "\uD83D\uDC72\uD83C\uDFFC", "\uD83D\uDC72\uD83C\uDFFD", "\uD83D\uDC72\uD83C\uDFFE", "\uD83D\uDC72\uD83C\uDFFF", "\uD83D\uDC73\u200D\u2640\uFE0F", "\uD83D\uDC73\u200D\u2642\uFE0F", "\uD83D\uDC73\uD83C\uDFFB", "\uD83D\uDC73\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC73\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC73\uD83C\uDFFC", "\uD83D\uDC73\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC73\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC73\uD83C\uDFFD", "\uD83D\uDC73\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC73\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC73\uD83C\uDFFE", "\uD83D\uDC73\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC73\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC73\uD83C\uDFFF", "\uD83D\uDC73\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC73\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC74\uD83C\uDFFB", "\uD83D\uDC74\uD83C\uDFFC", "\uD83D\uDC74\uD83C\uDFFD", "\uD83D\uDC74\uD83C\uDFFE", "\uD83D\uDC74\uD83C\uDFFF", "\uD83D\uDC75\uD83C\uDFFB", "\uD83D\uDC75\uD83C\uDFFC", "\uD83D\uDC75\uD83C\uDFFD", "\uD83D\uDC75\uD83C\uDFFE", "\uD83D\uDC75\uD83C\uDFFF", "\uD83D\uDC76\uD83C\uDFFB", "\uD83D\uDC76\uD83C\uDFFC", "\uD83D\uDC76\uD83C\uDFFD", "\uD83D\uDC76\uD83C\uDFFE", "\uD83D\uDC76\uD83C\uDFFF", "\uD83D\uDC77\u200D\u2640\uFE0F", "\uD83D\uDC77\u200D\u2642\uFE0F", "\uD83D\uDC77\uD83C\uDFFB", "\uD83D\uDC77\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC77\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC77\uD83C\uDFFC", "\uD83D\uDC77\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC77\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC77\uD83C\uDFFD", "\uD83D\uDC77\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC77\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC77\uD83C\uDFFE", "\uD83D\uDC77\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC77\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC77\uD83C\uDFFF", "\uD83D\uDC77\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC77\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC78\uD83C\uDFFB", "\uD83D\uDC78\uD83C\uDFFC", "\uD83D\uDC78\uD83C\uDFFD", "\uD83D\uDC78\uD83C\uDFFE", "\uD83D\uDC78\uD83C\uDFFF", "\uD83D\uDC7C\uD83C\uDFFB", "\uD83D\uDC7C\uD83C\uDFFC", "\uD83D\uDC7C\uD83C\uDFFD", "\uD83D\uDC7C\uD83C\uDFFE", "\uD83D\uDC7C\uD83C\uDFFF", "\uD83D\uDC81\u200D\u2640\uFE0F", "\uD83D\uDC81\u200D\u2642\uFE0F", "\uD83D\uDC81\uD83C\uDFFB", "\uD83D\uDC81\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC81\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC81\uD83C\uDFFC", "\uD83D\uDC81\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC81\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC81\uD83C\uDFFD", "\uD83D\uDC81\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC81\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC81\uD83C\uDFFE", "\uD83D\uDC81\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC81\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC81\uD83C\uDFFF", "\uD83D\uDC81\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC81\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC82\u200D\u2640\uFE0F", "\uD83D\uDC82\u200D\u2642\uFE0F", "\uD83D\uDC82\uD83C\uDFFB", "\uD83D\uDC82\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC82\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC82\uD83C\uDFFC", "\uD83D\uDC82\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC82\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC82\uD83C\uDFFD", "\uD83D\uDC82\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC82\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC82\uD83C\uDFFE", "\uD83D\uDC82\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC82\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC82\uD83C\uDFFF", "\uD83D\uDC82\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC82\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC83\uD83C\uDFFB", "\uD83D\uDC83\uD83C\uDFFC", "\uD83D\uDC83\uD83C\uDFFD", "\uD83D\uDC83\uD83C\uDFFE", "\uD83D\uDC83\uD83C\uDFFF", "\uD83D\uDC85\uD83C\uDFFB", "\uD83D\uDC85\uD83C\uDFFC", "\uD83D\uDC85\uD83C\uDFFD", "\uD83D\uDC85\uD83C\uDFFE", "\uD83D\uDC85\uD83C\uDFFF", "\uD83D\uDC86\u200D\u2640\uFE0F", "\uD83D\uDC86\u200D\u2642\uFE0F", "\uD83D\uDC86\uD83C\uDFFB", "\uD83D\uDC86\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC86\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC86\uD83C\uDFFC", "\uD83D\uDC86\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC86\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC86\uD83C\uDFFD", "\uD83D\uDC86\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC86\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC86\uD83C\uDFFE", "\uD83D\uDC86\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC86\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC86\uD83C\uDFFF", "\uD83D\uDC86\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC86\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC87\u200D\u2640\uFE0F", "\uD83D\uDC87\u200D\u2642\uFE0F", "\uD83D\uDC87\uD83C\uDFFB", "\uD83D\uDC87\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDC87\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDC87\uD83C\uDFFC", "\uD83D\uDC87\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDC87\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDC87\uD83C\uDFFD", "\uD83D\uDC87\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDC87\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDC87\uD83C\uDFFE", "\uD83D\uDC87\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDC87\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDC87\uD83C\uDFFF", "\uD83D\uDC87\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDC87\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDC8F\uD83C\uDFFB", "\uD83D\uDC8F\uD83C\uDFFC", "\uD83D\uDC8F\uD83C\uDFFD", "\uD83D\uDC8F\uD83C\uDFFE", "\uD83D\uDC8F\uD83C\uDFFF", "\uD83D\uDC91\uD83C\uDFFB", "\uD83D\uDC91\uD83C\uDFFC", "\uD83D\uDC91\uD83C\uDFFD", "\uD83D\uDC91\uD83C\uDFFE", "\uD83D\uDC91\uD83C\uDFFF", "\uD83D\uDCAA\uD83C\uDFFB", "\uD83D\uDCAA\uD83C\uDFFC", "\uD83D\uDCAA\uD83C\uDFFD", "\uD83D\uDCAA\uD83C\uDFFE", "\uD83D\uDCAA\uD83C\uDFFF", "\uD83D\uDCFD\uFE0F", "\uD83D\uDD49\uFE0F", "\uD83D\uDD4A\uFE0F", "\uD83D\uDD6F\uFE0F", "\uD83D\uDD70\uFE0F", "\uD83D\uDD73\uFE0F", "\uD83D\uDD74\uD83C\uDFFB", "\uD83D\uDD74\uD83C\uDFFC", "\uD83D\uDD74\uD83C\uDFFD", "\uD83D\uDD74\uD83C\uDFFE", "\uD83D\uDD74\uD83C\uDFFF", "\uD83D\uDD74\uFE0F", "\uD83D\uDD75\uD83C\uDFFB", "\uD83D\uDD75\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDD75\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDD75\uD83C\uDFFC", "\uD83D\uDD75\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDD75\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDD75\uD83C\uDFFD", "\uD83D\uDD75\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDD75\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDD75\uD83C\uDFFE", "\uD83D\uDD75\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDD75\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDD75\uD83C\uDFFF", "\uD83D\uDD75\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDD75\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDD75\uFE0F", "\uD83D\uDD75\uFE0F\u200D\u2640\uFE0F", "\uD83D\uDD75\uFE0F\u200D\u2642\uFE0F", "\uD83D\uDD76\uFE0F", "\uD83D\uDD77\uFE0F", "\uD83D\uDD78\uFE0F", "\uD83D\uDD79\uFE0F", "\uD83D\uDD7A\uD83C\uDFFB", "\uD83D\uDD7A\uD83C\uDFFC", "\uD83D\uDD7A\uD83C\uDFFD", "\uD83D\uDD7A\uD83C\uDFFE", "\uD83D\uDD7A\uD83C\uDFFF", "\uD83D\uDD87\uFE0F", "\uD83D\uDD8A\uFE0F", "\uD83D\uDD8B\uFE0F", "\uD83D\uDD8C\uFE0F", "\uD83D\uDD8D\uFE0F", "\uD83D\uDD90\uD83C\uDFFB", "\uD83D\uDD90\uD83C\uDFFC", "\uD83D\uDD90\uD83C\uDFFD", "\uD83D\uDD90\uD83C\uDFFE", "\uD83D\uDD90\uD83C\uDFFF", "\uD83D\uDD90\uFE0F", "\uD83D\uDD95\uD83C\uDFFB", "\uD83D\uDD95\uD83C\uDFFC", "\uD83D\uDD95\uD83C\uDFFD", "\uD83D\uDD95\uD83C\uDFFE", "\uD83D\uDD95\uD83C\uDFFF", "\uD83D\uDD96\uD83C\uDFFB", "\uD83D\uDD96\uD83C\uDFFC", "\uD83D\uDD96\uD83C\uDFFD", "\uD83D\uDD96\uD83C\uDFFE", "\uD83D\uDD96\uD83C\uDFFF", "\uD83D\uDDA5\uFE0F", "\uD83D\uDDA8\uFE0F", "\uD83D\uDDB1\uFE0F", "\uD83D\uDDB2\uFE0F", "\uD83D\uDDBC\uFE0F", "\uD83D\uDDC2\uFE0F", "\uD83D\uDDC3\uFE0F", "\uD83D\uDDC4\uFE0F", "\uD83D\uDDD1\uFE0F", "\uD83D\uDDD2\uFE0F", "\uD83D\uDDD3\uFE0F", "\uD83D\uDDDC\uFE0F", "\uD83D\uDDDD\uFE0F", "\uD83D\uDDDE\uFE0F", "\uD83D\uDDE1\uFE0F", "\uD83D\uDDE3\uFE0F", "\uD83D\uDDE8\uFE0F", "\uD83D\uDDEF\uFE0F", "\uD83D\uDDF3\uFE0F", "\uD83D\uDDFA\uFE0F", "\uD83D\uDE2E\u200D\uD83D\uDCA8", "\uD83D\uDE35\u200D\uD83D\uDCAB", "\uD83D\uDE36\u200D\uD83C\uDF2B\uFE0F", "\uD83D\uDE45\u200D\u2640\uFE0F", "\uD83D\uDE45\u200D\u2642\uFE0F", "\uD83D\uDE45\uD83C\uDFFB", "\uD83D\uDE45\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDE45\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDE45\uD83C\uDFFC", "\uD83D\uDE45\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDE45\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDE45\uD83C\uDFFD", "\uD83D\uDE45\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDE45\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDE45\uD83C\uDFFE", "\uD83D\uDE45\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDE45\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDE45\uD83C\uDFFF", "\uD83D\uDE45\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDE45\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDE46\u200D\u2640\uFE0F", "\uD83D\uDE46\u200D\u2642\uFE0F", "\uD83D\uDE46\uD83C\uDFFB", "\uD83D\uDE46\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDE46\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDE46\uD83C\uDFFC", "\uD83D\uDE46\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDE46\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDE46\uD83C\uDFFD", "\uD83D\uDE46\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDE46\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDE46\uD83C\uDFFE", "\uD83D\uDE46\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDE46\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDE46\uD83C\uDFFF", "\uD83D\uDE46\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDE46\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDE47\u200D\u2640\uFE0F", "\uD83D\uDE47\u200D\u2642\uFE0F", "\uD83D\uDE47\uD83C\uDFFB", "\uD83D\uDE47\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDE47\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDE47\uD83C\uDFFC", "\uD83D\uDE47\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDE47\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDE47\uD83C\uDFFD", "\uD83D\uDE47\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDE47\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDE47\uD83C\uDFFE", "\uD83D\uDE47\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDE47\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDE47\uD83C\uDFFF", "\uD83D\uDE47\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDE47\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDE4B\u200D\u2640\uFE0F", "\uD83D\uDE4B\u200D\u2642\uFE0F", "\uD83D\uDE4B\uD83C\uDFFB", "\uD83D\uDE4B\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDE4B\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDE4B\uD83C\uDFFC", "\uD83D\uDE4B\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDE4B\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDE4B\uD83C\uDFFD", "\uD83D\uDE4B\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDE4B\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDE4B\uD83C\uDFFE", "\uD83D\uDE4B\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDE4B\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDE4B\uD83C\uDFFF", "\uD83D\uDE4B\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDE4B\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDE4C\uD83C\uDFFB", "\uD83D\uDE4C\uD83C\uDFFC", "\uD83D\uDE4C\uD83C\uDFFD", "\uD83D\uDE4C\uD83C\uDFFE", "\uD83D\uDE4C\uD83C\uDFFF", "\uD83D\uDE4D\u200D\u2640\uFE0F", "\uD83D\uDE4D\u200D\u2642\uFE0F", "\uD83D\uDE4D\uD83C\uDFFB", "\uD83D\uDE4D\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDE4D\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDE4D\uD83C\uDFFC", "\uD83D\uDE4D\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDE4D\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDE4D\uD83C\uDFFD", "\uD83D\uDE4D\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDE4D\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDE4D\uD83C\uDFFE", "\uD83D\uDE4D\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDE4D\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDE4D\uD83C\uDFFF", "\uD83D\uDE4D\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDE4D\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDE4E\u200D\u2640\uFE0F", "\uD83D\uDE4E\u200D\u2642\uFE0F", "\uD83D\uDE4E\uD83C\uDFFB", "\uD83D\uDE4E\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDE4E\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDE4E\uD83C\uDFFC", "\uD83D\uDE4E\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDE4E\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDE4E\uD83C\uDFFD", "\uD83D\uDE4E\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDE4E\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDE4E\uD83C\uDFFE", "\uD83D\uDE4E\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDE4E\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDE4E\uD83C\uDFFF", "\uD83D\uDE4E\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDE4E\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDE4F\uD83C\uDFFB", "\uD83D\uDE4F\uD83C\uDFFC", "\uD83D\uDE4F\uD83C\uDFFD", "\uD83D\uDE4F\uD83C\uDFFE", "\uD83D\uDE4F\uD83C\uDFFF", "\uD83D\uDEA3\u200D\u2640\uFE0F", "\uD83D\uDEA3\u200D\u2642\uFE0F", "\uD83D\uDEA3\uD83C\uDFFB", "\uD83D\uDEA3\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDEA3\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDEA3\uD83C\uDFFC", "\uD83D\uDEA3\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDEA3\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDEA3\uD83C\uDFFD", "\uD83D\uDEA3\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDEA3\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDEA3\uD83C\uDFFE", "\uD83D\uDEA3\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDEA3\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDEA3\uD83C\uDFFF", "\uD83D\uDEA3\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDEA3\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDEB4\u200D\u2640\uFE0F", "\uD83D\uDEB4\u200D\u2642\uFE0F", "\uD83D\uDEB4\uD83C\uDFFB", "\uD83D\uDEB4\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDEB4\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDEB4\uD83C\uDFFC", "\uD83D\uDEB4\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDEB4\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDEB4\uD83C\uDFFD", "\uD83D\uDEB4\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDEB4\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDEB4\uD83C\uDFFE", "\uD83D\uDEB4\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDEB4\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDEB4\uD83C\uDFFF", "\uD83D\uDEB4\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDEB4\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDEB5\u200D\u2640\uFE0F", "\uD83D\uDEB5\u200D\u2642\uFE0F", "\uD83D\uDEB5\uD83C\uDFFB", "\uD83D\uDEB5\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDEB5\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDEB5\uD83C\uDFFC", "\uD83D\uDEB5\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDEB5\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDEB5\uD83C\uDFFD", "\uD83D\uDEB5\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDEB5\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDEB5\uD83C\uDFFE", "\uD83D\uDEB5\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDEB5\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDEB5\uD83C\uDFFF", "\uD83D\uDEB5\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDEB5\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDEB6\u200D\u2640\uFE0F", "\uD83D\uDEB6\u200D\u2642\uFE0F", "\uD83D\uDEB6\uD83C\uDFFB", "\uD83D\uDEB6\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83D\uDEB6\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83D\uDEB6\uD83C\uDFFC", "\uD83D\uDEB6\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83D\uDEB6\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83D\uDEB6\uD83C\uDFFD", "\uD83D\uDEB6\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83D\uDEB6\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83D\uDEB6\uD83C\uDFFE", "\uD83D\uDEB6\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83D\uDEB6\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83D\uDEB6\uD83C\uDFFF", "\uD83D\uDEB6\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83D\uDEB6\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83D\uDEC0\uD83C\uDFFB", "\uD83D\uDEC0\uD83C\uDFFC", "\uD83D\uDEC0\uD83C\uDFFD", "\uD83D\uDEC0\uD83C\uDFFE", "\uD83D\uDEC0\uD83C\uDFFF", "\uD83D\uDECB\uFE0F", "\uD83D\uDECC\uD83C\uDFFB", "\uD83D\uDECC\uD83C\uDFFC", "\uD83D\uDECC\uD83C\uDFFD", "\uD83D\uDECC\uD83C\uDFFE", "\uD83D\uDECC\uD83C\uDFFF", "\uD83D\uDECD\uFE0F", "\uD83D\uDECE\uFE0F", "\uD83D\uDECF\uFE0F", "\uD83D\uDEE0\uFE0F", "\uD83D\uDEE1\uFE0F", "\uD83D\uDEE2\uFE0F", "\uD83D\uDEE3\uFE0F", "\uD83D\uDEE4\uFE0F", "\uD83D\uDEE5\uFE0F", "\uD83D\uDEE9\uFE0F", "\uD83D\uDEF0\uFE0F", "\uD83D\uDEF3\uFE0F", "\uD83E\uDD0C\uD83C\uDFFB", "\uD83E\uDD0C\uD83C\uDFFC", "\uD83E\uDD0C\uD83C\uDFFD", "\uD83E\uDD0C\uD83C\uDFFE", "\uD83E\uDD0C\uD83C\uDFFF", "\uD83E\uDD0F\uD83C\uDFFB", "\uD83E\uDD0F\uD83C\uDFFC", "\uD83E\uDD0F\uD83C\uDFFD", "\uD83E\uDD0F\uD83C\uDFFE", "\uD83E\uDD0F\uD83C\uDFFF", "\uD83E\uDD18\uD83C\uDFFB", "\uD83E\uDD18\uD83C\uDFFC", "\uD83E\uDD18\uD83C\uDFFD", "\uD83E\uDD18\uD83C\uDFFE", "\uD83E\uDD18\uD83C\uDFFF", "\uD83E\uDD19\uD83C\uDFFB", "\uD83E\uDD19\uD83C\uDFFC", "\uD83E\uDD19\uD83C\uDFFD", "\uD83E\uDD19\uD83C\uDFFE", "\uD83E\uDD19\uD83C\uDFFF", "\uD83E\uDD1A\uD83C\uDFFB", "\uD83E\uDD1A\uD83C\uDFFC", "\uD83E\uDD1A\uD83C\uDFFD", "\uD83E\uDD1A\uD83C\uDFFE", "\uD83E\uDD1A\uD83C\uDFFF", "\uD83E\uDD1B\uD83C\uDFFB", "\uD83E\uDD1B\uD83C\uDFFC", "\uD83E\uDD1B\uD83C\uDFFD", "\uD83E\uDD1B\uD83C\uDFFE", "\uD83E\uDD1B\uD83C\uDFFF", "\uD83E\uDD1C\uD83C\uDFFB", "\uD83E\uDD1C\uD83C\uDFFC", "\uD83E\uDD1C\uD83C\uDFFD", "\uD83E\uDD1C\uD83C\uDFFE", "\uD83E\uDD1C\uD83C\uDFFF", "\uD83E\uDD1D\uD83C\uDFFB", "\uD83E\uDD1D\uD83C\uDFFC", "\uD83E\uDD1D\uD83C\uDFFD", "\uD83E\uDD1D\uD83C\uDFFE", "\uD83E\uDD1D\uD83C\uDFFF", "\uD83E\uDD1E\uD83C\uDFFB", "\uD83E\uDD1E\uD83C\uDFFC", "\uD83E\uDD1E\uD83C\uDFFD", "\uD83E\uDD1E\uD83C\uDFFE", "\uD83E\uDD1E\uD83C\uDFFF", "\uD83E\uDD1F\uD83C\uDFFB", "\uD83E\uDD1F\uD83C\uDFFC", "\uD83E\uDD1F\uD83C\uDFFD", "\uD83E\uDD1F\uD83C\uDFFE", "\uD83E\uDD1F\uD83C\uDFFF", "\uD83E\uDD26\u200D\u2640\uFE0F", "\uD83E\uDD26\u200D\u2642\uFE0F", "\uD83E\uDD26\uD83C\uDFFB", "\uD83E\uDD26\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD26\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD26\uD83C\uDFFC", "\uD83E\uDD26\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD26\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD26\uD83C\uDFFD", "\uD83E\uDD26\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD26\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD26\uD83C\uDFFE", "\uD83E\uDD26\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD26\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD26\uD83C\uDFFF", "\uD83E\uDD26\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD26\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD30\uD83C\uDFFB", "\uD83E\uDD30\uD83C\uDFFC", "\uD83E\uDD30\uD83C\uDFFD", "\uD83E\uDD30\uD83C\uDFFE", "\uD83E\uDD30\uD83C\uDFFF", "\uD83E\uDD31\uD83C\uDFFB", "\uD83E\uDD31\uD83C\uDFFC", "\uD83E\uDD31\uD83C\uDFFD", "\uD83E\uDD31\uD83C\uDFFE", "\uD83E\uDD31\uD83C\uDFFF", "\uD83E\uDD32\uD83C\uDFFB", "\uD83E\uDD32\uD83C\uDFFC", "\uD83E\uDD32\uD83C\uDFFD", "\uD83E\uDD32\uD83C\uDFFE", "\uD83E\uDD32\uD83C\uDFFF", "\uD83E\uDD33\uD83C\uDFFB", "\uD83E\uDD33\uD83C\uDFFC", "\uD83E\uDD33\uD83C\uDFFD", "\uD83E\uDD33\uD83C\uDFFE", "\uD83E\uDD33\uD83C\uDFFF", "\uD83E\uDD34\uD83C\uDFFB", "\uD83E\uDD34\uD83C\uDFFC", "\uD83E\uDD34\uD83C\uDFFD", "\uD83E\uDD34\uD83C\uDFFE", "\uD83E\uDD34\uD83C\uDFFF", "\uD83E\uDD35\u200D\u2640\uFE0F", "\uD83E\uDD35\u200D\u2642\uFE0F", "\uD83E\uDD35\uD83C\uDFFB", "\uD83E\uDD35\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD35\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD35\uD83C\uDFFC", "\uD83E\uDD35\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD35\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD35\uD83C\uDFFD", "\uD83E\uDD35\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD35\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD35\uD83C\uDFFE", "\uD83E\uDD35\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD35\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD35\uD83C\uDFFF", "\uD83E\uDD35\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD35\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD36\uD83C\uDFFB", "\uD83E\uDD36\uD83C\uDFFC", "\uD83E\uDD36\uD83C\uDFFD", "\uD83E\uDD36\uD83C\uDFFE", "\uD83E\uDD36\uD83C\uDFFF", "\uD83E\uDD37\u200D\u2640\uFE0F", "\uD83E\uDD37\u200D\u2642\uFE0F", "\uD83E\uDD37\uD83C\uDFFB", "\uD83E\uDD37\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD37\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD37\uD83C\uDFFC", "\uD83E\uDD37\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD37\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD37\uD83C\uDFFD", "\uD83E\uDD37\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD37\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD37\uD83C\uDFFE", "\uD83E\uDD37\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD37\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD37\uD83C\uDFFF", "\uD83E\uDD37\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD37\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD38\u200D\u2640\uFE0F", "\uD83E\uDD38\u200D\u2642\uFE0F", "\uD83E\uDD38\uD83C\uDFFB", "\uD83E\uDD38\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD38\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD38\uD83C\uDFFC", "\uD83E\uDD38\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD38\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD38\uD83C\uDFFD", "\uD83E\uDD38\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD38\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD38\uD83C\uDFFE", "\uD83E\uDD38\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD38\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD38\uD83C\uDFFF", "\uD83E\uDD38\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD38\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD39\u200D\u2640\uFE0F", "\uD83E\uDD39\u200D\u2642\uFE0F", "\uD83E\uDD39\uD83C\uDFFB", "\uD83E\uDD39\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD39\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD39\uD83C\uDFFC", "\uD83E\uDD39\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD39\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD39\uD83C\uDFFD", "\uD83E\uDD39\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD39\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD39\uD83C\uDFFE", "\uD83E\uDD39\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD39\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD39\uD83C\uDFFF", "\uD83E\uDD39\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD39\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD3C\u200D\u2640\uFE0F", "\uD83E\uDD3C\u200D\u2642\uFE0F", "\uD83E\uDD3D\u200D\u2640\uFE0F", "\uD83E\uDD3D\u200D\u2642\uFE0F", "\uD83E\uDD3D\uD83C\uDFFB", "\uD83E\uDD3D\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD3D\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD3D\uD83C\uDFFC", "\uD83E\uDD3D\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD3D\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD3D\uD83C\uDFFD", "\uD83E\uDD3D\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD3D\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD3D\uD83C\uDFFE", "\uD83E\uDD3D\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD3D\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD3D\uD83C\uDFFF", "\uD83E\uDD3D\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD3D\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD3E\u200D\u2640\uFE0F", "\uD83E\uDD3E\u200D\u2642\uFE0F", "\uD83E\uDD3E\uD83C\uDFFB", "\uD83E\uDD3E\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDD3E\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDD3E\uD83C\uDFFC", "\uD83E\uDD3E\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDD3E\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDD3E\uD83C\uDFFD", "\uD83E\uDD3E\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDD3E\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDD3E\uD83C\uDFFE", "\uD83E\uDD3E\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDD3E\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDD3E\uD83C\uDFFF", "\uD83E\uDD3E\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDD3E\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDD77\uD83C\uDFFB", "\uD83E\uDD77\uD83C\uDFFC", "\uD83E\uDD77\uD83C\uDFFD", "\uD83E\uDD77\uD83C\uDFFE", "\uD83E\uDD77\uD83C\uDFFF", "\uD83E\uDDB5\uD83C\uDFFB", "\uD83E\uDDB5\uD83C\uDFFC", "\uD83E\uDDB5\uD83C\uDFFD", "\uD83E\uDDB5\uD83C\uDFFE", "\uD83E\uDDB5\uD83C\uDFFF", "\uD83E\uDDB6\uD83C\uDFFB", "\uD83E\uDDB6\uD83C\uDFFC", "\uD83E\uDDB6\uD83C\uDFFD", "\uD83E\uDDB6\uD83C\uDFFE", "\uD83E\uDDB6\uD83C\uDFFF", "\uD83E\uDDB8\u200D\u2640\uFE0F", "\uD83E\uDDB8\u200D\u2642\uFE0F", "\uD83E\uDDB8\uD83C\uDFFB", "\uD83E\uDDB8\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDB8\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDB8\uD83C\uDFFC", "\uD83E\uDDB8\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDB8\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDB8\uD83C\uDFFD", "\uD83E\uDDB8\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDB8\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDB8\uD83C\uDFFE", "\uD83E\uDDB8\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDB8\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDB8\uD83C\uDFFF", "\uD83E\uDDB8\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDB8\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDB9\u200D\u2640\uFE0F", "\uD83E\uDDB9\u200D\u2642\uFE0F", "\uD83E\uDDB9\uD83C\uDFFB", "\uD83E\uDDB9\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDB9\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDB9\uD83C\uDFFC", "\uD83E\uDDB9\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDB9\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDB9\uD83C\uDFFD", "\uD83E\uDDB9\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDB9\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDB9\uD83C\uDFFE", "\uD83E\uDDB9\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDB9\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDB9\uD83C\uDFFF", "\uD83E\uDDB9\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDB9\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDBB\uD83C\uDFFB", "\uD83E\uDDBB\uD83C\uDFFC", "\uD83E\uDDBB\uD83C\uDFFD", "\uD83E\uDDBB\uD83C\uDFFE", "\uD83E\uDDBB\uD83C\uDFFF", "\uD83E\uDDCD\u200D\u2640\uFE0F", "\uD83E\uDDCD\u200D\u2642\uFE0F", "\uD83E\uDDCD\uD83C\uDFFB", "\uD83E\uDDCD\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDCD\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDCD\uD83C\uDFFC", "\uD83E\uDDCD\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDCD\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDCD\uD83C\uDFFD", "\uD83E\uDDCD\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDCD\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDCD\uD83C\uDFFE", "\uD83E\uDDCD\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDCD\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDCD\uD83C\uDFFF", "\uD83E\uDDCD\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDCD\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDCE\u200D\u2640\uFE0F", "\uD83E\uDDCE\u200D\u2642\uFE0F", "\uD83E\uDDCE\uD83C\uDFFB", "\uD83E\uDDCE\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDCE\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDCE\uD83C\uDFFC", "\uD83E\uDDCE\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDCE\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDCE\uD83C\uDFFD", "\uD83E\uDDCE\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDCE\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDCE\uD83C\uDFFE", "\uD83E\uDDCE\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDCE\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDCE\uD83C\uDFFF", "\uD83E\uDDCE\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDCE\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDCF\u200D\u2640\uFE0F", "\uD83E\uDDCF\u200D\u2642\uFE0F", "\uD83E\uDDCF\uD83C\uDFFB", "\uD83E\uDDCF\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDCF\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDCF\uD83C\uDFFC", "\uD83E\uDDCF\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDCF\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDCF\uD83C\uDFFD", "\uD83E\uDDCF\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDCF\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDCF\uD83C\uDFFE", "\uD83E\uDDCF\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDCF\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDCF\uD83C\uDFFF", "\uD83E\uDDCF\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDCF\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDD1\u200D\u2695\uFE0F", "\uD83E\uDDD1\u200D\u2696\uFE0F", "\uD83E\uDDD1\u200D\u2708\uFE0F", "\uD83E\uDDD1\u200D\uD83C\uDF3E", "\uD83E\uDDD1\u200D\uD83C\uDF73", "\uD83E\uDDD1\u200D\uD83C\uDF7C", "\uD83E\uDDD1\u200D\uD83C\uDF84", "\uD83E\uDDD1\u200D\uD83C\uDF93", "\uD83E\uDDD1\u200D\uD83C\uDFA4", "\uD83E\uDDD1\u200D\uD83C\uDFA8", "\uD83E\uDDD1\u200D\uD83C\uDFEB", "\uD83E\uDDD1\u200D\uD83C\uDFED", "\uD83E\uDDD1\u200D\uD83D\uDCBB", "\uD83E\uDDD1\u200D\uD83D\uDCBC", "\uD83E\uDDD1\u200D\uD83D\uDD27", "\uD83E\uDDD1\u200D\uD83D\uDD2C", "\uD83E\uDDD1\u200D\uD83D\uDE80", "\uD83E\uDDD1\u200D\uD83D\uDE92", "\uD83E\uDDD1\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1", "\uD83E\uDDD1\u200D\uD83E\uDDAF", "\uD83E\uDDD1\u200D\uD83E\uDDB0", "\uD83E\uDDD1\u200D\uD83E\uDDB1", "\uD83E\uDDD1\u200D\uD83E\uDDB2", "\uD83E\uDDD1\u200D\uD83E\uDDB3", "\uD83E\uDDD1\u200D\uD83E\uDDBC", "\uD83E\uDDD1\u200D\uD83E\uDDBD", "\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2695\uFE0F", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2696\uFE0F", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2708\uFE0F", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFB\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDF3E", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDF73", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDF7C", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDF84", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDF93", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDFA4", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDFA8", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDFEB", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83C\uDFED", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83D\uDCBB", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83D\uDCBC", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83D\uDD27", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83D\uDD2C", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83D\uDE80", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83D\uDE92", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDAF", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDB0", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDB1", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDB2", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDB3", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDBC", "\uD83E\uDDD1\uD83C\uDFFB\u200D\uD83E\uDDBD", "\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2695\uFE0F", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2696\uFE0F", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2708\uFE0F", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFC\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDF3E", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDF73", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDF7C", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDF84", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDF93", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDFA4", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDFA8", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDFEB", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83C\uDFED", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83D\uDCBB", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83D\uDCBC", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83D\uDD27", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83D\uDD2C", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83D\uDE80", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83D\uDE92", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDAF", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDB0", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDB1", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDB2", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDB3", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDBC", "\uD83E\uDDD1\uD83C\uDFFC\u200D\uD83E\uDDBD", "\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2695\uFE0F", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2696\uFE0F", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2708\uFE0F", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFD\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDF3E", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDF73", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDF7C", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDF84", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDF93", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDFA4", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDFA8", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDFEB", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83C\uDFED", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83D\uDCBB", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83D\uDCBC", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83D\uDD27", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83D\uDD2C", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83D\uDE80", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83D\uDE92", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDAF", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDB0", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDB1", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDB2", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDB3", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDBC", "\uD83E\uDDD1\uD83C\uDFFD\u200D\uD83E\uDDBD", "\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2695\uFE0F", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2696\uFE0F", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2708\uFE0F", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFE\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDF3E", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDF73", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDF7C", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDF84", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDF93", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDFA4", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDFA8", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDFEB", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83C\uDFED", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83D\uDCBB", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83D\uDCBC", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83D\uDD27", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83D\uDD2C", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83D\uDE80", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83D\uDE92", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDAF", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDB0", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDB1", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDB2", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDB3", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDBC", "\uD83E\uDDD1\uD83C\uDFFE\u200D\uD83E\uDDBD", "\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2695\uFE0F", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2696\uFE0F", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2708\uFE0F", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83D\uDC8B\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFF\u200D\u2764\uFE0F\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDF3E", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDF73", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDF7C", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDF84", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDF93", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDFA4", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDFA8", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDFEB", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83C\uDFED", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83D\uDCBB", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83D\uDCBC", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83D\uDD27", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83D\uDD2C", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83D\uDE80", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83D\uDE92", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFB", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFC", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFD", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFE", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDD1D\u200D\uD83E\uDDD1\uD83C\uDFFF", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDAF", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDB0", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDB1", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDB2", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDB3", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDBC", "\uD83E\uDDD1\uD83C\uDFFF\u200D\uD83E\uDDBD", "\uD83E\uDDD2\uD83C\uDFFB", "\uD83E\uDDD2\uD83C\uDFFC", "\uD83E\uDDD2\uD83C\uDFFD", "\uD83E\uDDD2\uD83C\uDFFE", "\uD83E\uDDD2\uD83C\uDFFF", "\uD83E\uDDD3\uD83C\uDFFB", "\uD83E\uDDD3\uD83C\uDFFC", "\uD83E\uDDD3\uD83C\uDFFD", "\uD83E\uDDD3\uD83C\uDFFE", "\uD83E\uDDD3\uD83C\uDFFF", "\uD83E\uDDD4\u200D\u2640\uFE0F", "\uD83E\uDDD4\u200D\u2642\uFE0F", "\uD83E\uDDD4\uD83C\uDFFB", "\uD83E\uDDD4\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDD4\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDD4\uD83C\uDFFC", "\uD83E\uDDD4\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDD4\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDD4\uD83C\uDFFD", "\uD83E\uDDD4\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDD4\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDD4\uD83C\uDFFE", "\uD83E\uDDD4\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDD4\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDD4\uD83C\uDFFF", "\uD83E\uDDD4\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDD4\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDD5\uD83C\uDFFB", "\uD83E\uDDD5\uD83C\uDFFC", "\uD83E\uDDD5\uD83C\uDFFD", "\uD83E\uDDD5\uD83C\uDFFE", "\uD83E\uDDD5\uD83C\uDFFF", "\uD83E\uDDD6\u200D\u2640\uFE0F", "\uD83E\uDDD6\u200D\u2642\uFE0F", "\uD83E\uDDD6\uD83C\uDFFB", "\uD83E\uDDD6\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDD6\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDD6\uD83C\uDFFC", "\uD83E\uDDD6\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDD6\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDD6\uD83C\uDFFD", "\uD83E\uDDD6\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDD6\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDD6\uD83C\uDFFE", "\uD83E\uDDD6\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDD6\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDD6\uD83C\uDFFF", "\uD83E\uDDD6\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDD6\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDD7\u200D\u2640\uFE0F", "\uD83E\uDDD7\u200D\u2642\uFE0F", "\uD83E\uDDD7\uD83C\uDFFB", "\uD83E\uDDD7\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDD7\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDD7\uD83C\uDFFC", "\uD83E\uDDD7\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDD7\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDD7\uD83C\uDFFD", "\uD83E\uDDD7\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDD7\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDD7\uD83C\uDFFE", "\uD83E\uDDD7\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDD7\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDD7\uD83C\uDFFF", "\uD83E\uDDD7\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDD7\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDD8\u200D\u2640\uFE0F", "\uD83E\uDDD8\u200D\u2642\uFE0F", "\uD83E\uDDD8\uD83C\uDFFB", "\uD83E\uDDD8\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDD8\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDD8\uD83C\uDFFC", "\uD83E\uDDD8\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDD8\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDD8\uD83C\uDFFD", "\uD83E\uDDD8\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDD8\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDD8\uD83C\uDFFE", "\uD83E\uDDD8\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDD8\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDD8\uD83C\uDFFF", "\uD83E\uDDD8\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDD8\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDD9\u200D\u2640\uFE0F", "\uD83E\uDDD9\u200D\u2642\uFE0F", "\uD83E\uDDD9\uD83C\uDFFB", "\uD83E\uDDD9\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDD9\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDD9\uD83C\uDFFC", "\uD83E\uDDD9\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDD9\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDD9\uD83C\uDFFD", "\uD83E\uDDD9\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDD9\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDD9\uD83C\uDFFE", "\uD83E\uDDD9\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDD9\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDD9\uD83C\uDFFF", "\uD83E\uDDD9\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDD9\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDDA\u200D\u2640\uFE0F", "\uD83E\uDDDA\u200D\u2642\uFE0F", "\uD83E\uDDDA\uD83C\uDFFB", "\uD83E\uDDDA\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDDA\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDDA\uD83C\uDFFC", "\uD83E\uDDDA\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDDA\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDDA\uD83C\uDFFD", "\uD83E\uDDDA\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDDA\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDDA\uD83C\uDFFE", "\uD83E\uDDDA\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDDA\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDDA\uD83C\uDFFF", "\uD83E\uDDDA\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDDA\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDDB\u200D\u2640\uFE0F", "\uD83E\uDDDB\u200D\u2642\uFE0F", "\uD83E\uDDDB\uD83C\uDFFB", "\uD83E\uDDDB\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDDB\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDDB\uD83C\uDFFC", "\uD83E\uDDDB\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDDB\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDDB\uD83C\uDFFD", "\uD83E\uDDDB\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDDB\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDDB\uD83C\uDFFE", "\uD83E\uDDDB\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDDB\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDDB\uD83C\uDFFF", "\uD83E\uDDDB\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDDB\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDDC\u200D\u2640\uFE0F", "\uD83E\uDDDC\u200D\u2642\uFE0F", "\uD83E\uDDDC\uD83C\uDFFB", "\uD83E\uDDDC\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDDC\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDDC\uD83C\uDFFC", "\uD83E\uDDDC\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDDC\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDDC\uD83C\uDFFD", "\uD83E\uDDDC\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDDC\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDDC\uD83C\uDFFE", "\uD83E\uDDDC\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDDC\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDDC\uD83C\uDFFF", "\uD83E\uDDDC\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDDC\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDDD\u200D\u2640\uFE0F", "\uD83E\uDDDD\u200D\u2642\uFE0F", "\uD83E\uDDDD\uD83C\uDFFB", "\uD83E\uDDDD\uD83C\uDFFB\u200D\u2640\uFE0F", "\uD83E\uDDDD\uD83C\uDFFB\u200D\u2642\uFE0F", "\uD83E\uDDDD\uD83C\uDFFC", "\uD83E\uDDDD\uD83C\uDFFC\u200D\u2640\uFE0F", "\uD83E\uDDDD\uD83C\uDFFC\u200D\u2642\uFE0F", "\uD83E\uDDDD\uD83C\uDFFD", "\uD83E\uDDDD\uD83C\uDFFD\u200D\u2640\uFE0F", "\uD83E\uDDDD\uD83C\uDFFD\u200D\u2642\uFE0F", "\uD83E\uDDDD\uD83C\uDFFE", "\uD83E\uDDDD\uD83C\uDFFE\u200D\u2640\uFE0F", "\uD83E\uDDDD\uD83C\uDFFE\u200D\u2642\uFE0F", "\uD83E\uDDDD\uD83C\uDFFF", "\uD83E\uDDDD\uD83C\uDFFF\u200D\u2640\uFE0F", "\uD83E\uDDDD\uD83C\uDFFF\u200D\u2642\uFE0F", "\uD83E\uDDDE\u200D\u2640\uFE0F", "\uD83E\uDDDE\u200D\u2642\uFE0F", "\uD83E\uDDDF\u200D\u2640\uFE0F", "\uD83E\uDDDF\u200D\u2642\uFE0F", "\uD83E\uDEC3\uD83C\uDFFB", "\uD83E\uDEC3\uD83C\uDFFC", "\uD83E\uDEC3\uD83C\uDFFD", "\uD83E\uDEC3\uD83C\uDFFE", "\uD83E\uDEC3\uD83C\uDFFF", "\uD83E\uDEC4\uD83C\uDFFB", "\uD83E\uDEC4\uD83C\uDFFC", "\uD83E\uDEC4\uD83C\uDFFD", "\uD83E\uDEC4\uD83C\uDFFE", "\uD83E\uDEC4\uD83C\uDFFF", "\uD83E\uDEC5\uD83C\uDFFB", "\uD83E\uDEC5\uD83C\uDFFC", "\uD83E\uDEC5\uD83C\uDFFD", "\uD83E\uDEC5\uD83C\uDFFE", "\uD83E\uDEC5\uD83C\uDFFF", "\uD83E\uDEF0\uD83C\uDFFB", "\uD83E\uDEF0\uD83C\uDFFC", "\uD83E\uDEF0\uD83C\uDFFD", "\uD83E\uDEF0\uD83C\uDFFE", "\uD83E\uDEF0\uD83C\uDFFF", "\uD83E\uDEF1\uD83C\uDFFB", "\uD83E\uDEF1\uD83C\uDFFB\u200D\uD83E\uDEF2\uD83C\uDFFC", "\uD83E\uDEF1\uD83C\uDFFB\u200D\uD83E\uDEF2\uD83C\uDFFD", "\uD83E\uDEF1\uD83C\uDFFB\u200D\uD83E\uDEF2\uD83C\uDFFE", "\uD83E\uDEF1\uD83C\uDFFB\u200D\uD83E\uDEF2\uD83C\uDFFF", "\uD83E\uDEF1\uD83C\uDFFC", "\uD83E\uDEF1\uD83C\uDFFC\u200D\uD83E\uDEF2\uD83C\uDFFB", "\uD83E\uDEF1\uD83C\uDFFC\u200D\uD83E\uDEF2\uD83C\uDFFD", "\uD83E\uDEF1\uD83C\uDFFC\u200D\uD83E\uDEF2\uD83C\uDFFE", "\uD83E\uDEF1\uD83C\uDFFC\u200D\uD83E\uDEF2\uD83C\uDFFF", "\uD83E\uDEF1\uD83C\uDFFD", "\uD83E\uDEF1\uD83C\uDFFD\u200D\uD83E\uDEF2\uD83C\uDFFB", "\uD83E\uDEF1\uD83C\uDFFD\u200D\uD83E\uDEF2\uD83C\uDFFC", "\uD83E\uDEF1\uD83C\uDFFD\u200D\uD83E\uDEF2\uD83C\uDFFE", "\uD83E\uDEF1\uD83C\uDFFD\u200D\uD83E\uDEF2\uD83C\uDFFF", "\uD83E\uDEF1\uD83C\uDFFE", "\uD83E\uDEF1\uD83C\uDFFE\u200D\uD83E\uDEF2\uD83C\uDFFB", "\uD83E\uDEF1\uD83C\uDFFE\u200D\uD83E\uDEF2\uD83C\uDFFC", "\uD83E\uDEF1\uD83C\uDFFE\u200D\uD83E\uDEF2\uD83C\uDFFD", "\uD83E\uDEF1\uD83C\uDFFE\u200D\uD83E\uDEF2\uD83C\uDFFF", "\uD83E\uDEF1\uD83C\uDFFF", "\uD83E\uDEF1\uD83C\uDFFF\u200D\uD83E\uDEF2\uD83C\uDFFB", "\uD83E\uDEF1\uD83C\uDFFF\u200D\uD83E\uDEF2\uD83C\uDFFC", "\uD83E\uDEF1\uD83C\uDFFF\u200D\uD83E\uDEF2\uD83C\uDFFD", "\uD83E\uDEF1\uD83C\uDFFF\u200D\uD83E\uDEF2\uD83C\uDFFE", "\uD83E\uDEF2\uD83C\uDFFB", "\uD83E\uDEF2\uD83C\uDFFC", "\uD83E\uDEF2\uD83C\uDFFD", "\uD83E\uDEF2\uD83C\uDFFE", "\uD83E\uDEF2\uD83C\uDFFF", "\uD83E\uDEF3\uD83C\uDFFB", "\uD83E\uDEF3\uD83C\uDFFC", "\uD83E\uDEF3\uD83C\uDFFD", "\uD83E\uDEF3\uD83C\uDFFE", "\uD83E\uDEF3\uD83C\uDFFF", "\uD83E\uDEF4\uD83C\uDFFB", "\uD83E\uDEF4\uD83C\uDFFC", "\uD83E\uDEF4\uD83C\uDFFD", "\uD83E\uDEF4\uD83C\uDFFE", "\uD83E\uDEF4\uD83C\uDFFF", "\uD83E\uDEF5\uD83C\uDFFB", "\uD83E\uDEF5\uD83C\uDFFC", "\uD83E\uDEF5\uD83C\uDFFD", "\uD83E\uDEF5\uD83C\uDFFE", "\uD83E\uDEF5\uD83C\uDFFF", "\uD83E\uDEF6\uD83C\uDFFB", "\uD83E\uDEF6\uD83C\uDFFC", "\uD83E\uDEF6\uD83C\uDFFD", "\uD83E\uDEF6\uD83C\uDFFE", "\uD83E\uDEF6\uD83C\uDFFF", "\uD83E\uDEF7\uD83C\uDFFB", "\uD83E\uDEF7\uD83C\uDFFC", "\uD83E\uDEF7\uD83C\uDFFD", "\uD83E\uDEF7\uD83C\uDFFE", "\uD83E\uDEF7\uD83C\uDFFF", "\uD83E\uDEF8\uD83C\uDFFB", "\uD83E\uDEF8\uD83C\uDFFC", "\uD83E\uDEF8\uD83C\uDFFD", "\uD83E\uDEF8\uD83C\uDFFE", "\uD83E\uDEF8\uD83C\uDFFF"];
      return RGI_Emoji;
    }
  
    var Adlam$1 = {};
  
    var hasRequiredAdlam$1;
    function requireAdlam$1() {
      if (hasRequiredAdlam$1) return Adlam$1;
      hasRequiredAdlam$1 = 1;
      var set = regenerate$2.exports(0x61F, 0x640);
      set.addRange(0x1E900, 0x1E94B).addRange(0x1E950, 0x1E959).addRange(0x1E95E, 0x1E95F);
      Adlam$1.characters = set;
      return Adlam$1;
    }
  
    var Ahom$1 = {};
  
    var hasRequiredAhom$1;
    function requireAhom$1() {
      if (hasRequiredAhom$1) return Ahom$1;
      hasRequiredAhom$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11700, 0x1171A).addRange(0x1171D, 0x1172B).addRange(0x11730, 0x11746);
      Ahom$1.characters = set;
      return Ahom$1;
    }
  
    var Anatolian_Hieroglyphs$1 = {};
  
    var hasRequiredAnatolian_Hieroglyphs$1;
    function requireAnatolian_Hieroglyphs$1() {
      if (hasRequiredAnatolian_Hieroglyphs$1) return Anatolian_Hieroglyphs$1;
      hasRequiredAnatolian_Hieroglyphs$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x14400, 0x14646);
      Anatolian_Hieroglyphs$1.characters = set;
      return Anatolian_Hieroglyphs$1;
    }
  
    var Arabic$1 = {};
  
    var hasRequiredArabic$1;
    function requireArabic$1() {
      if (hasRequiredArabic$1) return Arabic$1;
      hasRequiredArabic$1 = 1;
      var set = regenerate$2.exports(0xFDCF, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);
      set.addRange(0x600, 0x604).addRange(0x606, 0x6DC).addRange(0x6DE, 0x6FF).addRange(0x750, 0x77F).addRange(0x870, 0x88E).addRange(0x890, 0x891).addRange(0x898, 0x8E1).addRange(0x8E3, 0x8FF).addRange(0xFB50, 0xFBC2).addRange(0xFBD3, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFF).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0x102E0, 0x102FB).addRange(0x10E60, 0x10E7E).addRange(0x10EFD, 0x10EFF).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1EEF0, 0x1EEF1);
      Arabic$1.characters = set;
      return Arabic$1;
    }
  
    var Armenian$1 = {};
  
    var hasRequiredArmenian$1;
    function requireArmenian$1() {
      if (hasRequiredArmenian$1) return Armenian$1;
      hasRequiredArmenian$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x531, 0x556).addRange(0x559, 0x58A).addRange(0x58D, 0x58F).addRange(0xFB13, 0xFB17);
      Armenian$1.characters = set;
      return Armenian$1;
    }
  
    var Avestan$1 = {};
  
    var hasRequiredAvestan$1;
    function requireAvestan$1() {
      if (hasRequiredAvestan$1) return Avestan$1;
      hasRequiredAvestan$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10B00, 0x10B35).addRange(0x10B39, 0x10B3F);
      Avestan$1.characters = set;
      return Avestan$1;
    }
  
    var Balinese$1 = {};
  
    var hasRequiredBalinese$1;
    function requireBalinese$1() {
      if (hasRequiredBalinese$1) return Balinese$1;
      hasRequiredBalinese$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1B00, 0x1B4C).addRange(0x1B50, 0x1B7E);
      Balinese$1.characters = set;
      return Balinese$1;
    }
  
    var Bamum$1 = {};
  
    var hasRequiredBamum$1;
    function requireBamum$1() {
      if (hasRequiredBamum$1) return Bamum$1;
      hasRequiredBamum$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0xA6A0, 0xA6F7).addRange(0x16800, 0x16A38);
      Bamum$1.characters = set;
      return Bamum$1;
    }
  
    var Bassa_Vah$1 = {};
  
    var hasRequiredBassa_Vah$1;
    function requireBassa_Vah$1() {
      if (hasRequiredBassa_Vah$1) return Bassa_Vah$1;
      hasRequiredBassa_Vah$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x16AD0, 0x16AED).addRange(0x16AF0, 0x16AF5);
      Bassa_Vah$1.characters = set;
      return Bassa_Vah$1;
    }
  
    var Batak$1 = {};
  
    var hasRequiredBatak$1;
    function requireBatak$1() {
      if (hasRequiredBatak$1) return Batak$1;
      hasRequiredBatak$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1BC0, 0x1BF3).addRange(0x1BFC, 0x1BFF);
      Batak$1.characters = set;
      return Batak$1;
    }
  
    var Bengali$1 = {};
  
    var hasRequiredBengali$1;
    function requireBengali$1() {
      if (hasRequiredBengali$1) return Bengali$1;
      hasRequiredBengali$1 = 1;
      var set = regenerate$2.exports(0x9B2, 0x9D7, 0x1CD0, 0x1CD2, 0x1CD8, 0x1CE1, 0x1CEA, 0x1CED, 0x1CF2, 0xA8F1);
      set.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0x980, 0x983).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9BC, 0x9C4).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CE).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E3).addRange(0x9E6, 0x9FE).addRange(0x1CD5, 0x1CD6).addRange(0x1CF5, 0x1CF7);
      Bengali$1.characters = set;
      return Bengali$1;
    }
  
    var Bhaiksuki$1 = {};
  
    var hasRequiredBhaiksuki$1;
    function requireBhaiksuki$1() {
      if (hasRequiredBhaiksuki$1) return Bhaiksuki$1;
      hasRequiredBhaiksuki$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C36).addRange(0x11C38, 0x11C45).addRange(0x11C50, 0x11C6C);
      Bhaiksuki$1.characters = set;
      return Bhaiksuki$1;
    }
  
    var Bopomofo$1 = {};
  
    var hasRequiredBopomofo$1;
    function requireBopomofo$1() {
      if (hasRequiredBopomofo$1) return Bopomofo$1;
      hasRequiredBopomofo$1 = 1;
      var set = regenerate$2.exports(0x3030, 0x3037, 0x30FB);
      set.addRange(0x2EA, 0x2EB).addRange(0x3001, 0x3003).addRange(0x3008, 0x3011).addRange(0x3013, 0x301F).addRange(0x302A, 0x302D).addRange(0x3105, 0x312F).addRange(0x31A0, 0x31BF).addRange(0xFE45, 0xFE46).addRange(0xFF61, 0xFF65);
      Bopomofo$1.characters = set;
      return Bopomofo$1;
    }
  
    var Brahmi$1 = {};
  
    var hasRequiredBrahmi$1;
    function requireBrahmi$1() {
      if (hasRequiredBrahmi$1) return Brahmi$1;
      hasRequiredBrahmi$1 = 1;
      var set = regenerate$2.exports(0x1107F);
      set.addRange(0x11000, 0x1104D).addRange(0x11052, 0x11075);
      Brahmi$1.characters = set;
      return Brahmi$1;
    }
  
    var Braille$1 = {};
  
    var hasRequiredBraille$1;
    function requireBraille$1() {
      if (hasRequiredBraille$1) return Braille$1;
      hasRequiredBraille$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x2800, 0x28FF);
      Braille$1.characters = set;
      return Braille$1;
    }
  
    var Buginese$1 = {};
  
    var hasRequiredBuginese$1;
    function requireBuginese$1() {
      if (hasRequiredBuginese$1) return Buginese$1;
      hasRequiredBuginese$1 = 1;
      var set = regenerate$2.exports(0xA9CF);
      set.addRange(0x1A00, 0x1A1B).addRange(0x1A1E, 0x1A1F);
      Buginese$1.characters = set;
      return Buginese$1;
    }
  
    var Buhid$1 = {};
  
    var hasRequiredBuhid$1;
    function requireBuhid$1() {
      if (hasRequiredBuhid$1) return Buhid$1;
      hasRequiredBuhid$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1735, 0x1736).addRange(0x1740, 0x1753);
      Buhid$1.characters = set;
      return Buhid$1;
    }
  
    var Canadian_Aboriginal$1 = {};
  
    var hasRequiredCanadian_Aboriginal$1;
    function requireCanadian_Aboriginal$1() {
      if (hasRequiredCanadian_Aboriginal$1) return Canadian_Aboriginal$1;
      hasRequiredCanadian_Aboriginal$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1400, 0x167F).addRange(0x18B0, 0x18F5).addRange(0x11AB0, 0x11ABF);
      Canadian_Aboriginal$1.characters = set;
      return Canadian_Aboriginal$1;
    }
  
    var Carian$1 = {};
  
    var hasRequiredCarian$1;
    function requireCarian$1() {
      if (hasRequiredCarian$1) return Carian$1;
      hasRequiredCarian$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x102A0, 0x102D0);
      Carian$1.characters = set;
      return Carian$1;
    }
  
    var Caucasian_Albanian$1 = {};
  
    var hasRequiredCaucasian_Albanian$1;
    function requireCaucasian_Albanian$1() {
      if (hasRequiredCaucasian_Albanian$1) return Caucasian_Albanian$1;
      hasRequiredCaucasian_Albanian$1 = 1;
      var set = regenerate$2.exports(0x1056F);
      set.addRange(0x10530, 0x10563);
      Caucasian_Albanian$1.characters = set;
      return Caucasian_Albanian$1;
    }
  
    var Chakma$1 = {};
  
    var hasRequiredChakma$1;
    function requireChakma$1() {
      if (hasRequiredChakma$1) return Chakma$1;
      hasRequiredChakma$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x9E6, 0x9EF).addRange(0x1040, 0x1049).addRange(0x11100, 0x11134).addRange(0x11136, 0x11147);
      Chakma$1.characters = set;
      return Chakma$1;
    }
  
    var Cham$1 = {};
  
    var hasRequiredCham$1;
    function requireCham$1() {
      if (hasRequiredCham$1) return Cham$1;
      hasRequiredCham$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0xAA00, 0xAA36).addRange(0xAA40, 0xAA4D).addRange(0xAA50, 0xAA59).addRange(0xAA5C, 0xAA5F);
      Cham$1.characters = set;
      return Cham$1;
    }
  
    var Cherokee$1 = {};
  
    var hasRequiredCherokee$1;
    function requireCherokee$1() {
      if (hasRequiredCherokee$1) return Cherokee$1;
      hasRequiredCherokee$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0xAB70, 0xABBF);
      Cherokee$1.characters = set;
      return Cherokee$1;
    }
  
    var Chorasmian$1 = {};
  
    var hasRequiredChorasmian$1;
    function requireChorasmian$1() {
      if (hasRequiredChorasmian$1) return Chorasmian$1;
      hasRequiredChorasmian$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10FB0, 0x10FCB);
      Chorasmian$1.characters = set;
      return Chorasmian$1;
    }
  
    var Common$1 = {};
  
    var hasRequiredCommon$1;
    function requireCommon$1() {
      if (hasRequiredCommon$1) return Common$1;
      hasRequiredCommon$1 = 1;
      var set = regenerate$2.exports(0xD7, 0xF7, 0x374, 0x37E, 0x385, 0x387, 0x605, 0x6DD, 0x8E2, 0xE3F, 0x3000, 0x3004, 0x3012, 0x3020, 0x3036, 0x327F, 0x33FF, 0xAB5B, 0xFEFF, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1F7F0, 0xE0001);
      set.addRange(0x0, 0x40).addRange(0x5B, 0x60).addRange(0x7B, 0xA9).addRange(0xAB, 0xB9).addRange(0xBB, 0xBF).addRange(0x2B9, 0x2DF).addRange(0x2E5, 0x2E9).addRange(0x2EC, 0x2FF).addRange(0xFD5, 0xFD8).addRange(0x16EB, 0x16ED).addRange(0x2000, 0x200B).addRange(0x200E, 0x202E).addRange(0x2030, 0x2064).addRange(0x2066, 0x2070).addRange(0x2074, 0x207E).addRange(0x2080, 0x208E).addRange(0x20A0, 0x20C0).addRange(0x2100, 0x2125).addRange(0x2127, 0x2129).addRange(0x212C, 0x2131).addRange(0x2133, 0x214D).addRange(0x214F, 0x215F).addRange(0x2189, 0x218B).addRange(0x2190, 0x2426).addRange(0x2440, 0x244A).addRange(0x2460, 0x27FF).addRange(0x2900, 0x2B73).addRange(0x2B76, 0x2B95).addRange(0x2B97, 0x2BFF).addRange(0x2E00, 0x2E42).addRange(0x2E44, 0x2E5D).addRange(0x2FF0, 0x2FFB).addRange(0x3248, 0x325F).addRange(0x32B1, 0x32BF).addRange(0x32CC, 0x32CF).addRange(0x3371, 0x337A).addRange(0x3380, 0x33DF).addRange(0x4DC0, 0x4DFF).addRange(0xA708, 0xA721).addRange(0xA788, 0xA78A).addRange(0xAB6A, 0xAB6B).addRange(0xFE10, 0xFE19).addRange(0xFE30, 0xFE44).addRange(0xFE47, 0xFE52).addRange(0xFE54, 0xFE66).addRange(0xFE68, 0xFE6B).addRange(0xFF01, 0xFF20).addRange(0xFF3B, 0xFF40).addRange(0xFF5B, 0xFF60).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE);
      set.addRange(0xFFF9, 0xFFFD).addRange(0x10190, 0x1019C).addRange(0x101D0, 0x101FC).addRange(0x1CF50, 0x1CFC3).addRange(0x1D000, 0x1D0F5).addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D166).addRange(0x1D16A, 0x1D17A).addRange(0x1D183, 0x1D184).addRange(0x1D18C, 0x1D1A9).addRange(0x1D1AE, 0x1D1EA).addRange(0x1D2C0, 0x1D2D3).addRange(0x1D2E0, 0x1D2F3).addRange(0x1D300, 0x1D356).addRange(0x1D372, 0x1D378).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D7CB).addRange(0x1D7CE, 0x1D7FF).addRange(0x1EC71, 0x1ECB4).addRange(0x1ED01, 0x1ED3D).addRange(0x1F000, 0x1F02B).addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F100, 0x1F1AD).addRange(0x1F1E6, 0x1F1FF).addRange(0x1F201, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F6D7).addRange(0x1F6DC, 0x1F6EC).addRange(0x1F6F0, 0x1F6FC).addRange(0x1F700, 0x1F776);
      set.addRange(0x1F77B, 0x1F7D9).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887).addRange(0x1F890, 0x1F8AD).addRange(0x1F8B0, 0x1F8B1).addRange(0x1F900, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA7C).addRange(0x1FA80, 0x1FA88).addRange(0x1FA90, 0x1FABD).addRange(0x1FABF, 0x1FAC5).addRange(0x1FACE, 0x1FADB).addRange(0x1FAE0, 0x1FAE8).addRange(0x1FAF0, 0x1FAF8).addRange(0x1FB00, 0x1FB92).addRange(0x1FB94, 0x1FBCA).addRange(0x1FBF0, 0x1FBF9).addRange(0xE0020, 0xE007F);
      Common$1.characters = set;
      return Common$1;
    }
  
    var Coptic$1 = {};
  
    var hasRequiredCoptic$1;
    function requireCoptic$1() {
      if (hasRequiredCoptic$1) return Coptic$1;
      hasRequiredCoptic$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x3E2, 0x3EF).addRange(0x2C80, 0x2CF3).addRange(0x2CF9, 0x2CFF).addRange(0x102E0, 0x102FB);
      Coptic$1.characters = set;
      return Coptic$1;
    }
  
    var Cuneiform$1 = {};
  
    var hasRequiredCuneiform$1;
    function requireCuneiform$1() {
      if (hasRequiredCuneiform$1) return Cuneiform$1;
      hasRequiredCuneiform$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x12000, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12470, 0x12474).addRange(0x12480, 0x12543);
      Cuneiform$1.characters = set;
      return Cuneiform$1;
    }
  
    var Cypriot$1 = {};
  
    var hasRequiredCypriot$1;
    function requireCypriot$1() {
      if (hasRequiredCypriot$1) return Cypriot$1;
      hasRequiredCypriot$1 = 1;
      var set = regenerate$2.exports(0x10808, 0x1083C, 0x1083F);
      set.addRange(0x10100, 0x10102).addRange(0x10107, 0x10133).addRange(0x10137, 0x1013F).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838);
      Cypriot$1.characters = set;
      return Cypriot$1;
    }
  
    var Cypro_Minoan$1 = {};
  
    var hasRequiredCypro_Minoan$1;
    function requireCypro_Minoan$1() {
      if (hasRequiredCypro_Minoan$1) return Cypro_Minoan$1;
      hasRequiredCypro_Minoan$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10100, 0x10101).addRange(0x12F90, 0x12FF2);
      Cypro_Minoan$1.characters = set;
      return Cypro_Minoan$1;
    }
  
    var Cyrillic$1 = {};
  
    var hasRequiredCyrillic$1;
    function requireCyrillic$1() {
      if (hasRequiredCyrillic$1) return Cyrillic$1;
      hasRequiredCyrillic$1 = 1;
      var set = regenerate$2.exports(0x1D2B, 0x1D78, 0x1DF8, 0x2E43, 0x1E08F);
      set.addRange(0x400, 0x52F).addRange(0x1C80, 0x1C88).addRange(0x2DE0, 0x2DFF).addRange(0xA640, 0xA69F).addRange(0xFE2E, 0xFE2F).addRange(0x1E030, 0x1E06D);
      Cyrillic$1.characters = set;
      return Cyrillic$1;
    }
  
    var Deseret$1 = {};
  
    var hasRequiredDeseret$1;
    function requireDeseret$1() {
      if (hasRequiredDeseret$1) return Deseret$1;
      hasRequiredDeseret$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10400, 0x1044F);
      Deseret$1.characters = set;
      return Deseret$1;
    }
  
    var Devanagari$1 = {};
  
    var hasRequiredDevanagari$1;
    function requireDevanagari$1() {
      if (hasRequiredDevanagari$1) return Devanagari$1;
      hasRequiredDevanagari$1 = 1;
      var set = regenerate$2.exports(0x20F0);
      set.addRange(0x900, 0x952).addRange(0x955, 0x97F).addRange(0x1CD0, 0x1CF6).addRange(0x1CF8, 0x1CF9).addRange(0xA830, 0xA839).addRange(0xA8E0, 0xA8FF).addRange(0x11B00, 0x11B09);
      Devanagari$1.characters = set;
      return Devanagari$1;
    }
  
    var Dives_Akuru$1 = {};
  
    var hasRequiredDives_Akuru$1;
    function requireDives_Akuru$1() {
      if (hasRequiredDives_Akuru$1) return Dives_Akuru$1;
      hasRequiredDives_Akuru$1 = 1;
      var set = regenerate$2.exports(0x11909);
      set.addRange(0x11900, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x11935).addRange(0x11937, 0x11938).addRange(0x1193B, 0x11946).addRange(0x11950, 0x11959);
      Dives_Akuru$1.characters = set;
      return Dives_Akuru$1;
    }
  
    var Dogra$1 = {};
  
    var hasRequiredDogra$1;
    function requireDogra$1() {
      if (hasRequiredDogra$1) return Dogra$1;
      hasRequiredDogra$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x964, 0x96F).addRange(0xA830, 0xA839).addRange(0x11800, 0x1183B);
      Dogra$1.characters = set;
      return Dogra$1;
    }
  
    var Duployan$1 = {};
  
    var hasRequiredDuployan$1;
    function requireDuployan$1() {
      if (hasRequiredDuployan$1) return Duployan$1;
      hasRequiredDuployan$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1BC9C, 0x1BCA3);
      Duployan$1.characters = set;
      return Duployan$1;
    }
  
    var Egyptian_Hieroglyphs$1 = {};
  
    var hasRequiredEgyptian_Hieroglyphs$1;
    function requireEgyptian_Hieroglyphs$1() {
      if (hasRequiredEgyptian_Hieroglyphs$1) return Egyptian_Hieroglyphs$1;
      hasRequiredEgyptian_Hieroglyphs$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x13000, 0x13455);
      Egyptian_Hieroglyphs$1.characters = set;
      return Egyptian_Hieroglyphs$1;
    }
  
    var Elbasan$1 = {};
  
    var hasRequiredElbasan$1;
    function requireElbasan$1() {
      if (hasRequiredElbasan$1) return Elbasan$1;
      hasRequiredElbasan$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10500, 0x10527);
      Elbasan$1.characters = set;
      return Elbasan$1;
    }
  
    var Elymaic$1 = {};
  
    var hasRequiredElymaic$1;
    function requireElymaic$1() {
      if (hasRequiredElymaic$1) return Elymaic$1;
      hasRequiredElymaic$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10FE0, 0x10FF6);
      Elymaic$1.characters = set;
      return Elymaic$1;
    }
  
    var Ethiopic$1 = {};
  
    var hasRequiredEthiopic$1;
    function requireEthiopic$1() {
      if (hasRequiredEthiopic$1) return Ethiopic$1;
      hasRequiredEthiopic$1 = 1;
      var set = regenerate$2.exports(0x1258, 0x12C0);
      set.addRange(0x1200, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x135D, 0x137C).addRange(0x1380, 0x1399).addRange(0x2D80, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE);
      Ethiopic$1.characters = set;
      return Ethiopic$1;
    }
  
    var Georgian$1 = {};
  
    var hasRequiredGeorgian$1;
    function requireGeorgian$1() {
      if (hasRequiredGeorgian$1) return Georgian$1;
      hasRequiredGeorgian$1 = 1;
      var set = regenerate$2.exports(0x10C7, 0x10CD, 0x2D27, 0x2D2D);
      set.addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FF).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x2D00, 0x2D25);
      Georgian$1.characters = set;
      return Georgian$1;
    }
  
    var Glagolitic$1 = {};
  
    var hasRequiredGlagolitic$1;
    function requireGlagolitic$1() {
      if (hasRequiredGlagolitic$1) return Glagolitic$1;
      hasRequiredGlagolitic$1 = 1;
      var set = regenerate$2.exports(0x484, 0x487, 0x2E43, 0xA66F);
      set.addRange(0x2C00, 0x2C5F).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A);
      Glagolitic$1.characters = set;
      return Glagolitic$1;
    }
  
    var Gothic$1 = {};
  
    var hasRequiredGothic$1;
    function requireGothic$1() {
      if (hasRequiredGothic$1) return Gothic$1;
      hasRequiredGothic$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10330, 0x1034A);
      Gothic$1.characters = set;
      return Gothic$1;
    }
  
    var Grantha$1 = {};
  
    var hasRequiredGrantha$1;
    function requireGrantha$1() {
      if (hasRequiredGrantha$1) return Grantha$1;
      hasRequiredGrantha$1 = 1;
      var set = regenerate$2.exports(0x1CD0, 0x20F0, 0x11350, 0x11357, 0x11FD3);
      set.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xBE6, 0xBF3).addRange(0x1CD2, 0x1CD3).addRange(0x1CF2, 0x1CF4).addRange(0x1CF8, 0x1CF9).addRange(0x11300, 0x11303).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1133B, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x1135D, 0x11363).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x11FD0, 0x11FD1);
      Grantha$1.characters = set;
      return Grantha$1;
    }
  
    var Greek$1 = {};
  
    var hasRequiredGreek$1;
    function requireGreek$1() {
      if (hasRequiredGreek$1) return Greek$1;
      hasRequiredGreek$1 = 1;
      var set = regenerate$2.exports(0x342, 0x345, 0x37F, 0x384, 0x386, 0x38C, 0x1F59, 0x1F5B, 0x1F5D, 0x2126, 0xAB65, 0x101A0);
      set.addRange(0x370, 0x373).addRange(0x375, 0x377).addRange(0x37A, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3E1).addRange(0x3F0, 0x3FF).addRange(0x1D26, 0x1D2A).addRange(0x1D5D, 0x1D61).addRange(0x1D66, 0x1D6A).addRange(0x1DBF, 0x1DC1).addRange(0x1F00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FC4).addRange(0x1FC6, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FDD, 0x1FEF).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFE).addRange(0x10140, 0x1018E).addRange(0x1D200, 0x1D245);
      Greek$1.characters = set;
      return Greek$1;
    }
  
    var Gujarati$1 = {};
  
    var hasRequiredGujarati$1;
    function requireGujarati$1() {
      if (hasRequiredGujarati$1) return Gujarati$1;
      hasRequiredGujarati$1 = 1;
      var set = regenerate$2.exports(0xAD0);
      set.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xA81, 0xA83).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xABC, 0xAC5).addRange(0xAC7, 0xAC9).addRange(0xACB, 0xACD).addRange(0xAE0, 0xAE3).addRange(0xAE6, 0xAF1).addRange(0xAF9, 0xAFF).addRange(0xA830, 0xA839);
      Gujarati$1.characters = set;
      return Gujarati$1;
    }
  
    var Gunjala_Gondi$1 = {};
  
    var hasRequiredGunjala_Gondi$1;
    function requireGunjala_Gondi$1() {
      if (hasRequiredGunjala_Gondi$1) return Gunjala_Gondi$1;
      hasRequiredGunjala_Gondi$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x964, 0x965).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D8E).addRange(0x11D90, 0x11D91).addRange(0x11D93, 0x11D98).addRange(0x11DA0, 0x11DA9);
      Gunjala_Gondi$1.characters = set;
      return Gunjala_Gondi$1;
    }
  
    var Gurmukhi$1 = {};
  
    var hasRequiredGurmukhi$1;
    function requireGurmukhi$1() {
      if (hasRequiredGurmukhi$1) return Gurmukhi$1;
      hasRequiredGurmukhi$1 = 1;
      var set = regenerate$2.exports(0xA3C, 0xA51, 0xA5E);
      set.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xA01, 0xA03).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA3E, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA59, 0xA5C).addRange(0xA66, 0xA76).addRange(0xA830, 0xA839);
      Gurmukhi$1.characters = set;
      return Gurmukhi$1;
    }
  
    var Han$1 = {};
  
    var hasRequiredHan$1;
    function requireHan$1() {
      if (hasRequiredHan$1) return Han$1;
      hasRequiredHan$1 = 1;
      var set = regenerate$2.exports(0x3030, 0x30FB, 0x32FF);
      set.addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x3001, 0x3003).addRange(0x3005, 0x3011).addRange(0x3013, 0x301F).addRange(0x3021, 0x302D).addRange(0x3037, 0x303F).addRange(0x3190, 0x319F).addRange(0x31C0, 0x31E3).addRange(0x3220, 0x3247).addRange(0x3280, 0x32B0).addRange(0x32C0, 0x32CB).addRange(0x3358, 0x3370).addRange(0x337B, 0x337F).addRange(0x33E0, 0x33FE).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0x9FFF).addRange(0xA700, 0xA707).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFE45, 0xFE46).addRange(0xFF61, 0xFF65).addRange(0x16FE2, 0x16FE3).addRange(0x16FF0, 0x16FF1).addRange(0x1D360, 0x1D371).addRange(0x1F250, 0x1F251).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B739).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A).addRange(0x31350, 0x323AF);
      Han$1.characters = set;
      return Han$1;
    }
  
    var Hangul$1 = {};
  
    var hasRequiredHangul$1;
    function requireHangul$1() {
      if (hasRequiredHangul$1) return Hangul$1;
      hasRequiredHangul$1 = 1;
      var set = regenerate$2.exports(0x3037, 0x30FB);
      set.addRange(0x1100, 0x11FF).addRange(0x3001, 0x3003).addRange(0x3008, 0x3011).addRange(0x3013, 0x301F).addRange(0x302E, 0x3030).addRange(0x3131, 0x318E).addRange(0x3200, 0x321E).addRange(0x3260, 0x327E).addRange(0xA960, 0xA97C).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xFE45, 0xFE46).addRange(0xFF61, 0xFF65).addRange(0xFFA0, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC);
      Hangul$1.characters = set;
      return Hangul$1;
    }
  
    var Hanifi_Rohingya$1 = {};
  
    var hasRequiredHanifi_Rohingya$1;
    function requireHanifi_Rohingya$1() {
      if (hasRequiredHanifi_Rohingya$1) return Hanifi_Rohingya$1;
      hasRequiredHanifi_Rohingya$1 = 1;
      var set = regenerate$2.exports(0x60C, 0x61B, 0x61F, 0x640, 0x6D4);
      set.addRange(0x10D00, 0x10D27).addRange(0x10D30, 0x10D39);
      Hanifi_Rohingya$1.characters = set;
      return Hanifi_Rohingya$1;
    }
  
    var Hanunoo$1 = {};
  
    var hasRequiredHanunoo$1;
    function requireHanunoo$1() {
      if (hasRequiredHanunoo$1) return Hanunoo$1;
      hasRequiredHanunoo$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1720, 0x1736);
      Hanunoo$1.characters = set;
      return Hanunoo$1;
    }
  
    var Hatran$1 = {};
  
    var hasRequiredHatran$1;
    function requireHatran$1() {
      if (hasRequiredHatran$1) return Hatran$1;
      hasRequiredHatran$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x108FB, 0x108FF);
      Hatran$1.characters = set;
      return Hatran$1;
    }
  
    var Hebrew$1 = {};
  
    var hasRequiredHebrew$1;
    function requireHebrew$1() {
      if (hasRequiredHebrew$1) return Hebrew$1;
      hasRequiredHebrew$1 = 1;
      var set = regenerate$2.exports(0xFB3E);
      set.addRange(0x591, 0x5C7).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F4).addRange(0xFB1D, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFB4F);
      Hebrew$1.characters = set;
      return Hebrew$1;
    }
  
    var Hiragana$1 = {};
  
    var hasRequiredHiragana$1;
    function requireHiragana$1() {
      if (hasRequiredHiragana$1) return Hiragana$1;
      hasRequiredHiragana$1 = 1;
      var set = regenerate$2.exports(0x3037, 0xFF70, 0x1B132, 0x1F200);
      set.addRange(0x3001, 0x3003).addRange(0x3008, 0x3011).addRange(0x3013, 0x301F).addRange(0x3030, 0x3035).addRange(0x303C, 0x303D).addRange(0x3041, 0x3096).addRange(0x3099, 0x30A0).addRange(0x30FB, 0x30FC).addRange(0xFE45, 0xFE46).addRange(0xFF61, 0xFF65).addRange(0xFF9E, 0xFF9F).addRange(0x1B001, 0x1B11F).addRange(0x1B150, 0x1B152);
      Hiragana$1.characters = set;
      return Hiragana$1;
    }
  
    var Imperial_Aramaic$1 = {};
  
    var hasRequiredImperial_Aramaic$1;
    function requireImperial_Aramaic$1() {
      if (hasRequiredImperial_Aramaic$1) return Imperial_Aramaic$1;
      hasRequiredImperial_Aramaic$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10840, 0x10855).addRange(0x10857, 0x1085F);
      Imperial_Aramaic$1.characters = set;
      return Imperial_Aramaic$1;
    }
  
    var Inherited$1 = {};
  
    var hasRequiredInherited$1;
    function requireInherited$1() {
      if (hasRequiredInherited$1) return Inherited$1;
      hasRequiredInherited$1 = 1;
      var set = regenerate$2.exports(0x1DF9, 0x101FD);
      set.addRange(0x300, 0x341).addRange(0x343, 0x344).addRange(0x346, 0x362).addRange(0x953, 0x954).addRange(0x1AB0, 0x1ACE).addRange(0x1DC2, 0x1DF7).addRange(0x1DFB, 0x1DFF).addRange(0x200C, 0x200D).addRange(0x20D0, 0x20EF).addRange(0xFE00, 0xFE0F).addRange(0xFE20, 0xFE2D).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1D167, 0x1D169).addRange(0x1D17B, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0xE0100, 0xE01EF);
      Inherited$1.characters = set;
      return Inherited$1;
    }
  
    var Inscriptional_Pahlavi$1 = {};
  
    var hasRequiredInscriptional_Pahlavi$1;
    function requireInscriptional_Pahlavi$1() {
      if (hasRequiredInscriptional_Pahlavi$1) return Inscriptional_Pahlavi$1;
      hasRequiredInscriptional_Pahlavi$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10B60, 0x10B72).addRange(0x10B78, 0x10B7F);
      Inscriptional_Pahlavi$1.characters = set;
      return Inscriptional_Pahlavi$1;
    }
  
    var Inscriptional_Parthian$1 = {};
  
    var hasRequiredInscriptional_Parthian$1;
    function requireInscriptional_Parthian$1() {
      if (hasRequiredInscriptional_Parthian$1) return Inscriptional_Parthian$1;
      hasRequiredInscriptional_Parthian$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10B40, 0x10B55).addRange(0x10B58, 0x10B5F);
      Inscriptional_Parthian$1.characters = set;
      return Inscriptional_Parthian$1;
    }
  
    var Javanese$1 = {};
  
    var hasRequiredJavanese$1;
    function requireJavanese$1() {
      if (hasRequiredJavanese$1) return Javanese$1;
      hasRequiredJavanese$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0xA980, 0xA9CD).addRange(0xA9CF, 0xA9D9).addRange(0xA9DE, 0xA9DF);
      Javanese$1.characters = set;
      return Javanese$1;
    }
  
    var Kaithi$1 = {};
  
    var hasRequiredKaithi$1;
    function requireKaithi$1() {
      if (hasRequiredKaithi$1) return Kaithi$1;
      hasRequiredKaithi$1 = 1;
      var set = regenerate$2.exports(0x110CD);
      set.addRange(0x966, 0x96F).addRange(0xA830, 0xA839).addRange(0x11080, 0x110C2);
      Kaithi$1.characters = set;
      return Kaithi$1;
    }
  
    var Kannada$1 = {};
  
    var hasRequiredKannada$1;
    function requireKannada$1() {
      if (hasRequiredKannada$1) return Kannada$1;
      hasRequiredKannada$1 = 1;
      var set = regenerate$2.exports(0x1CD0, 0x1CD2, 0x1CDA, 0x1CF2, 0x1CF4);
      set.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xC80, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCBC, 0xCC4).addRange(0xCC6, 0xCC8).addRange(0xCCA, 0xCCD).addRange(0xCD5, 0xCD6).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE3).addRange(0xCE6, 0xCEF).addRange(0xCF1, 0xCF3).addRange(0xA830, 0xA835);
      Kannada$1.characters = set;
      return Kannada$1;
    }
  
    var Katakana$1 = {};
  
    var hasRequiredKatakana$1;
    function requireKatakana$1() {
      if (hasRequiredKatakana$1) return Katakana$1;
      hasRequiredKatakana$1 = 1;
      var set = regenerate$2.exports(0x3037, 0x1B000, 0x1B155);
      set.addRange(0x3001, 0x3003).addRange(0x3008, 0x3011).addRange(0x3013, 0x301F).addRange(0x3030, 0x3035).addRange(0x303C, 0x303D).addRange(0x3099, 0x309C).addRange(0x30A0, 0x30FF).addRange(0x31F0, 0x31FF).addRange(0x32D0, 0x32FE).addRange(0x3300, 0x3357).addRange(0xFE45, 0xFE46).addRange(0xFF61, 0xFF9F).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B120, 0x1B122).addRange(0x1B164, 0x1B167);
      Katakana$1.characters = set;
      return Katakana$1;
    }
  
    var Kawi$1 = {};
  
    var hasRequiredKawi$1;
    function requireKawi$1() {
      if (hasRequiredKawi$1) return Kawi$1;
      hasRequiredKawi$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11F00, 0x11F10).addRange(0x11F12, 0x11F3A).addRange(0x11F3E, 0x11F59);
      Kawi$1.characters = set;
      return Kawi$1;
    }
  
    var Kayah_Li$1 = {};
  
    var hasRequiredKayah_Li$1;
    function requireKayah_Li$1() {
      if (hasRequiredKayah_Li$1) return Kayah_Li$1;
      hasRequiredKayah_Li$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0xA900, 0xA92F);
      Kayah_Li$1.characters = set;
      return Kayah_Li$1;
    }
  
    var Kharoshthi$1 = {};
  
    var hasRequiredKharoshthi$1;
    function requireKharoshthi$1() {
      if (hasRequiredKharoshthi$1) return Kharoshthi$1;
      hasRequiredKharoshthi$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10A00, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A38, 0x10A3A).addRange(0x10A3F, 0x10A48).addRange(0x10A50, 0x10A58);
      Kharoshthi$1.characters = set;
      return Kharoshthi$1;
    }
  
    var Khitan_Small_Script$1 = {};
  
    var hasRequiredKhitan_Small_Script$1;
    function requireKhitan_Small_Script$1() {
      if (hasRequiredKhitan_Small_Script$1) return Khitan_Small_Script$1;
      hasRequiredKhitan_Small_Script$1 = 1;
      var set = regenerate$2.exports(0x16FE4);
      set.addRange(0x18B00, 0x18CD5);
      Khitan_Small_Script$1.characters = set;
      return Khitan_Small_Script$1;
    }
  
    var Khmer$1 = {};
  
    var hasRequiredKhmer$1;
    function requireKhmer$1() {
      if (hasRequiredKhmer$1) return Khmer$1;
      hasRequiredKhmer$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1780, 0x17DD).addRange(0x17E0, 0x17E9).addRange(0x17F0, 0x17F9).addRange(0x19E0, 0x19FF);
      Khmer$1.characters = set;
      return Khmer$1;
    }
  
    var Khojki$1 = {};
  
    var hasRequiredKhojki$1;
    function requireKhojki$1() {
      if (hasRequiredKhojki$1) return Khojki$1;
      hasRequiredKhojki$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0xAE6, 0xAEF).addRange(0xA830, 0xA839).addRange(0x11200, 0x11211).addRange(0x11213, 0x11241);
      Khojki$1.characters = set;
      return Khojki$1;
    }
  
    var Khudawadi$1 = {};
  
    var hasRequiredKhudawadi$1;
    function requireKhudawadi$1() {
      if (hasRequiredKhudawadi$1) return Khudawadi$1;
      hasRequiredKhudawadi$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x964, 0x965).addRange(0xA830, 0xA839).addRange(0x112B0, 0x112EA).addRange(0x112F0, 0x112F9);
      Khudawadi$1.characters = set;
      return Khudawadi$1;
    }
  
    var Lao$1 = {};
  
    var hasRequiredLao$1;
    function requireLao$1() {
      if (hasRequiredLao$1) return Lao$1;
      hasRequiredLao$1 = 1;
      var set = regenerate$2.exports(0xE84, 0xEA5, 0xEC6);
      set.addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEBD).addRange(0xEC0, 0xEC4).addRange(0xEC8, 0xECE).addRange(0xED0, 0xED9).addRange(0xEDC, 0xEDF);
      Lao$1.characters = set;
      return Lao$1;
    }
  
    var Latin$1 = {};
  
    var hasRequiredLatin$1;
    function requireLatin$1() {
      if (hasRequiredLatin$1) return Latin$1;
      hasRequiredLatin$1 = 1;
      var set = regenerate$2.exports(0xAA, 0xBA, 0x10FB, 0x202F, 0x2071, 0x207F, 0x20F0, 0x2132, 0x214E, 0xA7D3, 0xA92E);
      set.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x2B8).addRange(0x2E0, 0x2E4).addRange(0x363, 0x36F).addRange(0x485, 0x486).addRange(0x951, 0x952).addRange(0x1D00, 0x1D25).addRange(0x1D2C, 0x1D5C).addRange(0x1D62, 0x1D65).addRange(0x1D6B, 0x1D77).addRange(0x1D79, 0x1DBE).addRange(0x1E00, 0x1EFF).addRange(0x2090, 0x209C).addRange(0x212A, 0x212B).addRange(0x2160, 0x2188).addRange(0x2C60, 0x2C7F).addRange(0xA700, 0xA707).addRange(0xA722, 0xA787).addRange(0xA78B, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA7FF).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB64).addRange(0xAB66, 0xAB69).addRange(0xFB00, 0xFB06).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x1DF00, 0x1DF1E).addRange(0x1DF25, 0x1DF2A);
      Latin$1.characters = set;
      return Latin$1;
    }
  
    var Lepcha$1 = {};
  
    var hasRequiredLepcha$1;
    function requireLepcha$1() {
      if (hasRequiredLepcha$1) return Lepcha$1;
      hasRequiredLepcha$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1C00, 0x1C37).addRange(0x1C3B, 0x1C49).addRange(0x1C4D, 0x1C4F);
      Lepcha$1.characters = set;
      return Lepcha$1;
    }
  
    var Limbu$1 = {};
  
    var hasRequiredLimbu$1;
    function requireLimbu$1() {
      if (hasRequiredLimbu$1) return Limbu$1;
      hasRequiredLimbu$1 = 1;
      var set = regenerate$2.exports(0x965, 0x1940);
      set.addRange(0x1900, 0x191E).addRange(0x1920, 0x192B).addRange(0x1930, 0x193B).addRange(0x1944, 0x194F);
      Limbu$1.characters = set;
      return Limbu$1;
    }
  
    var Linear_A$1 = {};
  
    var hasRequiredLinear_A$1;
    function requireLinear_A$1() {
      if (hasRequiredLinear_A$1) return Linear_A$1;
      hasRequiredLinear_A$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10107, 0x10133).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767);
      Linear_A$1.characters = set;
      return Linear_A$1;
    }
  
    var Linear_B$1 = {};
  
    var hasRequiredLinear_B$1;
    function requireLinear_B$1() {
      if (hasRequiredLinear_B$1) return Linear_B$1;
      hasRequiredLinear_B$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10100, 0x10102).addRange(0x10107, 0x10133).addRange(0x10137, 0x1013F);
      Linear_B$1.characters = set;
      return Linear_B$1;
    }
  
    var Lisu$1 = {};
  
    var hasRequiredLisu$1;
    function requireLisu$1() {
      if (hasRequiredLisu$1) return Lisu$1;
      hasRequiredLisu$1 = 1;
      var set = regenerate$2.exports(0x11FB0);
      set.addRange(0xA4D0, 0xA4FF);
      Lisu$1.characters = set;
      return Lisu$1;
    }
  
    var Lycian$1 = {};
  
    var hasRequiredLycian$1;
    function requireLycian$1() {
      if (hasRequiredLycian$1) return Lycian$1;
      hasRequiredLycian$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10280, 0x1029C);
      Lycian$1.characters = set;
      return Lycian$1;
    }
  
    var Lydian$1 = {};
  
    var hasRequiredLydian$1;
    function requireLydian$1() {
      if (hasRequiredLydian$1) return Lydian$1;
      hasRequiredLydian$1 = 1;
      var set = regenerate$2.exports(0x1093F);
      set.addRange(0x10920, 0x10939);
      Lydian$1.characters = set;
      return Lydian$1;
    }
  
    var Mahajani$1 = {};
  
    var hasRequiredMahajani$1;
    function requireMahajani$1() {
      if (hasRequiredMahajani$1) return Mahajani$1;
      hasRequiredMahajani$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x964, 0x96F).addRange(0xA830, 0xA839).addRange(0x11150, 0x11176);
      Mahajani$1.characters = set;
      return Mahajani$1;
    }
  
    var Makasar$1 = {};
  
    var hasRequiredMakasar$1;
    function requireMakasar$1() {
      if (hasRequiredMakasar$1) return Makasar$1;
      hasRequiredMakasar$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11EE0, 0x11EF8);
      Makasar$1.characters = set;
      return Makasar$1;
    }
  
    var Malayalam$1 = {};
  
    var hasRequiredMalayalam$1;
    function requireMalayalam$1() {
      if (hasRequiredMalayalam$1) return Malayalam$1;
      hasRequiredMalayalam$1 = 1;
      var set = regenerate$2.exports(0x1CDA);
      set.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xD00, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD44).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4F).addRange(0xD54, 0xD63).addRange(0xD66, 0xD7F).addRange(0xA830, 0xA832);
      Malayalam$1.characters = set;
      return Malayalam$1;
    }
  
    var Mandaic$1 = {};
  
    var hasRequiredMandaic$1;
    function requireMandaic$1() {
      if (hasRequiredMandaic$1) return Mandaic$1;
      hasRequiredMandaic$1 = 1;
      var set = regenerate$2.exports(0x640, 0x85E);
      set.addRange(0x840, 0x85B);
      Mandaic$1.characters = set;
      return Mandaic$1;
    }
  
    var Manichaean$1 = {};
  
    var hasRequiredManichaean$1;
    function requireManichaean$1() {
      if (hasRequiredManichaean$1) return Manichaean$1;
      hasRequiredManichaean$1 = 1;
      var set = regenerate$2.exports(0x640);
      set.addRange(0x10AC0, 0x10AE6).addRange(0x10AEB, 0x10AF6);
      Manichaean$1.characters = set;
      return Manichaean$1;
    }
  
    var Marchen$1 = {};
  
    var hasRequiredMarchen$1;
    function requireMarchen$1() {
      if (hasRequiredMarchen$1) return Marchen$1;
      hasRequiredMarchen$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11C70, 0x11C8F).addRange(0x11C92, 0x11CA7).addRange(0x11CA9, 0x11CB6);
      Marchen$1.characters = set;
      return Marchen$1;
    }
  
    var Masaram_Gondi$1 = {};
  
    var hasRequiredMasaram_Gondi$1;
    function requireMasaram_Gondi$1() {
      if (hasRequiredMasaram_Gondi$1) return Masaram_Gondi$1;
      hasRequiredMasaram_Gondi$1 = 1;
      var set = regenerate$2.exports(0x11D3A);
      set.addRange(0x964, 0x965).addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D47).addRange(0x11D50, 0x11D59);
      Masaram_Gondi$1.characters = set;
      return Masaram_Gondi$1;
    }
  
    var Medefaidrin$1 = {};
  
    var hasRequiredMedefaidrin$1;
    function requireMedefaidrin$1() {
      if (hasRequiredMedefaidrin$1) return Medefaidrin$1;
      hasRequiredMedefaidrin$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x16E40, 0x16E9A);
      Medefaidrin$1.characters = set;
      return Medefaidrin$1;
    }
  
    var Meetei_Mayek$1 = {};
  
    var hasRequiredMeetei_Mayek$1;
    function requireMeetei_Mayek$1() {
      if (hasRequiredMeetei_Mayek$1) return Meetei_Mayek$1;
      hasRequiredMeetei_Mayek$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0xAAE0, 0xAAF6).addRange(0xABC0, 0xABED).addRange(0xABF0, 0xABF9);
      Meetei_Mayek$1.characters = set;
      return Meetei_Mayek$1;
    }
  
    var Mende_Kikakui$1 = {};
  
    var hasRequiredMende_Kikakui$1;
    function requireMende_Kikakui$1() {
      if (hasRequiredMende_Kikakui$1) return Mende_Kikakui$1;
      hasRequiredMende_Kikakui$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1E800, 0x1E8C4).addRange(0x1E8C7, 0x1E8D6);
      Mende_Kikakui$1.characters = set;
      return Mende_Kikakui$1;
    }
  
    var Meroitic_Cursive$1 = {};
  
    var hasRequiredMeroitic_Cursive$1;
    function requireMeroitic_Cursive$1() {
      if (hasRequiredMeroitic_Cursive$1) return Meroitic_Cursive$1;
      hasRequiredMeroitic_Cursive$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x109A0, 0x109B7).addRange(0x109BC, 0x109CF).addRange(0x109D2, 0x109FF);
      Meroitic_Cursive$1.characters = set;
      return Meroitic_Cursive$1;
    }
  
    var Meroitic_Hieroglyphs$1 = {};
  
    var hasRequiredMeroitic_Hieroglyphs$1;
    function requireMeroitic_Hieroglyphs$1() {
      if (hasRequiredMeroitic_Hieroglyphs$1) return Meroitic_Hieroglyphs$1;
      hasRequiredMeroitic_Hieroglyphs$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10980, 0x1099F);
      Meroitic_Hieroglyphs$1.characters = set;
      return Meroitic_Hieroglyphs$1;
    }
  
    var Miao$1 = {};
  
    var hasRequiredMiao$1;
    function requireMiao$1() {
      if (hasRequiredMiao$1) return Miao$1;
      hasRequiredMiao$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x16F00, 0x16F4A).addRange(0x16F4F, 0x16F87).addRange(0x16F8F, 0x16F9F);
      Miao$1.characters = set;
      return Miao$1;
    }
  
    var Modi$1 = {};
  
    var hasRequiredModi$1;
    function requireModi$1() {
      if (hasRequiredModi$1) return Modi$1;
      hasRequiredModi$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0xA830, 0xA839).addRange(0x11600, 0x11644).addRange(0x11650, 0x11659);
      Modi$1.characters = set;
      return Modi$1;
    }
  
    var Mongolian$1 = {};
  
    var hasRequiredMongolian$1;
    function requireMongolian$1() {
      if (hasRequiredMongolian$1) return Mongolian$1;
      hasRequiredMongolian$1 = 1;
      var set = regenerate$2.exports(0x202F);
      set.addRange(0x1800, 0x1819).addRange(0x1820, 0x1878).addRange(0x1880, 0x18AA).addRange(0x11660, 0x1166C);
      Mongolian$1.characters = set;
      return Mongolian$1;
    }
  
    var Mro$1 = {};
  
    var hasRequiredMro$1;
    function requireMro$1() {
      if (hasRequiredMro$1) return Mro$1;
      hasRequiredMro$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x16A40, 0x16A5E).addRange(0x16A60, 0x16A69).addRange(0x16A6E, 0x16A6F);
      Mro$1.characters = set;
      return Mro$1;
    }
  
    var Multani$1 = {};
  
    var hasRequiredMultani$1;
    function requireMultani$1() {
      if (hasRequiredMultani$1) return Multani$1;
      hasRequiredMultani$1 = 1;
      var set = regenerate$2.exports(0x11288);
      set.addRange(0xA66, 0xA6F).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A9);
      Multani$1.characters = set;
      return Multani$1;
    }
  
    var Myanmar$1 = {};
  
    var hasRequiredMyanmar$1;
    function requireMyanmar$1() {
      if (hasRequiredMyanmar$1) return Myanmar$1;
      hasRequiredMyanmar$1 = 1;
      var set = regenerate$2.exports(0xA92E);
      set.addRange(0x1000, 0x109F).addRange(0xA9E0, 0xA9FE).addRange(0xAA60, 0xAA7F);
      Myanmar$1.characters = set;
      return Myanmar$1;
    }
  
    var Nabataean$1 = {};
  
    var hasRequiredNabataean$1;
    function requireNabataean$1() {
      if (hasRequiredNabataean$1) return Nabataean$1;
      hasRequiredNabataean$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10880, 0x1089E).addRange(0x108A7, 0x108AF);
      Nabataean$1.characters = set;
      return Nabataean$1;
    }
  
    var Nag_Mundari$1 = {};
  
    var hasRequiredNag_Mundari$1;
    function requireNag_Mundari$1() {
      if (hasRequiredNag_Mundari$1) return Nag_Mundari$1;
      hasRequiredNag_Mundari$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1E4D0, 0x1E4F9);
      Nag_Mundari$1.characters = set;
      return Nag_Mundari$1;
    }
  
    var Nandinagari$1 = {};
  
    var hasRequiredNandinagari$1;
    function requireNandinagari$1() {
      if (hasRequiredNandinagari$1) return Nandinagari$1;
      hasRequiredNandinagari$1 = 1;
      var set = regenerate$2.exports(0x1CE9, 0x1CF2, 0x1CFA);
      set.addRange(0x964, 0x965).addRange(0xCE6, 0xCEF).addRange(0xA830, 0xA835).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D7).addRange(0x119DA, 0x119E4);
      Nandinagari$1.characters = set;
      return Nandinagari$1;
    }
  
    var New_Tai_Lue$1 = {};
  
    var hasRequiredNew_Tai_Lue$1;
    function requireNew_Tai_Lue$1() {
      if (hasRequiredNew_Tai_Lue$1) return New_Tai_Lue$1;
      hasRequiredNew_Tai_Lue$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x19D0, 0x19DA).addRange(0x19DE, 0x19DF);
      New_Tai_Lue$1.characters = set;
      return New_Tai_Lue$1;
    }
  
    var Newa$1 = {};
  
    var hasRequiredNewa$1;
    function requireNewa$1() {
      if (hasRequiredNewa$1) return Newa$1;
      hasRequiredNewa$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11400, 0x1145B).addRange(0x1145D, 0x11461);
      Newa$1.characters = set;
      return Newa$1;
    }
  
    var Nko$1 = {};
  
    var hasRequiredNko$1;
    function requireNko$1() {
      if (hasRequiredNko$1) return Nko$1;
      hasRequiredNko$1 = 1;
      var set = regenerate$2.exports(0x60C, 0x61B, 0x61F);
      set.addRange(0x7C0, 0x7FA).addRange(0x7FD, 0x7FF).addRange(0xFD3E, 0xFD3F);
      Nko$1.characters = set;
      return Nko$1;
    }
  
    var Nushu$1 = {};
  
    var hasRequiredNushu$1;
    function requireNushu$1() {
      if (hasRequiredNushu$1) return Nushu$1;
      hasRequiredNushu$1 = 1;
      var set = regenerate$2.exports(0x16FE1);
      set.addRange(0x1B170, 0x1B2FB);
      Nushu$1.characters = set;
      return Nushu$1;
    }
  
    var Nyiakeng_Puachue_Hmong$1 = {};
  
    var hasRequiredNyiakeng_Puachue_Hmong$1;
    function requireNyiakeng_Puachue_Hmong$1() {
      if (hasRequiredNyiakeng_Puachue_Hmong$1) return Nyiakeng_Puachue_Hmong$1;
      hasRequiredNyiakeng_Puachue_Hmong$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1E100, 0x1E12C).addRange(0x1E130, 0x1E13D).addRange(0x1E140, 0x1E149).addRange(0x1E14E, 0x1E14F);
      Nyiakeng_Puachue_Hmong$1.characters = set;
      return Nyiakeng_Puachue_Hmong$1;
    }
  
    var Ogham$1 = {};
  
    var hasRequiredOgham$1;
    function requireOgham$1() {
      if (hasRequiredOgham$1) return Ogham$1;
      hasRequiredOgham$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1680, 0x169C);
      Ogham$1.characters = set;
      return Ogham$1;
    }
  
    var Ol_Chiki$1 = {};
  
    var hasRequiredOl_Chiki$1;
    function requireOl_Chiki$1() {
      if (hasRequiredOl_Chiki$1) return Ol_Chiki$1;
      hasRequiredOl_Chiki$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1C50, 0x1C7F);
      Ol_Chiki$1.characters = set;
      return Ol_Chiki$1;
    }
  
    var Old_Hungarian$1 = {};
  
    var hasRequiredOld_Hungarian$1;
    function requireOld_Hungarian$1() {
      if (hasRequiredOld_Hungarian$1) return Old_Hungarian$1;
      hasRequiredOld_Hungarian$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10CFA, 0x10CFF);
      Old_Hungarian$1.characters = set;
      return Old_Hungarian$1;
    }
  
    var Old_Italic$1 = {};
  
    var hasRequiredOld_Italic$1;
    function requireOld_Italic$1() {
      if (hasRequiredOld_Italic$1) return Old_Italic$1;
      hasRequiredOld_Italic$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10300, 0x10323).addRange(0x1032D, 0x1032F);
      Old_Italic$1.characters = set;
      return Old_Italic$1;
    }
  
    var Old_North_Arabian$1 = {};
  
    var hasRequiredOld_North_Arabian$1;
    function requireOld_North_Arabian$1() {
      if (hasRequiredOld_North_Arabian$1) return Old_North_Arabian$1;
      hasRequiredOld_North_Arabian$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10A80, 0x10A9F);
      Old_North_Arabian$1.characters = set;
      return Old_North_Arabian$1;
    }
  
    var Old_Permic$1 = {};
  
    var hasRequiredOld_Permic$1;
    function requireOld_Permic$1() {
      if (hasRequiredOld_Permic$1) return Old_Permic$1;
      hasRequiredOld_Permic$1 = 1;
      var set = regenerate$2.exports(0x483);
      set.addRange(0x10350, 0x1037A);
      Old_Permic$1.characters = set;
      return Old_Permic$1;
    }
  
    var Old_Persian$1 = {};
  
    var hasRequiredOld_Persian$1;
    function requireOld_Persian$1() {
      if (hasRequiredOld_Persian$1) return Old_Persian$1;
      hasRequiredOld_Persian$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103D5);
      Old_Persian$1.characters = set;
      return Old_Persian$1;
    }
  
    var Old_Sogdian$1 = {};
  
    var hasRequiredOld_Sogdian$1;
    function requireOld_Sogdian$1() {
      if (hasRequiredOld_Sogdian$1) return Old_Sogdian$1;
      hasRequiredOld_Sogdian$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10F00, 0x10F27);
      Old_Sogdian$1.characters = set;
      return Old_Sogdian$1;
    }
  
    var Old_South_Arabian$1 = {};
  
    var hasRequiredOld_South_Arabian$1;
    function requireOld_South_Arabian$1() {
      if (hasRequiredOld_South_Arabian$1) return Old_South_Arabian$1;
      hasRequiredOld_South_Arabian$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10A60, 0x10A7F);
      Old_South_Arabian$1.characters = set;
      return Old_South_Arabian$1;
    }
  
    var Old_Turkic$1 = {};
  
    var hasRequiredOld_Turkic$1;
    function requireOld_Turkic$1() {
      if (hasRequiredOld_Turkic$1) return Old_Turkic$1;
      hasRequiredOld_Turkic$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10C00, 0x10C48);
      Old_Turkic$1.characters = set;
      return Old_Turkic$1;
    }
  
    var Old_Uyghur$1 = {};
  
    var hasRequiredOld_Uyghur$1;
    function requireOld_Uyghur$1() {
      if (hasRequiredOld_Uyghur$1) return Old_Uyghur$1;
      hasRequiredOld_Uyghur$1 = 1;
      var set = regenerate$2.exports(0x640, 0x10AF2);
      set.addRange(0x10F70, 0x10F89);
      Old_Uyghur$1.characters = set;
      return Old_Uyghur$1;
    }
  
    var Oriya$1 = {};
  
    var hasRequiredOriya$1;
    function requireOriya$1() {
      if (hasRequiredOriya$1) return Oriya$1;
      hasRequiredOriya$1 = 1;
      var set = regenerate$2.exports(0x1CDA, 0x1CF2);
      set.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xB01, 0xB03).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB3C, 0xB44).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4D).addRange(0xB55, 0xB57).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB63).addRange(0xB66, 0xB77);
      Oriya$1.characters = set;
      return Oriya$1;
    }
  
    var Osage$1 = {};
  
    var hasRequiredOsage$1;
    function requireOsage$1() {
      if (hasRequiredOsage$1) return Osage$1;
      hasRequiredOsage$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB);
      Osage$1.characters = set;
      return Osage$1;
    }
  
    var Osmanya$1 = {};
  
    var hasRequiredOsmanya$1;
    function requireOsmanya$1() {
      if (hasRequiredOsmanya$1) return Osmanya$1;
      hasRequiredOsmanya$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10480, 0x1049D).addRange(0x104A0, 0x104A9);
      Osmanya$1.characters = set;
      return Osmanya$1;
    }
  
    var Pahawh_Hmong$1 = {};
  
    var hasRequiredPahawh_Hmong$1;
    function requirePahawh_Hmong$1() {
      if (hasRequiredPahawh_Hmong$1) return Pahawh_Hmong$1;
      hasRequiredPahawh_Hmong$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x16B00, 0x16B45).addRange(0x16B50, 0x16B59).addRange(0x16B5B, 0x16B61).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F);
      Pahawh_Hmong$1.characters = set;
      return Pahawh_Hmong$1;
    }
  
    var Palmyrene$1 = {};
  
    var hasRequiredPalmyrene$1;
    function requirePalmyrene$1() {
      if (hasRequiredPalmyrene$1) return Palmyrene$1;
      hasRequiredPalmyrene$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10860, 0x1087F);
      Palmyrene$1.characters = set;
      return Palmyrene$1;
    }
  
    var Pau_Cin_Hau$1 = {};
  
    var hasRequiredPau_Cin_Hau$1;
    function requirePau_Cin_Hau$1() {
      if (hasRequiredPau_Cin_Hau$1) return Pau_Cin_Hau$1;
      hasRequiredPau_Cin_Hau$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11AC0, 0x11AF8);
      Pau_Cin_Hau$1.characters = set;
      return Pau_Cin_Hau$1;
    }
  
    var Phags_Pa$1 = {};
  
    var hasRequiredPhags_Pa$1;
    function requirePhags_Pa$1() {
      if (hasRequiredPhags_Pa$1) return Phags_Pa$1;
      hasRequiredPhags_Pa$1 = 1;
      var set = regenerate$2.exports(0x1805);
      set.addRange(0x1802, 0x1803).addRange(0xA840, 0xA877);
      Phags_Pa$1.characters = set;
      return Phags_Pa$1;
    }
  
    var Phoenician$1 = {};
  
    var hasRequiredPhoenician$1;
    function requirePhoenician$1() {
      if (hasRequiredPhoenician$1) return Phoenician$1;
      hasRequiredPhoenician$1 = 1;
      var set = regenerate$2.exports(0x1091F);
      set.addRange(0x10900, 0x1091B);
      Phoenician$1.characters = set;
      return Phoenician$1;
    }
  
    var Psalter_Pahlavi$1 = {};
  
    var hasRequiredPsalter_Pahlavi$1;
    function requirePsalter_Pahlavi$1() {
      if (hasRequiredPsalter_Pahlavi$1) return Psalter_Pahlavi$1;
      hasRequiredPsalter_Pahlavi$1 = 1;
      var set = regenerate$2.exports(0x640);
      set.addRange(0x10B80, 0x10B91).addRange(0x10B99, 0x10B9C).addRange(0x10BA9, 0x10BAF);
      Psalter_Pahlavi$1.characters = set;
      return Psalter_Pahlavi$1;
    }
  
    var Rejang$1 = {};
  
    var hasRequiredRejang$1;
    function requireRejang$1() {
      if (hasRequiredRejang$1) return Rejang$1;
      hasRequiredRejang$1 = 1;
      var set = regenerate$2.exports(0xA95F);
      set.addRange(0xA930, 0xA953);
      Rejang$1.characters = set;
      return Rejang$1;
    }
  
    var Runic$1 = {};
  
    var hasRequiredRunic$1;
    function requireRunic$1() {
      if (hasRequiredRunic$1) return Runic$1;
      hasRequiredRunic$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x16A0, 0x16EA).addRange(0x16EE, 0x16F8);
      Runic$1.characters = set;
      return Runic$1;
    }
  
    var Samaritan$1 = {};
  
    var hasRequiredSamaritan$1;
    function requireSamaritan$1() {
      if (hasRequiredSamaritan$1) return Samaritan$1;
      hasRequiredSamaritan$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x800, 0x82D).addRange(0x830, 0x83E);
      Samaritan$1.characters = set;
      return Samaritan$1;
    }
  
    var Saurashtra$1 = {};
  
    var hasRequiredSaurashtra$1;
    function requireSaurashtra$1() {
      if (hasRequiredSaurashtra$1) return Saurashtra$1;
      hasRequiredSaurashtra$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0xA880, 0xA8C5).addRange(0xA8CE, 0xA8D9);
      Saurashtra$1.characters = set;
      return Saurashtra$1;
    }
  
    var Sharada$1 = {};
  
    var hasRequiredSharada$1;
    function requireSharada$1() {
      if (hasRequiredSharada$1) return Sharada$1;
      hasRequiredSharada$1 = 1;
      var set = regenerate$2.exports(0x951, 0x1CD7, 0x1CD9, 0x1CE0);
      set.addRange(0x1CDC, 0x1CDD).addRange(0x11180, 0x111DF);
      Sharada$1.characters = set;
      return Sharada$1;
    }
  
    var Shavian$1 = {};
  
    var hasRequiredShavian$1;
    function requireShavian$1() {
      if (hasRequiredShavian$1) return Shavian$1;
      hasRequiredShavian$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10450, 0x1047F);
      Shavian$1.characters = set;
      return Shavian$1;
    }
  
    var Siddham$1 = {};
  
    var hasRequiredSiddham$1;
    function requireSiddham$1() {
      if (hasRequiredSiddham$1) return Siddham$1;
      hasRequiredSiddham$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11580, 0x115B5).addRange(0x115B8, 0x115DD);
      Siddham$1.characters = set;
      return Siddham$1;
    }
  
    var SignWriting$1 = {};
  
    var hasRequiredSignWriting$1;
    function requireSignWriting$1() {
      if (hasRequiredSignWriting$1) return SignWriting$1;
      hasRequiredSignWriting$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1D800, 0x1DA8B).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF);
      SignWriting$1.characters = set;
      return SignWriting$1;
    }
  
    var Sinhala$1 = {};
  
    var hasRequiredSinhala$1;
    function requireSinhala$1() {
      if (hasRequiredSinhala$1) return Sinhala$1;
      hasRequiredSinhala$1 = 1;
      var set = regenerate$2.exports(0xDBD, 0xDCA, 0xDD6);
      set.addRange(0x964, 0x965).addRange(0xD81, 0xD83).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xDCF, 0xDD4).addRange(0xDD8, 0xDDF).addRange(0xDE6, 0xDEF).addRange(0xDF2, 0xDF4).addRange(0x111E1, 0x111F4);
      Sinhala$1.characters = set;
      return Sinhala$1;
    }
  
    var Sogdian$1 = {};
  
    var hasRequiredSogdian$1;
    function requireSogdian$1() {
      if (hasRequiredSogdian$1) return Sogdian$1;
      hasRequiredSogdian$1 = 1;
      var set = regenerate$2.exports(0x640);
      set.addRange(0x10F30, 0x10F59);
      Sogdian$1.characters = set;
      return Sogdian$1;
    }
  
    var Sora_Sompeng$1 = {};
  
    var hasRequiredSora_Sompeng$1;
    function requireSora_Sompeng$1() {
      if (hasRequiredSora_Sompeng$1) return Sora_Sompeng$1;
      hasRequiredSora_Sompeng$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x110D0, 0x110E8).addRange(0x110F0, 0x110F9);
      Sora_Sompeng$1.characters = set;
      return Sora_Sompeng$1;
    }
  
    var Soyombo$1 = {};
  
    var hasRequiredSoyombo$1;
    function requireSoyombo$1() {
      if (hasRequiredSoyombo$1) return Soyombo$1;
      hasRequiredSoyombo$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11A50, 0x11AA2);
      Soyombo$1.characters = set;
      return Soyombo$1;
    }
  
    var Sundanese$1 = {};
  
    var hasRequiredSundanese$1;
    function requireSundanese$1() {
      if (hasRequiredSundanese$1) return Sundanese$1;
      hasRequiredSundanese$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1B80, 0x1BBF).addRange(0x1CC0, 0x1CC7);
      Sundanese$1.characters = set;
      return Sundanese$1;
    }
  
    var Syloti_Nagri$1 = {};
  
    var hasRequiredSyloti_Nagri$1;
    function requireSyloti_Nagri$1() {
      if (hasRequiredSyloti_Nagri$1) return Syloti_Nagri$1;
      hasRequiredSyloti_Nagri$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x964, 0x965).addRange(0x9E6, 0x9EF).addRange(0xA800, 0xA82C);
      Syloti_Nagri$1.characters = set;
      return Syloti_Nagri$1;
    }
  
    var Syriac$1 = {};
  
    var hasRequiredSyriac$1;
    function requireSyriac$1() {
      if (hasRequiredSyriac$1) return Syriac$1;
      hasRequiredSyriac$1 = 1;
      var set = regenerate$2.exports(0x60C, 0x61F, 0x640, 0x670, 0x1DF8, 0x1DFA);
      set.addRange(0x61B, 0x61C).addRange(0x64B, 0x655).addRange(0x700, 0x70D).addRange(0x70F, 0x74A).addRange(0x74D, 0x74F).addRange(0x860, 0x86A);
      Syriac$1.characters = set;
      return Syriac$1;
    }
  
    var Tagalog$1 = {};
  
    var hasRequiredTagalog$1;
    function requireTagalog$1() {
      if (hasRequiredTagalog$1) return Tagalog$1;
      hasRequiredTagalog$1 = 1;
      var set = regenerate$2.exports(0x171F);
      set.addRange(0x1700, 0x1715).addRange(0x1735, 0x1736);
      Tagalog$1.characters = set;
      return Tagalog$1;
    }
  
    var Tagbanwa$1 = {};
  
    var hasRequiredTagbanwa$1;
    function requireTagbanwa$1() {
      if (hasRequiredTagbanwa$1) return Tagbanwa$1;
      hasRequiredTagbanwa$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1735, 0x1736).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1772, 0x1773);
      Tagbanwa$1.characters = set;
      return Tagbanwa$1;
    }
  
    var Tai_Le$1 = {};
  
    var hasRequiredTai_Le$1;
    function requireTai_Le$1() {
      if (hasRequiredTai_Le$1) return Tai_Le$1;
      hasRequiredTai_Le$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1040, 0x1049).addRange(0x1950, 0x196D).addRange(0x1970, 0x1974);
      Tai_Le$1.characters = set;
      return Tai_Le$1;
    }
  
    var Tai_Tham$1 = {};
  
    var hasRequiredTai_Tham$1;
    function requireTai_Tham$1() {
      if (hasRequiredTai_Tham$1) return Tai_Tham$1;
      hasRequiredTai_Tham$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1A20, 0x1A5E).addRange(0x1A60, 0x1A7C).addRange(0x1A7F, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1AA0, 0x1AAD);
      Tai_Tham$1.characters = set;
      return Tai_Tham$1;
    }
  
    var Tai_Viet$1 = {};
  
    var hasRequiredTai_Viet$1;
    function requireTai_Viet$1() {
      if (hasRequiredTai_Viet$1) return Tai_Viet$1;
      hasRequiredTai_Viet$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0xAA80, 0xAAC2).addRange(0xAADB, 0xAADF);
      Tai_Viet$1.characters = set;
      return Tai_Viet$1;
    }
  
    var Takri$1 = {};
  
    var hasRequiredTakri$1;
    function requireTakri$1() {
      if (hasRequiredTakri$1) return Takri$1;
      hasRequiredTakri$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x964, 0x965).addRange(0xA830, 0xA839).addRange(0x11680, 0x116B9).addRange(0x116C0, 0x116C9);
      Takri$1.characters = set;
      return Takri$1;
    }
  
    var Tamil$1 = {};
  
    var hasRequiredTamil$1;
    function requireTamil$1() {
      if (hasRequiredTamil$1) return Tamil$1;
      hasRequiredTamil$1 = 1;
      var set = regenerate$2.exports(0xB9C, 0xBD0, 0xBD7, 0x1CDA, 0xA8F3, 0x11301, 0x11303, 0x11FFF);
      set.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xB82, 0xB83).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xBBE, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCD).addRange(0xBE6, 0xBFA).addRange(0x1133B, 0x1133C).addRange(0x11FC0, 0x11FF1);
      Tamil$1.characters = set;
      return Tamil$1;
    }
  
    var Tangsa$1 = {};
  
    var hasRequiredTangsa$1;
    function requireTangsa$1() {
      if (hasRequiredTangsa$1) return Tangsa$1;
      hasRequiredTangsa$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x16A70, 0x16ABE).addRange(0x16AC0, 0x16AC9);
      Tangsa$1.characters = set;
      return Tangsa$1;
    }
  
    var Tangut$1 = {};
  
    var hasRequiredTangut$1;
    function requireTangut$1() {
      if (hasRequiredTangut$1) return Tangut$1;
      hasRequiredTangut$1 = 1;
      var set = regenerate$2.exports(0x16FE0);
      set.addRange(0x17000, 0x187F7).addRange(0x18800, 0x18AFF).addRange(0x18D00, 0x18D08);
      Tangut$1.characters = set;
      return Tangut$1;
    }
  
    var Telugu$1 = {};
  
    var hasRequiredTelugu$1;
    function requireTelugu$1() {
      if (hasRequiredTelugu$1) return Telugu$1;
      hasRequiredTelugu$1 = 1;
      var set = regenerate$2.exports(0xC5D, 0x1CDA, 0x1CF2);
      set.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xC00, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC3C, 0xC44).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC63).addRange(0xC66, 0xC6F).addRange(0xC77, 0xC7F);
      Telugu$1.characters = set;
      return Telugu$1;
    }
  
    var Thaana$1 = {};
  
    var hasRequiredThaana$1;
    function requireThaana$1() {
      if (hasRequiredThaana$1) return Thaana$1;
      hasRequiredThaana$1 = 1;
      var set = regenerate$2.exports(0x60C, 0x61F, 0xFDF2, 0xFDFD);
      set.addRange(0x61B, 0x61C).addRange(0x660, 0x669).addRange(0x780, 0x7B1);
      Thaana$1.characters = set;
      return Thaana$1;
    }
  
    var Thai$1 = {};
  
    var hasRequiredThai$1;
    function requireThai$1() {
      if (hasRequiredThai$1) return Thai$1;
      hasRequiredThai$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0xE01, 0xE3A).addRange(0xE40, 0xE5B);
      Thai$1.characters = set;
      return Thai$1;
    }
  
    var Tibetan$1 = {};
  
    var hasRequiredTibetan$1;
    function requireTibetan$1() {
      if (hasRequiredTibetan$1) return Tibetan$1;
      hasRequiredTibetan$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0xF00, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF71, 0xF97).addRange(0xF99, 0xFBC).addRange(0xFBE, 0xFCC).addRange(0xFCE, 0xFD4).addRange(0xFD9, 0xFDA);
      Tibetan$1.characters = set;
      return Tibetan$1;
    }
  
    var Tifinagh$1 = {};
  
    var hasRequiredTifinagh$1;
    function requireTifinagh$1() {
      if (hasRequiredTifinagh$1) return Tifinagh$1;
      hasRequiredTifinagh$1 = 1;
      var set = regenerate$2.exports(0x2D7F);
      set.addRange(0x2D30, 0x2D67).addRange(0x2D6F, 0x2D70);
      Tifinagh$1.characters = set;
      return Tifinagh$1;
    }
  
    var Tirhuta$1 = {};
  
    var hasRequiredTirhuta$1;
    function requireTirhuta$1() {
      if (hasRequiredTirhuta$1) return Tirhuta$1;
      hasRequiredTirhuta$1 = 1;
      var set = regenerate$2.exports(0x1CF2);
      set.addRange(0x951, 0x952).addRange(0x964, 0x965).addRange(0xA830, 0xA839).addRange(0x11480, 0x114C7).addRange(0x114D0, 0x114D9);
      Tirhuta$1.characters = set;
      return Tirhuta$1;
    }
  
    var Toto$1 = {};
  
    var hasRequiredToto$1;
    function requireToto$1() {
      if (hasRequiredToto$1) return Toto$1;
      hasRequiredToto$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1E290, 0x1E2AE);
      Toto$1.characters = set;
      return Toto$1;
    }
  
    var Ugaritic$1 = {};
  
    var hasRequiredUgaritic$1;
    function requireUgaritic$1() {
      if (hasRequiredUgaritic$1) return Ugaritic$1;
      hasRequiredUgaritic$1 = 1;
      var set = regenerate$2.exports(0x1039F);
      set.addRange(0x10380, 0x1039D);
      Ugaritic$1.characters = set;
      return Ugaritic$1;
    }
  
    var Vai$1 = {};
  
    var hasRequiredVai$1;
    function requireVai$1() {
      if (hasRequiredVai$1) return Vai$1;
      hasRequiredVai$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0xA500, 0xA62B);
      Vai$1.characters = set;
      return Vai$1;
    }
  
    var Vithkuqi$1 = {};
  
    var hasRequiredVithkuqi$1;
    function requireVithkuqi$1() {
      if (hasRequiredVithkuqi$1) return Vithkuqi$1;
      hasRequiredVithkuqi$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC);
      Vithkuqi$1.characters = set;
      return Vithkuqi$1;
    }
  
    var Wancho$1 = {};
  
    var hasRequiredWancho$1;
    function requireWancho$1() {
      if (hasRequiredWancho$1) return Wancho$1;
      hasRequiredWancho$1 = 1;
      var set = regenerate$2.exports(0x1E2FF);
      set.addRange(0x1E2C0, 0x1E2F9);
      Wancho$1.characters = set;
      return Wancho$1;
    }
  
    var Warang_Citi$1 = {};
  
    var hasRequiredWarang_Citi$1;
    function requireWarang_Citi$1() {
      if (hasRequiredWarang_Citi$1) return Warang_Citi$1;
      hasRequiredWarang_Citi$1 = 1;
      var set = regenerate$2.exports(0x118FF);
      set.addRange(0x118A0, 0x118F2);
      Warang_Citi$1.characters = set;
      return Warang_Citi$1;
    }
  
    var Yezidi$1 = {};
  
    var hasRequiredYezidi$1;
    function requireYezidi$1() {
      if (hasRequiredYezidi$1) return Yezidi$1;
      hasRequiredYezidi$1 = 1;
      var set = regenerate$2.exports(0x60C, 0x61B, 0x61F);
      set.addRange(0x660, 0x669).addRange(0x10E80, 0x10EA9).addRange(0x10EAB, 0x10EAD).addRange(0x10EB0, 0x10EB1);
      Yezidi$1.characters = set;
      return Yezidi$1;
    }
  
    var Yi$1 = {};
  
    var hasRequiredYi$1;
    function requireYi$1() {
      if (hasRequiredYi$1) return Yi$1;
      hasRequiredYi$1 = 1;
      var set = regenerate$2.exports(0x30FB);
      set.addRange(0x3001, 0x3002).addRange(0x3008, 0x3011).addRange(0x3014, 0x301B).addRange(0xA000, 0xA48C).addRange(0xA490, 0xA4C6).addRange(0xFF61, 0xFF65);
      Yi$1.characters = set;
      return Yi$1;
    }
  
    var Zanabazar_Square$1 = {};
  
    var hasRequiredZanabazar_Square$1;
    function requireZanabazar_Square$1() {
      if (hasRequiredZanabazar_Square$1) return Zanabazar_Square$1;
      hasRequiredZanabazar_Square$1 = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11A00, 0x11A47);
      Zanabazar_Square$1.characters = set;
      return Zanabazar_Square$1;
    }
  
    var Adlam = {};
  
    var hasRequiredAdlam;
    function requireAdlam() {
      if (hasRequiredAdlam) return Adlam;
      hasRequiredAdlam = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1E900, 0x1E94B).addRange(0x1E950, 0x1E959).addRange(0x1E95E, 0x1E95F);
      Adlam.characters = set;
      return Adlam;
    }
  
    var Ahom = {};
  
    var hasRequiredAhom;
    function requireAhom() {
      if (hasRequiredAhom) return Ahom;
      hasRequiredAhom = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11700, 0x1171A).addRange(0x1171D, 0x1172B).addRange(0x11730, 0x11746);
      Ahom.characters = set;
      return Ahom;
    }
  
    var Anatolian_Hieroglyphs = {};
  
    var hasRequiredAnatolian_Hieroglyphs;
    function requireAnatolian_Hieroglyphs() {
      if (hasRequiredAnatolian_Hieroglyphs) return Anatolian_Hieroglyphs;
      hasRequiredAnatolian_Hieroglyphs = 1;
      var set = regenerate$2.exports();
      set.addRange(0x14400, 0x14646);
      Anatolian_Hieroglyphs.characters = set;
      return Anatolian_Hieroglyphs;
    }
  
    var Arabic = {};
  
    var hasRequiredArabic;
    function requireArabic() {
      if (hasRequiredArabic) return Arabic;
      hasRequiredArabic = 1;
      var set = regenerate$2.exports(0xFDCF, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);
      set.addRange(0x600, 0x604).addRange(0x606, 0x60B).addRange(0x60D, 0x61A).addRange(0x61C, 0x61E).addRange(0x620, 0x63F).addRange(0x641, 0x64A).addRange(0x656, 0x66F).addRange(0x671, 0x6DC).addRange(0x6DE, 0x6FF).addRange(0x750, 0x77F).addRange(0x870, 0x88E).addRange(0x890, 0x891).addRange(0x898, 0x8E1).addRange(0x8E3, 0x8FF).addRange(0xFB50, 0xFBC2).addRange(0xFBD3, 0xFD3D).addRange(0xFD40, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFF).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0x10E60, 0x10E7E).addRange(0x10EFD, 0x10EFF).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1EEF0, 0x1EEF1);
      Arabic.characters = set;
      return Arabic;
    }
  
    var Armenian = {};
  
    var hasRequiredArmenian;
    function requireArmenian() {
      if (hasRequiredArmenian) return Armenian;
      hasRequiredArmenian = 1;
      var set = regenerate$2.exports();
      set.addRange(0x531, 0x556).addRange(0x559, 0x58A).addRange(0x58D, 0x58F).addRange(0xFB13, 0xFB17);
      Armenian.characters = set;
      return Armenian;
    }
  
    var Avestan = {};
  
    var hasRequiredAvestan;
    function requireAvestan() {
      if (hasRequiredAvestan) return Avestan;
      hasRequiredAvestan = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10B00, 0x10B35).addRange(0x10B39, 0x10B3F);
      Avestan.characters = set;
      return Avestan;
    }
  
    var Balinese = {};
  
    var hasRequiredBalinese;
    function requireBalinese() {
      if (hasRequiredBalinese) return Balinese;
      hasRequiredBalinese = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1B00, 0x1B4C).addRange(0x1B50, 0x1B7E);
      Balinese.characters = set;
      return Balinese;
    }
  
    var Bamum = {};
  
    var hasRequiredBamum;
    function requireBamum() {
      if (hasRequiredBamum) return Bamum;
      hasRequiredBamum = 1;
      var set = regenerate$2.exports();
      set.addRange(0xA6A0, 0xA6F7).addRange(0x16800, 0x16A38);
      Bamum.characters = set;
      return Bamum;
    }
  
    var Bassa_Vah = {};
  
    var hasRequiredBassa_Vah;
    function requireBassa_Vah() {
      if (hasRequiredBassa_Vah) return Bassa_Vah;
      hasRequiredBassa_Vah = 1;
      var set = regenerate$2.exports();
      set.addRange(0x16AD0, 0x16AED).addRange(0x16AF0, 0x16AF5);
      Bassa_Vah.characters = set;
      return Bassa_Vah;
    }
  
    var Batak = {};
  
    var hasRequiredBatak;
    function requireBatak() {
      if (hasRequiredBatak) return Batak;
      hasRequiredBatak = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1BC0, 0x1BF3).addRange(0x1BFC, 0x1BFF);
      Batak.characters = set;
      return Batak;
    }
  
    var Bengali = {};
  
    var hasRequiredBengali;
    function requireBengali() {
      if (hasRequiredBengali) return Bengali;
      hasRequiredBengali = 1;
      var set = regenerate$2.exports(0x9B2, 0x9D7);
      set.addRange(0x980, 0x983).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9BC, 0x9C4).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CE).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E3).addRange(0x9E6, 0x9FE);
      Bengali.characters = set;
      return Bengali;
    }
  
    var Bhaiksuki = {};
  
    var hasRequiredBhaiksuki;
    function requireBhaiksuki() {
      if (hasRequiredBhaiksuki) return Bhaiksuki;
      hasRequiredBhaiksuki = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C36).addRange(0x11C38, 0x11C45).addRange(0x11C50, 0x11C6C);
      Bhaiksuki.characters = set;
      return Bhaiksuki;
    }
  
    var Bopomofo = {};
  
    var hasRequiredBopomofo;
    function requireBopomofo() {
      if (hasRequiredBopomofo) return Bopomofo;
      hasRequiredBopomofo = 1;
      var set = regenerate$2.exports();
      set.addRange(0x2EA, 0x2EB).addRange(0x3105, 0x312F).addRange(0x31A0, 0x31BF);
      Bopomofo.characters = set;
      return Bopomofo;
    }
  
    var Brahmi = {};
  
    var hasRequiredBrahmi;
    function requireBrahmi() {
      if (hasRequiredBrahmi) return Brahmi;
      hasRequiredBrahmi = 1;
      var set = regenerate$2.exports(0x1107F);
      set.addRange(0x11000, 0x1104D).addRange(0x11052, 0x11075);
      Brahmi.characters = set;
      return Brahmi;
    }
  
    var Braille = {};
  
    var hasRequiredBraille;
    function requireBraille() {
      if (hasRequiredBraille) return Braille;
      hasRequiredBraille = 1;
      var set = regenerate$2.exports();
      set.addRange(0x2800, 0x28FF);
      Braille.characters = set;
      return Braille;
    }
  
    var Buginese = {};
  
    var hasRequiredBuginese;
    function requireBuginese() {
      if (hasRequiredBuginese) return Buginese;
      hasRequiredBuginese = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1A00, 0x1A1B).addRange(0x1A1E, 0x1A1F);
      Buginese.characters = set;
      return Buginese;
    }
  
    var Buhid = {};
  
    var hasRequiredBuhid;
    function requireBuhid() {
      if (hasRequiredBuhid) return Buhid;
      hasRequiredBuhid = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1740, 0x1753);
      Buhid.characters = set;
      return Buhid;
    }
  
    var Canadian_Aboriginal = {};
  
    var hasRequiredCanadian_Aboriginal;
    function requireCanadian_Aboriginal() {
      if (hasRequiredCanadian_Aboriginal) return Canadian_Aboriginal;
      hasRequiredCanadian_Aboriginal = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1400, 0x167F).addRange(0x18B0, 0x18F5).addRange(0x11AB0, 0x11ABF);
      Canadian_Aboriginal.characters = set;
      return Canadian_Aboriginal;
    }
  
    var Carian = {};
  
    var hasRequiredCarian;
    function requireCarian() {
      if (hasRequiredCarian) return Carian;
      hasRequiredCarian = 1;
      var set = regenerate$2.exports();
      set.addRange(0x102A0, 0x102D0);
      Carian.characters = set;
      return Carian;
    }
  
    var Caucasian_Albanian = {};
  
    var hasRequiredCaucasian_Albanian;
    function requireCaucasian_Albanian() {
      if (hasRequiredCaucasian_Albanian) return Caucasian_Albanian;
      hasRequiredCaucasian_Albanian = 1;
      var set = regenerate$2.exports(0x1056F);
      set.addRange(0x10530, 0x10563);
      Caucasian_Albanian.characters = set;
      return Caucasian_Albanian;
    }
  
    var Chakma = {};
  
    var hasRequiredChakma;
    function requireChakma() {
      if (hasRequiredChakma) return Chakma;
      hasRequiredChakma = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11100, 0x11134).addRange(0x11136, 0x11147);
      Chakma.characters = set;
      return Chakma;
    }
  
    var Cham = {};
  
    var hasRequiredCham;
    function requireCham() {
      if (hasRequiredCham) return Cham;
      hasRequiredCham = 1;
      var set = regenerate$2.exports();
      set.addRange(0xAA00, 0xAA36).addRange(0xAA40, 0xAA4D).addRange(0xAA50, 0xAA59).addRange(0xAA5C, 0xAA5F);
      Cham.characters = set;
      return Cham;
    }
  
    var Cherokee = {};
  
    var hasRequiredCherokee;
    function requireCherokee() {
      if (hasRequiredCherokee) return Cherokee;
      hasRequiredCherokee = 1;
      var set = regenerate$2.exports();
      set.addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0xAB70, 0xABBF);
      Cherokee.characters = set;
      return Cherokee;
    }
  
    var Chorasmian = {};
  
    var hasRequiredChorasmian;
    function requireChorasmian() {
      if (hasRequiredChorasmian) return Chorasmian;
      hasRequiredChorasmian = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10FB0, 0x10FCB);
      Chorasmian.characters = set;
      return Chorasmian;
    }
  
    var Common = {};
  
    var hasRequiredCommon;
    function requireCommon() {
      if (hasRequiredCommon) return Common;
      hasRequiredCommon = 1;
      var set = regenerate$2.exports(0xD7, 0xF7, 0x374, 0x37E, 0x385, 0x387, 0x605, 0x60C, 0x61B, 0x61F, 0x640, 0x6DD, 0x8E2, 0xE3F, 0x10FB, 0x1805, 0x1CD3, 0x1CE1, 0x1CFA, 0x3006, 0x30A0, 0x32FF, 0xA92E, 0xA9CF, 0xAB5B, 0xFEFF, 0xFF70, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1F7F0, 0xE0001);
      set.addRange(0x0, 0x40).addRange(0x5B, 0x60).addRange(0x7B, 0xA9).addRange(0xAB, 0xB9).addRange(0xBB, 0xBF).addRange(0x2B9, 0x2DF).addRange(0x2E5, 0x2E9).addRange(0x2EC, 0x2FF).addRange(0x964, 0x965).addRange(0xFD5, 0xFD8).addRange(0x16EB, 0x16ED).addRange(0x1735, 0x1736).addRange(0x1802, 0x1803).addRange(0x1CE9, 0x1CEC).addRange(0x1CEE, 0x1CF3).addRange(0x1CF5, 0x1CF7).addRange(0x2000, 0x200B).addRange(0x200E, 0x2064).addRange(0x2066, 0x2070).addRange(0x2074, 0x207E).addRange(0x2080, 0x208E).addRange(0x20A0, 0x20C0).addRange(0x2100, 0x2125).addRange(0x2127, 0x2129).addRange(0x212C, 0x2131).addRange(0x2133, 0x214D).addRange(0x214F, 0x215F).addRange(0x2189, 0x218B).addRange(0x2190, 0x2426).addRange(0x2440, 0x244A).addRange(0x2460, 0x27FF).addRange(0x2900, 0x2B73).addRange(0x2B76, 0x2B95).addRange(0x2B97, 0x2BFF).addRange(0x2E00, 0x2E5D).addRange(0x2FF0, 0x2FFB).addRange(0x3000, 0x3004).addRange(0x3008, 0x3020).addRange(0x3030, 0x3037).addRange(0x303C, 0x303F).addRange(0x309B, 0x309C).addRange(0x30FB, 0x30FC).addRange(0x3190, 0x319F).addRange(0x31C0, 0x31E3).addRange(0x3220, 0x325F).addRange(0x327F, 0x32CF).addRange(0x3358, 0x33FF).addRange(0x4DC0, 0x4DFF).addRange(0xA700, 0xA721).addRange(0xA788, 0xA78A).addRange(0xA830, 0xA839);
      set.addRange(0xAB6A, 0xAB6B).addRange(0xFD3E, 0xFD3F).addRange(0xFE10, 0xFE19).addRange(0xFE30, 0xFE52).addRange(0xFE54, 0xFE66).addRange(0xFE68, 0xFE6B).addRange(0xFF01, 0xFF20).addRange(0xFF3B, 0xFF40).addRange(0xFF5B, 0xFF65).addRange(0xFF9E, 0xFF9F).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE).addRange(0xFFF9, 0xFFFD).addRange(0x10100, 0x10102).addRange(0x10107, 0x10133).addRange(0x10137, 0x1013F).addRange(0x10190, 0x1019C).addRange(0x101D0, 0x101FC).addRange(0x102E1, 0x102FB).addRange(0x1BCA0, 0x1BCA3).addRange(0x1CF50, 0x1CFC3).addRange(0x1D000, 0x1D0F5).addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D166).addRange(0x1D16A, 0x1D17A).addRange(0x1D183, 0x1D184).addRange(0x1D18C, 0x1D1A9).addRange(0x1D1AE, 0x1D1EA).addRange(0x1D2C0, 0x1D2D3).addRange(0x1D2E0, 0x1D2F3).addRange(0x1D300, 0x1D356).addRange(0x1D360, 0x1D378).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D7CB).addRange(0x1D7CE, 0x1D7FF).addRange(0x1EC71, 0x1ECB4);
      set.addRange(0x1ED01, 0x1ED3D).addRange(0x1F000, 0x1F02B).addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F100, 0x1F1AD).addRange(0x1F1E6, 0x1F1FF).addRange(0x1F201, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F6D7).addRange(0x1F6DC, 0x1F6EC).addRange(0x1F6F0, 0x1F6FC).addRange(0x1F700, 0x1F776).addRange(0x1F77B, 0x1F7D9).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887).addRange(0x1F890, 0x1F8AD).addRange(0x1F8B0, 0x1F8B1).addRange(0x1F900, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA7C).addRange(0x1FA80, 0x1FA88).addRange(0x1FA90, 0x1FABD).addRange(0x1FABF, 0x1FAC5).addRange(0x1FACE, 0x1FADB).addRange(0x1FAE0, 0x1FAE8).addRange(0x1FAF0, 0x1FAF8).addRange(0x1FB00, 0x1FB92).addRange(0x1FB94, 0x1FBCA).addRange(0x1FBF0, 0x1FBF9).addRange(0xE0020, 0xE007F);
      Common.characters = set;
      return Common;
    }
  
    var Coptic = {};
  
    var hasRequiredCoptic;
    function requireCoptic() {
      if (hasRequiredCoptic) return Coptic;
      hasRequiredCoptic = 1;
      var set = regenerate$2.exports();
      set.addRange(0x3E2, 0x3EF).addRange(0x2C80, 0x2CF3).addRange(0x2CF9, 0x2CFF);
      Coptic.characters = set;
      return Coptic;
    }
  
    var Cuneiform = {};
  
    var hasRequiredCuneiform;
    function requireCuneiform() {
      if (hasRequiredCuneiform) return Cuneiform;
      hasRequiredCuneiform = 1;
      var set = regenerate$2.exports();
      set.addRange(0x12000, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12470, 0x12474).addRange(0x12480, 0x12543);
      Cuneiform.characters = set;
      return Cuneiform;
    }
  
    var Cypriot = {};
  
    var hasRequiredCypriot;
    function requireCypriot() {
      if (hasRequiredCypriot) return Cypriot;
      hasRequiredCypriot = 1;
      var set = regenerate$2.exports(0x10808, 0x1083C, 0x1083F);
      set.addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838);
      Cypriot.characters = set;
      return Cypriot;
    }
  
    var Cypro_Minoan = {};
  
    var hasRequiredCypro_Minoan;
    function requireCypro_Minoan() {
      if (hasRequiredCypro_Minoan) return Cypro_Minoan;
      hasRequiredCypro_Minoan = 1;
      var set = regenerate$2.exports();
      set.addRange(0x12F90, 0x12FF2);
      Cypro_Minoan.characters = set;
      return Cypro_Minoan;
    }
  
    var Cyrillic = {};
  
    var hasRequiredCyrillic;
    function requireCyrillic() {
      if (hasRequiredCyrillic) return Cyrillic;
      hasRequiredCyrillic = 1;
      var set = regenerate$2.exports(0x1D2B, 0x1D78, 0x1E08F);
      set.addRange(0x400, 0x484).addRange(0x487, 0x52F).addRange(0x1C80, 0x1C88).addRange(0x2DE0, 0x2DFF).addRange(0xA640, 0xA69F).addRange(0xFE2E, 0xFE2F).addRange(0x1E030, 0x1E06D);
      Cyrillic.characters = set;
      return Cyrillic;
    }
  
    var Deseret = {};
  
    var hasRequiredDeseret;
    function requireDeseret() {
      if (hasRequiredDeseret) return Deseret;
      hasRequiredDeseret = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10400, 0x1044F);
      Deseret.characters = set;
      return Deseret;
    }
  
    var Devanagari = {};
  
    var hasRequiredDevanagari;
    function requireDevanagari() {
      if (hasRequiredDevanagari) return Devanagari;
      hasRequiredDevanagari = 1;
      var set = regenerate$2.exports();
      set.addRange(0x900, 0x950).addRange(0x955, 0x963).addRange(0x966, 0x97F).addRange(0xA8E0, 0xA8FF).addRange(0x11B00, 0x11B09);
      Devanagari.characters = set;
      return Devanagari;
    }
  
    var Dives_Akuru = {};
  
    var hasRequiredDives_Akuru;
    function requireDives_Akuru() {
      if (hasRequiredDives_Akuru) return Dives_Akuru;
      hasRequiredDives_Akuru = 1;
      var set = regenerate$2.exports(0x11909);
      set.addRange(0x11900, 0x11906).addRange(0x1190C, 0x11913).addRange(0x11915, 0x11916).addRange(0x11918, 0x11935).addRange(0x11937, 0x11938).addRange(0x1193B, 0x11946).addRange(0x11950, 0x11959);
      Dives_Akuru.characters = set;
      return Dives_Akuru;
    }
  
    var Dogra = {};
  
    var hasRequiredDogra;
    function requireDogra() {
      if (hasRequiredDogra) return Dogra;
      hasRequiredDogra = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11800, 0x1183B);
      Dogra.characters = set;
      return Dogra;
    }
  
    var Duployan = {};
  
    var hasRequiredDuployan;
    function requireDuployan() {
      if (hasRequiredDuployan) return Duployan;
      hasRequiredDuployan = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1BC9C, 0x1BC9F);
      Duployan.characters = set;
      return Duployan;
    }
  
    var Egyptian_Hieroglyphs = {};
  
    var hasRequiredEgyptian_Hieroglyphs;
    function requireEgyptian_Hieroglyphs() {
      if (hasRequiredEgyptian_Hieroglyphs) return Egyptian_Hieroglyphs;
      hasRequiredEgyptian_Hieroglyphs = 1;
      var set = regenerate$2.exports();
      set.addRange(0x13000, 0x13455);
      Egyptian_Hieroglyphs.characters = set;
      return Egyptian_Hieroglyphs;
    }
  
    var Elbasan = {};
  
    var hasRequiredElbasan;
    function requireElbasan() {
      if (hasRequiredElbasan) return Elbasan;
      hasRequiredElbasan = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10500, 0x10527);
      Elbasan.characters = set;
      return Elbasan;
    }
  
    var Elymaic = {};
  
    var hasRequiredElymaic;
    function requireElymaic() {
      if (hasRequiredElymaic) return Elymaic;
      hasRequiredElymaic = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10FE0, 0x10FF6);
      Elymaic.characters = set;
      return Elymaic;
    }
  
    var Ethiopic = {};
  
    var hasRequiredEthiopic;
    function requireEthiopic() {
      if (hasRequiredEthiopic) return Ethiopic;
      hasRequiredEthiopic = 1;
      var set = regenerate$2.exports(0x1258, 0x12C0);
      set.addRange(0x1200, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x135D, 0x137C).addRange(0x1380, 0x1399).addRange(0x2D80, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0x1E7E0, 0x1E7E6).addRange(0x1E7E8, 0x1E7EB).addRange(0x1E7ED, 0x1E7EE).addRange(0x1E7F0, 0x1E7FE);
      Ethiopic.characters = set;
      return Ethiopic;
    }
  
    var Georgian = {};
  
    var hasRequiredGeorgian;
    function requireGeorgian() {
      if (hasRequiredGeorgian) return Georgian;
      hasRequiredGeorgian = 1;
      var set = regenerate$2.exports(0x10C7, 0x10CD, 0x2D27, 0x2D2D);
      set.addRange(0x10A0, 0x10C5).addRange(0x10D0, 0x10FA).addRange(0x10FC, 0x10FF).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x2D00, 0x2D25);
      Georgian.characters = set;
      return Georgian;
    }
  
    var Glagolitic = {};
  
    var hasRequiredGlagolitic;
    function requireGlagolitic() {
      if (hasRequiredGlagolitic) return Glagolitic;
      hasRequiredGlagolitic = 1;
      var set = regenerate$2.exports();
      set.addRange(0x2C00, 0x2C5F).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A);
      Glagolitic.characters = set;
      return Glagolitic;
    }
  
    var Gothic = {};
  
    var hasRequiredGothic;
    function requireGothic() {
      if (hasRequiredGothic) return Gothic;
      hasRequiredGothic = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10330, 0x1034A);
      Gothic.characters = set;
      return Gothic;
    }
  
    var Grantha = {};
  
    var hasRequiredGrantha;
    function requireGrantha() {
      if (hasRequiredGrantha) return Grantha;
      hasRequiredGrantha = 1;
      var set = regenerate$2.exports(0x11350, 0x11357);
      set.addRange(0x11300, 0x11303).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1133C, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x1135D, 0x11363).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374);
      Grantha.characters = set;
      return Grantha;
    }
  
    var Greek = {};
  
    var hasRequiredGreek;
    function requireGreek() {
      if (hasRequiredGreek) return Greek;
      hasRequiredGreek = 1;
      var set = regenerate$2.exports(0x37F, 0x384, 0x386, 0x38C, 0x1DBF, 0x1F59, 0x1F5B, 0x1F5D, 0x2126, 0xAB65, 0x101A0);
      set.addRange(0x370, 0x373).addRange(0x375, 0x377).addRange(0x37A, 0x37D).addRange(0x388, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x3E1).addRange(0x3F0, 0x3FF).addRange(0x1D26, 0x1D2A).addRange(0x1D5D, 0x1D61).addRange(0x1D66, 0x1D6A).addRange(0x1F00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FC4).addRange(0x1FC6, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FDD, 0x1FEF).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFE).addRange(0x10140, 0x1018E).addRange(0x1D200, 0x1D245);
      Greek.characters = set;
      return Greek;
    }
  
    var Gujarati = {};
  
    var hasRequiredGujarati;
    function requireGujarati() {
      if (hasRequiredGujarati) return Gujarati;
      hasRequiredGujarati = 1;
      var set = regenerate$2.exports(0xAD0);
      set.addRange(0xA81, 0xA83).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xABC, 0xAC5).addRange(0xAC7, 0xAC9).addRange(0xACB, 0xACD).addRange(0xAE0, 0xAE3).addRange(0xAE6, 0xAF1).addRange(0xAF9, 0xAFF);
      Gujarati.characters = set;
      return Gujarati;
    }
  
    var Gunjala_Gondi = {};
  
    var hasRequiredGunjala_Gondi;
    function requireGunjala_Gondi() {
      if (hasRequiredGunjala_Gondi) return Gunjala_Gondi;
      hasRequiredGunjala_Gondi = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D8E).addRange(0x11D90, 0x11D91).addRange(0x11D93, 0x11D98).addRange(0x11DA0, 0x11DA9);
      Gunjala_Gondi.characters = set;
      return Gunjala_Gondi;
    }
  
    var Gurmukhi = {};
  
    var hasRequiredGurmukhi;
    function requireGurmukhi() {
      if (hasRequiredGurmukhi) return Gurmukhi;
      hasRequiredGurmukhi = 1;
      var set = regenerate$2.exports(0xA3C, 0xA51, 0xA5E);
      set.addRange(0xA01, 0xA03).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA3E, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA59, 0xA5C).addRange(0xA66, 0xA76);
      Gurmukhi.characters = set;
      return Gurmukhi;
    }
  
    var Han = {};
  
    var hasRequiredHan;
    function requireHan() {
      if (hasRequiredHan) return Han;
      hasRequiredHan = 1;
      var set = regenerate$2.exports(0x3005, 0x3007);
      set.addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x3021, 0x3029).addRange(0x3038, 0x303B).addRange(0x3400, 0x4DBF).addRange(0x4E00, 0x9FFF).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0x16FE2, 0x16FE3).addRange(0x16FF0, 0x16FF1).addRange(0x20000, 0x2A6DF).addRange(0x2A700, 0x2B739).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D).addRange(0x30000, 0x3134A).addRange(0x31350, 0x323AF);
      Han.characters = set;
      return Han;
    }
  
    var Hangul = {};
  
    var hasRequiredHangul;
    function requireHangul() {
      if (hasRequiredHangul) return Hangul;
      hasRequiredHangul = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1100, 0x11FF).addRange(0x302E, 0x302F).addRange(0x3131, 0x318E).addRange(0x3200, 0x321E).addRange(0x3260, 0x327E).addRange(0xA960, 0xA97C).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xFFA0, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC);
      Hangul.characters = set;
      return Hangul;
    }
  
    var Hanifi_Rohingya = {};
  
    var hasRequiredHanifi_Rohingya;
    function requireHanifi_Rohingya() {
      if (hasRequiredHanifi_Rohingya) return Hanifi_Rohingya;
      hasRequiredHanifi_Rohingya = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10D00, 0x10D27).addRange(0x10D30, 0x10D39);
      Hanifi_Rohingya.characters = set;
      return Hanifi_Rohingya;
    }
  
    var Hanunoo = {};
  
    var hasRequiredHanunoo;
    function requireHanunoo() {
      if (hasRequiredHanunoo) return Hanunoo;
      hasRequiredHanunoo = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1720, 0x1734);
      Hanunoo.characters = set;
      return Hanunoo;
    }
  
    var Hatran = {};
  
    var hasRequiredHatran;
    function requireHatran() {
      if (hasRequiredHatran) return Hatran;
      hasRequiredHatran = 1;
      var set = regenerate$2.exports();
      set.addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x108FB, 0x108FF);
      Hatran.characters = set;
      return Hatran;
    }
  
    var Hebrew = {};
  
    var hasRequiredHebrew;
    function requireHebrew() {
      if (hasRequiredHebrew) return Hebrew;
      hasRequiredHebrew = 1;
      var set = regenerate$2.exports(0xFB3E);
      set.addRange(0x591, 0x5C7).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F4).addRange(0xFB1D, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFB4F);
      Hebrew.characters = set;
      return Hebrew;
    }
  
    var Hiragana = {};
  
    var hasRequiredHiragana;
    function requireHiragana() {
      if (hasRequiredHiragana) return Hiragana;
      hasRequiredHiragana = 1;
      var set = regenerate$2.exports(0x1B132, 0x1F200);
      set.addRange(0x3041, 0x3096).addRange(0x309D, 0x309F).addRange(0x1B001, 0x1B11F).addRange(0x1B150, 0x1B152);
      Hiragana.characters = set;
      return Hiragana;
    }
  
    var Imperial_Aramaic = {};
  
    var hasRequiredImperial_Aramaic;
    function requireImperial_Aramaic() {
      if (hasRequiredImperial_Aramaic) return Imperial_Aramaic;
      hasRequiredImperial_Aramaic = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10840, 0x10855).addRange(0x10857, 0x1085F);
      Imperial_Aramaic.characters = set;
      return Imperial_Aramaic;
    }
  
    var Inherited = {};
  
    var hasRequiredInherited;
    function requireInherited() {
      if (hasRequiredInherited) return Inherited;
      hasRequiredInherited = 1;
      var set = regenerate$2.exports(0x670, 0x1CED, 0x1CF4, 0x101FD, 0x102E0, 0x1133B);
      set.addRange(0x300, 0x36F).addRange(0x485, 0x486).addRange(0x64B, 0x655).addRange(0x951, 0x954).addRange(0x1AB0, 0x1ACE).addRange(0x1CD0, 0x1CD2).addRange(0x1CD4, 0x1CE0).addRange(0x1CE2, 0x1CE8).addRange(0x1CF8, 0x1CF9).addRange(0x1DC0, 0x1DFF).addRange(0x200C, 0x200D).addRange(0x20D0, 0x20F0).addRange(0x302A, 0x302D).addRange(0x3099, 0x309A).addRange(0xFE00, 0xFE0F).addRange(0xFE20, 0xFE2D).addRange(0x1CF00, 0x1CF2D).addRange(0x1CF30, 0x1CF46).addRange(0x1D167, 0x1D169).addRange(0x1D17B, 0x1D182).addRange(0x1D185, 0x1D18B).addRange(0x1D1AA, 0x1D1AD).addRange(0xE0100, 0xE01EF);
      Inherited.characters = set;
      return Inherited;
    }
  
    var Inscriptional_Pahlavi = {};
  
    var hasRequiredInscriptional_Pahlavi;
    function requireInscriptional_Pahlavi() {
      if (hasRequiredInscriptional_Pahlavi) return Inscriptional_Pahlavi;
      hasRequiredInscriptional_Pahlavi = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10B60, 0x10B72).addRange(0x10B78, 0x10B7F);
      Inscriptional_Pahlavi.characters = set;
      return Inscriptional_Pahlavi;
    }
  
    var Inscriptional_Parthian = {};
  
    var hasRequiredInscriptional_Parthian;
    function requireInscriptional_Parthian() {
      if (hasRequiredInscriptional_Parthian) return Inscriptional_Parthian;
      hasRequiredInscriptional_Parthian = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10B40, 0x10B55).addRange(0x10B58, 0x10B5F);
      Inscriptional_Parthian.characters = set;
      return Inscriptional_Parthian;
    }
  
    var Javanese = {};
  
    var hasRequiredJavanese;
    function requireJavanese() {
      if (hasRequiredJavanese) return Javanese;
      hasRequiredJavanese = 1;
      var set = regenerate$2.exports();
      set.addRange(0xA980, 0xA9CD).addRange(0xA9D0, 0xA9D9).addRange(0xA9DE, 0xA9DF);
      Javanese.characters = set;
      return Javanese;
    }
  
    var Kaithi = {};
  
    var hasRequiredKaithi;
    function requireKaithi() {
      if (hasRequiredKaithi) return Kaithi;
      hasRequiredKaithi = 1;
      var set = regenerate$2.exports(0x110CD);
      set.addRange(0x11080, 0x110C2);
      Kaithi.characters = set;
      return Kaithi;
    }
  
    var Kannada = {};
  
    var hasRequiredKannada;
    function requireKannada() {
      if (hasRequiredKannada) return Kannada;
      hasRequiredKannada = 1;
      var set = regenerate$2.exports();
      set.addRange(0xC80, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCBC, 0xCC4).addRange(0xCC6, 0xCC8).addRange(0xCCA, 0xCCD).addRange(0xCD5, 0xCD6).addRange(0xCDD, 0xCDE).addRange(0xCE0, 0xCE3).addRange(0xCE6, 0xCEF).addRange(0xCF1, 0xCF3);
      Kannada.characters = set;
      return Kannada;
    }
  
    var Katakana = {};
  
    var hasRequiredKatakana;
    function requireKatakana() {
      if (hasRequiredKatakana) return Katakana;
      hasRequiredKatakana = 1;
      var set = regenerate$2.exports(0x1B000, 0x1B155);
      set.addRange(0x30A1, 0x30FA).addRange(0x30FD, 0x30FF).addRange(0x31F0, 0x31FF).addRange(0x32D0, 0x32FE).addRange(0x3300, 0x3357).addRange(0xFF66, 0xFF6F).addRange(0xFF71, 0xFF9D).addRange(0x1AFF0, 0x1AFF3).addRange(0x1AFF5, 0x1AFFB).addRange(0x1AFFD, 0x1AFFE).addRange(0x1B120, 0x1B122).addRange(0x1B164, 0x1B167);
      Katakana.characters = set;
      return Katakana;
    }
  
    var Kawi = {};
  
    var hasRequiredKawi;
    function requireKawi() {
      if (hasRequiredKawi) return Kawi;
      hasRequiredKawi = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11F00, 0x11F10).addRange(0x11F12, 0x11F3A).addRange(0x11F3E, 0x11F59);
      Kawi.characters = set;
      return Kawi;
    }
  
    var Kayah_Li = {};
  
    var hasRequiredKayah_Li;
    function requireKayah_Li() {
      if (hasRequiredKayah_Li) return Kayah_Li;
      hasRequiredKayah_Li = 1;
      var set = regenerate$2.exports(0xA92F);
      set.addRange(0xA900, 0xA92D);
      Kayah_Li.characters = set;
      return Kayah_Li;
    }
  
    var Kharoshthi = {};
  
    var hasRequiredKharoshthi;
    function requireKharoshthi() {
      if (hasRequiredKharoshthi) return Kharoshthi;
      hasRequiredKharoshthi = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10A00, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A38, 0x10A3A).addRange(0x10A3F, 0x10A48).addRange(0x10A50, 0x10A58);
      Kharoshthi.characters = set;
      return Kharoshthi;
    }
  
    var Khitan_Small_Script = {};
  
    var hasRequiredKhitan_Small_Script;
    function requireKhitan_Small_Script() {
      if (hasRequiredKhitan_Small_Script) return Khitan_Small_Script;
      hasRequiredKhitan_Small_Script = 1;
      var set = regenerate$2.exports(0x16FE4);
      set.addRange(0x18B00, 0x18CD5);
      Khitan_Small_Script.characters = set;
      return Khitan_Small_Script;
    }
  
    var Khmer = {};
  
    var hasRequiredKhmer;
    function requireKhmer() {
      if (hasRequiredKhmer) return Khmer;
      hasRequiredKhmer = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1780, 0x17DD).addRange(0x17E0, 0x17E9).addRange(0x17F0, 0x17F9).addRange(0x19E0, 0x19FF);
      Khmer.characters = set;
      return Khmer;
    }
  
    var Khojki = {};
  
    var hasRequiredKhojki;
    function requireKhojki() {
      if (hasRequiredKhojki) return Khojki;
      hasRequiredKhojki = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11200, 0x11211).addRange(0x11213, 0x11241);
      Khojki.characters = set;
      return Khojki;
    }
  
    var Khudawadi = {};
  
    var hasRequiredKhudawadi;
    function requireKhudawadi() {
      if (hasRequiredKhudawadi) return Khudawadi;
      hasRequiredKhudawadi = 1;
      var set = regenerate$2.exports();
      set.addRange(0x112B0, 0x112EA).addRange(0x112F0, 0x112F9);
      Khudawadi.characters = set;
      return Khudawadi;
    }
  
    var Lao = {};
  
    var hasRequiredLao;
    function requireLao() {
      if (hasRequiredLao) return Lao;
      hasRequiredLao = 1;
      var set = regenerate$2.exports(0xE84, 0xEA5, 0xEC6);
      set.addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEBD).addRange(0xEC0, 0xEC4).addRange(0xEC8, 0xECE).addRange(0xED0, 0xED9).addRange(0xEDC, 0xEDF);
      Lao.characters = set;
      return Lao;
    }
  
    var Latin = {};
  
    var hasRequiredLatin;
    function requireLatin() {
      if (hasRequiredLatin) return Latin;
      hasRequiredLatin = 1;
      var set = regenerate$2.exports(0xAA, 0xBA, 0x2071, 0x207F, 0x2132, 0x214E, 0xA7D3);
      set.addRange(0x41, 0x5A).addRange(0x61, 0x7A).addRange(0xC0, 0xD6).addRange(0xD8, 0xF6).addRange(0xF8, 0x2B8).addRange(0x2E0, 0x2E4).addRange(0x1D00, 0x1D25).addRange(0x1D2C, 0x1D5C).addRange(0x1D62, 0x1D65).addRange(0x1D6B, 0x1D77).addRange(0x1D79, 0x1DBE).addRange(0x1E00, 0x1EFF).addRange(0x2090, 0x209C).addRange(0x212A, 0x212B).addRange(0x2160, 0x2188).addRange(0x2C60, 0x2C7F).addRange(0xA722, 0xA787).addRange(0xA78B, 0xA7CA).addRange(0xA7D0, 0xA7D1).addRange(0xA7D5, 0xA7D9).addRange(0xA7F2, 0xA7FF).addRange(0xAB30, 0xAB5A).addRange(0xAB5C, 0xAB64).addRange(0xAB66, 0xAB69).addRange(0xFB00, 0xFB06).addRange(0xFF21, 0xFF3A).addRange(0xFF41, 0xFF5A).addRange(0x10780, 0x10785).addRange(0x10787, 0x107B0).addRange(0x107B2, 0x107BA).addRange(0x1DF00, 0x1DF1E).addRange(0x1DF25, 0x1DF2A);
      Latin.characters = set;
      return Latin;
    }
  
    var Lepcha = {};
  
    var hasRequiredLepcha;
    function requireLepcha() {
      if (hasRequiredLepcha) return Lepcha;
      hasRequiredLepcha = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1C00, 0x1C37).addRange(0x1C3B, 0x1C49).addRange(0x1C4D, 0x1C4F);
      Lepcha.characters = set;
      return Lepcha;
    }
  
    var Limbu = {};
  
    var hasRequiredLimbu;
    function requireLimbu() {
      if (hasRequiredLimbu) return Limbu;
      hasRequiredLimbu = 1;
      var set = regenerate$2.exports(0x1940);
      set.addRange(0x1900, 0x191E).addRange(0x1920, 0x192B).addRange(0x1930, 0x193B).addRange(0x1944, 0x194F);
      Limbu.characters = set;
      return Limbu;
    }
  
    var Linear_A = {};
  
    var hasRequiredLinear_A;
    function requireLinear_A() {
      if (hasRequiredLinear_A) return Linear_A;
      hasRequiredLinear_A = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767);
      Linear_A.characters = set;
      return Linear_A;
    }
  
    var Linear_B = {};
  
    var hasRequiredLinear_B;
    function requireLinear_B() {
      if (hasRequiredLinear_B) return Linear_B;
      hasRequiredLinear_B = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA);
      Linear_B.characters = set;
      return Linear_B;
    }
  
    var Lisu = {};
  
    var hasRequiredLisu;
    function requireLisu() {
      if (hasRequiredLisu) return Lisu;
      hasRequiredLisu = 1;
      var set = regenerate$2.exports(0x11FB0);
      set.addRange(0xA4D0, 0xA4FF);
      Lisu.characters = set;
      return Lisu;
    }
  
    var Lycian = {};
  
    var hasRequiredLycian;
    function requireLycian() {
      if (hasRequiredLycian) return Lycian;
      hasRequiredLycian = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10280, 0x1029C);
      Lycian.characters = set;
      return Lycian;
    }
  
    var Lydian = {};
  
    var hasRequiredLydian;
    function requireLydian() {
      if (hasRequiredLydian) return Lydian;
      hasRequiredLydian = 1;
      var set = regenerate$2.exports(0x1093F);
      set.addRange(0x10920, 0x10939);
      Lydian.characters = set;
      return Lydian;
    }
  
    var Mahajani = {};
  
    var hasRequiredMahajani;
    function requireMahajani() {
      if (hasRequiredMahajani) return Mahajani;
      hasRequiredMahajani = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11150, 0x11176);
      Mahajani.characters = set;
      return Mahajani;
    }
  
    var Makasar = {};
  
    var hasRequiredMakasar;
    function requireMakasar() {
      if (hasRequiredMakasar) return Makasar;
      hasRequiredMakasar = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11EE0, 0x11EF8);
      Makasar.characters = set;
      return Makasar;
    }
  
    var Malayalam = {};
  
    var hasRequiredMalayalam;
    function requireMalayalam() {
      if (hasRequiredMalayalam) return Malayalam;
      hasRequiredMalayalam = 1;
      var set = regenerate$2.exports();
      set.addRange(0xD00, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD44).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4F).addRange(0xD54, 0xD63).addRange(0xD66, 0xD7F);
      Malayalam.characters = set;
      return Malayalam;
    }
  
    var Mandaic = {};
  
    var hasRequiredMandaic;
    function requireMandaic() {
      if (hasRequiredMandaic) return Mandaic;
      hasRequiredMandaic = 1;
      var set = regenerate$2.exports(0x85E);
      set.addRange(0x840, 0x85B);
      Mandaic.characters = set;
      return Mandaic;
    }
  
    var Manichaean = {};
  
    var hasRequiredManichaean;
    function requireManichaean() {
      if (hasRequiredManichaean) return Manichaean;
      hasRequiredManichaean = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10AC0, 0x10AE6).addRange(0x10AEB, 0x10AF6);
      Manichaean.characters = set;
      return Manichaean;
    }
  
    var Marchen = {};
  
    var hasRequiredMarchen;
    function requireMarchen() {
      if (hasRequiredMarchen) return Marchen;
      hasRequiredMarchen = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11C70, 0x11C8F).addRange(0x11C92, 0x11CA7).addRange(0x11CA9, 0x11CB6);
      Marchen.characters = set;
      return Marchen;
    }
  
    var Masaram_Gondi = {};
  
    var hasRequiredMasaram_Gondi;
    function requireMasaram_Gondi() {
      if (hasRequiredMasaram_Gondi) return Masaram_Gondi;
      hasRequiredMasaram_Gondi = 1;
      var set = regenerate$2.exports(0x11D3A);
      set.addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D47).addRange(0x11D50, 0x11D59);
      Masaram_Gondi.characters = set;
      return Masaram_Gondi;
    }
  
    var Medefaidrin = {};
  
    var hasRequiredMedefaidrin;
    function requireMedefaidrin() {
      if (hasRequiredMedefaidrin) return Medefaidrin;
      hasRequiredMedefaidrin = 1;
      var set = regenerate$2.exports();
      set.addRange(0x16E40, 0x16E9A);
      Medefaidrin.characters = set;
      return Medefaidrin;
    }
  
    var Meetei_Mayek = {};
  
    var hasRequiredMeetei_Mayek;
    function requireMeetei_Mayek() {
      if (hasRequiredMeetei_Mayek) return Meetei_Mayek;
      hasRequiredMeetei_Mayek = 1;
      var set = regenerate$2.exports();
      set.addRange(0xAAE0, 0xAAF6).addRange(0xABC0, 0xABED).addRange(0xABF0, 0xABF9);
      Meetei_Mayek.characters = set;
      return Meetei_Mayek;
    }
  
    var Mende_Kikakui = {};
  
    var hasRequiredMende_Kikakui;
    function requireMende_Kikakui() {
      if (hasRequiredMende_Kikakui) return Mende_Kikakui;
      hasRequiredMende_Kikakui = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1E800, 0x1E8C4).addRange(0x1E8C7, 0x1E8D6);
      Mende_Kikakui.characters = set;
      return Mende_Kikakui;
    }
  
    var Meroitic_Cursive = {};
  
    var hasRequiredMeroitic_Cursive;
    function requireMeroitic_Cursive() {
      if (hasRequiredMeroitic_Cursive) return Meroitic_Cursive;
      hasRequiredMeroitic_Cursive = 1;
      var set = regenerate$2.exports();
      set.addRange(0x109A0, 0x109B7).addRange(0x109BC, 0x109CF).addRange(0x109D2, 0x109FF);
      Meroitic_Cursive.characters = set;
      return Meroitic_Cursive;
    }
  
    var Meroitic_Hieroglyphs = {};
  
    var hasRequiredMeroitic_Hieroglyphs;
    function requireMeroitic_Hieroglyphs() {
      if (hasRequiredMeroitic_Hieroglyphs) return Meroitic_Hieroglyphs;
      hasRequiredMeroitic_Hieroglyphs = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10980, 0x1099F);
      Meroitic_Hieroglyphs.characters = set;
      return Meroitic_Hieroglyphs;
    }
  
    var Miao = {};
  
    var hasRequiredMiao;
    function requireMiao() {
      if (hasRequiredMiao) return Miao;
      hasRequiredMiao = 1;
      var set = regenerate$2.exports();
      set.addRange(0x16F00, 0x16F4A).addRange(0x16F4F, 0x16F87).addRange(0x16F8F, 0x16F9F);
      Miao.characters = set;
      return Miao;
    }
  
    var Modi = {};
  
    var hasRequiredModi;
    function requireModi() {
      if (hasRequiredModi) return Modi;
      hasRequiredModi = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11600, 0x11644).addRange(0x11650, 0x11659);
      Modi.characters = set;
      return Modi;
    }
  
    var Mongolian = {};
  
    var hasRequiredMongolian;
    function requireMongolian() {
      if (hasRequiredMongolian) return Mongolian;
      hasRequiredMongolian = 1;
      var set = regenerate$2.exports(0x1804);
      set.addRange(0x1800, 0x1801).addRange(0x1806, 0x1819).addRange(0x1820, 0x1878).addRange(0x1880, 0x18AA).addRange(0x11660, 0x1166C);
      Mongolian.characters = set;
      return Mongolian;
    }
  
    var Mro = {};
  
    var hasRequiredMro;
    function requireMro() {
      if (hasRequiredMro) return Mro;
      hasRequiredMro = 1;
      var set = regenerate$2.exports();
      set.addRange(0x16A40, 0x16A5E).addRange(0x16A60, 0x16A69).addRange(0x16A6E, 0x16A6F);
      Mro.characters = set;
      return Mro;
    }
  
    var Multani = {};
  
    var hasRequiredMultani;
    function requireMultani() {
      if (hasRequiredMultani) return Multani;
      hasRequiredMultani = 1;
      var set = regenerate$2.exports(0x11288);
      set.addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A9);
      Multani.characters = set;
      return Multani;
    }
  
    var Myanmar = {};
  
    var hasRequiredMyanmar;
    function requireMyanmar() {
      if (hasRequiredMyanmar) return Myanmar;
      hasRequiredMyanmar = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1000, 0x109F).addRange(0xA9E0, 0xA9FE).addRange(0xAA60, 0xAA7F);
      Myanmar.characters = set;
      return Myanmar;
    }
  
    var Nabataean = {};
  
    var hasRequiredNabataean;
    function requireNabataean() {
      if (hasRequiredNabataean) return Nabataean;
      hasRequiredNabataean = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10880, 0x1089E).addRange(0x108A7, 0x108AF);
      Nabataean.characters = set;
      return Nabataean;
    }
  
    var Nag_Mundari = {};
  
    var hasRequiredNag_Mundari;
    function requireNag_Mundari() {
      if (hasRequiredNag_Mundari) return Nag_Mundari;
      hasRequiredNag_Mundari = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1E4D0, 0x1E4F9);
      Nag_Mundari.characters = set;
      return Nag_Mundari;
    }
  
    var Nandinagari = {};
  
    var hasRequiredNandinagari;
    function requireNandinagari() {
      if (hasRequiredNandinagari) return Nandinagari;
      hasRequiredNandinagari = 1;
      var set = regenerate$2.exports();
      set.addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D7).addRange(0x119DA, 0x119E4);
      Nandinagari.characters = set;
      return Nandinagari;
    }
  
    var New_Tai_Lue = {};
  
    var hasRequiredNew_Tai_Lue;
    function requireNew_Tai_Lue() {
      if (hasRequiredNew_Tai_Lue) return New_Tai_Lue;
      hasRequiredNew_Tai_Lue = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x19D0, 0x19DA).addRange(0x19DE, 0x19DF);
      New_Tai_Lue.characters = set;
      return New_Tai_Lue;
    }
  
    var Newa = {};
  
    var hasRequiredNewa;
    function requireNewa() {
      if (hasRequiredNewa) return Newa;
      hasRequiredNewa = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11400, 0x1145B).addRange(0x1145D, 0x11461);
      Newa.characters = set;
      return Newa;
    }
  
    var Nko = {};
  
    var hasRequiredNko;
    function requireNko() {
      if (hasRequiredNko) return Nko;
      hasRequiredNko = 1;
      var set = regenerate$2.exports();
      set.addRange(0x7C0, 0x7FA).addRange(0x7FD, 0x7FF);
      Nko.characters = set;
      return Nko;
    }
  
    var Nushu = {};
  
    var hasRequiredNushu;
    function requireNushu() {
      if (hasRequiredNushu) return Nushu;
      hasRequiredNushu = 1;
      var set = regenerate$2.exports(0x16FE1);
      set.addRange(0x1B170, 0x1B2FB);
      Nushu.characters = set;
      return Nushu;
    }
  
    var Nyiakeng_Puachue_Hmong = {};
  
    var hasRequiredNyiakeng_Puachue_Hmong;
    function requireNyiakeng_Puachue_Hmong() {
      if (hasRequiredNyiakeng_Puachue_Hmong) return Nyiakeng_Puachue_Hmong;
      hasRequiredNyiakeng_Puachue_Hmong = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1E100, 0x1E12C).addRange(0x1E130, 0x1E13D).addRange(0x1E140, 0x1E149).addRange(0x1E14E, 0x1E14F);
      Nyiakeng_Puachue_Hmong.characters = set;
      return Nyiakeng_Puachue_Hmong;
    }
  
    var Ogham = {};
  
    var hasRequiredOgham;
    function requireOgham() {
      if (hasRequiredOgham) return Ogham;
      hasRequiredOgham = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1680, 0x169C);
      Ogham.characters = set;
      return Ogham;
    }
  
    var Ol_Chiki = {};
  
    var hasRequiredOl_Chiki;
    function requireOl_Chiki() {
      if (hasRequiredOl_Chiki) return Ol_Chiki;
      hasRequiredOl_Chiki = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1C50, 0x1C7F);
      Ol_Chiki.characters = set;
      return Ol_Chiki;
    }
  
    var Old_Hungarian = {};
  
    var hasRequiredOld_Hungarian;
    function requireOld_Hungarian() {
      if (hasRequiredOld_Hungarian) return Old_Hungarian;
      hasRequiredOld_Hungarian = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10CFA, 0x10CFF);
      Old_Hungarian.characters = set;
      return Old_Hungarian;
    }
  
    var Old_Italic = {};
  
    var hasRequiredOld_Italic;
    function requireOld_Italic() {
      if (hasRequiredOld_Italic) return Old_Italic;
      hasRequiredOld_Italic = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10300, 0x10323).addRange(0x1032D, 0x1032F);
      Old_Italic.characters = set;
      return Old_Italic;
    }
  
    var Old_North_Arabian = {};
  
    var hasRequiredOld_North_Arabian;
    function requireOld_North_Arabian() {
      if (hasRequiredOld_North_Arabian) return Old_North_Arabian;
      hasRequiredOld_North_Arabian = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10A80, 0x10A9F);
      Old_North_Arabian.characters = set;
      return Old_North_Arabian;
    }
  
    var Old_Permic = {};
  
    var hasRequiredOld_Permic;
    function requireOld_Permic() {
      if (hasRequiredOld_Permic) return Old_Permic;
      hasRequiredOld_Permic = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10350, 0x1037A);
      Old_Permic.characters = set;
      return Old_Permic;
    }
  
    var Old_Persian = {};
  
    var hasRequiredOld_Persian;
    function requireOld_Persian() {
      if (hasRequiredOld_Persian) return Old_Persian;
      hasRequiredOld_Persian = 1;
      var set = regenerate$2.exports();
      set.addRange(0x103A0, 0x103C3).addRange(0x103C8, 0x103D5);
      Old_Persian.characters = set;
      return Old_Persian;
    }
  
    var Old_Sogdian = {};
  
    var hasRequiredOld_Sogdian;
    function requireOld_Sogdian() {
      if (hasRequiredOld_Sogdian) return Old_Sogdian;
      hasRequiredOld_Sogdian = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10F00, 0x10F27);
      Old_Sogdian.characters = set;
      return Old_Sogdian;
    }
  
    var Old_South_Arabian = {};
  
    var hasRequiredOld_South_Arabian;
    function requireOld_South_Arabian() {
      if (hasRequiredOld_South_Arabian) return Old_South_Arabian;
      hasRequiredOld_South_Arabian = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10A60, 0x10A7F);
      Old_South_Arabian.characters = set;
      return Old_South_Arabian;
    }
  
    var Old_Turkic = {};
  
    var hasRequiredOld_Turkic;
    function requireOld_Turkic() {
      if (hasRequiredOld_Turkic) return Old_Turkic;
      hasRequiredOld_Turkic = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10C00, 0x10C48);
      Old_Turkic.characters = set;
      return Old_Turkic;
    }
  
    var Old_Uyghur = {};
  
    var hasRequiredOld_Uyghur;
    function requireOld_Uyghur() {
      if (hasRequiredOld_Uyghur) return Old_Uyghur;
      hasRequiredOld_Uyghur = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10F70, 0x10F89);
      Old_Uyghur.characters = set;
      return Old_Uyghur;
    }
  
    var Oriya = {};
  
    var hasRequiredOriya;
    function requireOriya() {
      if (hasRequiredOriya) return Oriya;
      hasRequiredOriya = 1;
      var set = regenerate$2.exports();
      set.addRange(0xB01, 0xB03).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB3C, 0xB44).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4D).addRange(0xB55, 0xB57).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB63).addRange(0xB66, 0xB77);
      Oriya.characters = set;
      return Oriya;
    }
  
    var Osage = {};
  
    var hasRequiredOsage;
    function requireOsage() {
      if (hasRequiredOsage) return Osage;
      hasRequiredOsage = 1;
      var set = regenerate$2.exports();
      set.addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB);
      Osage.characters = set;
      return Osage;
    }
  
    var Osmanya = {};
  
    var hasRequiredOsmanya;
    function requireOsmanya() {
      if (hasRequiredOsmanya) return Osmanya;
      hasRequiredOsmanya = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10480, 0x1049D).addRange(0x104A0, 0x104A9);
      Osmanya.characters = set;
      return Osmanya;
    }
  
    var Pahawh_Hmong = {};
  
    var hasRequiredPahawh_Hmong;
    function requirePahawh_Hmong() {
      if (hasRequiredPahawh_Hmong) return Pahawh_Hmong;
      hasRequiredPahawh_Hmong = 1;
      var set = regenerate$2.exports();
      set.addRange(0x16B00, 0x16B45).addRange(0x16B50, 0x16B59).addRange(0x16B5B, 0x16B61).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F);
      Pahawh_Hmong.characters = set;
      return Pahawh_Hmong;
    }
  
    var Palmyrene = {};
  
    var hasRequiredPalmyrene;
    function requirePalmyrene() {
      if (hasRequiredPalmyrene) return Palmyrene;
      hasRequiredPalmyrene = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10860, 0x1087F);
      Palmyrene.characters = set;
      return Palmyrene;
    }
  
    var Pau_Cin_Hau = {};
  
    var hasRequiredPau_Cin_Hau;
    function requirePau_Cin_Hau() {
      if (hasRequiredPau_Cin_Hau) return Pau_Cin_Hau;
      hasRequiredPau_Cin_Hau = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11AC0, 0x11AF8);
      Pau_Cin_Hau.characters = set;
      return Pau_Cin_Hau;
    }
  
    var Phags_Pa = {};
  
    var hasRequiredPhags_Pa;
    function requirePhags_Pa() {
      if (hasRequiredPhags_Pa) return Phags_Pa;
      hasRequiredPhags_Pa = 1;
      var set = regenerate$2.exports();
      set.addRange(0xA840, 0xA877);
      Phags_Pa.characters = set;
      return Phags_Pa;
    }
  
    var Phoenician = {};
  
    var hasRequiredPhoenician;
    function requirePhoenician() {
      if (hasRequiredPhoenician) return Phoenician;
      hasRequiredPhoenician = 1;
      var set = regenerate$2.exports(0x1091F);
      set.addRange(0x10900, 0x1091B);
      Phoenician.characters = set;
      return Phoenician;
    }
  
    var Psalter_Pahlavi = {};
  
    var hasRequiredPsalter_Pahlavi;
    function requirePsalter_Pahlavi() {
      if (hasRequiredPsalter_Pahlavi) return Psalter_Pahlavi;
      hasRequiredPsalter_Pahlavi = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10B80, 0x10B91).addRange(0x10B99, 0x10B9C).addRange(0x10BA9, 0x10BAF);
      Psalter_Pahlavi.characters = set;
      return Psalter_Pahlavi;
    }
  
    var Rejang = {};
  
    var hasRequiredRejang;
    function requireRejang() {
      if (hasRequiredRejang) return Rejang;
      hasRequiredRejang = 1;
      var set = regenerate$2.exports(0xA95F);
      set.addRange(0xA930, 0xA953);
      Rejang.characters = set;
      return Rejang;
    }
  
    var Runic = {};
  
    var hasRequiredRunic;
    function requireRunic() {
      if (hasRequiredRunic) return Runic;
      hasRequiredRunic = 1;
      var set = regenerate$2.exports();
      set.addRange(0x16A0, 0x16EA).addRange(0x16EE, 0x16F8);
      Runic.characters = set;
      return Runic;
    }
  
    var Samaritan = {};
  
    var hasRequiredSamaritan;
    function requireSamaritan() {
      if (hasRequiredSamaritan) return Samaritan;
      hasRequiredSamaritan = 1;
      var set = regenerate$2.exports();
      set.addRange(0x800, 0x82D).addRange(0x830, 0x83E);
      Samaritan.characters = set;
      return Samaritan;
    }
  
    var Saurashtra = {};
  
    var hasRequiredSaurashtra;
    function requireSaurashtra() {
      if (hasRequiredSaurashtra) return Saurashtra;
      hasRequiredSaurashtra = 1;
      var set = regenerate$2.exports();
      set.addRange(0xA880, 0xA8C5).addRange(0xA8CE, 0xA8D9);
      Saurashtra.characters = set;
      return Saurashtra;
    }
  
    var Sharada = {};
  
    var hasRequiredSharada;
    function requireSharada() {
      if (hasRequiredSharada) return Sharada;
      hasRequiredSharada = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11180, 0x111DF);
      Sharada.characters = set;
      return Sharada;
    }
  
    var Shavian = {};
  
    var hasRequiredShavian;
    function requireShavian() {
      if (hasRequiredShavian) return Shavian;
      hasRequiredShavian = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10450, 0x1047F);
      Shavian.characters = set;
      return Shavian;
    }
  
    var Siddham = {};
  
    var hasRequiredSiddham;
    function requireSiddham() {
      if (hasRequiredSiddham) return Siddham;
      hasRequiredSiddham = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11580, 0x115B5).addRange(0x115B8, 0x115DD);
      Siddham.characters = set;
      return Siddham;
    }
  
    var SignWriting = {};
  
    var hasRequiredSignWriting;
    function requireSignWriting() {
      if (hasRequiredSignWriting) return SignWriting;
      hasRequiredSignWriting = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1D800, 0x1DA8B).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF);
      SignWriting.characters = set;
      return SignWriting;
    }
  
    var Sinhala = {};
  
    var hasRequiredSinhala;
    function requireSinhala() {
      if (hasRequiredSinhala) return Sinhala;
      hasRequiredSinhala = 1;
      var set = regenerate$2.exports(0xDBD, 0xDCA, 0xDD6);
      set.addRange(0xD81, 0xD83).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xDCF, 0xDD4).addRange(0xDD8, 0xDDF).addRange(0xDE6, 0xDEF).addRange(0xDF2, 0xDF4).addRange(0x111E1, 0x111F4);
      Sinhala.characters = set;
      return Sinhala;
    }
  
    var Sogdian = {};
  
    var hasRequiredSogdian;
    function requireSogdian() {
      if (hasRequiredSogdian) return Sogdian;
      hasRequiredSogdian = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10F30, 0x10F59);
      Sogdian.characters = set;
      return Sogdian;
    }
  
    var Sora_Sompeng = {};
  
    var hasRequiredSora_Sompeng;
    function requireSora_Sompeng() {
      if (hasRequiredSora_Sompeng) return Sora_Sompeng;
      hasRequiredSora_Sompeng = 1;
      var set = regenerate$2.exports();
      set.addRange(0x110D0, 0x110E8).addRange(0x110F0, 0x110F9);
      Sora_Sompeng.characters = set;
      return Sora_Sompeng;
    }
  
    var Soyombo = {};
  
    var hasRequiredSoyombo;
    function requireSoyombo() {
      if (hasRequiredSoyombo) return Soyombo;
      hasRequiredSoyombo = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11A50, 0x11AA2);
      Soyombo.characters = set;
      return Soyombo;
    }
  
    var Sundanese = {};
  
    var hasRequiredSundanese;
    function requireSundanese() {
      if (hasRequiredSundanese) return Sundanese;
      hasRequiredSundanese = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1B80, 0x1BBF).addRange(0x1CC0, 0x1CC7);
      Sundanese.characters = set;
      return Sundanese;
    }
  
    var Syloti_Nagri = {};
  
    var hasRequiredSyloti_Nagri;
    function requireSyloti_Nagri() {
      if (hasRequiredSyloti_Nagri) return Syloti_Nagri;
      hasRequiredSyloti_Nagri = 1;
      var set = regenerate$2.exports();
      set.addRange(0xA800, 0xA82C);
      Syloti_Nagri.characters = set;
      return Syloti_Nagri;
    }
  
    var Syriac = {};
  
    var hasRequiredSyriac;
    function requireSyriac() {
      if (hasRequiredSyriac) return Syriac;
      hasRequiredSyriac = 1;
      var set = regenerate$2.exports();
      set.addRange(0x700, 0x70D).addRange(0x70F, 0x74A).addRange(0x74D, 0x74F).addRange(0x860, 0x86A);
      Syriac.characters = set;
      return Syriac;
    }
  
    var Tagalog = {};
  
    var hasRequiredTagalog;
    function requireTagalog() {
      if (hasRequiredTagalog) return Tagalog;
      hasRequiredTagalog = 1;
      var set = regenerate$2.exports(0x171F);
      set.addRange(0x1700, 0x1715);
      Tagalog.characters = set;
      return Tagalog;
    }
  
    var Tagbanwa = {};
  
    var hasRequiredTagbanwa;
    function requireTagbanwa() {
      if (hasRequiredTagbanwa) return Tagbanwa;
      hasRequiredTagbanwa = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1772, 0x1773);
      Tagbanwa.characters = set;
      return Tagbanwa;
    }
  
    var Tai_Le = {};
  
    var hasRequiredTai_Le;
    function requireTai_Le() {
      if (hasRequiredTai_Le) return Tai_Le;
      hasRequiredTai_Le = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1950, 0x196D).addRange(0x1970, 0x1974);
      Tai_Le.characters = set;
      return Tai_Le;
    }
  
    var Tai_Tham = {};
  
    var hasRequiredTai_Tham;
    function requireTai_Tham() {
      if (hasRequiredTai_Tham) return Tai_Tham;
      hasRequiredTai_Tham = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1A20, 0x1A5E).addRange(0x1A60, 0x1A7C).addRange(0x1A7F, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1AA0, 0x1AAD);
      Tai_Tham.characters = set;
      return Tai_Tham;
    }
  
    var Tai_Viet = {};
  
    var hasRequiredTai_Viet;
    function requireTai_Viet() {
      if (hasRequiredTai_Viet) return Tai_Viet;
      hasRequiredTai_Viet = 1;
      var set = regenerate$2.exports();
      set.addRange(0xAA80, 0xAAC2).addRange(0xAADB, 0xAADF);
      Tai_Viet.characters = set;
      return Tai_Viet;
    }
  
    var Takri = {};
  
    var hasRequiredTakri;
    function requireTakri() {
      if (hasRequiredTakri) return Takri;
      hasRequiredTakri = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11680, 0x116B9).addRange(0x116C0, 0x116C9);
      Takri.characters = set;
      return Takri;
    }
  
    var Tamil = {};
  
    var hasRequiredTamil;
    function requireTamil() {
      if (hasRequiredTamil) return Tamil;
      hasRequiredTamil = 1;
      var set = regenerate$2.exports(0xB9C, 0xBD0, 0xBD7, 0x11FFF);
      set.addRange(0xB82, 0xB83).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xBBE, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCD).addRange(0xBE6, 0xBFA).addRange(0x11FC0, 0x11FF1);
      Tamil.characters = set;
      return Tamil;
    }
  
    var Tangsa = {};
  
    var hasRequiredTangsa;
    function requireTangsa() {
      if (hasRequiredTangsa) return Tangsa;
      hasRequiredTangsa = 1;
      var set = regenerate$2.exports();
      set.addRange(0x16A70, 0x16ABE).addRange(0x16AC0, 0x16AC9);
      Tangsa.characters = set;
      return Tangsa;
    }
  
    var Tangut = {};
  
    var hasRequiredTangut;
    function requireTangut() {
      if (hasRequiredTangut) return Tangut;
      hasRequiredTangut = 1;
      var set = regenerate$2.exports(0x16FE0);
      set.addRange(0x17000, 0x187F7).addRange(0x18800, 0x18AFF).addRange(0x18D00, 0x18D08);
      Tangut.characters = set;
      return Tangut;
    }
  
    var Telugu = {};
  
    var hasRequiredTelugu;
    function requireTelugu() {
      if (hasRequiredTelugu) return Telugu;
      hasRequiredTelugu = 1;
      var set = regenerate$2.exports(0xC5D);
      set.addRange(0xC00, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC3C, 0xC44).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC63).addRange(0xC66, 0xC6F).addRange(0xC77, 0xC7F);
      Telugu.characters = set;
      return Telugu;
    }
  
    var Thaana = {};
  
    var hasRequiredThaana;
    function requireThaana() {
      if (hasRequiredThaana) return Thaana;
      hasRequiredThaana = 1;
      var set = regenerate$2.exports();
      set.addRange(0x780, 0x7B1);
      Thaana.characters = set;
      return Thaana;
    }
  
    var Thai = {};
  
    var hasRequiredThai;
    function requireThai() {
      if (hasRequiredThai) return Thai;
      hasRequiredThai = 1;
      var set = regenerate$2.exports();
      set.addRange(0xE01, 0xE3A).addRange(0xE40, 0xE5B);
      Thai.characters = set;
      return Thai;
    }
  
    var Tibetan = {};
  
    var hasRequiredTibetan;
    function requireTibetan() {
      if (hasRequiredTibetan) return Tibetan;
      hasRequiredTibetan = 1;
      var set = regenerate$2.exports();
      set.addRange(0xF00, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF71, 0xF97).addRange(0xF99, 0xFBC).addRange(0xFBE, 0xFCC).addRange(0xFCE, 0xFD4).addRange(0xFD9, 0xFDA);
      Tibetan.characters = set;
      return Tibetan;
    }
  
    var Tifinagh = {};
  
    var hasRequiredTifinagh;
    function requireTifinagh() {
      if (hasRequiredTifinagh) return Tifinagh;
      hasRequiredTifinagh = 1;
      var set = regenerate$2.exports(0x2D7F);
      set.addRange(0x2D30, 0x2D67).addRange(0x2D6F, 0x2D70);
      Tifinagh.characters = set;
      return Tifinagh;
    }
  
    var Tirhuta = {};
  
    var hasRequiredTirhuta;
    function requireTirhuta() {
      if (hasRequiredTirhuta) return Tirhuta;
      hasRequiredTirhuta = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11480, 0x114C7).addRange(0x114D0, 0x114D9);
      Tirhuta.characters = set;
      return Tirhuta;
    }
  
    var Toto = {};
  
    var hasRequiredToto;
    function requireToto() {
      if (hasRequiredToto) return Toto;
      hasRequiredToto = 1;
      var set = regenerate$2.exports();
      set.addRange(0x1E290, 0x1E2AE);
      Toto.characters = set;
      return Toto;
    }
  
    var Ugaritic = {};
  
    var hasRequiredUgaritic;
    function requireUgaritic() {
      if (hasRequiredUgaritic) return Ugaritic;
      hasRequiredUgaritic = 1;
      var set = regenerate$2.exports(0x1039F);
      set.addRange(0x10380, 0x1039D);
      Ugaritic.characters = set;
      return Ugaritic;
    }
  
    var Vai = {};
  
    var hasRequiredVai;
    function requireVai() {
      if (hasRequiredVai) return Vai;
      hasRequiredVai = 1;
      var set = regenerate$2.exports();
      set.addRange(0xA500, 0xA62B);
      Vai.characters = set;
      return Vai;
    }
  
    var Vithkuqi = {};
  
    var hasRequiredVithkuqi;
    function requireVithkuqi() {
      if (hasRequiredVithkuqi) return Vithkuqi;
      hasRequiredVithkuqi = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10570, 0x1057A).addRange(0x1057C, 0x1058A).addRange(0x1058C, 0x10592).addRange(0x10594, 0x10595).addRange(0x10597, 0x105A1).addRange(0x105A3, 0x105B1).addRange(0x105B3, 0x105B9).addRange(0x105BB, 0x105BC);
      Vithkuqi.characters = set;
      return Vithkuqi;
    }
  
    var Wancho = {};
  
    var hasRequiredWancho;
    function requireWancho() {
      if (hasRequiredWancho) return Wancho;
      hasRequiredWancho = 1;
      var set = regenerate$2.exports(0x1E2FF);
      set.addRange(0x1E2C0, 0x1E2F9);
      Wancho.characters = set;
      return Wancho;
    }
  
    var Warang_Citi = {};
  
    var hasRequiredWarang_Citi;
    function requireWarang_Citi() {
      if (hasRequiredWarang_Citi) return Warang_Citi;
      hasRequiredWarang_Citi = 1;
      var set = regenerate$2.exports(0x118FF);
      set.addRange(0x118A0, 0x118F2);
      Warang_Citi.characters = set;
      return Warang_Citi;
    }
  
    var Yezidi = {};
  
    var hasRequiredYezidi;
    function requireYezidi() {
      if (hasRequiredYezidi) return Yezidi;
      hasRequiredYezidi = 1;
      var set = regenerate$2.exports();
      set.addRange(0x10E80, 0x10EA9).addRange(0x10EAB, 0x10EAD).addRange(0x10EB0, 0x10EB1);
      Yezidi.characters = set;
      return Yezidi;
    }
  
    var Yi = {};
  
    var hasRequiredYi;
    function requireYi() {
      if (hasRequiredYi) return Yi;
      hasRequiredYi = 1;
      var set = regenerate$2.exports();
      set.addRange(0xA000, 0xA48C).addRange(0xA490, 0xA4C6);
      Yi.characters = set;
      return Yi;
    }
  
    var Zanabazar_Square = {};
  
    var hasRequiredZanabazar_Square;
    function requireZanabazar_Square() {
      if (hasRequiredZanabazar_Square) return Zanabazar_Square;
      hasRequiredZanabazar_Square = 1;
      var set = regenerate$2.exports();
      set.addRange(0x11A00, 0x11A47);
      Zanabazar_Square.characters = set;
      return Zanabazar_Square;
    }
  
    var unicodeVersion;
    var hasRequiredUnicodeVersion;
    function requireUnicodeVersion() {
      if (hasRequiredUnicodeVersion) return unicodeVersion;
      hasRequiredUnicodeVersion = 1;
      unicodeVersion = '15.0.0';
      return unicodeVersion;
    }
  
    var dynamicModules;
  
    function getDynamicModules() {
        return dynamicModules || (dynamicModules = {
            "/node_modules/regenerate-unicode-properties/Binary_Property/Alphabetic.js": requireAlphabetic,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Any.js": requireAny,
            "/node_modules/regenerate-unicode-properties/Binary_Property/ASCII_Hex_Digit.js": requireASCII_Hex_Digit,
            "/node_modules/regenerate-unicode-properties/Binary_Property/ASCII.js": requireASCII,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Assigned.js": requireAssigned,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Bidi_Control.js": requireBidi_Control,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Bidi_Mirrored.js": requireBidi_Mirrored,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Case_Ignorable.js": requireCase_Ignorable,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Cased.js": requireCased,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Changes_When_Casefolded.js": requireChanges_When_Casefolded,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Changes_When_Casemapped.js": requireChanges_When_Casemapped,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Changes_When_Lowercased.js": requireChanges_When_Lowercased,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Changes_When_NFKC_Casefolded.js": requireChanges_When_NFKC_Casefolded,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Changes_When_Titlecased.js": requireChanges_When_Titlecased,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Changes_When_Uppercased.js": requireChanges_When_Uppercased,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Dash.js": requireDash,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Default_Ignorable_Code_Point.js": requireDefault_Ignorable_Code_Point,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Deprecated.js": requireDeprecated,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Diacritic.js": requireDiacritic,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Emoji_Component.js": requireEmoji_Component,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Emoji_Modifier_Base.js": requireEmoji_Modifier_Base,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Emoji_Modifier.js": requireEmoji_Modifier,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Emoji_Presentation.js": requireEmoji_Presentation,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Emoji.js": requireEmoji,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Extended_Pictographic.js": requireExtended_Pictographic,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Extender.js": requireExtender,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Grapheme_Base.js": requireGrapheme_Base,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Grapheme_Extend.js": requireGrapheme_Extend,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Hex_Digit.js": requireHex_Digit,
            "/node_modules/regenerate-unicode-properties/Binary_Property/ID_Continue.js": requireID_Continue,
            "/node_modules/regenerate-unicode-properties/Binary_Property/ID_Start.js": requireID_Start,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Ideographic.js": requireIdeographic,
            "/node_modules/regenerate-unicode-properties/Binary_Property/IDS_Binary_Operator.js": requireIDS_Binary_Operator,
            "/node_modules/regenerate-unicode-properties/Binary_Property/IDS_Trinary_Operator.js": requireIDS_Trinary_Operator,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Join_Control.js": requireJoin_Control,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Logical_Order_Exception.js": requireLogical_Order_Exception,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Lowercase.js": requireLowercase,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Math.js": require_Math,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Noncharacter_Code_Point.js": requireNoncharacter_Code_Point,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Pattern_Syntax.js": requirePattern_Syntax,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Pattern_White_Space.js": requirePattern_White_Space,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Quotation_Mark.js": requireQuotation_Mark,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Radical.js": requireRadical,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Regional_Indicator.js": requireRegional_Indicator,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Sentence_Terminal.js": requireSentence_Terminal,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Soft_Dotted.js": requireSoft_Dotted,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Terminal_Punctuation.js": requireTerminal_Punctuation,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Unified_Ideograph.js": requireUnified_Ideograph,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Uppercase.js": requireUppercase,
            "/node_modules/regenerate-unicode-properties/Binary_Property/Variation_Selector.js": requireVariation_Selector,
            "/node_modules/regenerate-unicode-properties/Binary_Property/White_Space.js": requireWhite_Space,
            "/node_modules/regenerate-unicode-properties/Binary_Property/XID_Continue.js": requireXID_Continue,
            "/node_modules/regenerate-unicode-properties/Binary_Property/XID_Start.js": requireXID_Start,
            "/node_modules/regenerate-unicode-properties/General_Category/Cased_Letter.js": requireCased_Letter,
            "/node_modules/regenerate-unicode-properties/General_Category/Close_Punctuation.js": requireClose_Punctuation,
            "/node_modules/regenerate-unicode-properties/General_Category/Connector_Punctuation.js": requireConnector_Punctuation,
            "/node_modules/regenerate-unicode-properties/General_Category/Control.js": requireControl,
            "/node_modules/regenerate-unicode-properties/General_Category/Currency_Symbol.js": requireCurrency_Symbol,
            "/node_modules/regenerate-unicode-properties/General_Category/Dash_Punctuation.js": requireDash_Punctuation,
            "/node_modules/regenerate-unicode-properties/General_Category/Decimal_Number.js": requireDecimal_Number,
            "/node_modules/regenerate-unicode-properties/General_Category/Enclosing_Mark.js": requireEnclosing_Mark,
            "/node_modules/regenerate-unicode-properties/General_Category/Final_Punctuation.js": requireFinal_Punctuation,
            "/node_modules/regenerate-unicode-properties/General_Category/Format.js": requireFormat,
            "/node_modules/regenerate-unicode-properties/General_Category/Initial_Punctuation.js": requireInitial_Punctuation,
            "/node_modules/regenerate-unicode-properties/General_Category/Letter_Number.js": requireLetter_Number,
            "/node_modules/regenerate-unicode-properties/General_Category/Letter.js": requireLetter,
            "/node_modules/regenerate-unicode-properties/General_Category/Line_Separator.js": requireLine_Separator,
            "/node_modules/regenerate-unicode-properties/General_Category/Lowercase_Letter.js": requireLowercase_Letter,
            "/node_modules/regenerate-unicode-properties/General_Category/Mark.js": requireMark,
            "/node_modules/regenerate-unicode-properties/General_Category/Math_Symbol.js": requireMath_Symbol,
            "/node_modules/regenerate-unicode-properties/General_Category/Modifier_Letter.js": requireModifier_Letter,
            "/node_modules/regenerate-unicode-properties/General_Category/Modifier_Symbol.js": requireModifier_Symbol,
            "/node_modules/regenerate-unicode-properties/General_Category/Nonspacing_Mark.js": requireNonspacing_Mark,
            "/node_modules/regenerate-unicode-properties/General_Category/Number.js": require_Number,
            "/node_modules/regenerate-unicode-properties/General_Category/Open_Punctuation.js": requireOpen_Punctuation,
            "/node_modules/regenerate-unicode-properties/General_Category/Other_Letter.js": requireOther_Letter,
            "/node_modules/regenerate-unicode-properties/General_Category/Other_Number.js": requireOther_Number,
            "/node_modules/regenerate-unicode-properties/General_Category/Other_Punctuation.js": requireOther_Punctuation,
            "/node_modules/regenerate-unicode-properties/General_Category/Other_Symbol.js": requireOther_Symbol,
            "/node_modules/regenerate-unicode-properties/General_Category/Other.js": requireOther,
            "/node_modules/regenerate-unicode-properties/General_Category/Paragraph_Separator.js": requireParagraph_Separator,
            "/node_modules/regenerate-unicode-properties/General_Category/Private_Use.js": requirePrivate_Use,
            "/node_modules/regenerate-unicode-properties/General_Category/Punctuation.js": requirePunctuation,
            "/node_modules/regenerate-unicode-properties/General_Category/Separator.js": requireSeparator,
            "/node_modules/regenerate-unicode-properties/General_Category/Space_Separator.js": requireSpace_Separator,
            "/node_modules/regenerate-unicode-properties/General_Category/Spacing_Mark.js": requireSpacing_Mark,
            "/node_modules/regenerate-unicode-properties/General_Category/Surrogate.js": requireSurrogate,
            "/node_modules/regenerate-unicode-properties/General_Category/Symbol.js": require_Symbol,
            "/node_modules/regenerate-unicode-properties/General_Category/Titlecase_Letter.js": requireTitlecase_Letter,
            "/node_modules/regenerate-unicode-properties/General_Category/Unassigned.js": requireUnassigned,
            "/node_modules/regenerate-unicode-properties/General_Category/Uppercase_Letter.js": requireUppercase_Letter,
            "/node_modules/regenerate-unicode-properties/index.js": requireRegenerateUnicodeProperties,
            "/node_modules/regenerate-unicode-properties/Property_of_Strings/Basic_Emoji.js": requireBasic_Emoji,
            "/node_modules/regenerate-unicode-properties/Property_of_Strings/Emoji_Keycap_Sequence.js": requireEmoji_Keycap_Sequence,
            "/node_modules/regenerate-unicode-properties/Property_of_Strings/RGI_Emoji_Flag_Sequence.js": requireRGI_Emoji_Flag_Sequence,
            "/node_modules/regenerate-unicode-properties/Property_of_Strings/RGI_Emoji_Modifier_Sequence.js": requireRGI_Emoji_Modifier_Sequence,
            "/node_modules/regenerate-unicode-properties/Property_of_Strings/RGI_Emoji_Tag_Sequence.js": requireRGI_Emoji_Tag_Sequence,
            "/node_modules/regenerate-unicode-properties/Property_of_Strings/RGI_Emoji_ZWJ_Sequence.js": requireRGI_Emoji_ZWJ_Sequence,
            "/node_modules/regenerate-unicode-properties/Property_of_Strings/RGI_Emoji.js": requireRGI_Emoji,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Adlam.js": requireAdlam$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Ahom.js": requireAhom$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Anatolian_Hieroglyphs.js": requireAnatolian_Hieroglyphs$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Arabic.js": requireArabic$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Armenian.js": requireArmenian$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Avestan.js": requireAvestan$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Balinese.js": requireBalinese$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Bamum.js": requireBamum$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Bassa_Vah.js": requireBassa_Vah$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Batak.js": requireBatak$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Bengali.js": requireBengali$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Bhaiksuki.js": requireBhaiksuki$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Bopomofo.js": requireBopomofo$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Brahmi.js": requireBrahmi$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Braille.js": requireBraille$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Buginese.js": requireBuginese$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Buhid.js": requireBuhid$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Canadian_Aboriginal.js": requireCanadian_Aboriginal$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Carian.js": requireCarian$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Caucasian_Albanian.js": requireCaucasian_Albanian$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Chakma.js": requireChakma$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Cham.js": requireCham$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Cherokee.js": requireCherokee$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Chorasmian.js": requireChorasmian$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Common.js": requireCommon$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Coptic.js": requireCoptic$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Cuneiform.js": requireCuneiform$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Cypriot.js": requireCypriot$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Cypro_Minoan.js": requireCypro_Minoan$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Cyrillic.js": requireCyrillic$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Deseret.js": requireDeseret$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Devanagari.js": requireDevanagari$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Dives_Akuru.js": requireDives_Akuru$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Dogra.js": requireDogra$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Duployan.js": requireDuployan$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Egyptian_Hieroglyphs.js": requireEgyptian_Hieroglyphs$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Elbasan.js": requireElbasan$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Elymaic.js": requireElymaic$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Ethiopic.js": requireEthiopic$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Georgian.js": requireGeorgian$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Glagolitic.js": requireGlagolitic$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Gothic.js": requireGothic$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Grantha.js": requireGrantha$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Greek.js": requireGreek$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Gujarati.js": requireGujarati$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Gunjala_Gondi.js": requireGunjala_Gondi$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Gurmukhi.js": requireGurmukhi$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Han.js": requireHan$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Hangul.js": requireHangul$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Hanifi_Rohingya.js": requireHanifi_Rohingya$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Hanunoo.js": requireHanunoo$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Hatran.js": requireHatran$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Hebrew.js": requireHebrew$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Hiragana.js": requireHiragana$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Imperial_Aramaic.js": requireImperial_Aramaic$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Inherited.js": requireInherited$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Inscriptional_Pahlavi.js": requireInscriptional_Pahlavi$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Inscriptional_Parthian.js": requireInscriptional_Parthian$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Javanese.js": requireJavanese$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Kaithi.js": requireKaithi$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Kannada.js": requireKannada$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Katakana.js": requireKatakana$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Kawi.js": requireKawi$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Kayah_Li.js": requireKayah_Li$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Kharoshthi.js": requireKharoshthi$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Khitan_Small_Script.js": requireKhitan_Small_Script$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Khmer.js": requireKhmer$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Khojki.js": requireKhojki$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Khudawadi.js": requireKhudawadi$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Lao.js": requireLao$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Latin.js": requireLatin$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Lepcha.js": requireLepcha$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Limbu.js": requireLimbu$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Linear_A.js": requireLinear_A$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Linear_B.js": requireLinear_B$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Lisu.js": requireLisu$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Lycian.js": requireLycian$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Lydian.js": requireLydian$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Mahajani.js": requireMahajani$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Makasar.js": requireMakasar$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Malayalam.js": requireMalayalam$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Mandaic.js": requireMandaic$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Manichaean.js": requireManichaean$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Marchen.js": requireMarchen$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Masaram_Gondi.js": requireMasaram_Gondi$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Medefaidrin.js": requireMedefaidrin$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Meetei_Mayek.js": requireMeetei_Mayek$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Mende_Kikakui.js": requireMende_Kikakui$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Meroitic_Cursive.js": requireMeroitic_Cursive$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Meroitic_Hieroglyphs.js": requireMeroitic_Hieroglyphs$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Miao.js": requireMiao$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Modi.js": requireModi$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Mongolian.js": requireMongolian$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Mro.js": requireMro$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Multani.js": requireMultani$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Myanmar.js": requireMyanmar$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Nabataean.js": requireNabataean$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Nag_Mundari.js": requireNag_Mundari$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Nandinagari.js": requireNandinagari$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/New_Tai_Lue.js": requireNew_Tai_Lue$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Newa.js": requireNewa$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Nko.js": requireNko$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Nushu.js": requireNushu$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Nyiakeng_Puachue_Hmong.js": requireNyiakeng_Puachue_Hmong$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Ogham.js": requireOgham$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Ol_Chiki.js": requireOl_Chiki$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Old_Hungarian.js": requireOld_Hungarian$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Old_Italic.js": requireOld_Italic$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Old_North_Arabian.js": requireOld_North_Arabian$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Old_Permic.js": requireOld_Permic$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Old_Persian.js": requireOld_Persian$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Old_Sogdian.js": requireOld_Sogdian$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Old_South_Arabian.js": requireOld_South_Arabian$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Old_Turkic.js": requireOld_Turkic$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Old_Uyghur.js": requireOld_Uyghur$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Oriya.js": requireOriya$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Osage.js": requireOsage$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Osmanya.js": requireOsmanya$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Pahawh_Hmong.js": requirePahawh_Hmong$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Palmyrene.js": requirePalmyrene$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Pau_Cin_Hau.js": requirePau_Cin_Hau$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Phags_Pa.js": requirePhags_Pa$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Phoenician.js": requirePhoenician$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Psalter_Pahlavi.js": requirePsalter_Pahlavi$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Rejang.js": requireRejang$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Runic.js": requireRunic$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Samaritan.js": requireSamaritan$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Saurashtra.js": requireSaurashtra$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Sharada.js": requireSharada$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Shavian.js": requireShavian$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Siddham.js": requireSiddham$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/SignWriting.js": requireSignWriting$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Sinhala.js": requireSinhala$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Sogdian.js": requireSogdian$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Sora_Sompeng.js": requireSora_Sompeng$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Soyombo.js": requireSoyombo$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Sundanese.js": requireSundanese$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Syloti_Nagri.js": requireSyloti_Nagri$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Syriac.js": requireSyriac$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Tagalog.js": requireTagalog$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Tagbanwa.js": requireTagbanwa$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Tai_Le.js": requireTai_Le$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Tai_Tham.js": requireTai_Tham$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Tai_Viet.js": requireTai_Viet$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Takri.js": requireTakri$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Tamil.js": requireTamil$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Tangsa.js": requireTangsa$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Tangut.js": requireTangut$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Telugu.js": requireTelugu$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Thaana.js": requireThaana$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Thai.js": requireThai$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Tibetan.js": requireTibetan$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Tifinagh.js": requireTifinagh$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Tirhuta.js": requireTirhuta$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Toto.js": requireToto$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Ugaritic.js": requireUgaritic$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Vai.js": requireVai$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Vithkuqi.js": requireVithkuqi$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Wancho.js": requireWancho$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Warang_Citi.js": requireWarang_Citi$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Yezidi.js": requireYezidi$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Yi.js": requireYi$1,
            "/node_modules/regenerate-unicode-properties/Script_Extensions/Zanabazar_Square.js": requireZanabazar_Square$1,
            "/node_modules/regenerate-unicode-properties/Script/Adlam.js": requireAdlam,
            "/node_modules/regenerate-unicode-properties/Script/Ahom.js": requireAhom,
            "/node_modules/regenerate-unicode-properties/Script/Anatolian_Hieroglyphs.js": requireAnatolian_Hieroglyphs,
            "/node_modules/regenerate-unicode-properties/Script/Arabic.js": requireArabic,
            "/node_modules/regenerate-unicode-properties/Script/Armenian.js": requireArmenian,
            "/node_modules/regenerate-unicode-properties/Script/Avestan.js": requireAvestan,
            "/node_modules/regenerate-unicode-properties/Script/Balinese.js": requireBalinese,
            "/node_modules/regenerate-unicode-properties/Script/Bamum.js": requireBamum,
            "/node_modules/regenerate-unicode-properties/Script/Bassa_Vah.js": requireBassa_Vah,
            "/node_modules/regenerate-unicode-properties/Script/Batak.js": requireBatak,
            "/node_modules/regenerate-unicode-properties/Script/Bengali.js": requireBengali,
            "/node_modules/regenerate-unicode-properties/Script/Bhaiksuki.js": requireBhaiksuki,
            "/node_modules/regenerate-unicode-properties/Script/Bopomofo.js": requireBopomofo,
            "/node_modules/regenerate-unicode-properties/Script/Brahmi.js": requireBrahmi,
            "/node_modules/regenerate-unicode-properties/Script/Braille.js": requireBraille,
            "/node_modules/regenerate-unicode-properties/Script/Buginese.js": requireBuginese,
            "/node_modules/regenerate-unicode-properties/Script/Buhid.js": requireBuhid,
            "/node_modules/regenerate-unicode-properties/Script/Canadian_Aboriginal.js": requireCanadian_Aboriginal,
            "/node_modules/regenerate-unicode-properties/Script/Carian.js": requireCarian,
            "/node_modules/regenerate-unicode-properties/Script/Caucasian_Albanian.js": requireCaucasian_Albanian,
            "/node_modules/regenerate-unicode-properties/Script/Chakma.js": requireChakma,
            "/node_modules/regenerate-unicode-properties/Script/Cham.js": requireCham,
            "/node_modules/regenerate-unicode-properties/Script/Cherokee.js": requireCherokee,
            "/node_modules/regenerate-unicode-properties/Script/Chorasmian.js": requireChorasmian,
            "/node_modules/regenerate-unicode-properties/Script/Common.js": requireCommon,
            "/node_modules/regenerate-unicode-properties/Script/Coptic.js": requireCoptic,
            "/node_modules/regenerate-unicode-properties/Script/Cuneiform.js": requireCuneiform,
            "/node_modules/regenerate-unicode-properties/Script/Cypriot.js": requireCypriot,
            "/node_modules/regenerate-unicode-properties/Script/Cypro_Minoan.js": requireCypro_Minoan,
            "/node_modules/regenerate-unicode-properties/Script/Cyrillic.js": requireCyrillic,
            "/node_modules/regenerate-unicode-properties/Script/Deseret.js": requireDeseret,
            "/node_modules/regenerate-unicode-properties/Script/Devanagari.js": requireDevanagari,
            "/node_modules/regenerate-unicode-properties/Script/Dives_Akuru.js": requireDives_Akuru,
            "/node_modules/regenerate-unicode-properties/Script/Dogra.js": requireDogra,
            "/node_modules/regenerate-unicode-properties/Script/Duployan.js": requireDuployan,
            "/node_modules/regenerate-unicode-properties/Script/Egyptian_Hieroglyphs.js": requireEgyptian_Hieroglyphs,
            "/node_modules/regenerate-unicode-properties/Script/Elbasan.js": requireElbasan,
            "/node_modules/regenerate-unicode-properties/Script/Elymaic.js": requireElymaic,
            "/node_modules/regenerate-unicode-properties/Script/Ethiopic.js": requireEthiopic,
            "/node_modules/regenerate-unicode-properties/Script/Georgian.js": requireGeorgian,
            "/node_modules/regenerate-unicode-properties/Script/Glagolitic.js": requireGlagolitic,
            "/node_modules/regenerate-unicode-properties/Script/Gothic.js": requireGothic,
            "/node_modules/regenerate-unicode-properties/Script/Grantha.js": requireGrantha,
            "/node_modules/regenerate-unicode-properties/Script/Greek.js": requireGreek,
            "/node_modules/regenerate-unicode-properties/Script/Gujarati.js": requireGujarati,
            "/node_modules/regenerate-unicode-properties/Script/Gunjala_Gondi.js": requireGunjala_Gondi,
            "/node_modules/regenerate-unicode-properties/Script/Gurmukhi.js": requireGurmukhi,
            "/node_modules/regenerate-unicode-properties/Script/Han.js": requireHan,
            "/node_modules/regenerate-unicode-properties/Script/Hangul.js": requireHangul,
            "/node_modules/regenerate-unicode-properties/Script/Hanifi_Rohingya.js": requireHanifi_Rohingya,
            "/node_modules/regenerate-unicode-properties/Script/Hanunoo.js": requireHanunoo,
            "/node_modules/regenerate-unicode-properties/Script/Hatran.js": requireHatran,
            "/node_modules/regenerate-unicode-properties/Script/Hebrew.js": requireHebrew,
            "/node_modules/regenerate-unicode-properties/Script/Hiragana.js": requireHiragana,
            "/node_modules/regenerate-unicode-properties/Script/Imperial_Aramaic.js": requireImperial_Aramaic,
            "/node_modules/regenerate-unicode-properties/Script/Inherited.js": requireInherited,
            "/node_modules/regenerate-unicode-properties/Script/Inscriptional_Pahlavi.js": requireInscriptional_Pahlavi,
            "/node_modules/regenerate-unicode-properties/Script/Inscriptional_Parthian.js": requireInscriptional_Parthian,
            "/node_modules/regenerate-unicode-properties/Script/Javanese.js": requireJavanese,
            "/node_modules/regenerate-unicode-properties/Script/Kaithi.js": requireKaithi,
            "/node_modules/regenerate-unicode-properties/Script/Kannada.js": requireKannada,
            "/node_modules/regenerate-unicode-properties/Script/Katakana.js": requireKatakana,
            "/node_modules/regenerate-unicode-properties/Script/Kawi.js": requireKawi,
            "/node_modules/regenerate-unicode-properties/Script/Kayah_Li.js": requireKayah_Li,
            "/node_modules/regenerate-unicode-properties/Script/Kharoshthi.js": requireKharoshthi,
            "/node_modules/regenerate-unicode-properties/Script/Khitan_Small_Script.js": requireKhitan_Small_Script,
            "/node_modules/regenerate-unicode-properties/Script/Khmer.js": requireKhmer,
            "/node_modules/regenerate-unicode-properties/Script/Khojki.js": requireKhojki,
            "/node_modules/regenerate-unicode-properties/Script/Khudawadi.js": requireKhudawadi,
            "/node_modules/regenerate-unicode-properties/Script/Lao.js": requireLao,
            "/node_modules/regenerate-unicode-properties/Script/Latin.js": requireLatin,
            "/node_modules/regenerate-unicode-properties/Script/Lepcha.js": requireLepcha,
            "/node_modules/regenerate-unicode-properties/Script/Limbu.js": requireLimbu,
            "/node_modules/regenerate-unicode-properties/Script/Linear_A.js": requireLinear_A,
            "/node_modules/regenerate-unicode-properties/Script/Linear_B.js": requireLinear_B,
            "/node_modules/regenerate-unicode-properties/Script/Lisu.js": requireLisu,
            "/node_modules/regenerate-unicode-properties/Script/Lycian.js": requireLycian,
            "/node_modules/regenerate-unicode-properties/Script/Lydian.js": requireLydian,
            "/node_modules/regenerate-unicode-properties/Script/Mahajani.js": requireMahajani,
            "/node_modules/regenerate-unicode-properties/Script/Makasar.js": requireMakasar,
            "/node_modules/regenerate-unicode-properties/Script/Malayalam.js": requireMalayalam,
            "/node_modules/regenerate-unicode-properties/Script/Mandaic.js": requireMandaic,
            "/node_modules/regenerate-unicode-properties/Script/Manichaean.js": requireManichaean,
            "/node_modules/regenerate-unicode-properties/Script/Marchen.js": requireMarchen,
            "/node_modules/regenerate-unicode-properties/Script/Masaram_Gondi.js": requireMasaram_Gondi,
            "/node_modules/regenerate-unicode-properties/Script/Medefaidrin.js": requireMedefaidrin,
            "/node_modules/regenerate-unicode-properties/Script/Meetei_Mayek.js": requireMeetei_Mayek,
            "/node_modules/regenerate-unicode-properties/Script/Mende_Kikakui.js": requireMende_Kikakui,
            "/node_modules/regenerate-unicode-properties/Script/Meroitic_Cursive.js": requireMeroitic_Cursive,
            "/node_modules/regenerate-unicode-properties/Script/Meroitic_Hieroglyphs.js": requireMeroitic_Hieroglyphs,
            "/node_modules/regenerate-unicode-properties/Script/Miao.js": requireMiao,
            "/node_modules/regenerate-unicode-properties/Script/Modi.js": requireModi,
            "/node_modules/regenerate-unicode-properties/Script/Mongolian.js": requireMongolian,
            "/node_modules/regenerate-unicode-properties/Script/Mro.js": requireMro,
            "/node_modules/regenerate-unicode-properties/Script/Multani.js": requireMultani,
            "/node_modules/regenerate-unicode-properties/Script/Myanmar.js": requireMyanmar,
            "/node_modules/regenerate-unicode-properties/Script/Nabataean.js": requireNabataean,
            "/node_modules/regenerate-unicode-properties/Script/Nag_Mundari.js": requireNag_Mundari,
            "/node_modules/regenerate-unicode-properties/Script/Nandinagari.js": requireNandinagari,
            "/node_modules/regenerate-unicode-properties/Script/New_Tai_Lue.js": requireNew_Tai_Lue,
            "/node_modules/regenerate-unicode-properties/Script/Newa.js": requireNewa,
            "/node_modules/regenerate-unicode-properties/Script/Nko.js": requireNko,
            "/node_modules/regenerate-unicode-properties/Script/Nushu.js": requireNushu,
            "/node_modules/regenerate-unicode-properties/Script/Nyiakeng_Puachue_Hmong.js": requireNyiakeng_Puachue_Hmong,
            "/node_modules/regenerate-unicode-properties/Script/Ogham.js": requireOgham,
            "/node_modules/regenerate-unicode-properties/Script/Ol_Chiki.js": requireOl_Chiki,
            "/node_modules/regenerate-unicode-properties/Script/Old_Hungarian.js": requireOld_Hungarian,
            "/node_modules/regenerate-unicode-properties/Script/Old_Italic.js": requireOld_Italic,
            "/node_modules/regenerate-unicode-properties/Script/Old_North_Arabian.js": requireOld_North_Arabian,
            "/node_modules/regenerate-unicode-properties/Script/Old_Permic.js": requireOld_Permic,
            "/node_modules/regenerate-unicode-properties/Script/Old_Persian.js": requireOld_Persian,
            "/node_modules/regenerate-unicode-properties/Script/Old_Sogdian.js": requireOld_Sogdian,
            "/node_modules/regenerate-unicode-properties/Script/Old_South_Arabian.js": requireOld_South_Arabian,
            "/node_modules/regenerate-unicode-properties/Script/Old_Turkic.js": requireOld_Turkic,
            "/node_modules/regenerate-unicode-properties/Script/Old_Uyghur.js": requireOld_Uyghur,
            "/node_modules/regenerate-unicode-properties/Script/Oriya.js": requireOriya,
            "/node_modules/regenerate-unicode-properties/Script/Osage.js": requireOsage,
            "/node_modules/regenerate-unicode-properties/Script/Osmanya.js": requireOsmanya,
            "/node_modules/regenerate-unicode-properties/Script/Pahawh_Hmong.js": requirePahawh_Hmong,
            "/node_modules/regenerate-unicode-properties/Script/Palmyrene.js": requirePalmyrene,
            "/node_modules/regenerate-unicode-properties/Script/Pau_Cin_Hau.js": requirePau_Cin_Hau,
            "/node_modules/regenerate-unicode-properties/Script/Phags_Pa.js": requirePhags_Pa,
            "/node_modules/regenerate-unicode-properties/Script/Phoenician.js": requirePhoenician,
            "/node_modules/regenerate-unicode-properties/Script/Psalter_Pahlavi.js": requirePsalter_Pahlavi,
            "/node_modules/regenerate-unicode-properties/Script/Rejang.js": requireRejang,
            "/node_modules/regenerate-unicode-properties/Script/Runic.js": requireRunic,
            "/node_modules/regenerate-unicode-properties/Script/Samaritan.js": requireSamaritan,
            "/node_modules/regenerate-unicode-properties/Script/Saurashtra.js": requireSaurashtra,
            "/node_modules/regenerate-unicode-properties/Script/Sharada.js": requireSharada,
            "/node_modules/regenerate-unicode-properties/Script/Shavian.js": requireShavian,
            "/node_modules/regenerate-unicode-properties/Script/Siddham.js": requireSiddham,
            "/node_modules/regenerate-unicode-properties/Script/SignWriting.js": requireSignWriting,
            "/node_modules/regenerate-unicode-properties/Script/Sinhala.js": requireSinhala,
            "/node_modules/regenerate-unicode-properties/Script/Sogdian.js": requireSogdian,
            "/node_modules/regenerate-unicode-properties/Script/Sora_Sompeng.js": requireSora_Sompeng,
            "/node_modules/regenerate-unicode-properties/Script/Soyombo.js": requireSoyombo,
            "/node_modules/regenerate-unicode-properties/Script/Sundanese.js": requireSundanese,
            "/node_modules/regenerate-unicode-properties/Script/Syloti_Nagri.js": requireSyloti_Nagri,
            "/node_modules/regenerate-unicode-properties/Script/Syriac.js": requireSyriac,
            "/node_modules/regenerate-unicode-properties/Script/Tagalog.js": requireTagalog,
            "/node_modules/regenerate-unicode-properties/Script/Tagbanwa.js": requireTagbanwa,
            "/node_modules/regenerate-unicode-properties/Script/Tai_Le.js": requireTai_Le,
            "/node_modules/regenerate-unicode-properties/Script/Tai_Tham.js": requireTai_Tham,
            "/node_modules/regenerate-unicode-properties/Script/Tai_Viet.js": requireTai_Viet,
            "/node_modules/regenerate-unicode-properties/Script/Takri.js": requireTakri,
            "/node_modules/regenerate-unicode-properties/Script/Tamil.js": requireTamil,
            "/node_modules/regenerate-unicode-properties/Script/Tangsa.js": requireTangsa,
            "/node_modules/regenerate-unicode-properties/Script/Tangut.js": requireTangut,
            "/node_modules/regenerate-unicode-properties/Script/Telugu.js": requireTelugu,
            "/node_modules/regenerate-unicode-properties/Script/Thaana.js": requireThaana,
            "/node_modules/regenerate-unicode-properties/Script/Thai.js": requireThai,
            "/node_modules/regenerate-unicode-properties/Script/Tibetan.js": requireTibetan,
            "/node_modules/regenerate-unicode-properties/Script/Tifinagh.js": requireTifinagh,
            "/node_modules/regenerate-unicode-properties/Script/Tirhuta.js": requireTirhuta,
            "/node_modules/regenerate-unicode-properties/Script/Toto.js": requireToto,
            "/node_modules/regenerate-unicode-properties/Script/Ugaritic.js": requireUgaritic,
            "/node_modules/regenerate-unicode-properties/Script/Vai.js": requireVai,
            "/node_modules/regenerate-unicode-properties/Script/Vithkuqi.js": requireVithkuqi,
            "/node_modules/regenerate-unicode-properties/Script/Wancho.js": requireWancho,
            "/node_modules/regenerate-unicode-properties/Script/Warang_Citi.js": requireWarang_Citi,
            "/node_modules/regenerate-unicode-properties/Script/Yezidi.js": requireYezidi,
            "/node_modules/regenerate-unicode-properties/Script/Yi.js": requireYi,
            "/node_modules/regenerate-unicode-properties/Script/Zanabazar_Square.js": requireZanabazar_Square,
            "/node_modules/regenerate-unicode-properties/unicode-version.js": requireUnicodeVersion
        });
    }
  
    function createCommonjsRequire(originalModuleDir) {
        function handleRequire(path) {
            var resolvedPath = commonjsResolve(path, originalModuleDir);
            if (resolvedPath !== null) {
                return getDynamicModules()[resolvedPath]();
            }
            throw new Error('Could not dynamically require "' + path + '". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.');
        }
        handleRequire.resolve = function (path) {
            var resolvedPath = commonjsResolve(path, originalModuleDir);
            if (resolvedPath !== null) {
                return resolvedPath;
            }
            return require.resolve(path);
        };
        return handleRequire;
    }
  
    function commonjsResolve (path, originalModuleDir) {
        var shouldTryNodeModules = isPossibleNodeModulesPath(path);
        path = normalize(path);
        var relPath;
        if (path[0] === '/') {
            originalModuleDir = '';
        }
        var modules = getDynamicModules();
        var checkedExtensions = ['', '.js', '.json'];
        while (true) {
            if (!shouldTryNodeModules) {
                relPath = normalize(originalModuleDir + '/' + path);
            } else {
                relPath = normalize(originalModuleDir + '/node_modules/' + path);
            }
  
            if (relPath.endsWith('/..')) {
                break; // Travelled too far up, avoid infinite loop
            }
  
            for (var extensionIndex = 0; extensionIndex < checkedExtensions.length; extensionIndex++) {
                var resolvedPath = relPath + checkedExtensions[extensionIndex];
                if (modules[resolvedPath]) {
                    return resolvedPath;
                }
            }
            if (!shouldTryNodeModules) break;
            var nextDir = normalize(originalModuleDir + '/..');
            if (nextDir === originalModuleDir) break;
            originalModuleDir = nextDir;
        }
        return null;
    }
  
    function isPossibleNodeModulesPath (modulePath) {
        var c0 = modulePath[0];
        if (c0 === '/' || c0 === '\\') return false;
        var c1 = modulePath[1], c2 = modulePath[2];
        if ((c0 === '.' && (!c1 || c1 === '/' || c1 === '\\')) ||
            (c0 === '.' && c1 === '.' && (!c2 || c2 === '/' || c2 === '\\'))) return false;
        if (c1 === ':' && (c2 === '/' || c2 === '\\')) return false;
        return true;
    }
  
    function normalize (path) {
        path = path.replace(/\\/g, '/');
        var parts = path.split('/');
        var slashed = parts[0] === '';
        for (var i = 1; i < parts.length; i++) {
            if (parts[i] === '.' || parts[i] === '') {
                parts.splice(i--, 1);
            }
        }
        for (var i = 1; i < parts.length; i++) {
            if (parts[i] !== '..') continue;
            if (i > 0 && parts[i - 1] !== '..' && parts[i - 1] !== '.') {
                parts.splice(--i, 2);
                i--;
            }
        }
        path = parts.join('/');
        if (slashed && path[0] !== '/') path = '/' + path;
        else if (path.length === 0) path = '.';
        return path;
    }
  
    var regjsgen = {exports: {}};
  
    (function (module, exports) {
      (function () {
        var objectTypes = {
          'function': true,
          'object': true
        };
        var root = objectTypes[typeof window] && window || this;
        var freeExports = exports && !exports.nodeType && exports;
        var hasFreeModule = module && !module.nodeType;
        var freeGlobal = freeExports && hasFreeModule && typeof commonjsGlobal == 'object' && commonjsGlobal;
        if (freeGlobal && (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal || freeGlobal.self === freeGlobal)) {
          root = freeGlobal;
        }
        var hasOwnProperty = Object.prototype.hasOwnProperty;
        function fromCodePoint() {
          var codePoint = Number(arguments[0]);
          if (!isFinite(codePoint) || codePoint < 0 || codePoint > 0x10FFFF || Math.floor(codePoint) != codePoint) {
            throw RangeError('Invalid code point: ' + codePoint);
          }
          if (codePoint <= 0xFFFF) {
            return String.fromCharCode(codePoint);
          } else {
            codePoint -= 0x10000;
            var highSurrogate = (codePoint >> 10) + 0xD800;
            var lowSurrogate = codePoint % 0x400 + 0xDC00;
            return String.fromCharCode(highSurrogate, lowSurrogate);
          }
        }
        var assertTypeRegexMap = {};
        function assertType(type, expected) {
          if (expected.indexOf('|') == -1) {
            if (type == expected) {
              return;
            }
            throw Error('Invalid node type: ' + type + '; expected type: ' + expected);
          }
          expected = hasOwnProperty.call(assertTypeRegexMap, expected) ? assertTypeRegexMap[expected] : assertTypeRegexMap[expected] = RegExp('^(?:' + expected + ')$');
          if (expected.test(type)) {
            return;
          }
          throw Error('Invalid node type: ' + type + '; expected types: ' + expected);
        }
        function generate(node) {
          var type = node.type;
          if (hasOwnProperty.call(generators, type)) {
            return generators[type](node);
          }
          throw Error('Invalid node type: ' + type);
        }
        function generateSequence(generator, terms, separator) {
          var i = -1,
            length = terms.length,
            result = '',
            term;
          while (++i < length) {
            term = terms[i];
            if (separator && i > 0) result += separator;
            if (i + 1 < length && terms[i].type == 'value' && terms[i].kind == 'null' && terms[i + 1].type == 'value' && terms[i + 1].kind == 'symbol' && terms[i + 1].codePoint >= 48 && terms[i + 1].codePoint <= 57) {
              result += '\\000';
              continue;
            }
            result += generator(term);
          }
          return result;
        }
        function generateAlternative(node) {
          assertType(node.type, 'alternative');
          return generateSequence(generateTerm, node.body);
        }
        function generateAnchor(node) {
          assertType(node.type, 'anchor');
          switch (node.kind) {
            case 'start':
              return '^';
            case 'end':
              return '$';
            case 'boundary':
              return '\\b';
            case 'not-boundary':
              return '\\B';
            default:
              throw Error('Invalid assertion');
          }
        }
        var atomType = 'anchor|characterClass|characterClassEscape|dot|group|reference|unicodePropertyEscape|value';
        function generateAtom(node) {
          assertType(node.type, atomType);
          return generate(node);
        }
        function generateCharacterClass(node) {
          assertType(node.type, 'characterClass');
          var kind = node.kind;
          var separator = kind === 'intersection' ? '&&' : kind === 'subtraction' ? '--' : '';
          return '[' + (node.negative ? '^' : '') + generateSequence(generateClassAtom, node.body, separator) + ']';
        }
        function generateCharacterClassEscape(node) {
          assertType(node.type, 'characterClassEscape');
          return '\\' + node.value;
        }
        function generateCharacterClassRange(node) {
          assertType(node.type, 'characterClassRange');
          var min = node.min,
            max = node.max;
          if (min.type == 'characterClassRange' || max.type == 'characterClassRange') {
            throw Error('Invalid character class range');
          }
          return generateClassAtom(min) + '-' + generateClassAtom(max);
        }
        function generateClassAtom(node) {
          assertType(node.type, 'anchor|characterClass|characterClassEscape|characterClassRange|dot|value|unicodePropertyEscape|classStrings');
          return generate(node);
        }
        function generateClassStrings(node) {
          assertType(node.type, 'classStrings');
          return '\\q{' + generateSequence(generateClassString, node.strings, '|') + '}';
        }
        function generateClassString(node) {
          assertType(node.type, 'classString');
          return generateSequence(generate, node.characters);
        }
        function generateDisjunction(node) {
          assertType(node.type, 'disjunction');
          return generateSequence(generate, node.body, '|');
        }
        function generateDot(node) {
          assertType(node.type, 'dot');
          return '.';
        }
        function generateGroup(node) {
          assertType(node.type, 'group');
          var result = '';
          switch (node.behavior) {
            case 'normal':
              if (node.name) {
                result += '?<' + generateIdentifier(node.name) + '>';
              }
              break;
            case 'ignore':
              if (node.modifierFlags) {
                result += '?';
                if (node.modifierFlags.enabling) result += node.modifierFlags.enabling;
                if (node.modifierFlags.disabling) result += "-" + node.modifierFlags.disabling;
                result += ':';
              } else {
                result += '?:';
              }
              break;
            case 'lookahead':
              result += '?=';
              break;
            case 'negativeLookahead':
              result += '?!';
              break;
            case 'lookbehind':
              result += '?<=';
              break;
            case 'negativeLookbehind':
              result += '?<!';
              break;
            default:
              throw Error('Invalid behaviour: ' + node.behaviour);
          }
          result += generateSequence(generate, node.body);
          return '(' + result + ')';
        }
        function generateIdentifier(node) {
          assertType(node.type, 'identifier');
          return node.value;
        }
        function generateQuantifier(node) {
          assertType(node.type, 'quantifier');
          var quantifier = '',
            min = node.min,
            max = node.max;
          if (max == null) {
            if (min == 0) {
              quantifier = '*';
            } else if (min == 1) {
              quantifier = '+';
            } else {
              quantifier = '{' + min + ',}';
            }
          } else if (min == max) {
            quantifier = '{' + min + '}';
          } else if (min == 0 && max == 1) {
            quantifier = '?';
          } else {
            quantifier = '{' + min + ',' + max + '}';
          }
          if (!node.greedy) {
            quantifier += '?';
          }
          return generateAtom(node.body[0]) + quantifier;
        }
        function generateReference(node) {
          assertType(node.type, 'reference');
          if (node.matchIndex) {
            return '\\' + node.matchIndex;
          }
          if (node.name) {
            return '\\k<' + generateIdentifier(node.name) + '>';
          }
          throw new Error('Unknown reference type');
        }
        function generateTerm(node) {
          assertType(node.type, atomType + '|empty|quantifier');
          return generate(node);
        }
        function generateUnicodePropertyEscape(node) {
          assertType(node.type, 'unicodePropertyEscape');
          return '\\' + (node.negative ? 'P' : 'p') + '{' + node.value + '}';
        }
        function generateValue(node) {
          assertType(node.type, 'value');
          var kind = node.kind,
            codePoint = node.codePoint;
          if (typeof codePoint != 'number') {
            throw new Error('Invalid code point: ' + codePoint);
          }
          switch (kind) {
            case 'controlLetter':
              return '\\c' + fromCodePoint(codePoint + 64);
            case 'hexadecimalEscape':
              return '\\x' + ('00' + codePoint.toString(16).toUpperCase()).slice(-2);
            case 'identifier':
              return '\\' + fromCodePoint(codePoint);
            case 'null':
              return '\\' + codePoint;
            case 'octal':
              return '\\' + ('000' + codePoint.toString(8)).slice(-3);
            case 'singleEscape':
              switch (codePoint) {
                case 0x0008:
                  return '\\b';
                case 0x0009:
                  return '\\t';
                case 0x000A:
                  return '\\n';
                case 0x000B:
                  return '\\v';
                case 0x000C:
                  return '\\f';
                case 0x000D:
                  return '\\r';
                case 0x002D:
                  return '\\-';
                default:
                  throw Error('Invalid code point: ' + codePoint);
              }
            case 'symbol':
              return fromCodePoint(codePoint);
            case 'unicodeEscape':
              return "\\u" + ('0000' + codePoint.toString(16).toUpperCase()).slice(-4);
            case 'unicodeCodePointEscape':
              return "\\u{" + codePoint.toString(16).toUpperCase() + '}';
            default:
              throw Error('Unsupported node kind: ' + kind);
          }
        }
        var generators = {
          'alternative': generateAlternative,
          'anchor': generateAnchor,
          'characterClass': generateCharacterClass,
          'characterClassEscape': generateCharacterClassEscape,
          'characterClassRange': generateCharacterClassRange,
          'classStrings': generateClassStrings,
          'disjunction': generateDisjunction,
          'dot': generateDot,
          'group': generateGroup,
          'quantifier': generateQuantifier,
          'reference': generateReference,
          'unicodePropertyEscape': generateUnicodePropertyEscape,
          'value': generateValue
        };
        var regjsgen = {
          'generate': generate
        };
        if (freeExports && hasFreeModule) {
          freeExports.generate = generate;
        } else {
          root.regjsgen = regjsgen;
        }
      }).call(commonjsGlobal);
    })(regjsgen, regjsgen.exports);
  
    var parser = {exports: {}};
  
    (function (module) {
  
      (function () {
        var fromCodePoint = String.fromCodePoint || function () {
          var stringFromCharCode = String.fromCharCode;
          var floor = Math.floor;
          return function fromCodePoint() {
            var MAX_SIZE = 0x4000;
            var codeUnits = [];
            var highSurrogate;
            var lowSurrogate;
            var index = -1;
            var length = arguments.length;
            if (!length) {
              return '';
            }
            var result = '';
            while (++index < length) {
              var codePoint = Number(arguments[index]);
              if (!isFinite(codePoint) || codePoint < 0 || codePoint > 0x10FFFF || floor(codePoint) != codePoint) {
                throw RangeError('Invalid code point: ' + codePoint);
              }
              if (codePoint <= 0xFFFF) {
                codeUnits.push(codePoint);
              } else {
                codePoint -= 0x10000;
                highSurrogate = (codePoint >> 10) + 0xD800;
                lowSurrogate = codePoint % 0x400 + 0xDC00;
                codeUnits.push(highSurrogate, lowSurrogate);
              }
              if (index + 1 == length || codeUnits.length > MAX_SIZE) {
                result += stringFromCharCode.apply(null, codeUnits);
                codeUnits.length = 0;
              }
            }
            return result;
          };
        }();
        function parse(str, flags, features) {
          if (!features) {
            features = {};
          }
          function addRaw(node) {
            node.raw = str.substring(node.range[0], node.range[1]);
            return node;
          }
          function updateRawStart(node, start) {
            node.range[0] = start;
            return addRaw(node);
          }
          function createAnchor(kind, rawLength) {
            return addRaw({
              type: 'anchor',
              kind: kind,
              range: [pos - rawLength, pos]
            });
          }
          function createValue(kind, codePoint, from, to) {
            return addRaw({
              type: 'value',
              kind: kind,
              codePoint: codePoint,
              range: [from, to]
            });
          }
          function createEscaped(kind, codePoint, value, fromOffset) {
            fromOffset = fromOffset || 0;
            return createValue(kind, codePoint, pos - (value.length + fromOffset), pos);
          }
          function createCharacter(matches) {
            var _char = matches[0];
            var first = _char.charCodeAt(0);
            if (isUnicodeMode) {
              var second;
              if (_char.length === 1 && first >= 0xD800 && first <= 0xDBFF) {
                second = lookahead().charCodeAt(0);
                if (second >= 0xDC00 && second <= 0xDFFF) {
                  pos++;
                  return createValue('symbol', (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000, pos - 2, pos);
                }
              }
            }
            return createValue('symbol', first, pos - 1, pos);
          }
          function createDisjunction(alternatives, from, to) {
            return addRaw({
              type: 'disjunction',
              body: alternatives,
              range: [from, to]
            });
          }
          function createDot() {
            return addRaw({
              type: 'dot',
              range: [pos - 1, pos]
            });
          }
          function createCharacterClassEscape(value) {
            return addRaw({
              type: 'characterClassEscape',
              value: value,
              range: [pos - 2, pos]
            });
          }
          function createReference(matchIndex) {
            return addRaw({
              type: 'reference',
              matchIndex: parseInt(matchIndex, 10),
              range: [pos - 1 - matchIndex.length, pos]
            });
          }
          function createNamedReference(name) {
            return addRaw({
              type: 'reference',
              name: name,
              range: [name.range[0] - 3, pos]
            });
          }
          function createGroup(behavior, disjunction, from, to) {
            return addRaw({
              type: 'group',
              behavior: behavior,
              body: disjunction,
              range: [from, to]
            });
          }
          function createQuantifier(min, max, from, to, symbol) {
            if (to == null) {
              from = pos - 1;
              to = pos;
            }
            return addRaw({
              type: 'quantifier',
              min: min,
              max: max,
              greedy: true,
              body: null,
              symbol: symbol,
              range: [from, to]
            });
          }
          function createAlternative(terms, from, to) {
            return addRaw({
              type: 'alternative',
              body: terms,
              range: [from, to]
            });
          }
          function createCharacterClass(contents, negative, from, to) {
            return addRaw({
              type: 'characterClass',
              kind: contents.kind,
              body: contents.body,
              negative: negative,
              range: [from, to]
            });
          }
          function createClassRange(min, max, from, to) {
            if (min.codePoint > max.codePoint) {
              bail('invalid range in character class', min.raw + '-' + max.raw, from, to);
            }
            return addRaw({
              type: 'characterClassRange',
              min: min,
              max: max,
              range: [from, to]
            });
          }
          function createClassStrings(strings, from, to) {
            return addRaw({
              type: 'classStrings',
              strings: strings,
              range: [from, to]
            });
          }
          function createClassString(characters, from, to) {
            return addRaw({
              type: 'classString',
              characters: characters,
              range: [from, to]
            });
          }
          function flattenBody(body) {
            if (body.type === 'alternative') {
              return body.body;
            } else {
              return [body];
            }
          }
          function incr(amount) {
            amount = amount || 1;
            var res = str.substring(pos, pos + amount);
            pos += amount || 1;
            return res;
          }
          function skip(value) {
            if (!match(value)) {
              bail('character', value);
            }
          }
          function match(value) {
            if (str.indexOf(value, pos) === pos) {
              return incr(value.length);
            }
          }
          function lookahead() {
            return str[pos];
          }
          function current(value) {
            return str.indexOf(value, pos) === pos;
          }
          function next(value) {
            return str[pos + 1] === value;
          }
          function matchReg(regExp) {
            var subStr = str.substring(pos);
            var res = subStr.match(regExp);
            if (res) {
              res.range = [];
              res.range[0] = pos;
              incr(res[0].length);
              res.range[1] = pos;
            }
            return res;
          }
          function parseDisjunction() {
            var res = [],
              from = pos;
            res.push(parseAlternative());
            while (match('|')) {
              res.push(parseAlternative());
            }
            if (res.length === 1) {
              return res[0];
            }
            return createDisjunction(res, from, pos);
          }
          function parseAlternative() {
            var res = [],
              from = pos;
            var term;
            while (term = parseTerm()) {
              res.push(term);
            }
            if (res.length === 1) {
              return res[0];
            }
            return createAlternative(res, from, pos);
          }
          function parseTerm() {
            if (pos >= str.length || current('|') || current(')')) {
              return null;
            }
            var anchor = parseAnchor();
            if (anchor) {
              return anchor;
            }
            var atom = parseAtomAndExtendedAtom();
            var quantifier;
            if (!atom) {
              var pos_backup = pos;
              quantifier = parseQuantifier() || false;
              if (quantifier) {
                pos = pos_backup;
                bail('Expected atom');
              }
              var res;
              if (!isUnicodeMode && (res = matchReg(/^{/))) {
                atom = createCharacter(res);
              } else {
                bail('Expected atom');
              }
            }
            quantifier = parseQuantifier() || false;
            if (quantifier) {
              quantifier.body = flattenBody(atom);
              updateRawStart(quantifier, atom.range[0]);
              return quantifier;
            }
            return atom;
          }
          function parseGroup(matchA, typeA, matchB, typeB) {
            var type = null,
              from = pos;
            if (match(matchA)) {
              type = typeA;
            } else if (match(matchB)) {
              type = typeB;
            } else {
              return false;
            }
            return finishGroup(type, from);
          }
          function finishGroup(type, from) {
            var body = parseDisjunction();
            if (!body) {
              bail('Expected disjunction');
            }
            skip(')');
            var group = createGroup(type, flattenBody(body), from, pos);
            if (type == 'normal') {
              if (firstIteration) {
                closedCaptureCounter++;
              }
            }
            return group;
          }
          function parseAnchor() {
            if (match('^')) {
              return createAnchor('start', 1);
            } else if (match('$')) {
              return createAnchor('end', 1);
            } else if (match('\\b')) {
              return createAnchor('boundary', 2);
            } else if (match('\\B')) {
              return createAnchor('not-boundary', 2);
            } else {
              return parseGroup('(?=', 'lookahead', '(?!', 'negativeLookahead');
            }
          }
          function parseQuantifier() {
            var res,
              from = pos;
            var quantifier;
            var min, max;
            if (match('*')) {
              quantifier = createQuantifier(0, undefined, undefined, undefined, '*');
            } else if (match('+')) {
              quantifier = createQuantifier(1, undefined, undefined, undefined, "+");
            } else if (match('?')) {
              quantifier = createQuantifier(0, 1, undefined, undefined, "?");
            } else if (res = matchReg(/^\{([0-9]+)\}/)) {
              min = parseInt(res[1], 10);
              quantifier = createQuantifier(min, min, res.range[0], res.range[1]);
            } else if (res = matchReg(/^\{([0-9]+),\}/)) {
              min = parseInt(res[1], 10);
              quantifier = createQuantifier(min, undefined, res.range[0], res.range[1]);
            } else if (res = matchReg(/^\{([0-9]+),([0-9]+)\}/)) {
              min = parseInt(res[1], 10);
              max = parseInt(res[2], 10);
              if (min > max) {
                bail('numbers out of order in {} quantifier', '', from, pos);
              }
              quantifier = createQuantifier(min, max, res.range[0], res.range[1]);
            }
            if (min && !Number.isSafeInteger(min) || max && !Number.isSafeInteger(max)) {
              bail("iterations outside JS safe integer range in quantifier", "", from, pos);
            }
            if (quantifier) {
              if (match('?')) {
                quantifier.greedy = false;
                quantifier.range[1] += 1;
              }
            }
            return quantifier;
          }
          function parseAtomAndExtendedAtom() {
            var res;
            if (res = matchReg(/^[^^$\\.*+?()[\]{}|]/)) {
              return createCharacter(res);
            } else if (!isUnicodeMode && (res = matchReg(/^(?:]|})/))) {
              return createCharacter(res);
            } else if (match('.')) {
              return createDot();
            } else if (match('\\')) {
              res = parseAtomEscape();
              if (!res) {
                if (!isUnicodeMode && lookahead() == 'c') {
                  return createValue('symbol', 92, pos - 1, pos);
                }
                bail('atomEscape');
              }
              return res;
            } else if (res = parseCharacterClass()) {
              return res;
            } else if (features.lookbehind && (res = parseGroup('(?<=', 'lookbehind', '(?<!', 'negativeLookbehind'))) {
              return res;
            } else if (features.namedGroups && match("(?<")) {
              var name = parseIdentifier();
              skip(">");
              var group = finishGroup("normal", name.range[0] - 3);
              group.name = name;
              return group;
            } else if (features.modifiers && str.indexOf("(?") == pos && str[pos + 2] != ":") {
              return parseModifiersGroup();
            } else {
              return parseGroup('(?:', 'ignore', '(', 'normal');
            }
          }
          function parseModifiersGroup() {
            function hasDupChar(str) {
              var i = 0;
              while (i < str.length) {
                if (str.indexOf(str[i], i + 1) != -1) {
                  return true;
                }
                i++;
              }
              return false;
            }
            var from = pos;
            incr(2);
            var enablingFlags = matchReg(/^[sim]+/);
            var disablingFlags;
            if (match("-")) {
              disablingFlags = matchReg(/^[sim]+/);
              if (!disablingFlags) {
                bail('Invalid flags for modifiers group');
              }
            } else if (!enablingFlags) {
              bail('Invalid flags for modifiers group');
            }
            enablingFlags = enablingFlags ? enablingFlags[0] : "";
            disablingFlags = disablingFlags ? disablingFlags[0] : "";
            var flags = enablingFlags + disablingFlags;
            if (flags.length > 3 || hasDupChar(flags)) {
              bail('flags cannot be duplicated for modifiers group');
            }
            skip(":");
            var modifiersGroup = finishGroup("ignore", from);
            modifiersGroup.modifierFlags = {
              enabling: enablingFlags,
              disabling: disablingFlags
            };
            return modifiersGroup;
          }
          function parseUnicodeSurrogatePairEscape(firstEscape) {
            if (isUnicodeMode) {
              var first, second;
              if (firstEscape.kind == 'unicodeEscape' && (first = firstEscape.codePoint) >= 0xD800 && first <= 0xDBFF && current('\\') && next('u')) {
                var prevPos = pos;
                pos++;
                var secondEscape = parseClassEscape();
                if (secondEscape.kind == 'unicodeEscape' && (second = secondEscape.codePoint) >= 0xDC00 && second <= 0xDFFF) {
                  firstEscape.range[1] = secondEscape.range[1];
                  firstEscape.codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;
                  firstEscape.type = 'value';
                  firstEscape.kind = 'unicodeCodePointEscape';
                  addRaw(firstEscape);
                } else {
                  pos = prevPos;
                }
              }
            }
            return firstEscape;
          }
          function parseClassEscape() {
            return parseAtomEscape(true);
          }
          function parseAtomEscape(insideCharacterClass) {
            var res,
              from = pos;
            res = parseDecimalEscape(insideCharacterClass) || parseNamedReference();
            if (res) {
              return res;
            }
            if (insideCharacterClass) {
              if (match('b')) {
                return createEscaped('singleEscape', 0x0008, '\\b');
              } else if (match('B')) {
                bail('\\B not possible inside of CharacterClass', '', from);
              } else if (!isUnicodeMode && (res = matchReg(/^c([0-9])/))) {
                return createEscaped('controlLetter', res[1] + 16, res[1], 2);
              } else if (!isUnicodeMode && (res = matchReg(/^c_/))) {
                return createEscaped('controlLetter', 31, '_', 2);
              }
              if (isUnicodeMode && match('-')) {
                return createEscaped('singleEscape', 0x002d, '\\-');
              }
            }
            res = parseCharacterClassEscape() || parseCharacterEscape();
            return res;
          }
          function parseDecimalEscape(insideCharacterClass) {
            var res,
              match,
              from = pos;
            if (res = matchReg(/^(?!0)\d+/)) {
              match = res[0];
              var refIdx = parseInt(res[0], 10);
              if (refIdx <= closedCaptureCounter && !insideCharacterClass) {
                return createReference(res[0]);
              } else {
                backrefDenied.push(refIdx);
                if (firstIteration) {
                  shouldReparse = true;
                } else {
                  bailOctalEscapeIfUnicode(from, pos);
                }
                incr(-res[0].length);
                if (res = matchReg(/^[0-7]{1,3}/)) {
                  return createEscaped('octal', parseInt(res[0], 8), res[0], 1);
                } else {
                  res = createCharacter(matchReg(/^[89]/));
                  return updateRawStart(res, res.range[0] - 1);
                }
              }
            } else if (res = matchReg(/^[0-7]{1,3}/)) {
              match = res[0];
              if (match !== '0') {
                bailOctalEscapeIfUnicode(from, pos);
              }
              if (/^0{1,3}$/.test(match)) {
                return createEscaped('null', 0x0000, '0', match.length);
              } else {
                return createEscaped('octal', parseInt(match, 8), match, 1);
              }
            }
            return false;
          }
          function bailOctalEscapeIfUnicode(from, pos) {
            if (isUnicodeMode) {
              bail("Invalid decimal escape in unicode mode", null, from, pos);
            }
          }
          function parseCharacterClassEscape() {
            var res;
            if (res = matchReg(/^[dDsSwW]/)) {
              return createCharacterClassEscape(res[0]);
            } else if (features.unicodePropertyEscape && isUnicodeMode && (res = matchReg(/^([pP])\{([^\}]+)\}/))) {
              return addRaw({
                type: 'unicodePropertyEscape',
                negative: res[1] === 'P',
                value: res[2],
                range: [res.range[0] - 1, res.range[1]],
                raw: res[0]
              });
            } else if (features.unicodeSet && hasUnicodeSetFlag && match('q{')) {
              return parseClassStrings();
            }
            return false;
          }
          function parseNamedReference() {
            if (features.namedGroups && matchReg(/^k<(?=.*?>)/)) {
              var name = parseIdentifier();
              skip('>');
              return createNamedReference(name);
            }
          }
          function parseRegExpUnicodeEscapeSequence() {
            var res;
            if (res = matchReg(/^u([0-9a-fA-F]{4})/)) {
              return parseUnicodeSurrogatePairEscape(createEscaped('unicodeEscape', parseInt(res[1], 16), res[1], 2));
            } else if (isUnicodeMode && (res = matchReg(/^u\{([0-9a-fA-F]+)\}/))) {
              return createEscaped('unicodeCodePointEscape', parseInt(res[1], 16), res[1], 4);
            }
          }
          function parseCharacterEscape() {
            var res;
            var from = pos;
            if (res = matchReg(/^[fnrtv]/)) {
              var codePoint = 0;
              switch (res[0]) {
                case 't':
                  codePoint = 0x009;
                  break;
                case 'n':
                  codePoint = 0x00A;
                  break;
                case 'v':
                  codePoint = 0x00B;
                  break;
                case 'f':
                  codePoint = 0x00C;
                  break;
                case 'r':
                  codePoint = 0x00D;
                  break;
              }
              return createEscaped('singleEscape', codePoint, '\\' + res[0]);
            } else if (res = matchReg(/^c([a-zA-Z])/)) {
              return createEscaped('controlLetter', res[1].charCodeAt(0) % 32, res[1], 2);
            } else if (res = matchReg(/^x([0-9a-fA-F]{2})/)) {
              return createEscaped('hexadecimalEscape', parseInt(res[1], 16), res[1], 2);
            } else if (res = parseRegExpUnicodeEscapeSequence()) {
              if (!res || res.codePoint > 0x10FFFF) {
                bail('Invalid escape sequence', null, from, pos);
              }
              return res;
            } else {
              return parseIdentityEscape();
            }
          }
          function parseIdentifierAtom(check) {
            var ch = lookahead();
            var from = pos;
            if (ch === '\\') {
              incr();
              var esc = parseRegExpUnicodeEscapeSequence();
              if (!esc || !check(esc.codePoint)) {
                bail('Invalid escape sequence', null, from, pos);
              }
              return fromCodePoint(esc.codePoint);
            }
            var code = ch.charCodeAt(0);
            if (code >= 0xD800 && code <= 0xDBFF) {
              ch += str[pos + 1];
              var second = ch.charCodeAt(1);
              if (second >= 0xDC00 && second <= 0xDFFF) {
                code = (code - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;
              }
            }
            if (!check(code)) return;
            incr();
            if (code > 0xFFFF) incr();
            return ch;
          }
          function parseIdentifier() {
            var start = pos;
            var res = parseIdentifierAtom(isIdentifierStart);
            if (!res) {
              bail('Invalid identifier');
            }
            var ch;
            while (ch = parseIdentifierAtom(isIdentifierPart)) {
              res += ch;
            }
            return addRaw({
              type: 'identifier',
              value: res,
              range: [start, pos]
            });
          }
          function isIdentifierStart(ch) {
            var NonAsciiIdentifierStart = /[\$A-Z_a-z\xAA\xB5\xBA\xC0-\xD6\xD8-\xF6\xF8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u037F\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u052F\u0531-\u0556\u0559\u0560-\u0588\u05D0-\u05EA\u05EF-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u0860-\u086A\u08A0-\u08B4\u08B6-\u08BD\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0980\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u09FC\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0AF9\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C39\u0C3D\u0C58-\u0C5A\u0C60\u0C61\u0C80\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D54-\u0D56\u0D5F-\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F5\u13F8-\u13FD\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u16EE-\u16F8\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1878\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191E\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19B0-\u19C9\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1C80-\u1C88\u1C90-\u1CBA\u1CBD-\u1CBF\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2118-\u211D\u2124\u2126\u2128\u212A-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2160-\u2188\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u3005-\u3007\u3021-\u3029\u3031-\u3035\u3038-\u303C\u3041-\u3096\u309B-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312F\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FEF\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA69D\uA6A0-\uA6EF\uA717-\uA71F\uA722-\uA788\uA78B-\uA7B9\uA7F7-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA8FD\uA8FE\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uA9E0-\uA9E4\uA9E6-\uA9EF\uA9FA-\uA9FE\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA7E-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uAB30-\uAB5A\uAB5C-\uAB65\uAB70-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]|\uD800[\uDC00-\uDC0B\uDC0D-\uDC26\uDC28-\uDC3A\uDC3C\uDC3D\uDC3F-\uDC4D\uDC50-\uDC5D\uDC80-\uDCFA\uDD40-\uDD74\uDE80-\uDE9C\uDEA0-\uDED0\uDF00-\uDF1F\uDF2D-\uDF4A\uDF50-\uDF75\uDF80-\uDF9D\uDFA0-\uDFC3\uDFC8-\uDFCF\uDFD1-\uDFD5]|\uD801[\uDC00-\uDC9D\uDCB0-\uDCD3\uDCD8-\uDCFB\uDD00-\uDD27\uDD30-\uDD63\uDE00-\uDF36\uDF40-\uDF55\uDF60-\uDF67]|\uD802[\uDC00-\uDC05\uDC08\uDC0A-\uDC35\uDC37\uDC38\uDC3C\uDC3F-\uDC55\uDC60-\uDC76\uDC80-\uDC9E\uDCE0-\uDCF2\uDCF4\uDCF5\uDD00-\uDD15\uDD20-\uDD39\uDD80-\uDDB7\uDDBE\uDDBF\uDE00\uDE10-\uDE13\uDE15-\uDE17\uDE19-\uDE35\uDE60-\uDE7C\uDE80-\uDE9C\uDEC0-\uDEC7\uDEC9-\uDEE4\uDF00-\uDF35\uDF40-\uDF55\uDF60-\uDF72\uDF80-\uDF91]|\uD803[\uDC00-\uDC48\uDC80-\uDCB2\uDCC0-\uDCF2\uDD00-\uDD23\uDF00-\uDF1C\uDF27\uDF30-\uDF45]|\uD804[\uDC03-\uDC37\uDC83-\uDCAF\uDCD0-\uDCE8\uDD03-\uDD26\uDD44\uDD50-\uDD72\uDD76\uDD83-\uDDB2\uDDC1-\uDDC4\uDDDA\uDDDC\uDE00-\uDE11\uDE13-\uDE2B\uDE80-\uDE86\uDE88\uDE8A-\uDE8D\uDE8F-\uDE9D\uDE9F-\uDEA8\uDEB0-\uDEDE\uDF05-\uDF0C\uDF0F\uDF10\uDF13-\uDF28\uDF2A-\uDF30\uDF32\uDF33\uDF35-\uDF39\uDF3D\uDF50\uDF5D-\uDF61]|\uD805[\uDC00-\uDC34\uDC47-\uDC4A\uDC80-\uDCAF\uDCC4\uDCC5\uDCC7\uDD80-\uDDAE\uDDD8-\uDDDB\uDE00-\uDE2F\uDE44\uDE80-\uDEAA\uDF00-\uDF1A]|\uD806[\uDC00-\uDC2B\uDCA0-\uDCDF\uDCFF\uDE00\uDE0B-\uDE32\uDE3A\uDE50\uDE5C-\uDE83\uDE86-\uDE89\uDE9D\uDEC0-\uDEF8]|\uD807[\uDC00-\uDC08\uDC0A-\uDC2E\uDC40\uDC72-\uDC8F\uDD00-\uDD06\uDD08\uDD09\uDD0B-\uDD30\uDD46\uDD60-\uDD65\uDD67\uDD68\uDD6A-\uDD89\uDD98\uDEE0-\uDEF2]|\uD808[\uDC00-\uDF99]|\uD809[\uDC00-\uDC6E\uDC80-\uDD43]|[\uD80C\uD81C-\uD820\uD840-\uD868\uD86A-\uD86C\uD86F-\uD872\uD874-\uD879][\uDC00-\uDFFF]|\uD80D[\uDC00-\uDC2E]|\uD811[\uDC00-\uDE46]|\uD81A[\uDC00-\uDE38\uDE40-\uDE5E\uDED0-\uDEED\uDF00-\uDF2F\uDF40-\uDF43\uDF63-\uDF77\uDF7D-\uDF8F]|\uD81B[\uDE40-\uDE7F\uDF00-\uDF44\uDF50\uDF93-\uDF9F\uDFE0\uDFE1]|\uD821[\uDC00-\uDFF1]|\uD822[\uDC00-\uDEF2]|\uD82C[\uDC00-\uDD1E\uDD70-\uDEFB]|\uD82F[\uDC00-\uDC6A\uDC70-\uDC7C\uDC80-\uDC88\uDC90-\uDC99]|\uD835[\uDC00-\uDC54\uDC56-\uDC9C\uDC9E\uDC9F\uDCA2\uDCA5\uDCA6\uDCA9-\uDCAC\uDCAE-\uDCB9\uDCBB\uDCBD-\uDCC3\uDCC5-\uDD05\uDD07-\uDD0A\uDD0D-\uDD14\uDD16-\uDD1C\uDD1E-\uDD39\uDD3B-\uDD3E\uDD40-\uDD44\uDD46\uDD4A-\uDD50\uDD52-\uDEA5\uDEA8-\uDEC0\uDEC2-\uDEDA\uDEDC-\uDEFA\uDEFC-\uDF14\uDF16-\uDF34\uDF36-\uDF4E\uDF50-\uDF6E\uDF70-\uDF88\uDF8A-\uDFA8\uDFAA-\uDFC2\uDFC4-\uDFCB]|\uD83A[\uDC00-\uDCC4\uDD00-\uDD43]|\uD83B[\uDE00-\uDE03\uDE05-\uDE1F\uDE21\uDE22\uDE24\uDE27\uDE29-\uDE32\uDE34-\uDE37\uDE39\uDE3B\uDE42\uDE47\uDE49\uDE4B\uDE4D-\uDE4F\uDE51\uDE52\uDE54\uDE57\uDE59\uDE5B\uDE5D\uDE5F\uDE61\uDE62\uDE64\uDE67-\uDE6A\uDE6C-\uDE72\uDE74-\uDE77\uDE79-\uDE7C\uDE7E\uDE80-\uDE89\uDE8B-\uDE9B\uDEA1-\uDEA3\uDEA5-\uDEA9\uDEAB-\uDEBB]|\uD869[\uDC00-\uDED6\uDF00-\uDFFF]|\uD86D[\uDC00-\uDF34\uDF40-\uDFFF]|\uD86E[\uDC00-\uDC1D\uDC20-\uDFFF]|\uD873[\uDC00-\uDEA1\uDEB0-\uDFFF]|\uD87A[\uDC00-\uDFE0]|\uD87E[\uDC00-\uDE1D]/;
            return ch === 36 || ch === 95 || ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122 || ch >= 0x80 && NonAsciiIdentifierStart.test(fromCodePoint(ch));
          }
          function isIdentifierPart(ch) {
            var NonAsciiIdentifierPartOnly = /[0-9_\xB7\u0300-\u036F\u0387\u0483-\u0487\u0591-\u05BD\u05BF\u05C1\u05C2\u05C4\u05C5\u05C7\u0610-\u061A\u064B-\u0669\u0670\u06D6-\u06DC\u06DF-\u06E4\u06E7\u06E8\u06EA-\u06ED\u06F0-\u06F9\u0711\u0730-\u074A\u07A6-\u07B0\u07C0-\u07C9\u07EB-\u07F3\u07FD\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u082D\u0859-\u085B\u08D3-\u08E1\u08E3-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962\u0963\u0966-\u096F\u0981-\u0983\u09BC\u09BE-\u09C4\u09C7\u09C8\u09CB-\u09CD\u09D7\u09E2\u09E3\u09E6-\u09EF\u09FE\u0A01-\u0A03\u0A3C\u0A3E-\u0A42\u0A47\u0A48\u0A4B-\u0A4D\u0A51\u0A66-\u0A71\u0A75\u0A81-\u0A83\u0ABC\u0ABE-\u0AC5\u0AC7-\u0AC9\u0ACB-\u0ACD\u0AE2\u0AE3\u0AE6-\u0AEF\u0AFA-\u0AFF\u0B01-\u0B03\u0B3C\u0B3E-\u0B44\u0B47\u0B48\u0B4B-\u0B4D\u0B56\u0B57\u0B62\u0B63\u0B66-\u0B6F\u0B82\u0BBE-\u0BC2\u0BC6-\u0BC8\u0BCA-\u0BCD\u0BD7\u0BE6-\u0BEF\u0C00-\u0C04\u0C3E-\u0C44\u0C46-\u0C48\u0C4A-\u0C4D\u0C55\u0C56\u0C62\u0C63\u0C66-\u0C6F\u0C81-\u0C83\u0CBC\u0CBE-\u0CC4\u0CC6-\u0CC8\u0CCA-\u0CCD\u0CD5\u0CD6\u0CE2\u0CE3\u0CE6-\u0CEF\u0D00-\u0D03\u0D3B\u0D3C\u0D3E-\u0D44\u0D46-\u0D48\u0D4A-\u0D4D\u0D57\u0D62\u0D63\u0D66-\u0D6F\u0D82\u0D83\u0DCA\u0DCF-\u0DD4\u0DD6\u0DD8-\u0DDF\u0DE6-\u0DEF\u0DF2\u0DF3\u0E31\u0E34-\u0E3A\u0E47-\u0E4E\u0E50-\u0E59\u0EB1\u0EB4-\u0EB9\u0EBB\u0EBC\u0EC8-\u0ECD\u0ED0-\u0ED9\u0F18\u0F19\u0F20-\u0F29\u0F35\u0F37\u0F39\u0F3E\u0F3F\u0F71-\u0F84\u0F86\u0F87\u0F8D-\u0F97\u0F99-\u0FBC\u0FC6\u102B-\u103E\u1040-\u1049\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109D\u135D-\u135F\u1369-\u1371\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17B4-\u17D3\u17DD\u17E0-\u17E9\u180B-\u180D\u1810-\u1819\u18A9\u1920-\u192B\u1930-\u193B\u1946-\u194F\u19D0-\u19DA\u1A17-\u1A1B\u1A55-\u1A5E\u1A60-\u1A7C\u1A7F-\u1A89\u1A90-\u1A99\u1AB0-\u1ABD\u1B00-\u1B04\u1B34-\u1B44\u1B50-\u1B59\u1B6B-\u1B73\u1B80-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BF3\u1C24-\u1C37\u1C40-\u1C49\u1C50-\u1C59\u1CD0-\u1CD2\u1CD4-\u1CE8\u1CED\u1CF2-\u1CF4\u1CF7-\u1CF9\u1DC0-\u1DF9\u1DFB-\u1DFF\u200C\u200D\u203F\u2040\u2054\u20D0-\u20DC\u20E1\u20E5-\u20F0\u2CEF-\u2CF1\u2D7F\u2DE0-\u2DFF\u302A-\u302F\u3099\u309A\uA620-\uA629\uA66F\uA674-\uA67D\uA69E\uA69F\uA6F0\uA6F1\uA802\uA806\uA80B\uA823-\uA827\uA880\uA881\uA8B4-\uA8C5\uA8D0-\uA8D9\uA8E0-\uA8F1\uA8FF-\uA909\uA926-\uA92D\uA947-\uA953\uA980-\uA983\uA9B3-\uA9C0\uA9D0-\uA9D9\uA9E5\uA9F0-\uA9F9\uAA29-\uAA36\uAA43\uAA4C\uAA4D\uAA50-\uAA59\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAEB-\uAAEF\uAAF5\uAAF6\uABE3-\uABEA\uABEC\uABED\uABF0-\uABF9\uFB1E\uFE00-\uFE0F\uFE20-\uFE2F\uFE33\uFE34\uFE4D-\uFE4F\uFF10-\uFF19\uFF3F]|\uD800[\uDDFD\uDEE0\uDF76-\uDF7A]|\uD801[\uDCA0-\uDCA9]|\uD802[\uDE01-\uDE03\uDE05\uDE06\uDE0C-\uDE0F\uDE38-\uDE3A\uDE3F\uDEE5\uDEE6]|\uD803[\uDD24-\uDD27\uDD30-\uDD39\uDF46-\uDF50]|\uD804[\uDC00-\uDC02\uDC38-\uDC46\uDC66-\uDC6F\uDC7F-\uDC82\uDCB0-\uDCBA\uDCF0-\uDCF9\uDD00-\uDD02\uDD27-\uDD34\uDD36-\uDD3F\uDD45\uDD46\uDD73\uDD80-\uDD82\uDDB3-\uDDC0\uDDC9-\uDDCC\uDDD0-\uDDD9\uDE2C-\uDE37\uDE3E\uDEDF-\uDEEA\uDEF0-\uDEF9\uDF00-\uDF03\uDF3B\uDF3C\uDF3E-\uDF44\uDF47\uDF48\uDF4B-\uDF4D\uDF57\uDF62\uDF63\uDF66-\uDF6C\uDF70-\uDF74]|\uD805[\uDC35-\uDC46\uDC50-\uDC59\uDC5E\uDCB0-\uDCC3\uDCD0-\uDCD9\uDDAF-\uDDB5\uDDB8-\uDDC0\uDDDC\uDDDD\uDE30-\uDE40\uDE50-\uDE59\uDEAB-\uDEB7\uDEC0-\uDEC9\uDF1D-\uDF2B\uDF30-\uDF39]|\uD806[\uDC2C-\uDC3A\uDCE0-\uDCE9\uDE01-\uDE0A\uDE33-\uDE39\uDE3B-\uDE3E\uDE47\uDE51-\uDE5B\uDE8A-\uDE99]|\uD807[\uDC2F-\uDC36\uDC38-\uDC3F\uDC50-\uDC59\uDC92-\uDCA7\uDCA9-\uDCB6\uDD31-\uDD36\uDD3A\uDD3C\uDD3D\uDD3F-\uDD45\uDD47\uDD50-\uDD59\uDD8A-\uDD8E\uDD90\uDD91\uDD93-\uDD97\uDDA0-\uDDA9\uDEF3-\uDEF6]|\uD81A[\uDE60-\uDE69\uDEF0-\uDEF4\uDF30-\uDF36\uDF50-\uDF59]|\uD81B[\uDF51-\uDF7E\uDF8F-\uDF92]|\uD82F[\uDC9D\uDC9E]|\uD834[\uDD65-\uDD69\uDD6D-\uDD72\uDD7B-\uDD82\uDD85-\uDD8B\uDDAA-\uDDAD\uDE42-\uDE44]|\uD835[\uDFCE-\uDFFF]|\uD836[\uDE00-\uDE36\uDE3B-\uDE6C\uDE75\uDE84\uDE9B-\uDE9F\uDEA1-\uDEAF]|\uD838[\uDC00-\uDC06\uDC08-\uDC18\uDC1B-\uDC21\uDC23\uDC24\uDC26-\uDC2A]|\uD83A[\uDCD0-\uDCD6\uDD44-\uDD4A\uDD50-\uDD59]|\uDB40[\uDD00-\uDDEF]/;
            return isIdentifierStart(ch) || ch >= 48 && ch <= 57 || ch >= 0x80 && NonAsciiIdentifierPartOnly.test(fromCodePoint(ch));
          }
          function parseIdentityEscape() {
            var tmp;
            var l = lookahead();
            if (isUnicodeMode && /[\^\$\.\*\+\?\(\)\\\[\]\{\}\|\/]/.test(l) || !isUnicodeMode && l !== "c") {
              if (l === "k" && features.lookbehind) {
                return null;
              }
              tmp = incr();
              return createEscaped('identifier', tmp.charCodeAt(0), tmp, 1);
            }
            return null;
          }
          function parseCharacterClass() {
            var res,
              from = pos;
            if (res = matchReg(/^\[\^/)) {
              res = parseClassRanges();
              skip(']');
              return createCharacterClass(res, true, from, pos);
            } else if (match('[')) {
              res = parseClassRanges();
              skip(']');
              return createCharacterClass(res, false, from, pos);
            }
            return null;
          }
          function parseClassRanges() {
            var res;
            if (current(']')) {
              return {
                kind: 'union',
                body: []
              };
            } else if (hasUnicodeSetFlag) {
              return parseClassContents();
            } else {
              res = parseNonemptyClassRanges();
              if (!res) {
                bail('nonEmptyClassRanges');
              }
              return {
                kind: 'union',
                body: res
              };
            }
          }
          function parseHelperClassRanges(atom) {
            var from, to, res, atomTo, dash;
            if (current('-') && !next(']')) {
              from = atom.range[0];
              dash = createCharacter(match('-'));
              atomTo = parseClassAtom();
              if (!atomTo) {
                bail('classAtom');
              }
              to = pos;
              var classRanges = parseClassRanges();
              if (!classRanges) {
                bail('classRanges');
              }
              if (!('codePoint' in atom) || !('codePoint' in atomTo)) {
                if (!isUnicodeMode) {
                  res = [atom, dash, atomTo];
                } else {
                  bail('invalid character class');
                }
              } else {
                res = [createClassRange(atom, atomTo, from, to)];
              }
              if (classRanges.type === 'empty') {
                return res;
              }
              return res.concat(classRanges.body);
            }
            res = parseNonemptyClassRangesNoDash();
            if (!res) {
              bail('nonEmptyClassRangesNoDash');
            }
            return [atom].concat(res);
          }
          function parseNonemptyClassRanges() {
            var atom = parseClassAtom();
            if (!atom) {
              bail('classAtom');
            }
            if (current(']')) {
              return [atom];
            }
            return parseHelperClassRanges(atom);
          }
          function parseNonemptyClassRangesNoDash() {
            var res = parseClassAtom();
            if (!res) {
              bail('classAtom');
            }
            if (current(']')) {
              return res;
            }
            return parseHelperClassRanges(res);
          }
          function parseClassAtom() {
            if (match('-')) {
              return createCharacter('-');
            } else {
              return parseClassAtomNoDash();
            }
          }
          function parseClassAtomNoDash() {
            var res;
            if (res = matchReg(/^[^\\\]-]/)) {
              return createCharacter(res[0]);
            } else if (match('\\')) {
              res = parseClassEscape();
              if (!res) {
                bail('classEscape');
              }
              return parseUnicodeSurrogatePairEscape(res);
            }
          }
          function parseClassContents() {
            var body = [];
            var kind;
            var operand = parseClassOperand(true);
            body.push(operand);
            if (operand.type === 'classRange') {
              kind = 'union';
            } else if (current('&')) {
              kind = 'intersection';
            } else if (current('-')) {
              kind = 'subtraction';
            } else {
              kind = 'union';
            }
            while (!current(']')) {
              if (kind === 'intersection') {
                skip('&');
                skip('&');
                if (current('&')) {
                  bail('&& cannot be followed by &. Wrap it in brackets: &&[&].');
                }
              } else if (kind === 'subtraction') {
                skip('-');
                skip('-');
              }
              operand = parseClassOperand(kind === 'union');
              body.push(operand);
            }
            return {
              kind: kind,
              body: body
            };
          }
          function parseClassOperand(allowRanges) {
            var from = pos;
            var start, res;
            if (match('\\')) {
              if (res = parseClassEscape()) {
                start = res;
              } else if (res = parseClassCharacterEscapedHelper()) {
                return res;
              } else {
                bail('Invalid escape', '\\' + lookahead(), from);
              }
            } else if (res = parseClassCharacterUnescapedHelper()) {
              start = res;
            } else if (res = parseCharacterClass()) {
              return res;
            } else {
              bail('Invalid character', lookahead());
            }
            if (allowRanges && current('-') && !next('-')) {
              skip('-');
              if (res = parseClassCharacter()) {
                return createClassRange(start, res, from, pos);
              }
              bail('Invalid range end', lookahead());
            }
            return start;
          }
          function parseClassCharacter() {
            if (match('\\')) {
              var res,
                from = pos;
              if (res = parseClassCharacterEscapedHelper()) {
                return res;
              } else {
                bail('Invalid escape', '\\' + lookahead(), from);
              }
            }
            return parseClassCharacterUnescapedHelper();
          }
          function parseClassCharacterUnescapedHelper() {
            var res;
            if (res = matchReg(/^[^()[\]{}/\-\\|]/)) {
              return createCharacter(res);
            }
          }
          function parseClassCharacterEscapedHelper() {
            var res;
            if (match('b')) {
              return createEscaped('singleEscape', 0x0008, '\\b');
            } else if (match('B')) {
              bail('\\B not possible inside of ClassContents', '', pos - 2);
            } else if (res = matchReg(/^[&\-!#%,:;<=>@_`~]/)) {
              return createEscaped('identifier', res[0].codePointAt(0), res[0]);
            } else if (res = parseCharacterEscape()) {
              return res;
            } else {
              return null;
            }
          }
          function parseClassStrings() {
            var from = pos - 3;
            var res = [];
            do {
              res.push(parseClassString());
            } while (match('|'));
            skip('}');
            return createClassStrings(res, from, pos);
          }
          function parseClassString() {
            var res = [],
              from = pos;
            var _char2;
            while (_char2 = parseClassCharacter()) {
              res.push(_char2);
            }
            return createClassString(res, from, pos);
          }
          function bail(message, details, from, to) {
            from = from == null ? pos : from;
            to = to == null ? from : to;
            var contextStart = Math.max(0, from - 10);
            var contextEnd = Math.min(to + 10, str.length);
            var context = '    ' + str.substring(contextStart, contextEnd);
            var pointer = '    ' + new Array(from - contextStart + 1).join(' ') + '^';
            throw SyntaxError(message + ' at position ' + from + (details ? ': ' + details : '') + '\n' + context + '\n' + pointer);
          }
          var backrefDenied = [];
          var closedCaptureCounter = 0;
          var firstIteration = true;
          var shouldReparse = false;
          var hasUnicodeFlag = (flags || "").indexOf("u") !== -1;
          var hasUnicodeSetFlag = (flags || "").indexOf("v") !== -1;
          var isUnicodeMode = hasUnicodeFlag || hasUnicodeSetFlag;
          var pos = 0;
          if (hasUnicodeSetFlag && !features.unicodeSet) {
            throw new Error('The "v" flag is only supported when the .unicodeSet option is enabled.');
          }
          if (hasUnicodeFlag && hasUnicodeSetFlag) {
            throw new Error('The "u" and "v" flags are mutually exclusive.');
          }
          str = String(str);
          if (str === '') {
            str = '(?:)';
          }
          var result = parseDisjunction();
          if (result.range[1] !== str.length) {
            bail('Could not parse entire input - got stuck', '', result.range[1]);
          }
          shouldReparse = shouldReparse || backrefDenied.some(function (ref) {
            return ref <= closedCaptureCounter;
          });
          if (shouldReparse) {
            pos = 0;
            firstIteration = false;
            return parseDisjunction();
          }
          return result;
        }
        var regjsparser = {
          parse: parse
        };
        if (module.exports) {
          module.exports = regjsparser;
        } else {
          window.regjsparser = regjsparser;
        }
      })();
    })(parser);
  
    var unicodeCanonicalPropertyNamesEcmascript = new Set(['General_Category', 'Script', 'Script_Extensions', 'Alphabetic', 'Any', 'ASCII', 'ASCII_Hex_Digit', 'Assigned', 'Bidi_Control', 'Bidi_Mirrored', 'Case_Ignorable', 'Cased', 'Changes_When_Casefolded', 'Changes_When_Casemapped', 'Changes_When_Lowercased', 'Changes_When_NFKC_Casefolded', 'Changes_When_Titlecased', 'Changes_When_Uppercased', 'Dash', 'Default_Ignorable_Code_Point', 'Deprecated', 'Diacritic', 'Emoji', 'Emoji_Component', 'Emoji_Modifier', 'Emoji_Modifier_Base', 'Emoji_Presentation', 'Extended_Pictographic', 'Extender', 'Grapheme_Base', 'Grapheme_Extend', 'Hex_Digit', 'ID_Continue', 'ID_Start', 'Ideographic', 'IDS_Binary_Operator', 'IDS_Trinary_Operator', 'Join_Control', 'Logical_Order_Exception', 'Lowercase', 'Math', 'Noncharacter_Code_Point', 'Pattern_Syntax', 'Pattern_White_Space', 'Quotation_Mark', 'Radical', 'Regional_Indicator', 'Sentence_Terminal', 'Soft_Dotted', 'Terminal_Punctuation', 'Unified_Ideograph', 'Uppercase', 'Variation_Selector', 'White_Space', 'XID_Continue', 'XID_Start']);
  
    var unicodePropertyAliasesEcmascript = new Map([['scx', 'Script_Extensions'], ['sc', 'Script'], ['gc', 'General_Category'], ['AHex', 'ASCII_Hex_Digit'], ['Alpha', 'Alphabetic'], ['Bidi_C', 'Bidi_Control'], ['Bidi_M', 'Bidi_Mirrored'], ['Cased', 'Cased'], ['CI', 'Case_Ignorable'], ['CWCF', 'Changes_When_Casefolded'], ['CWCM', 'Changes_When_Casemapped'], ['CWKCF', 'Changes_When_NFKC_Casefolded'], ['CWL', 'Changes_When_Lowercased'], ['CWT', 'Changes_When_Titlecased'], ['CWU', 'Changes_When_Uppercased'], ['Dash', 'Dash'], ['Dep', 'Deprecated'], ['DI', 'Default_Ignorable_Code_Point'], ['Dia', 'Diacritic'], ['EBase', 'Emoji_Modifier_Base'], ['EComp', 'Emoji_Component'], ['EMod', 'Emoji_Modifier'], ['Emoji', 'Emoji'], ['EPres', 'Emoji_Presentation'], ['Ext', 'Extender'], ['ExtPict', 'Extended_Pictographic'], ['Gr_Base', 'Grapheme_Base'], ['Gr_Ext', 'Grapheme_Extend'], ['Hex', 'Hex_Digit'], ['IDC', 'ID_Continue'], ['Ideo', 'Ideographic'], ['IDS', 'ID_Start'], ['IDSB', 'IDS_Binary_Operator'], ['IDST', 'IDS_Trinary_Operator'], ['Join_C', 'Join_Control'], ['LOE', 'Logical_Order_Exception'], ['Lower', 'Lowercase'], ['Math', 'Math'], ['NChar', 'Noncharacter_Code_Point'], ['Pat_Syn', 'Pattern_Syntax'], ['Pat_WS', 'Pattern_White_Space'], ['QMark', 'Quotation_Mark'], ['Radical', 'Radical'], ['RI', 'Regional_Indicator'], ['SD', 'Soft_Dotted'], ['STerm', 'Sentence_Terminal'], ['Term', 'Terminal_Punctuation'], ['UIdeo', 'Unified_Ideograph'], ['Upper', 'Uppercase'], ['VS', 'Variation_Selector'], ['WSpace', 'White_Space'], ['space', 'White_Space'], ['XIDC', 'XID_Continue'], ['XIDS', 'XID_Start']]);
  
    var canonicalProperties = unicodeCanonicalPropertyNamesEcmascript;
    var propertyAliases = unicodePropertyAliasesEcmascript;
    var matchProperty = function matchProperty(property) {
      if (canonicalProperties.has(property)) {
        return property;
      }
      if (propertyAliases.has(property)) {
        return propertyAliases.get(property);
      }
      throw new Error("Unknown property: " + property);
    };
    var unicodeMatchPropertyEcmascript = matchProperty;
  
    var mappings = new Map([['General_Category', new Map([['C', 'Other'], ['Cc', 'Control'], ['cntrl', 'Control'], ['Cf', 'Format'], ['Cn', 'Unassigned'], ['Co', 'Private_Use'], ['Cs', 'Surrogate'], ['L', 'Letter'], ['LC', 'Cased_Letter'], ['Ll', 'Lowercase_Letter'], ['Lm', 'Modifier_Letter'], ['Lo', 'Other_Letter'], ['Lt', 'Titlecase_Letter'], ['Lu', 'Uppercase_Letter'], ['M', 'Mark'], ['Combining_Mark', 'Mark'], ['Mc', 'Spacing_Mark'], ['Me', 'Enclosing_Mark'], ['Mn', 'Nonspacing_Mark'], ['N', 'Number'], ['Nd', 'Decimal_Number'], ['digit', 'Decimal_Number'], ['Nl', 'Letter_Number'], ['No', 'Other_Number'], ['P', 'Punctuation'], ['punct', 'Punctuation'], ['Pc', 'Connector_Punctuation'], ['Pd', 'Dash_Punctuation'], ['Pe', 'Close_Punctuation'], ['Pf', 'Final_Punctuation'], ['Pi', 'Initial_Punctuation'], ['Po', 'Other_Punctuation'], ['Ps', 'Open_Punctuation'], ['S', 'Symbol'], ['Sc', 'Currency_Symbol'], ['Sk', 'Modifier_Symbol'], ['Sm', 'Math_Symbol'], ['So', 'Other_Symbol'], ['Z', 'Separator'], ['Zl', 'Line_Separator'], ['Zp', 'Paragraph_Separator'], ['Zs', 'Space_Separator'], ['Other', 'Other'], ['Control', 'Control'], ['Format', 'Format'], ['Unassigned', 'Unassigned'], ['Private_Use', 'Private_Use'], ['Surrogate', 'Surrogate'], ['Letter', 'Letter'], ['Cased_Letter', 'Cased_Letter'], ['Lowercase_Letter', 'Lowercase_Letter'], ['Modifier_Letter', 'Modifier_Letter'], ['Other_Letter', 'Other_Letter'], ['Titlecase_Letter', 'Titlecase_Letter'], ['Uppercase_Letter', 'Uppercase_Letter'], ['Mark', 'Mark'], ['Spacing_Mark', 'Spacing_Mark'], ['Enclosing_Mark', 'Enclosing_Mark'], ['Nonspacing_Mark', 'Nonspacing_Mark'], ['Number', 'Number'], ['Decimal_Number', 'Decimal_Number'], ['Letter_Number', 'Letter_Number'], ['Other_Number', 'Other_Number'], ['Punctuation', 'Punctuation'], ['Connector_Punctuation', 'Connector_Punctuation'], ['Dash_Punctuation', 'Dash_Punctuation'], ['Close_Punctuation', 'Close_Punctuation'], ['Final_Punctuation', 'Final_Punctuation'], ['Initial_Punctuation', 'Initial_Punctuation'], ['Other_Punctuation', 'Other_Punctuation'], ['Open_Punctuation', 'Open_Punctuation'], ['Symbol', 'Symbol'], ['Currency_Symbol', 'Currency_Symbol'], ['Modifier_Symbol', 'Modifier_Symbol'], ['Math_Symbol', 'Math_Symbol'], ['Other_Symbol', 'Other_Symbol'], ['Separator', 'Separator'], ['Line_Separator', 'Line_Separator'], ['Paragraph_Separator', 'Paragraph_Separator'], ['Space_Separator', 'Space_Separator']])], ['Script', new Map([['Adlm', 'Adlam'], ['Aghb', 'Caucasian_Albanian'], ['Ahom', 'Ahom'], ['Arab', 'Arabic'], ['Armi', 'Imperial_Aramaic'], ['Armn', 'Armenian'], ['Avst', 'Avestan'], ['Bali', 'Balinese'], ['Bamu', 'Bamum'], ['Bass', 'Bassa_Vah'], ['Batk', 'Batak'], ['Beng', 'Bengali'], ['Bhks', 'Bhaiksuki'], ['Bopo', 'Bopomofo'], ['Brah', 'Brahmi'], ['Brai', 'Braille'], ['Bugi', 'Buginese'], ['Buhd', 'Buhid'], ['Cakm', 'Chakma'], ['Cans', 'Canadian_Aboriginal'], ['Cari', 'Carian'], ['Cham', 'Cham'], ['Cher', 'Cherokee'], ['Chrs', 'Chorasmian'], ['Copt', 'Coptic'], ['Qaac', 'Coptic'], ['Cpmn', 'Cypro_Minoan'], ['Cprt', 'Cypriot'], ['Cyrl', 'Cyrillic'], ['Deva', 'Devanagari'], ['Diak', 'Dives_Akuru'], ['Dogr', 'Dogra'], ['Dsrt', 'Deseret'], ['Dupl', 'Duployan'], ['Egyp', 'Egyptian_Hieroglyphs'], ['Elba', 'Elbasan'], ['Elym', 'Elymaic'], ['Ethi', 'Ethiopic'], ['Geor', 'Georgian'], ['Glag', 'Glagolitic'], ['Gong', 'Gunjala_Gondi'], ['Gonm', 'Masaram_Gondi'], ['Goth', 'Gothic'], ['Gran', 'Grantha'], ['Grek', 'Greek'], ['Gujr', 'Gujarati'], ['Guru', 'Gurmukhi'], ['Hang', 'Hangul'], ['Hani', 'Han'], ['Hano', 'Hanunoo'], ['Hatr', 'Hatran'], ['Hebr', 'Hebrew'], ['Hira', 'Hiragana'], ['Hluw', 'Anatolian_Hieroglyphs'], ['Hmng', 'Pahawh_Hmong'], ['Hmnp', 'Nyiakeng_Puachue_Hmong'], ['Hrkt', 'Katakana_Or_Hiragana'], ['Hung', 'Old_Hungarian'], ['Ital', 'Old_Italic'], ['Java', 'Javanese'], ['Kali', 'Kayah_Li'], ['Kana', 'Katakana'], ['Kawi', 'Kawi'], ['Khar', 'Kharoshthi'], ['Khmr', 'Khmer'], ['Khoj', 'Khojki'], ['Kits', 'Khitan_Small_Script'], ['Knda', 'Kannada'], ['Kthi', 'Kaithi'], ['Lana', 'Tai_Tham'], ['Laoo', 'Lao'], ['Latn', 'Latin'], ['Lepc', 'Lepcha'], ['Limb', 'Limbu'], ['Lina', 'Linear_A'], ['Linb', 'Linear_B'], ['Lisu', 'Lisu'], ['Lyci', 'Lycian'], ['Lydi', 'Lydian'], ['Mahj', 'Mahajani'], ['Maka', 'Makasar'], ['Mand', 'Mandaic'], ['Mani', 'Manichaean'], ['Marc', 'Marchen'], ['Medf', 'Medefaidrin'], ['Mend', 'Mende_Kikakui'], ['Merc', 'Meroitic_Cursive'], ['Mero', 'Meroitic_Hieroglyphs'], ['Mlym', 'Malayalam'], ['Modi', 'Modi'], ['Mong', 'Mongolian'], ['Mroo', 'Mro'], ['Mtei', 'Meetei_Mayek'], ['Mult', 'Multani'], ['Mymr', 'Myanmar'], ['Nagm', 'Nag_Mundari'], ['Nand', 'Nandinagari'], ['Narb', 'Old_North_Arabian'], ['Nbat', 'Nabataean'], ['Newa', 'Newa'], ['Nkoo', 'Nko'], ['Nshu', 'Nushu'], ['Ogam', 'Ogham'], ['Olck', 'Ol_Chiki'], ['Orkh', 'Old_Turkic'], ['Orya', 'Oriya'], ['Osge', 'Osage'], ['Osma', 'Osmanya'], ['Ougr', 'Old_Uyghur'], ['Palm', 'Palmyrene'], ['Pauc', 'Pau_Cin_Hau'], ['Perm', 'Old_Permic'], ['Phag', 'Phags_Pa'], ['Phli', 'Inscriptional_Pahlavi'], ['Phlp', 'Psalter_Pahlavi'], ['Phnx', 'Phoenician'], ['Plrd', 'Miao'], ['Prti', 'Inscriptional_Parthian'], ['Rjng', 'Rejang'], ['Rohg', 'Hanifi_Rohingya'], ['Runr', 'Runic'], ['Samr', 'Samaritan'], ['Sarb', 'Old_South_Arabian'], ['Saur', 'Saurashtra'], ['Sgnw', 'SignWriting'], ['Shaw', 'Shavian'], ['Shrd', 'Sharada'], ['Sidd', 'Siddham'], ['Sind', 'Khudawadi'], ['Sinh', 'Sinhala'], ['Sogd', 'Sogdian'], ['Sogo', 'Old_Sogdian'], ['Sora', 'Sora_Sompeng'], ['Soyo', 'Soyombo'], ['Sund', 'Sundanese'], ['Sylo', 'Syloti_Nagri'], ['Syrc', 'Syriac'], ['Tagb', 'Tagbanwa'], ['Takr', 'Takri'], ['Tale', 'Tai_Le'], ['Talu', 'New_Tai_Lue'], ['Taml', 'Tamil'], ['Tang', 'Tangut'], ['Tavt', 'Tai_Viet'], ['Telu', 'Telugu'], ['Tfng', 'Tifinagh'], ['Tglg', 'Tagalog'], ['Thaa', 'Thaana'], ['Thai', 'Thai'], ['Tibt', 'Tibetan'], ['Tirh', 'Tirhuta'], ['Tnsa', 'Tangsa'], ['Toto', 'Toto'], ['Ugar', 'Ugaritic'], ['Vaii', 'Vai'], ['Vith', 'Vithkuqi'], ['Wara', 'Warang_Citi'], ['Wcho', 'Wancho'], ['Xpeo', 'Old_Persian'], ['Xsux', 'Cuneiform'], ['Yezi', 'Yezidi'], ['Yiii', 'Yi'], ['Zanb', 'Zanabazar_Square'], ['Zinh', 'Inherited'], ['Qaai', 'Inherited'], ['Zyyy', 'Common'], ['Zzzz', 'Unknown'], ['Adlam', 'Adlam'], ['Caucasian_Albanian', 'Caucasian_Albanian'], ['Arabic', 'Arabic'], ['Imperial_Aramaic', 'Imperial_Aramaic'], ['Armenian', 'Armenian'], ['Avestan', 'Avestan'], ['Balinese', 'Balinese'], ['Bamum', 'Bamum'], ['Bassa_Vah', 'Bassa_Vah'], ['Batak', 'Batak'], ['Bengali', 'Bengali'], ['Bhaiksuki', 'Bhaiksuki'], ['Bopomofo', 'Bopomofo'], ['Brahmi', 'Brahmi'], ['Braille', 'Braille'], ['Buginese', 'Buginese'], ['Buhid', 'Buhid'], ['Chakma', 'Chakma'], ['Canadian_Aboriginal', 'Canadian_Aboriginal'], ['Carian', 'Carian'], ['Cherokee', 'Cherokee'], ['Chorasmian', 'Chorasmian'], ['Coptic', 'Coptic'], ['Cypro_Minoan', 'Cypro_Minoan'], ['Cypriot', 'Cypriot'], ['Cyrillic', 'Cyrillic'], ['Devanagari', 'Devanagari'], ['Dives_Akuru', 'Dives_Akuru'], ['Dogra', 'Dogra'], ['Deseret', 'Deseret'], ['Duployan', 'Duployan'], ['Egyptian_Hieroglyphs', 'Egyptian_Hieroglyphs'], ['Elbasan', 'Elbasan'], ['Elymaic', 'Elymaic'], ['Ethiopic', 'Ethiopic'], ['Georgian', 'Georgian'], ['Glagolitic', 'Glagolitic'], ['Gunjala_Gondi', 'Gunjala_Gondi'], ['Masaram_Gondi', 'Masaram_Gondi'], ['Gothic', 'Gothic'], ['Grantha', 'Grantha'], ['Greek', 'Greek'], ['Gujarati', 'Gujarati'], ['Gurmukhi', 'Gurmukhi'], ['Hangul', 'Hangul'], ['Han', 'Han'], ['Hanunoo', 'Hanunoo'], ['Hatran', 'Hatran'], ['Hebrew', 'Hebrew'], ['Hiragana', 'Hiragana'], ['Anatolian_Hieroglyphs', 'Anatolian_Hieroglyphs'], ['Pahawh_Hmong', 'Pahawh_Hmong'], ['Nyiakeng_Puachue_Hmong', 'Nyiakeng_Puachue_Hmong'], ['Katakana_Or_Hiragana', 'Katakana_Or_Hiragana'], ['Old_Hungarian', 'Old_Hungarian'], ['Old_Italic', 'Old_Italic'], ['Javanese', 'Javanese'], ['Kayah_Li', 'Kayah_Li'], ['Katakana', 'Katakana'], ['Kharoshthi', 'Kharoshthi'], ['Khmer', 'Khmer'], ['Khojki', 'Khojki'], ['Khitan_Small_Script', 'Khitan_Small_Script'], ['Kannada', 'Kannada'], ['Kaithi', 'Kaithi'], ['Tai_Tham', 'Tai_Tham'], ['Lao', 'Lao'], ['Latin', 'Latin'], ['Lepcha', 'Lepcha'], ['Limbu', 'Limbu'], ['Linear_A', 'Linear_A'], ['Linear_B', 'Linear_B'], ['Lycian', 'Lycian'], ['Lydian', 'Lydian'], ['Mahajani', 'Mahajani'], ['Makasar', 'Makasar'], ['Mandaic', 'Mandaic'], ['Manichaean', 'Manichaean'], ['Marchen', 'Marchen'], ['Medefaidrin', 'Medefaidrin'], ['Mende_Kikakui', 'Mende_Kikakui'], ['Meroitic_Cursive', 'Meroitic_Cursive'], ['Meroitic_Hieroglyphs', 'Meroitic_Hieroglyphs'], ['Malayalam', 'Malayalam'], ['Mongolian', 'Mongolian'], ['Mro', 'Mro'], ['Meetei_Mayek', 'Meetei_Mayek'], ['Multani', 'Multani'], ['Myanmar', 'Myanmar'], ['Nag_Mundari', 'Nag_Mundari'], ['Nandinagari', 'Nandinagari'], ['Old_North_Arabian', 'Old_North_Arabian'], ['Nabataean', 'Nabataean'], ['Nko', 'Nko'], ['Nushu', 'Nushu'], ['Ogham', 'Ogham'], ['Ol_Chiki', 'Ol_Chiki'], ['Old_Turkic', 'Old_Turkic'], ['Oriya', 'Oriya'], ['Osage', 'Osage'], ['Osmanya', 'Osmanya'], ['Old_Uyghur', 'Old_Uyghur'], ['Palmyrene', 'Palmyrene'], ['Pau_Cin_Hau', 'Pau_Cin_Hau'], ['Old_Permic', 'Old_Permic'], ['Phags_Pa', 'Phags_Pa'], ['Inscriptional_Pahlavi', 'Inscriptional_Pahlavi'], ['Psalter_Pahlavi', 'Psalter_Pahlavi'], ['Phoenician', 'Phoenician'], ['Miao', 'Miao'], ['Inscriptional_Parthian', 'Inscriptional_Parthian'], ['Rejang', 'Rejang'], ['Hanifi_Rohingya', 'Hanifi_Rohingya'], ['Runic', 'Runic'], ['Samaritan', 'Samaritan'], ['Old_South_Arabian', 'Old_South_Arabian'], ['Saurashtra', 'Saurashtra'], ['SignWriting', 'SignWriting'], ['Shavian', 'Shavian'], ['Sharada', 'Sharada'], ['Siddham', 'Siddham'], ['Khudawadi', 'Khudawadi'], ['Sinhala', 'Sinhala'], ['Sogdian', 'Sogdian'], ['Old_Sogdian', 'Old_Sogdian'], ['Sora_Sompeng', 'Sora_Sompeng'], ['Soyombo', 'Soyombo'], ['Sundanese', 'Sundanese'], ['Syloti_Nagri', 'Syloti_Nagri'], ['Syriac', 'Syriac'], ['Tagbanwa', 'Tagbanwa'], ['Takri', 'Takri'], ['Tai_Le', 'Tai_Le'], ['New_Tai_Lue', 'New_Tai_Lue'], ['Tamil', 'Tamil'], ['Tangut', 'Tangut'], ['Tai_Viet', 'Tai_Viet'], ['Telugu', 'Telugu'], ['Tifinagh', 'Tifinagh'], ['Tagalog', 'Tagalog'], ['Thaana', 'Thaana'], ['Tibetan', 'Tibetan'], ['Tirhuta', 'Tirhuta'], ['Tangsa', 'Tangsa'], ['Ugaritic', 'Ugaritic'], ['Vai', 'Vai'], ['Vithkuqi', 'Vithkuqi'], ['Warang_Citi', 'Warang_Citi'], ['Wancho', 'Wancho'], ['Old_Persian', 'Old_Persian'], ['Cuneiform', 'Cuneiform'], ['Yezidi', 'Yezidi'], ['Yi', 'Yi'], ['Zanabazar_Square', 'Zanabazar_Square'], ['Inherited', 'Inherited'], ['Common', 'Common'], ['Unknown', 'Unknown']])], ['Script_Extensions', new Map([['Adlm', 'Adlam'], ['Aghb', 'Caucasian_Albanian'], ['Ahom', 'Ahom'], ['Arab', 'Arabic'], ['Armi', 'Imperial_Aramaic'], ['Armn', 'Armenian'], ['Avst', 'Avestan'], ['Bali', 'Balinese'], ['Bamu', 'Bamum'], ['Bass', 'Bassa_Vah'], ['Batk', 'Batak'], ['Beng', 'Bengali'], ['Bhks', 'Bhaiksuki'], ['Bopo', 'Bopomofo'], ['Brah', 'Brahmi'], ['Brai', 'Braille'], ['Bugi', 'Buginese'], ['Buhd', 'Buhid'], ['Cakm', 'Chakma'], ['Cans', 'Canadian_Aboriginal'], ['Cari', 'Carian'], ['Cham', 'Cham'], ['Cher', 'Cherokee'], ['Chrs', 'Chorasmian'], ['Copt', 'Coptic'], ['Qaac', 'Coptic'], ['Cpmn', 'Cypro_Minoan'], ['Cprt', 'Cypriot'], ['Cyrl', 'Cyrillic'], ['Deva', 'Devanagari'], ['Diak', 'Dives_Akuru'], ['Dogr', 'Dogra'], ['Dsrt', 'Deseret'], ['Dupl', 'Duployan'], ['Egyp', 'Egyptian_Hieroglyphs'], ['Elba', 'Elbasan'], ['Elym', 'Elymaic'], ['Ethi', 'Ethiopic'], ['Geor', 'Georgian'], ['Glag', 'Glagolitic'], ['Gong', 'Gunjala_Gondi'], ['Gonm', 'Masaram_Gondi'], ['Goth', 'Gothic'], ['Gran', 'Grantha'], ['Grek', 'Greek'], ['Gujr', 'Gujarati'], ['Guru', 'Gurmukhi'], ['Hang', 'Hangul'], ['Hani', 'Han'], ['Hano', 'Hanunoo'], ['Hatr', 'Hatran'], ['Hebr', 'Hebrew'], ['Hira', 'Hiragana'], ['Hluw', 'Anatolian_Hieroglyphs'], ['Hmng', 'Pahawh_Hmong'], ['Hmnp', 'Nyiakeng_Puachue_Hmong'], ['Hrkt', 'Katakana_Or_Hiragana'], ['Hung', 'Old_Hungarian'], ['Ital', 'Old_Italic'], ['Java', 'Javanese'], ['Kali', 'Kayah_Li'], ['Kana', 'Katakana'], ['Kawi', 'Kawi'], ['Khar', 'Kharoshthi'], ['Khmr', 'Khmer'], ['Khoj', 'Khojki'], ['Kits', 'Khitan_Small_Script'], ['Knda', 'Kannada'], ['Kthi', 'Kaithi'], ['Lana', 'Tai_Tham'], ['Laoo', 'Lao'], ['Latn', 'Latin'], ['Lepc', 'Lepcha'], ['Limb', 'Limbu'], ['Lina', 'Linear_A'], ['Linb', 'Linear_B'], ['Lisu', 'Lisu'], ['Lyci', 'Lycian'], ['Lydi', 'Lydian'], ['Mahj', 'Mahajani'], ['Maka', 'Makasar'], ['Mand', 'Mandaic'], ['Mani', 'Manichaean'], ['Marc', 'Marchen'], ['Medf', 'Medefaidrin'], ['Mend', 'Mende_Kikakui'], ['Merc', 'Meroitic_Cursive'], ['Mero', 'Meroitic_Hieroglyphs'], ['Mlym', 'Malayalam'], ['Modi', 'Modi'], ['Mong', 'Mongolian'], ['Mroo', 'Mro'], ['Mtei', 'Meetei_Mayek'], ['Mult', 'Multani'], ['Mymr', 'Myanmar'], ['Nagm', 'Nag_Mundari'], ['Nand', 'Nandinagari'], ['Narb', 'Old_North_Arabian'], ['Nbat', 'Nabataean'], ['Newa', 'Newa'], ['Nkoo', 'Nko'], ['Nshu', 'Nushu'], ['Ogam', 'Ogham'], ['Olck', 'Ol_Chiki'], ['Orkh', 'Old_Turkic'], ['Orya', 'Oriya'], ['Osge', 'Osage'], ['Osma', 'Osmanya'], ['Ougr', 'Old_Uyghur'], ['Palm', 'Palmyrene'], ['Pauc', 'Pau_Cin_Hau'], ['Perm', 'Old_Permic'], ['Phag', 'Phags_Pa'], ['Phli', 'Inscriptional_Pahlavi'], ['Phlp', 'Psalter_Pahlavi'], ['Phnx', 'Phoenician'], ['Plrd', 'Miao'], ['Prti', 'Inscriptional_Parthian'], ['Rjng', 'Rejang'], ['Rohg', 'Hanifi_Rohingya'], ['Runr', 'Runic'], ['Samr', 'Samaritan'], ['Sarb', 'Old_South_Arabian'], ['Saur', 'Saurashtra'], ['Sgnw', 'SignWriting'], ['Shaw', 'Shavian'], ['Shrd', 'Sharada'], ['Sidd', 'Siddham'], ['Sind', 'Khudawadi'], ['Sinh', 'Sinhala'], ['Sogd', 'Sogdian'], ['Sogo', 'Old_Sogdian'], ['Sora', 'Sora_Sompeng'], ['Soyo', 'Soyombo'], ['Sund', 'Sundanese'], ['Sylo', 'Syloti_Nagri'], ['Syrc', 'Syriac'], ['Tagb', 'Tagbanwa'], ['Takr', 'Takri'], ['Tale', 'Tai_Le'], ['Talu', 'New_Tai_Lue'], ['Taml', 'Tamil'], ['Tang', 'Tangut'], ['Tavt', 'Tai_Viet'], ['Telu', 'Telugu'], ['Tfng', 'Tifinagh'], ['Tglg', 'Tagalog'], ['Thaa', 'Thaana'], ['Thai', 'Thai'], ['Tibt', 'Tibetan'], ['Tirh', 'Tirhuta'], ['Tnsa', 'Tangsa'], ['Toto', 'Toto'], ['Ugar', 'Ugaritic'], ['Vaii', 'Vai'], ['Vith', 'Vithkuqi'], ['Wara', 'Warang_Citi'], ['Wcho', 'Wancho'], ['Xpeo', 'Old_Persian'], ['Xsux', 'Cuneiform'], ['Yezi', 'Yezidi'], ['Yiii', 'Yi'], ['Zanb', 'Zanabazar_Square'], ['Zinh', 'Inherited'], ['Qaai', 'Inherited'], ['Zyyy', 'Common'], ['Zzzz', 'Unknown'], ['Adlam', 'Adlam'], ['Caucasian_Albanian', 'Caucasian_Albanian'], ['Arabic', 'Arabic'], ['Imperial_Aramaic', 'Imperial_Aramaic'], ['Armenian', 'Armenian'], ['Avestan', 'Avestan'], ['Balinese', 'Balinese'], ['Bamum', 'Bamum'], ['Bassa_Vah', 'Bassa_Vah'], ['Batak', 'Batak'], ['Bengali', 'Bengali'], ['Bhaiksuki', 'Bhaiksuki'], ['Bopomofo', 'Bopomofo'], ['Brahmi', 'Brahmi'], ['Braille', 'Braille'], ['Buginese', 'Buginese'], ['Buhid', 'Buhid'], ['Chakma', 'Chakma'], ['Canadian_Aboriginal', 'Canadian_Aboriginal'], ['Carian', 'Carian'], ['Cherokee', 'Cherokee'], ['Chorasmian', 'Chorasmian'], ['Coptic', 'Coptic'], ['Cypro_Minoan', 'Cypro_Minoan'], ['Cypriot', 'Cypriot'], ['Cyrillic', 'Cyrillic'], ['Devanagari', 'Devanagari'], ['Dives_Akuru', 'Dives_Akuru'], ['Dogra', 'Dogra'], ['Deseret', 'Deseret'], ['Duployan', 'Duployan'], ['Egyptian_Hieroglyphs', 'Egyptian_Hieroglyphs'], ['Elbasan', 'Elbasan'], ['Elymaic', 'Elymaic'], ['Ethiopic', 'Ethiopic'], ['Georgian', 'Georgian'], ['Glagolitic', 'Glagolitic'], ['Gunjala_Gondi', 'Gunjala_Gondi'], ['Masaram_Gondi', 'Masaram_Gondi'], ['Gothic', 'Gothic'], ['Grantha', 'Grantha'], ['Greek', 'Greek'], ['Gujarati', 'Gujarati'], ['Gurmukhi', 'Gurmukhi'], ['Hangul', 'Hangul'], ['Han', 'Han'], ['Hanunoo', 'Hanunoo'], ['Hatran', 'Hatran'], ['Hebrew', 'Hebrew'], ['Hiragana', 'Hiragana'], ['Anatolian_Hieroglyphs', 'Anatolian_Hieroglyphs'], ['Pahawh_Hmong', 'Pahawh_Hmong'], ['Nyiakeng_Puachue_Hmong', 'Nyiakeng_Puachue_Hmong'], ['Katakana_Or_Hiragana', 'Katakana_Or_Hiragana'], ['Old_Hungarian', 'Old_Hungarian'], ['Old_Italic', 'Old_Italic'], ['Javanese', 'Javanese'], ['Kayah_Li', 'Kayah_Li'], ['Katakana', 'Katakana'], ['Kharoshthi', 'Kharoshthi'], ['Khmer', 'Khmer'], ['Khojki', 'Khojki'], ['Khitan_Small_Script', 'Khitan_Small_Script'], ['Kannada', 'Kannada'], ['Kaithi', 'Kaithi'], ['Tai_Tham', 'Tai_Tham'], ['Lao', 'Lao'], ['Latin', 'Latin'], ['Lepcha', 'Lepcha'], ['Limbu', 'Limbu'], ['Linear_A', 'Linear_A'], ['Linear_B', 'Linear_B'], ['Lycian', 'Lycian'], ['Lydian', 'Lydian'], ['Mahajani', 'Mahajani'], ['Makasar', 'Makasar'], ['Mandaic', 'Mandaic'], ['Manichaean', 'Manichaean'], ['Marchen', 'Marchen'], ['Medefaidrin', 'Medefaidrin'], ['Mende_Kikakui', 'Mende_Kikakui'], ['Meroitic_Cursive', 'Meroitic_Cursive'], ['Meroitic_Hieroglyphs', 'Meroitic_Hieroglyphs'], ['Malayalam', 'Malayalam'], ['Mongolian', 'Mongolian'], ['Mro', 'Mro'], ['Meetei_Mayek', 'Meetei_Mayek'], ['Multani', 'Multani'], ['Myanmar', 'Myanmar'], ['Nag_Mundari', 'Nag_Mundari'], ['Nandinagari', 'Nandinagari'], ['Old_North_Arabian', 'Old_North_Arabian'], ['Nabataean', 'Nabataean'], ['Nko', 'Nko'], ['Nushu', 'Nushu'], ['Ogham', 'Ogham'], ['Ol_Chiki', 'Ol_Chiki'], ['Old_Turkic', 'Old_Turkic'], ['Oriya', 'Oriya'], ['Osage', 'Osage'], ['Osmanya', 'Osmanya'], ['Old_Uyghur', 'Old_Uyghur'], ['Palmyrene', 'Palmyrene'], ['Pau_Cin_Hau', 'Pau_Cin_Hau'], ['Old_Permic', 'Old_Permic'], ['Phags_Pa', 'Phags_Pa'], ['Inscriptional_Pahlavi', 'Inscriptional_Pahlavi'], ['Psalter_Pahlavi', 'Psalter_Pahlavi'], ['Phoenician', 'Phoenician'], ['Miao', 'Miao'], ['Inscriptional_Parthian', 'Inscriptional_Parthian'], ['Rejang', 'Rejang'], ['Hanifi_Rohingya', 'Hanifi_Rohingya'], ['Runic', 'Runic'], ['Samaritan', 'Samaritan'], ['Old_South_Arabian', 'Old_South_Arabian'], ['Saurashtra', 'Saurashtra'], ['SignWriting', 'SignWriting'], ['Shavian', 'Shavian'], ['Sharada', 'Sharada'], ['Siddham', 'Siddham'], ['Khudawadi', 'Khudawadi'], ['Sinhala', 'Sinhala'], ['Sogdian', 'Sogdian'], ['Old_Sogdian', 'Old_Sogdian'], ['Sora_Sompeng', 'Sora_Sompeng'], ['Soyombo', 'Soyombo'], ['Sundanese', 'Sundanese'], ['Syloti_Nagri', 'Syloti_Nagri'], ['Syriac', 'Syriac'], ['Tagbanwa', 'Tagbanwa'], ['Takri', 'Takri'], ['Tai_Le', 'Tai_Le'], ['New_Tai_Lue', 'New_Tai_Lue'], ['Tamil', 'Tamil'], ['Tangut', 'Tangut'], ['Tai_Viet', 'Tai_Viet'], ['Telugu', 'Telugu'], ['Tifinagh', 'Tifinagh'], ['Tagalog', 'Tagalog'], ['Thaana', 'Thaana'], ['Tibetan', 'Tibetan'], ['Tirhuta', 'Tirhuta'], ['Tangsa', 'Tangsa'], ['Ugaritic', 'Ugaritic'], ['Vai', 'Vai'], ['Vithkuqi', 'Vithkuqi'], ['Warang_Citi', 'Warang_Citi'], ['Wancho', 'Wancho'], ['Old_Persian', 'Old_Persian'], ['Cuneiform', 'Cuneiform'], ['Yezidi', 'Yezidi'], ['Yi', 'Yi'], ['Zanabazar_Square', 'Zanabazar_Square'], ['Inherited', 'Inherited'], ['Common', 'Common'], ['Unknown', 'Unknown']])]]);
  
    var propertyToValueAliases = mappings;
    var matchPropertyValue = function matchPropertyValue(property, value) {
      var aliasToValue = propertyToValueAliases.get(property);
      if (!aliasToValue) {
        throw new Error("Unknown property `" + property + "`.");
      }
      var canonicalValue = aliasToValue.get(value);
      if (canonicalValue) {
        return canonicalValue;
      }
      throw new Error("Unknown value `" + value + "` for property `" + property + "`.");
    };
    var unicodeMatchPropertyValueEcmascript = matchPropertyValue;
  
    var iuMappings$1 = new Map([[0x4B, 0x212A], [0x53, 0x17F], [0x6B, 0x212A], [0x73, 0x17F], [0xB5, 0x39C], [0xC5, 0x212B], [0xDF, 0x1E9E], [0xE5, 0x212B], [0x17F, 0x53], [0x1C4, 0x1C5], [0x1C5, 0x1C4], [0x1C7, 0x1C8], [0x1C8, 0x1C7], [0x1CA, 0x1CB], [0x1CB, 0x1CA], [0x1F1, 0x1F2], [0x1F2, 0x1F1], [0x345, 0x1FBE], [0x392, 0x3D0], [0x395, 0x3F5], [0x398, 0x3F4], [0x399, 0x1FBE], [0x39A, 0x3F0], [0x39C, 0xB5], [0x3A0, 0x3D6], [0x3A1, 0x3F1], [0x3A3, 0x3C2], [0x3A6, 0x3D5], [0x3A9, 0x2126], [0x3B8, 0x3F4], [0x3C2, 0x3A3], [0x3C9, 0x2126], [0x3D0, 0x392], [0x3D1, 0x3F4], [0x3D5, 0x3A6], [0x3D6, 0x3A0], [0x3F0, 0x39A], [0x3F1, 0x3A1], [0x3F4, [0x398, 0x3D1, 0x3B8]], [0x3F5, 0x395], [0x412, 0x1C80], [0x414, 0x1C81], [0x41E, 0x1C82], [0x421, 0x1C83], [0x422, 0x1C85], [0x42A, 0x1C86], [0x462, 0x1C87], [0x1C80, 0x412], [0x1C81, 0x414], [0x1C82, 0x41E], [0x1C83, 0x421], [0x1C84, 0x1C85], [0x1C85, [0x422, 0x1C84]], [0x1C86, 0x42A], [0x1C87, 0x462], [0x1C88, 0xA64A], [0x1E60, 0x1E9B], [0x1E9B, 0x1E60], [0x1E9E, 0xDF], [0x1F80, 0x1F88], [0x1F81, 0x1F89], [0x1F82, 0x1F8A], [0x1F83, 0x1F8B], [0x1F84, 0x1F8C], [0x1F85, 0x1F8D], [0x1F86, 0x1F8E], [0x1F87, 0x1F8F], [0x1F88, 0x1F80], [0x1F89, 0x1F81], [0x1F8A, 0x1F82], [0x1F8B, 0x1F83], [0x1F8C, 0x1F84], [0x1F8D, 0x1F85], [0x1F8E, 0x1F86], [0x1F8F, 0x1F87], [0x1F90, 0x1F98], [0x1F91, 0x1F99], [0x1F92, 0x1F9A], [0x1F93, 0x1F9B], [0x1F94, 0x1F9C], [0x1F95, 0x1F9D], [0x1F96, 0x1F9E], [0x1F97, 0x1F9F], [0x1F98, 0x1F90], [0x1F99, 0x1F91], [0x1F9A, 0x1F92], [0x1F9B, 0x1F93], [0x1F9C, 0x1F94], [0x1F9D, 0x1F95], [0x1F9E, 0x1F96], [0x1F9F, 0x1F97], [0x1FA0, 0x1FA8], [0x1FA1, 0x1FA9], [0x1FA2, 0x1FAA], [0x1FA3, 0x1FAB], [0x1FA4, 0x1FAC], [0x1FA5, 0x1FAD], [0x1FA6, 0x1FAE], [0x1FA7, 0x1FAF], [0x1FA8, 0x1FA0], [0x1FA9, 0x1FA1], [0x1FAA, 0x1FA2], [0x1FAB, 0x1FA3], [0x1FAC, 0x1FA4], [0x1FAD, 0x1FA5], [0x1FAE, 0x1FA6], [0x1FAF, 0x1FA7], [0x1FB3, 0x1FBC], [0x1FBC, 0x1FB3], [0x1FBE, [0x345, 0x399]], [0x1FC3, 0x1FCC], [0x1FCC, 0x1FC3], [0x1FF3, 0x1FFC], [0x1FFC, 0x1FF3], [0x2126, [0x3A9, 0x3C9]], [0x212A, 0x4B], [0x212B, [0xC5, 0xE5]], [0xA64A, 0x1C88], [0x10400, 0x10428], [0x10401, 0x10429], [0x10402, 0x1042A], [0x10403, 0x1042B], [0x10404, 0x1042C], [0x10405, 0x1042D], [0x10406, 0x1042E], [0x10407, 0x1042F], [0x10408, 0x10430], [0x10409, 0x10431], [0x1040A, 0x10432], [0x1040B, 0x10433], [0x1040C, 0x10434], [0x1040D, 0x10435], [0x1040E, 0x10436], [0x1040F, 0x10437], [0x10410, 0x10438], [0x10411, 0x10439], [0x10412, 0x1043A], [0x10413, 0x1043B], [0x10414, 0x1043C], [0x10415, 0x1043D], [0x10416, 0x1043E], [0x10417, 0x1043F], [0x10418, 0x10440], [0x10419, 0x10441], [0x1041A, 0x10442], [0x1041B, 0x10443], [0x1041C, 0x10444], [0x1041D, 0x10445], [0x1041E, 0x10446], [0x1041F, 0x10447], [0x10420, 0x10448], [0x10421, 0x10449], [0x10422, 0x1044A], [0x10423, 0x1044B], [0x10424, 0x1044C], [0x10425, 0x1044D], [0x10426, 0x1044E], [0x10427, 0x1044F], [0x10428, 0x10400], [0x10429, 0x10401], [0x1042A, 0x10402], [0x1042B, 0x10403], [0x1042C, 0x10404], [0x1042D, 0x10405], [0x1042E, 0x10406], [0x1042F, 0x10407], [0x10430, 0x10408], [0x10431, 0x10409], [0x10432, 0x1040A], [0x10433, 0x1040B], [0x10434, 0x1040C], [0x10435, 0x1040D], [0x10436, 0x1040E], [0x10437, 0x1040F], [0x10438, 0x10410], [0x10439, 0x10411], [0x1043A, 0x10412], [0x1043B, 0x10413], [0x1043C, 0x10414], [0x1043D, 0x10415], [0x1043E, 0x10416], [0x1043F, 0x10417], [0x10440, 0x10418], [0x10441, 0x10419], [0x10442, 0x1041A], [0x10443, 0x1041B], [0x10444, 0x1041C], [0x10445, 0x1041D], [0x10446, 0x1041E], [0x10447, 0x1041F], [0x10448, 0x10420], [0x10449, 0x10421], [0x1044A, 0x10422], [0x1044B, 0x10423], [0x1044C, 0x10424], [0x1044D, 0x10425], [0x1044E, 0x10426], [0x1044F, 0x10427], [0x104B0, 0x104D8], [0x104B1, 0x104D9], [0x104B2, 0x104DA], [0x104B3, 0x104DB], [0x104B4, 0x104DC], [0x104B5, 0x104DD], [0x104B6, 0x104DE], [0x104B7, 0x104DF], [0x104B8, 0x104E0], [0x104B9, 0x104E1], [0x104BA, 0x104E2], [0x104BB, 0x104E3], [0x104BC, 0x104E4], [0x104BD, 0x104E5], [0x104BE, 0x104E6], [0x104BF, 0x104E7], [0x104C0, 0x104E8], [0x104C1, 0x104E9], [0x104C2, 0x104EA], [0x104C3, 0x104EB], [0x104C4, 0x104EC], [0x104C5, 0x104ED], [0x104C6, 0x104EE], [0x104C7, 0x104EF], [0x104C8, 0x104F0], [0x104C9, 0x104F1], [0x104CA, 0x104F2], [0x104CB, 0x104F3], [0x104CC, 0x104F4], [0x104CD, 0x104F5], [0x104CE, 0x104F6], [0x104CF, 0x104F7], [0x104D0, 0x104F8], [0x104D1, 0x104F9], [0x104D2, 0x104FA], [0x104D3, 0x104FB], [0x104D8, 0x104B0], [0x104D9, 0x104B1], [0x104DA, 0x104B2], [0x104DB, 0x104B3], [0x104DC, 0x104B4], [0x104DD, 0x104B5], [0x104DE, 0x104B6], [0x104DF, 0x104B7], [0x104E0, 0x104B8], [0x104E1, 0x104B9], [0x104E2, 0x104BA], [0x104E3, 0x104BB], [0x104E4, 0x104BC], [0x104E5, 0x104BD], [0x104E6, 0x104BE], [0x104E7, 0x104BF], [0x104E8, 0x104C0], [0x104E9, 0x104C1], [0x104EA, 0x104C2], [0x104EB, 0x104C3], [0x104EC, 0x104C4], [0x104ED, 0x104C5], [0x104EE, 0x104C6], [0x104EF, 0x104C7], [0x104F0, 0x104C8], [0x104F1, 0x104C9], [0x104F2, 0x104CA], [0x104F3, 0x104CB], [0x104F4, 0x104CC], [0x104F5, 0x104CD], [0x104F6, 0x104CE], [0x104F7, 0x104CF], [0x104F8, 0x104D0], [0x104F9, 0x104D1], [0x104FA, 0x104D2], [0x104FB, 0x104D3], [0x10570, 0x10597], [0x10571, 0x10598], [0x10572, 0x10599], [0x10573, 0x1059A], [0x10574, 0x1059B], [0x10575, 0x1059C], [0x10576, 0x1059D], [0x10577, 0x1059E], [0x10578, 0x1059F], [0x10579, 0x105A0], [0x1057A, 0x105A1], [0x1057C, 0x105A3], [0x1057D, 0x105A4], [0x1057E, 0x105A5], [0x1057F, 0x105A6], [0x10580, 0x105A7], [0x10581, 0x105A8], [0x10582, 0x105A9], [0x10583, 0x105AA], [0x10584, 0x105AB], [0x10585, 0x105AC], [0x10586, 0x105AD], [0x10587, 0x105AE], [0x10588, 0x105AF], [0x10589, 0x105B0], [0x1058A, 0x105B1], [0x1058C, 0x105B3], [0x1058D, 0x105B4], [0x1058E, 0x105B5], [0x1058F, 0x105B6], [0x10590, 0x105B7], [0x10591, 0x105B8], [0x10592, 0x105B9], [0x10594, 0x105BB], [0x10595, 0x105BC], [0x10597, 0x10570], [0x10598, 0x10571], [0x10599, 0x10572], [0x1059A, 0x10573], [0x1059B, 0x10574], [0x1059C, 0x10575], [0x1059D, 0x10576], [0x1059E, 0x10577], [0x1059F, 0x10578], [0x105A0, 0x10579], [0x105A1, 0x1057A], [0x105A3, 0x1057C], [0x105A4, 0x1057D], [0x105A5, 0x1057E], [0x105A6, 0x1057F], [0x105A7, 0x10580], [0x105A8, 0x10581], [0x105A9, 0x10582], [0x105AA, 0x10583], [0x105AB, 0x10584], [0x105AC, 0x10585], [0x105AD, 0x10586], [0x105AE, 0x10587], [0x105AF, 0x10588], [0x105B0, 0x10589], [0x105B1, 0x1058A], [0x105B3, 0x1058C], [0x105B4, 0x1058D], [0x105B5, 0x1058E], [0x105B6, 0x1058F], [0x105B7, 0x10590], [0x105B8, 0x10591], [0x105B9, 0x10592], [0x105BB, 0x10594], [0x105BC, 0x10595], [0x10C80, 0x10CC0], [0x10C81, 0x10CC1], [0x10C82, 0x10CC2], [0x10C83, 0x10CC3], [0x10C84, 0x10CC4], [0x10C85, 0x10CC5], [0x10C86, 0x10CC6], [0x10C87, 0x10CC7], [0x10C88, 0x10CC8], [0x10C89, 0x10CC9], [0x10C8A, 0x10CCA], [0x10C8B, 0x10CCB], [0x10C8C, 0x10CCC], [0x10C8D, 0x10CCD], [0x10C8E, 0x10CCE], [0x10C8F, 0x10CCF], [0x10C90, 0x10CD0], [0x10C91, 0x10CD1], [0x10C92, 0x10CD2], [0x10C93, 0x10CD3], [0x10C94, 0x10CD4], [0x10C95, 0x10CD5], [0x10C96, 0x10CD6], [0x10C97, 0x10CD7], [0x10C98, 0x10CD8], [0x10C99, 0x10CD9], [0x10C9A, 0x10CDA], [0x10C9B, 0x10CDB], [0x10C9C, 0x10CDC], [0x10C9D, 0x10CDD], [0x10C9E, 0x10CDE], [0x10C9F, 0x10CDF], [0x10CA0, 0x10CE0], [0x10CA1, 0x10CE1], [0x10CA2, 0x10CE2], [0x10CA3, 0x10CE3], [0x10CA4, 0x10CE4], [0x10CA5, 0x10CE5], [0x10CA6, 0x10CE6], [0x10CA7, 0x10CE7], [0x10CA8, 0x10CE8], [0x10CA9, 0x10CE9], [0x10CAA, 0x10CEA], [0x10CAB, 0x10CEB], [0x10CAC, 0x10CEC], [0x10CAD, 0x10CED], [0x10CAE, 0x10CEE], [0x10CAF, 0x10CEF], [0x10CB0, 0x10CF0], [0x10CB1, 0x10CF1], [0x10CB2, 0x10CF2], [0x10CC0, 0x10C80], [0x10CC1, 0x10C81], [0x10CC2, 0x10C82], [0x10CC3, 0x10C83], [0x10CC4, 0x10C84], [0x10CC5, 0x10C85], [0x10CC6, 0x10C86], [0x10CC7, 0x10C87], [0x10CC8, 0x10C88], [0x10CC9, 0x10C89], [0x10CCA, 0x10C8A], [0x10CCB, 0x10C8B], [0x10CCC, 0x10C8C], [0x10CCD, 0x10C8D], [0x10CCE, 0x10C8E], [0x10CCF, 0x10C8F], [0x10CD0, 0x10C90], [0x10CD1, 0x10C91], [0x10CD2, 0x10C92], [0x10CD3, 0x10C93], [0x10CD4, 0x10C94], [0x10CD5, 0x10C95], [0x10CD6, 0x10C96], [0x10CD7, 0x10C97], [0x10CD8, 0x10C98], [0x10CD9, 0x10C99], [0x10CDA, 0x10C9A], [0x10CDB, 0x10C9B], [0x10CDC, 0x10C9C], [0x10CDD, 0x10C9D], [0x10CDE, 0x10C9E], [0x10CDF, 0x10C9F], [0x10CE0, 0x10CA0], [0x10CE1, 0x10CA1], [0x10CE2, 0x10CA2], [0x10CE3, 0x10CA3], [0x10CE4, 0x10CA4], [0x10CE5, 0x10CA5], [0x10CE6, 0x10CA6], [0x10CE7, 0x10CA7], [0x10CE8, 0x10CA8], [0x10CE9, 0x10CA9], [0x10CEA, 0x10CAA], [0x10CEB, 0x10CAB], [0x10CEC, 0x10CAC], [0x10CED, 0x10CAD], [0x10CEE, 0x10CAE], [0x10CEF, 0x10CAF], [0x10CF0, 0x10CB0], [0x10CF1, 0x10CB1], [0x10CF2, 0x10CB2], [0x118A0, 0x118C0], [0x118A1, 0x118C1], [0x118A2, 0x118C2], [0x118A3, 0x118C3], [0x118A4, 0x118C4], [0x118A5, 0x118C5], [0x118A6, 0x118C6], [0x118A7, 0x118C7], [0x118A8, 0x118C8], [0x118A9, 0x118C9], [0x118AA, 0x118CA], [0x118AB, 0x118CB], [0x118AC, 0x118CC], [0x118AD, 0x118CD], [0x118AE, 0x118CE], [0x118AF, 0x118CF], [0x118B0, 0x118D0], [0x118B1, 0x118D1], [0x118B2, 0x118D2], [0x118B3, 0x118D3], [0x118B4, 0x118D4], [0x118B5, 0x118D5], [0x118B6, 0x118D6], [0x118B7, 0x118D7], [0x118B8, 0x118D8], [0x118B9, 0x118D9], [0x118BA, 0x118DA], [0x118BB, 0x118DB], [0x118BC, 0x118DC], [0x118BD, 0x118DD], [0x118BE, 0x118DE], [0x118BF, 0x118DF], [0x118C0, 0x118A0], [0x118C1, 0x118A1], [0x118C2, 0x118A2], [0x118C3, 0x118A3], [0x118C4, 0x118A4], [0x118C5, 0x118A5], [0x118C6, 0x118A6], [0x118C7, 0x118A7], [0x118C8, 0x118A8], [0x118C9, 0x118A9], [0x118CA, 0x118AA], [0x118CB, 0x118AB], [0x118CC, 0x118AC], [0x118CD, 0x118AD], [0x118CE, 0x118AE], [0x118CF, 0x118AF], [0x118D0, 0x118B0], [0x118D1, 0x118B1], [0x118D2, 0x118B2], [0x118D3, 0x118B3], [0x118D4, 0x118B4], [0x118D5, 0x118B5], [0x118D6, 0x118B6], [0x118D7, 0x118B7], [0x118D8, 0x118B8], [0x118D9, 0x118B9], [0x118DA, 0x118BA], [0x118DB, 0x118BB], [0x118DC, 0x118BC], [0x118DD, 0x118BD], [0x118DE, 0x118BE], [0x118DF, 0x118BF], [0x16E40, 0x16E60], [0x16E41, 0x16E61], [0x16E42, 0x16E62], [0x16E43, 0x16E63], [0x16E44, 0x16E64], [0x16E45, 0x16E65], [0x16E46, 0x16E66], [0x16E47, 0x16E67], [0x16E48, 0x16E68], [0x16E49, 0x16E69], [0x16E4A, 0x16E6A], [0x16E4B, 0x16E6B], [0x16E4C, 0x16E6C], [0x16E4D, 0x16E6D], [0x16E4E, 0x16E6E], [0x16E4F, 0x16E6F], [0x16E50, 0x16E70], [0x16E51, 0x16E71], [0x16E52, 0x16E72], [0x16E53, 0x16E73], [0x16E54, 0x16E74], [0x16E55, 0x16E75], [0x16E56, 0x16E76], [0x16E57, 0x16E77], [0x16E58, 0x16E78], [0x16E59, 0x16E79], [0x16E5A, 0x16E7A], [0x16E5B, 0x16E7B], [0x16E5C, 0x16E7C], [0x16E5D, 0x16E7D], [0x16E5E, 0x16E7E], [0x16E5F, 0x16E7F], [0x16E60, 0x16E40], [0x16E61, 0x16E41], [0x16E62, 0x16E42], [0x16E63, 0x16E43], [0x16E64, 0x16E44], [0x16E65, 0x16E45], [0x16E66, 0x16E46], [0x16E67, 0x16E47], [0x16E68, 0x16E48], [0x16E69, 0x16E49], [0x16E6A, 0x16E4A], [0x16E6B, 0x16E4B], [0x16E6C, 0x16E4C], [0x16E6D, 0x16E4D], [0x16E6E, 0x16E4E], [0x16E6F, 0x16E4F], [0x16E70, 0x16E50], [0x16E71, 0x16E51], [0x16E72, 0x16E52], [0x16E73, 0x16E53], [0x16E74, 0x16E54], [0x16E75, 0x16E55], [0x16E76, 0x16E56], [0x16E77, 0x16E57], [0x16E78, 0x16E58], [0x16E79, 0x16E59], [0x16E7A, 0x16E5A], [0x16E7B, 0x16E5B], [0x16E7C, 0x16E5C], [0x16E7D, 0x16E5D], [0x16E7E, 0x16E5E], [0x16E7F, 0x16E5F], [0x1E900, 0x1E922], [0x1E901, 0x1E923], [0x1E902, 0x1E924], [0x1E903, 0x1E925], [0x1E904, 0x1E926], [0x1E905, 0x1E927], [0x1E906, 0x1E928], [0x1E907, 0x1E929], [0x1E908, 0x1E92A], [0x1E909, 0x1E92B], [0x1E90A, 0x1E92C], [0x1E90B, 0x1E92D], [0x1E90C, 0x1E92E], [0x1E90D, 0x1E92F], [0x1E90E, 0x1E930], [0x1E90F, 0x1E931], [0x1E910, 0x1E932], [0x1E911, 0x1E933], [0x1E912, 0x1E934], [0x1E913, 0x1E935], [0x1E914, 0x1E936], [0x1E915, 0x1E937], [0x1E916, 0x1E938], [0x1E917, 0x1E939], [0x1E918, 0x1E93A], [0x1E919, 0x1E93B], [0x1E91A, 0x1E93C], [0x1E91B, 0x1E93D], [0x1E91C, 0x1E93E], [0x1E91D, 0x1E93F], [0x1E91E, 0x1E940], [0x1E91F, 0x1E941], [0x1E920, 0x1E942], [0x1E921, 0x1E943], [0x1E922, 0x1E900], [0x1E923, 0x1E901], [0x1E924, 0x1E902], [0x1E925, 0x1E903], [0x1E926, 0x1E904], [0x1E927, 0x1E905], [0x1E928, 0x1E906], [0x1E929, 0x1E907], [0x1E92A, 0x1E908], [0x1E92B, 0x1E909], [0x1E92C, 0x1E90A], [0x1E92D, 0x1E90B], [0x1E92E, 0x1E90C], [0x1E92F, 0x1E90D], [0x1E930, 0x1E90E], [0x1E931, 0x1E90F], [0x1E932, 0x1E910], [0x1E933, 0x1E911], [0x1E934, 0x1E912], [0x1E935, 0x1E913], [0x1E936, 0x1E914], [0x1E937, 0x1E915], [0x1E938, 0x1E916], [0x1E939, 0x1E917], [0x1E93A, 0x1E918], [0x1E93B, 0x1E919], [0x1E93C, 0x1E91A], [0x1E93D, 0x1E91B], [0x1E93E, 0x1E91C], [0x1E93F, 0x1E91D], [0x1E940, 0x1E91E], [0x1E941, 0x1E91F], [0x1E942, 0x1E920], [0x1E943, 0x1E921]]);
  
    var characterClassEscapeSets = {};
  
    var regenerate$1 = regenerate$2.exports;
    characterClassEscapeSets.REGULAR = new Map([['d', regenerate$1().addRange(0x30, 0x39)], ['D', regenerate$1().addRange(0x0, 0x2F).addRange(0x3A, 0xFFFF)], ['s', regenerate$1(0x20, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000, 0xFEFF).addRange(0x9, 0xD).addRange(0x2000, 0x200A).addRange(0x2028, 0x2029)], ['S', regenerate$1().addRange(0x0, 0x8).addRange(0xE, 0x1F).addRange(0x21, 0x9F).addRange(0xA1, 0x167F).addRange(0x1681, 0x1FFF).addRange(0x200B, 0x2027).addRange(0x202A, 0x202E).addRange(0x2030, 0x205E).addRange(0x2060, 0x2FFF).addRange(0x3001, 0xFEFE).addRange(0xFF00, 0xFFFF)], ['w', regenerate$1(0x5F).addRange(0x30, 0x39).addRange(0x41, 0x5A).addRange(0x61, 0x7A)], ['W', regenerate$1(0x60).addRange(0x0, 0x2F).addRange(0x3A, 0x40).addRange(0x5B, 0x5E).addRange(0x7B, 0xFFFF)]]);
    characterClassEscapeSets.UNICODE = new Map([['d', regenerate$1().addRange(0x30, 0x39)], ['D', regenerate$1().addRange(0x0, 0x2F).addRange(0x3A, 0x10FFFF)], ['s', regenerate$1(0x20, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000, 0xFEFF).addRange(0x9, 0xD).addRange(0x2000, 0x200A).addRange(0x2028, 0x2029)], ['S', regenerate$1().addRange(0x0, 0x8).addRange(0xE, 0x1F).addRange(0x21, 0x9F).addRange(0xA1, 0x167F).addRange(0x1681, 0x1FFF).addRange(0x200B, 0x2027).addRange(0x202A, 0x202E).addRange(0x2030, 0x205E).addRange(0x2060, 0x2FFF).addRange(0x3001, 0xFEFE).addRange(0xFF00, 0x10FFFF)], ['w', regenerate$1(0x5F).addRange(0x30, 0x39).addRange(0x41, 0x5A).addRange(0x61, 0x7A)], ['W', regenerate$1(0x60).addRange(0x0, 0x2F).addRange(0x3A, 0x40).addRange(0x5B, 0x5E).addRange(0x7B, 0x10FFFF)]]);
    characterClassEscapeSets.UNICODE_IGNORE_CASE = new Map([['d', regenerate$1().addRange(0x30, 0x39)], ['D', regenerate$1().addRange(0x0, 0x2F).addRange(0x3A, 0x10FFFF)], ['s', regenerate$1(0x20, 0xA0, 0x1680, 0x202F, 0x205F, 0x3000, 0xFEFF).addRange(0x9, 0xD).addRange(0x2000, 0x200A).addRange(0x2028, 0x2029)], ['S', regenerate$1().addRange(0x0, 0x8).addRange(0xE, 0x1F).addRange(0x21, 0x9F).addRange(0xA1, 0x167F).addRange(0x1681, 0x1FFF).addRange(0x200B, 0x2027).addRange(0x202A, 0x202E).addRange(0x2030, 0x205E).addRange(0x2060, 0x2FFF).addRange(0x3001, 0xFEFE).addRange(0xFF00, 0x10FFFF)], ['w', regenerate$1(0x5F, 0x17F, 0x212A).addRange(0x30, 0x39).addRange(0x41, 0x5A).addRange(0x61, 0x7A)], ['W', regenerate$1(0x60).addRange(0x0, 0x2F).addRange(0x3A, 0x40).addRange(0x5B, 0x5E).addRange(0x7B, 0x17E).addRange(0x180, 0x2129).addRange(0x212B, 0x10FFFF)]]);
  
    var generate = regjsgen.exports.generate;
    var parse = parser.exports.parse;
    var regenerate = regenerate$2.exports;
    var unicodeMatchProperty = unicodeMatchPropertyEcmascript;
    var unicodeMatchPropertyValue = unicodeMatchPropertyValueEcmascript;
    var iuMappings = iuMappings$1;
    var ESCAPE_SETS = characterClassEscapeSets;
    function flatMap$1(array, callback) {
      var result = [];
      array.forEach(function (item) {
        var res = callback(item);
        if (Array.isArray(res)) {
          result.push.apply(result, res);
        } else {
          result.push(res);
        }
      });
      return result;
    }
    var SPECIAL_CHARS = /([\\^$.*+?()[\]{}|])/g;
    var UNICODE_SET = regenerate().addRange(0x0, 0x10FFFF);
    var ASTRAL_SET = regenerate().addRange(0x10000, 0x10FFFF);
    var NEWLINE_SET = regenerate().add(0x000A, 0x000D, 0x2028, 0x2029);
    var DOT_SET_UNICODE = UNICODE_SET.clone().remove(NEWLINE_SET);
    var getCharacterClassEscapeSet = function getCharacterClassEscapeSet(character, unicode, ignoreCase) {
      if (unicode) {
        if (ignoreCase) {
          return ESCAPE_SETS.UNICODE_IGNORE_CASE.get(character);
        }
        return ESCAPE_SETS.UNICODE.get(character);
      }
      return ESCAPE_SETS.REGULAR.get(character);
    };
    var getUnicodeDotSet = function getUnicodeDotSet(dotAll) {
      return dotAll ? UNICODE_SET : DOT_SET_UNICODE;
    };
    var getUnicodePropertyValueSet = function getUnicodePropertyValueSet(property, value) {
      var path = value ? property + "/" + value : "Binary_Property/" + property;
      try {
        return createCommonjsRequire("/node_modules/regexpu-core")("regenerate-unicode-properties/" + path + ".js");
      } catch (exception) {
        throw new Error("Failed to recognize value `" + value + "` for property " + ("`" + property + "`."));
      }
    };
    var handleLoneUnicodePropertyNameOrValue = function handleLoneUnicodePropertyNameOrValue(value) {
      try {
        var _property = 'General_Category';
        var category = unicodeMatchPropertyValue(_property, value);
        return getUnicodePropertyValueSet(_property, category);
      } catch (exception) {}
      try {
        return getUnicodePropertyValueSet('Property_of_Strings', value);
      } catch (exception) {}
      var property = unicodeMatchProperty(value);
      return getUnicodePropertyValueSet(property);
    };
    var getUnicodePropertyEscapeSet = function getUnicodePropertyEscapeSet(value, isNegative) {
      var parts = value.split('=');
      var firstPart = parts[0];
      var set;
      if (parts.length == 1) {
        set = handleLoneUnicodePropertyNameOrValue(firstPart);
      } else {
        var property = unicodeMatchProperty(firstPart);
        var _value = unicodeMatchPropertyValue(property, parts[1]);
        set = getUnicodePropertyValueSet(property, _value);
      }
      if (isNegative) {
        if (set.strings) {
          throw new Error('Cannot negate Unicode property of strings');
        }
        return {
          characters: UNICODE_SET.clone().remove(set.characters),
          strings: new Set()
        };
      }
      return {
        characters: set.characters.clone(),
        strings: set.strings ? new Set(set.strings.map(function (str) {
          return str.replace(SPECIAL_CHARS, '\\$1');
        })) : new Set()
      };
    };
    var getUnicodePropertyEscapeCharacterClassData = function getUnicodePropertyEscapeCharacterClassData(property, isNegative) {
      var set = getUnicodePropertyEscapeSet(property, isNegative);
      var data = getCharacterClassEmptyData();
      data.singleChars = set.characters;
      if (set.strings.size > 0) {
        data.longStrings = set.strings;
        data.maybeIncludesStrings = true;
      }
      return data;
    };
    function configNeedCaseFoldAscii() {
      return !!config.modifiersData.i;
    }
    function configNeedCaseFoldUnicode() {
      if (config.modifiersData.i === false) return false;
      if (!config.transform.unicodeFlag) return false;
      return Boolean(config.modifiersData.i || config.flags.ignoreCase);
    }
    regenerate.prototype.iuAddRange = function (min, max) {
      var $this = this;
      do {
        var folded = caseFold(min, configNeedCaseFoldAscii(), configNeedCaseFoldUnicode());
        if (folded) {
          $this.add(folded);
        }
      } while (++min <= max);
      return $this;
    };
    regenerate.prototype.iuRemoveRange = function (min, max) {
      var $this = this;
      do {
        var folded = caseFold(min, configNeedCaseFoldAscii(), configNeedCaseFoldUnicode());
        if (folded) {
          $this.remove(folded);
        }
      } while (++min <= max);
      return $this;
    };
    var update = function update(item, pattern) {
      var tree = parse(pattern, config.useUnicodeFlag ? 'u' : '', {
        lookbehind: true,
        namedGroups: true,
        unicodePropertyEscape: true,
        unicodeSet: true,
        modifiers: true
      });
      switch (tree.type) {
        case 'characterClass':
        case 'group':
        case 'value':
          break;
        default:
          tree = wrap(tree, pattern);
      }
      Object.assign(item, tree);
    };
    var wrap = function wrap(tree, pattern) {
      return {
        'type': 'group',
        'behavior': 'ignore',
        'body': [tree],
        'raw': "(?:" + pattern + ")"
      };
    };
    var caseFold = function caseFold(codePoint, includeAscii, includeUnicode) {
      var folded = (includeUnicode ? iuMappings.get(codePoint) : undefined) || [];
      if (typeof folded === 'number') folded = [folded];
      if (includeAscii) {
        if (codePoint >= 0x41 && codePoint <= 0x5A) {
          folded.push(codePoint + 0x20);
        } else if (codePoint >= 0x61 && codePoint <= 0x7A) {
          folded.push(codePoint - 0x20);
        }
      }
      return folded.length == 0 ? false : folded;
    };
    var buildHandler = function buildHandler(action) {
      switch (action) {
        case 'union':
          return {
            single: function single(data, cp) {
              data.singleChars.add(cp);
            },
            regSet: function regSet(data, set2) {
              data.singleChars.add(set2);
            },
            range: function range(data, start, end) {
              data.singleChars.addRange(start, end);
            },
            iuRange: function iuRange(data, start, end) {
              data.singleChars.iuAddRange(start, end);
            },
            nested: function nested(data, nestedData) {
              data.singleChars.add(nestedData.singleChars);
              for (var _iterator = _createForOfIteratorHelperLoose(nestedData.longStrings), _step; !(_step = _iterator()).done;) {
                var str = _step.value;
                data.longStrings.add(str);
              }
              if (nestedData.maybeIncludesStrings) data.maybeIncludesStrings = true;
            }
          };
        case 'union-negative':
          {
            var regSet = function regSet(data, set2) {
              data.singleChars = UNICODE_SET.clone().remove(set2).add(data.singleChars);
            };
            return {
              single: function single(data, cp) {
                var unicode = UNICODE_SET.clone();
                data.singleChars = data.singleChars.contains(cp) ? unicode : unicode.remove(cp);
              },
              regSet: regSet,
              range: function range(data, start, end) {
                data.singleChars = UNICODE_SET.clone().removeRange(start, end).add(data.singleChars);
              },
              iuRange: function iuRange(data, start, end) {
                data.singleChars = UNICODE_SET.clone().iuRemoveRange(start, end).add(data.singleChars);
              },
              nested: function nested(data, nestedData) {
                regSet(data, nestedData.singleChars);
                if (nestedData.maybeIncludesStrings) throw new Error('ASSERTION ERROR');
              }
            };
          }
        case 'intersection':
          {
            var _regSet = function _regSet(data, set2) {
              if (data.first) data.singleChars = set2;else data.singleChars.intersection(set2);
            };
            return {
              single: function single(data, cp) {
                data.singleChars = data.first || data.singleChars.contains(cp) ? regenerate(cp) : regenerate();
                data.longStrings.clear();
                data.maybeIncludesStrings = false;
              },
              regSet: function regSet(data, set) {
                _regSet(data, set);
                data.longStrings.clear();
                data.maybeIncludesStrings = false;
              },
              range: function range(data, start, end) {
                if (data.first) data.singleChars.addRange(start, end);else data.singleChars.intersection(regenerate().addRange(start, end));
                data.longStrings.clear();
                data.maybeIncludesStrings = false;
              },
              iuRange: function iuRange(data, start, end) {
                if (data.first) data.singleChars.iuAddRange(start, end);else data.singleChars.intersection(regenerate().iuAddRange(start, end));
                data.longStrings.clear();
                data.maybeIncludesStrings = false;
              },
              nested: function nested(data, nestedData) {
                _regSet(data, nestedData.singleChars);
                if (data.first) {
                  data.longStrings = nestedData.longStrings;
                  data.maybeIncludesStrings = nestedData.maybeIncludesStrings;
                } else {
                  for (var _iterator2 = _createForOfIteratorHelperLoose(data.longStrings), _step2; !(_step2 = _iterator2()).done;) {
                    var str = _step2.value;
                    if (!nestedData.longStrings.has(str)) data.longStrings["delete"](str);
                  }
                  if (!nestedData.maybeIncludesStrings) data.maybeIncludesStrings = false;
                }
              }
            };
          }
        case 'subtraction':
          {
            var _regSet2 = function _regSet2(data, set2) {
              if (data.first) data.singleChars.add(set2);else data.singleChars.remove(set2);
            };
            return {
              single: function single(data, cp) {
                if (data.first) data.singleChars.add(cp);else data.singleChars.remove(cp);
              },
              regSet: _regSet2,
              range: function range(data, start, end) {
                if (data.first) data.singleChars.addRange(start, end);else data.singleChars.removeRange(start, end);
              },
              iuRange: function iuRange(data, start, end) {
                if (data.first) data.singleChars.iuAddRange(start, end);else data.singleChars.iuRemoveRange(start, end);
              },
              nested: function nested(data, nestedData) {
                _regSet2(data, nestedData.singleChars);
                if (data.first) {
                  data.longStrings = nestedData.longStrings;
                  data.maybeIncludesStrings = nestedData.maybeIncludesStrings;
                } else {
                  for (var _iterator3 = _createForOfIteratorHelperLoose(data.longStrings), _step3; !(_step3 = _iterator3()).done;) {
                    var str = _step3.value;
                    if (nestedData.longStrings.has(str)) data.longStrings["delete"](str);
                  }
                }
              }
            };
          }
        default:
          throw new Error("Unknown set action: " + characterClassItem.kind);
      }
    };
    var getCharacterClassEmptyData = function getCharacterClassEmptyData() {
      return {
        transformed: config.transform.unicodeFlag,
        singleChars: regenerate(),
        longStrings: new Set(),
        hasEmptyString: false,
        first: true,
        maybeIncludesStrings: false
      };
    };
    var maybeFold = function maybeFold(codePoint) {
      var caseFoldAscii = configNeedCaseFoldAscii();
      var caseFoldUnicode = configNeedCaseFoldUnicode();
      if (caseFoldAscii || caseFoldUnicode) {
        var folded = caseFold(codePoint, caseFoldAscii, caseFoldUnicode);
        if (folded) {
          return [codePoint, folded];
        }
      }
      return [codePoint];
    };
    var computeClassStrings = function computeClassStrings(classStrings, regenerateOptions) {
      var data = getCharacterClassEmptyData();
      var caseFoldAscii = configNeedCaseFoldAscii();
      var caseFoldUnicode = configNeedCaseFoldUnicode();
      for (var _iterator4 = _createForOfIteratorHelperLoose(classStrings.strings), _step4; !(_step4 = _iterator4()).done;) {
        var string = _step4.value;
        if (string.characters.length === 1) {
          maybeFold(string.characters[0].codePoint).forEach(function (cp) {
            data.singleChars.add(cp);
          });
        } else {
          var stringifiedString = void 0;
          if (caseFoldUnicode || caseFoldAscii) {
            stringifiedString = '';
            for (var _iterator5 = _createForOfIteratorHelperLoose(string.characters), _step5; !(_step5 = _iterator5()).done;) {
              var ch = _step5.value;
              var set = regenerate(ch.codePoint);
              var folded = maybeFold(ch.codePoint);
              if (folded) set.add(folded);
              stringifiedString += set.toString(regenerateOptions);
            }
          } else {
            stringifiedString = string.characters.map(function (ch) {
              return generate(ch);
            }).join('');
          }
          data.longStrings.add(stringifiedString);
          data.maybeIncludesStrings = true;
        }
      }
      return data;
    };
    var computeCharacterClass = function computeCharacterClass(characterClassItem, regenerateOptions) {
      var data = getCharacterClassEmptyData();
      var handlePositive;
      var handleNegative;
      switch (characterClassItem.kind) {
        case 'union':
          handlePositive = buildHandler('union');
          handleNegative = buildHandler('union-negative');
          break;
        case 'intersection':
          handlePositive = buildHandler('intersection');
          handleNegative = buildHandler('subtraction');
          break;
        case 'subtraction':
          handlePositive = buildHandler('subtraction');
          handleNegative = buildHandler('intersection');
          break;
        default:
          throw new Error("Unknown character class kind: " + characterClassItem.kind);
      }
      var caseFoldAscii = configNeedCaseFoldAscii();
      var caseFoldUnicode = configNeedCaseFoldUnicode();
      for (var _iterator6 = _createForOfIteratorHelperLoose(characterClassItem.body), _step6; !(_step6 = _iterator6()).done;) {
        var item = _step6.value;
        switch (item.type) {
          case 'value':
            maybeFold(item.codePoint).forEach(function (cp) {
              handlePositive.single(data, cp);
            });
            break;
          case 'characterClassRange':
            var min = item.min.codePoint;
            var max = item.max.codePoint;
            handlePositive.range(data, min, max);
            if (caseFoldAscii || caseFoldUnicode) {
              handlePositive.iuRange(data, min, max);
              data.transformed = true;
            }
            break;
          case 'characterClassEscape':
            handlePositive.regSet(data, getCharacterClassEscapeSet(item.value, config.flags.unicode, config.flags.ignoreCase));
            break;
          case 'unicodePropertyEscape':
            var nestedData = getUnicodePropertyEscapeCharacterClassData(item.value, item.negative);
            handlePositive.nested(data, nestedData);
            data.transformed = data.transformed || config.transform.unicodePropertyEscapes || config.transform.unicodeSetsFlag && nestedData.maybeIncludesStrings;
            break;
          case 'characterClass':
            var handler = item.negative ? handleNegative : handlePositive;
            var res = computeCharacterClass(item, regenerateOptions);
            handler.nested(data, res);
            data.transformed = true;
            break;
          case 'classStrings':
            handlePositive.nested(data, computeClassStrings(item, regenerateOptions));
            data.transformed = true;
            break;
          default:
            throw new Error("Unknown term type: " + item.type);
        }
        data.first = false;
      }
      if (characterClassItem.negative && data.maybeIncludesStrings) {
        throw new SyntaxError('Cannot negate set containing strings');
      }
      return data;
    };
    var processCharacterClass = function processCharacterClass(characterClassItem, regenerateOptions, computed) {
      if (computed === void 0) {
        computed = computeCharacterClass(characterClassItem, regenerateOptions);
      }
      var negative = characterClassItem.negative;
      var _computed = computed,
        singleChars = _computed.singleChars,
        transformed = _computed.transformed,
        longStrings = _computed.longStrings;
      if (transformed) {
        var setStr = singleChars.toString(regenerateOptions);
        if (negative) {
          if (config.useUnicodeFlag) {
            update(characterClassItem, "[^" + (setStr[0] === '[' ? setStr.slice(1, -1) : setStr) + "]");
          } else {
            if (config.flags.unicode) {
              if (config.flags.ignoreCase) {
                var astralCharsSet = singleChars.clone().intersection(ASTRAL_SET);
                var surrogateOrBMPSetStr = singleChars.clone().remove(astralCharsSet).addRange(0xd800, 0xdfff).toString({
                  bmpOnly: true
                });
                var astralNegativeSetStr = ASTRAL_SET.clone().remove(astralCharsSet).toString(regenerateOptions);
                update(characterClassItem, "(?!" + surrogateOrBMPSetStr + ")[\\s\\S]|" + astralNegativeSetStr);
              } else {
                update(characterClassItem, UNICODE_SET.clone().remove(singleChars).toString(regenerateOptions));
              }
            } else {
              update(characterClassItem, "(?!" + setStr + ")[\\s\\S]");
            }
          }
        } else {
          var hasEmptyString = longStrings.has('');
          var pieces = Array.from(longStrings).sort(function (a, b) {
            return b.length - a.length;
          });
          if (setStr !== '[]' || longStrings.size === 0) {
            pieces.splice(pieces.length - (hasEmptyString ? 1 : 0), 0, setStr);
          }
          update(characterClassItem, pieces.join('|'));
        }
      }
      return characterClassItem;
    };
    var assertNoUnmatchedReferences = function assertNoUnmatchedReferences(groups) {
      var unmatchedReferencesNames = Object.keys(groups.unmatchedReferences);
      if (unmatchedReferencesNames.length > 0) {
        throw new Error("Unknown group names: " + unmatchedReferencesNames);
      }
    };
    var processModifiers = function processModifiers(item, regenerateOptions, groups) {
      var enabling = item.modifierFlags.enabling;
      var disabling = item.modifierFlags.disabling;
      delete item.modifierFlags;
      item.behavior = 'ignore';
      var oldData = Object.assign({}, config.modifiersData);
      enabling.split('').forEach(function (flag) {
        config.modifiersData[flag] = true;
      });
      disabling.split('').forEach(function (flag) {
        config.modifiersData[flag] = false;
      });
      item.body = item.body.map(function (term) {
        return processTerm(term, regenerateOptions, groups);
      });
      config.modifiersData = oldData;
      return item;
    };
    var processTerm = function processTerm(item, regenerateOptions, groups) {
      switch (item.type) {
        case 'dot':
          if (config.transform.unicodeFlag) {
            update(item, getUnicodeDotSet(config.flags.dotAll || config.modifiersData.s).toString(regenerateOptions));
          } else if (config.transform.dotAllFlag || config.modifiersData.s) {
            update(item, '[\\s\\S]');
          }
          break;
        case 'characterClass':
          item = processCharacterClass(item, regenerateOptions);
          break;
        case 'unicodePropertyEscape':
          var data = getUnicodePropertyEscapeCharacterClassData(item.value, item.negative);
          if (data.maybeIncludesStrings) {
            if (!config.flags.unicodeSets) {
              throw new Error('Properties of strings are only supported when using the unicodeSets (v) flag.');
            }
            if (config.transform.unicodeSetsFlag) {
              data.transformed = true;
              item = processCharacterClass(item, regenerateOptions, data);
            }
          } else if (config.transform.unicodePropertyEscapes) {
            update(item, data.singleChars.toString(regenerateOptions));
          }
          break;
        case 'characterClassEscape':
          if (config.transform.unicodeFlag) {
            update(item, getCharacterClassEscapeSet(item.value, true, config.flags.ignoreCase).toString(regenerateOptions));
          }
          break;
        case 'group':
          if (item.behavior == 'normal') {
            groups.lastIndex++;
          }
          if (item.name) {
            var name = item.name.value;
            if (groups.namesConflicts[name]) {
              throw new Error("Group '" + name + "' has already been defined in this context.");
            }
            groups.namesConflicts[name] = true;
            if (config.transform.namedGroups) {
              delete item.name;
            }
            var index = groups.lastIndex;
            if (!groups.names[name]) {
              groups.names[name] = [];
            }
            groups.names[name].push(index);
            if (groups.onNamedGroup) {
              groups.onNamedGroup.call(null, name, index);
            }
            if (groups.unmatchedReferences[name]) {
              delete groups.unmatchedReferences[name];
            }
          }
          if (item.modifierFlags && config.transform.modifiers) {
            return processModifiers(item, regenerateOptions, groups);
          }
        case 'quantifier':
          item.body = item.body.map(function (term) {
            return processTerm(term, regenerateOptions, groups);
          });
          break;
        case 'disjunction':
          var outerNamesConflicts = groups.namesConflicts;
          item.body = item.body.map(function (term) {
            groups.namesConflicts = Object.create(outerNamesConflicts);
            return processTerm(term, regenerateOptions, groups);
          });
          break;
        case 'alternative':
          item.body = flatMap$1(item.body, function (term) {
            var res = processTerm(term, regenerateOptions, groups);
            return res.type === 'alternative' ? res.body : res;
          });
          break;
        case 'value':
          var codePoint = item.codePoint;
          var set = regenerate(codePoint);
          var folded = maybeFold(codePoint);
          set.add(folded);
          update(item, set.toString(regenerateOptions));
          break;
        case 'reference':
          if (item.name) {
            var _name = item.name.value;
            var indexes = groups.names[_name];
            if (!indexes) {
              groups.unmatchedReferences[_name] = true;
            }
            if (config.transform.namedGroups) {
              if (indexes) {
                var body = indexes.map(function (index) {
                  return {
                    'type': 'reference',
                    'matchIndex': index,
                    'raw': '\\' + index
                  };
                });
                if (body.length === 1) {
                  return body[0];
                }
                return {
                  'type': 'alternative',
                  'body': body,
                  'raw': body.map(function (term) {
                    return term.raw;
                  }).join('')
                };
              }
              return {
                'type': 'group',
                'behavior': 'ignore',
                'body': [],
                'raw': '(?:)'
              };
            }
          }
          break;
        case 'anchor':
          if (config.modifiersData.m) {
            if (item.kind == 'start') {
              update(item, "(?:^|(?<=" + NEWLINE_SET.toString() + "))");
            } else if (item.kind == 'end') {
              update(item, "(?:$|(?=" + NEWLINE_SET.toString() + "))");
            }
          }
        case 'empty':
          break;
        default:
          throw new Error("Unknown term type: " + item.type);
      }
      return item;
    };
    var config = {
      'flags': {
        'ignoreCase': false,
        'unicode': false,
        'unicodeSets': false,
        'dotAll': false,
        'multiline': false
      },
      'transform': {
        'dotAllFlag': false,
        'unicodeFlag': false,
        'unicodeSetsFlag': false,
        'unicodePropertyEscapes': false,
        'namedGroups': false,
        'modifiers': false
      },
      'modifiersData': {
        'i': undefined,
        's': undefined,
        'm': undefined
      },
      get useUnicodeFlag() {
        return (this.flags.unicode || this.flags.unicodeSets) && !this.transform.unicodeFlag;
      }
    };
    var validateOptions = function validateOptions(options) {
      if (!options) return;
      for (var _i = 0, _Object$keys = Object.keys(options); _i < _Object$keys.length; _i++) {
        var key = _Object$keys[_i];
        var value = options[key];
        switch (key) {
          case 'dotAllFlag':
          case 'unicodeFlag':
          case 'unicodePropertyEscapes':
          case 'namedGroups':
            if (value != null && value !== false && value !== 'transform') {
              throw new Error("." + key + " must be false (default) or 'transform'.");
            }
            break;
          case 'modifiers':
          case 'unicodeSetsFlag':
            if (value != null && value !== false && value !== 'parse' && value !== 'transform') {
              throw new Error("." + key + " must be false (default), 'parse' or 'transform'.");
            }
            break;
          case 'onNamedGroup':
          case 'onNewFlags':
            if (value != null && typeof value !== 'function') {
              throw new Error("." + key + " must be a function.");
            }
            break;
          default:
            throw new Error("." + key + " is not a valid regexpu-core option.");
        }
      }
    };
    var hasFlag = function hasFlag(flags, flag) {
      return flags ? flags.includes(flag) : false;
    };
    var transform$2 = function transform(options, name) {
      return options ? options[name] === 'transform' : false;
    };
    var rewritePattern = function rewritePattern(pattern, flags, options) {
      validateOptions(options);
      config.flags.unicode = hasFlag(flags, 'u');
      config.flags.unicodeSets = hasFlag(flags, 'v');
      config.flags.ignoreCase = hasFlag(flags, 'i');
      config.flags.dotAll = hasFlag(flags, 's');
      config.flags.multiline = hasFlag(flags, 'm');
      config.transform.dotAllFlag = config.flags.dotAll && transform$2(options, 'dotAllFlag');
      config.transform.unicodeFlag = (config.flags.unicode || config.flags.unicodeSets) && transform$2(options, 'unicodeFlag');
      config.transform.unicodeSetsFlag = config.flags.unicodeSets && transform$2(options, 'unicodeSetsFlag');
      config.transform.unicodePropertyEscapes = config.flags.unicode && (transform$2(options, 'unicodeFlag') || transform$2(options, 'unicodePropertyEscapes'));
      config.transform.namedGroups = transform$2(options, 'namedGroups');
      config.transform.modifiers = transform$2(options, 'modifiers');
      config.modifiersData.i = undefined;
      config.modifiersData.s = undefined;
      config.modifiersData.m = undefined;
      var regjsparserFeatures = {
        'unicodeSet': Boolean(options && options.unicodeSetsFlag),
        'modifiers': Boolean(options && options.modifiers),
        'unicodePropertyEscape': true,
        'namedGroups': true,
        'lookbehind': true
      };
      var regenerateOptions = {
        'hasUnicodeFlag': config.useUnicodeFlag,
        'bmpOnly': !config.flags.unicode
      };
      var groups = {
        'onNamedGroup': options && options.onNamedGroup,
        'lastIndex': 0,
        'names': Object.create(null),
        'namesConflicts': Object.create(null),
        'unmatchedReferences': Object.create(null)
      };
      var tree = parse(pattern, flags, regjsparserFeatures);
      if (config.transform.modifiers) {
        if (/\(\?[a-z]*-[a-z]+:/.test(pattern)) {
          var allDisabledModifiers = Object.create(null);
          var itemStack = [tree];
          var node;
          while (node = itemStack.pop(), node != undefined) {
            if (Array.isArray(node)) {
              Array.prototype.push.apply(itemStack, node);
            } else if (typeof node == 'object' && node != null) {
              for (var _i2 = 0, _Object$keys2 = Object.keys(node); _i2 < _Object$keys2.length; _i2++) {
                var key = _Object$keys2[_i2];
                var value = node[key];
                if (key == 'modifierFlags') {
                  if (value.disabling.length > 0) {
                    value.disabling.split('').forEach(function (flag) {
                      allDisabledModifiers[flag] = true;
                    });
                  }
                } else if (typeof value == 'object' && value != null) {
                  itemStack.push(value);
                }
              }
            }
          }
          for (var _i3 = 0, _Object$keys3 = Object.keys(allDisabledModifiers); _i3 < _Object$keys3.length; _i3++) {
            var flag = _Object$keys3[_i3];
            config.modifiersData[flag] = true;
          }
        }
      }
      processTerm(tree, regenerateOptions, groups);
      assertNoUnmatchedReferences(groups);
      var onNewFlags = options && options.onNewFlags;
      if (onNewFlags) {
        var newFlags = flags.split('').filter(function (flag) {
          return !config.modifiersData[flag];
        }).join('');
        if (config.transform.unicodeSetsFlag) {
          newFlags = newFlags.replace('v', 'u');
        }
        if (config.transform.unicodeFlag) {
          newFlags = newFlags.replace('u', '');
        }
        if (config.transform.dotAllFlag === 'transform') {
          newFlags = newFlags.replace('s', '');
        }
        onNewFlags(newFlags);
      }
      return generate(tree);
    };
    var rewritePattern_1 = rewritePattern;
  
    function bool$2(value) {
      if (value == null) return false;
      return value && value !== "false" && value !== "0";
    }
    var semver$8 = bool$2(browser$1$1.env["BABEL_8_BREAKING"]) ? requireSemverBABEL_8_BREAKINGTrue() : requireSemver();
  
    var FEATURES = Object.freeze({
      unicodeFlag: 1 << 0,
      dotAllFlag: 1 << 1,
      unicodePropertyEscape: 1 << 2,
      namedCaptureGroups: 1 << 3,
      unicodeSetsFlag_syntax: 1 << 4,
      unicodeSetsFlag: 1 << 5,
      duplicateNamedCaptureGroups: 1 << 6,
      modifiers: 1 << 7
    });
    var featuresKey = "@babel/plugin-regexp-features/featuresKey";
    var runtimeKey = "@babel/plugin-regexp-features/runtimeKey";
    function enableFeature(features, feature) {
      return features | feature;
    }
    function hasFeature(features, feature) {
      return !!(features & feature);
    }
  
    function generateRegexpuOptions(pattern, toTransform) {
      var feat = function feat(name, ok) {
        if (ok === void 0) {
          ok = "transform";
        }
        return hasFeature(toTransform, FEATURES[name]) ? ok : false;
      };
      var featDuplicateNamedGroups = function featDuplicateNamedGroups() {
        if (!feat("duplicateNamedCaptureGroups")) return false;
        var regex = /\(\?<([^>]+)>/g;
        var seen = new Set();
        for (var match; match = regex.exec(pattern); seen.add(match[1])) {
          if (seen.has(match[1])) return "transform";
        }
        return false;
      };
      return {
        unicodeFlag: feat("unicodeFlag"),
        unicodeSetsFlag: feat("unicodeSetsFlag") || feat("unicodeSetsFlag_syntax", "parse"),
        dotAllFlag: feat("dotAllFlag"),
        unicodePropertyEscapes: feat("unicodePropertyEscape"),
        namedGroups: feat("namedCaptureGroups") || featDuplicateNamedGroups(),
        onNamedGroup: function onNamedGroup() {},
        modifiers: feat("modifiers")
      };
    }
    function canSkipRegexpu(node, options) {
      var flags = node.flags,
        pattern = node.pattern;
      if (flags.includes("v")) {
        if (options.unicodeSetsFlag === "transform") return false;
      }
      if (flags.includes("u")) {
        if (options.unicodeFlag === "transform") return false;
        if (options.unicodePropertyEscapes === "transform" && /\\[pP]{/.test(pattern)) {
          return false;
        }
      }
      if (flags.includes("s")) {
        if (options.dotAllFlag === "transform") return false;
      }
      if (options.namedGroups === "transform" && /\(\?<(?![=!])/.test(pattern)) {
        return false;
      }
      if (options.modifiers === "transform" && /\(\?[\w-]+:/.test(pattern)) {
        return false;
      }
      return true;
    }
    function transformFlags(regexpuOptions, flags) {
      if (regexpuOptions.unicodeSetsFlag === "transform") {
        flags = flags.replace("v", "u");
      }
      if (regexpuOptions.unicodeFlag === "transform") {
        flags = flags.replace("u", "");
      }
      if (regexpuOptions.dotAllFlag === "transform") {
        flags = flags.replace("s", "");
      }
      return flags;
    }
  
    var versionKey = "@babel/plugin-regexp-features/version";
    function createRegExpFeaturePlugin(_ref) {
      var name = _ref.name,
        feature = _ref.feature,
        _ref$options = _ref.options,
        options = _ref$options === void 0 ? {} : _ref$options,
        _ref$manipulateOption = _ref.manipulateOptions,
        manipulateOptions = _ref$manipulateOption === void 0 ? function () {} : _ref$manipulateOption;
      return {
        name: name,
        manipulateOptions: manipulateOptions,
        pre: function pre() {
          var _file$get;
          var file = this.file;
          var features = (_file$get = file.get(featuresKey)) != null ? _file$get : 0;
          var newFeatures = enableFeature(features, FEATURES[feature]);
          var useUnicodeFlag = options.useUnicodeFlag,
            runtime = options.runtime;
          if (useUnicodeFlag === false) {
            newFeatures = enableFeature(newFeatures, FEATURES.unicodeFlag);
          }
          if (newFeatures !== features) {
            file.set(featuresKey, newFeatures);
          }
          if (runtime !== undefined) {
            if (file.has(runtimeKey) && file.get(runtimeKey) !== runtime && hasFeature(newFeatures, FEATURES.duplicateNamedCaptureGroups)) {
              throw new Error("The 'runtime' option must be the same for " + "'@babel/plugin-transform-named-capturing-groups-regex' and " + "'@babel/plugin-proposal-duplicate-named-capturing-groups-regex'.");
            }
            if (feature === "namedCaptureGroups") {
              if (!runtime || !file.has(runtimeKey)) file.set(runtimeKey, runtime);
            } else {
              file.set(runtimeKey, runtime);
            }
          }
          {
            if (typeof file.get(versionKey) === "number") {
              file.set(versionKey, "7.21.8");
              return;
            }
          }
          if (!file.get(versionKey) || semver$8.lt(file.get(versionKey), "7.21.8")) {
            file.set(versionKey, "7.21.8");
          }
        },
        visitor: {
          RegExpLiteral: function RegExpLiteral(path) {
            var _file$get2, _newFlags;
            var node = path.node;
            var file = this.file;
            var features = file.get(featuresKey);
            var runtime = (_file$get2 = file.get(runtimeKey)) != null ? _file$get2 : true;
            var regexpuOptions = generateRegexpuOptions(node.pattern, features);
            if (canSkipRegexpu(node, regexpuOptions)) {
              return;
            }
            var namedCaptureGroups = {
              __proto__: null
            };
            if (regexpuOptions.namedGroups === "transform") {
              regexpuOptions.onNamedGroup = function (name, index) {
                var prev = namedCaptureGroups[name];
                if (typeof prev === "number") {
                  namedCaptureGroups[name] = [prev, index];
                } else if (Array.isArray(prev)) {
                  prev.push(index);
                } else {
                  namedCaptureGroups[name] = index;
                }
              };
            }
            var newFlags;
            if (regexpuOptions.modifiers === "transform") {
              regexpuOptions.onNewFlags = function (flags) {
                newFlags = flags;
              };
            }
            node.pattern = rewritePattern_1(node.pattern, node.flags, regexpuOptions);
            if (regexpuOptions.namedGroups === "transform" && Object.keys(namedCaptureGroups).length > 0 && runtime && !isRegExpTest(path)) {
              var call = callExpression$e(this.addHelper("wrapRegExp"), [node, valueToNode$1(namedCaptureGroups)]);
              annotateAsPure(call);
              path.replaceWith(call);
            }
            node.flags = transformFlags(regexpuOptions, (_newFlags = newFlags) != null ? _newFlags : node.flags);
          }
        }
      };
    }
    function isRegExpTest(path) {
      return path.parentPath.isMemberExpression({
        object: path.node,
        computed: false
      }) && path.parentPath.get("property").isIdentifier({
        name: "test"
      });
    }
  
    var proposalDuplicateNamedCapturingGroupsRegex = declare(function (api, options) {
      api.assertVersion("^7.19.0");
      var runtime = options.runtime;
      if (runtime !== undefined && typeof runtime !== "boolean") {
        throw new Error("The 'runtime' option must be boolean");
      }
      return createRegExpFeaturePlugin({
        name: "proposal-duplicate-named-capturing-groups-regex",
        feature: "duplicateNamedCaptureGroups",
        options: {
          runtime: runtime
        }
      });
    });
  
    var _syntaxDynamicImport = makeNoopPlugin();
  
    var SUPPORTED_MODULES = ["commonjs", "amd", "systemjs"];
    var MODULES_NOT_FOUND = "@babel/plugin-proposal-dynamic-import depends on a modules\ntransform plugin. Supported plugins are:\n - @babel/plugin-transform-modules-commonjs ^7.4.0\n - @babel/plugin-transform-modules-amd ^7.4.0\n - @babel/plugin-transform-modules-systemjs ^7.4.0\n\nIf you are using Webpack or Rollup and thus don't want\nBabel to transpile your imports and exports, you can use\nthe @babel/plugin-syntax-dynamic-import plugin and let your\nbundler handle dynamic imports.\n";
    var proposalDynamicImport = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "proposal-dynamic-import",
        inherits: _syntaxDynamicImport["default"],
        pre: function pre() {
          this.file.set("@babel/plugin-proposal-dynamic-import", "7.18.6");
        },
        visitor: {
          Program: function Program() {
            var modules = this.file.get("@babel/plugin-transform-modules-*");
            if (!SUPPORTED_MODULES.includes(modules)) {
              throw new Error(MODULES_NOT_FOUND);
            }
          }
        }
      };
    });
  
    var proposalExportDefaultFrom = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "proposal-export-default-from",
        inherits: syntaxExportDefaultFrom,
        visitor: {
          ExportNamedDeclaration: function ExportNamedDeclaration(path) {
            var node = path.node;
            var specifiers = node.specifiers,
              source = node.source;
            if (!isExportDefaultSpecifier$1(specifiers[0])) return;
            var _specifiers$shift = specifiers.shift(),
              exported = _specifiers$shift.exported;
            if (specifiers.every(function (s) {
              return isExportSpecifier(s);
            })) {
              specifiers.unshift(exportSpecifier$2(identifier$i("default"), exported));
              return;
            }
            var nodes = [exportNamedDeclaration$2(null, [exportSpecifier$2(identifier$i("default"), exported)], cloneNode$j(source))];
            if (specifiers.length >= 1) {
              nodes.push(node);
            }
            path.replaceWithMultiple(nodes);
          }
        }
      };
    });
  
    var _syntaxExportNamespaceFrom = makeNoopPlugin();
  
    var proposalExportNamespaceFrom = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "proposal-export-namespace-from",
        inherits: _syntaxExportNamespaceFrom["default"],
        visitor: {
          ExportNamedDeclaration: function ExportNamedDeclaration(path) {
            var _exported$name;
            var node = path.node,
              scope = path.scope;
            var specifiers = node.specifiers;
            var index = isExportDefaultSpecifier$1(specifiers[0]) ? 1 : 0;
            if (!isExportNamespaceSpecifier$1(specifiers[index])) return;
            var nodes = [];
            if (index === 1) {
              nodes.push(exportNamedDeclaration$2(null, [specifiers.shift()], node.source));
            }
            var specifier = specifiers.shift();
            var exported = specifier.exported;
            var uid = scope.generateUidIdentifier((_exported$name = exported.name) != null ? _exported$name : exported.value);
            nodes.push(importDeclaration$1([importNamespaceSpecifier$1(uid)], cloneNode$j(node.source)), exportNamedDeclaration$2(null, [exportSpecifier$2(cloneNode$j(uid), exported)]));
            if (node.specifiers.length >= 1) {
              nodes.push(node);
            }
            var _path$replaceWithMult = path.replaceWithMultiple(nodes),
              _path$replaceWithMult2 = _slicedToArray(_path$replaceWithMult, 1),
              importDeclaration = _path$replaceWithMult2[0];
            path.scope.registerDeclaration(importDeclaration);
          }
        }
      };
    });
  
    var proposalFunctionBind = declare(function (api) {
      api.assertVersion(7);
      function getTempId(scope) {
        var id = scope.path.getData("functionBind");
        if (id) return cloneNode$j(id);
        id = scope.generateDeclaredUidIdentifier("context");
        return scope.path.setData("functionBind", id);
      }
      function getObject(bind) {
        if (isExpression$4(bind.object)) {
          return bind.object;
        }
        return bind.callee.object;
      }
      function getStaticContext(bind, scope) {
        var object = getObject(bind);
        return scope.isStatic(object) && (isSuper$3(object) ? thisExpression$4() : object);
      }
      function inferBindContext(bind, scope) {
        var staticContext = getStaticContext(bind, scope);
        if (staticContext) return cloneNode$j(staticContext);
        var tempId = getTempId(scope);
        if (bind.object) {
          bind.callee = sequenceExpression$7([assignmentExpression$d("=", tempId, bind.object), bind.callee]);
        } else if (isMemberExpression$8(bind.callee)) {
          bind.callee.object = assignmentExpression$d("=", tempId, bind.callee.object);
        }
        return cloneNode$j(tempId);
      }
      return {
        name: "proposal-function-bind",
        inherits: syntaxFunctionBind,
        visitor: {
          CallExpression: function CallExpression(_ref) {
            var node = _ref.node,
              scope = _ref.scope;
            var bind = node.callee;
            if (!isBindExpression(bind)) return;
            var context = inferBindContext(bind, scope);
            node.callee = memberExpression$c(bind.callee, identifier$i("call"));
            node.arguments.unshift(context);
          },
          BindExpression: function BindExpression(path) {
            var node = path.node,
              scope = path.scope;
            var context = inferBindContext(node, scope);
            path.replaceWith(callExpression$e(memberExpression$c(node.callee, identifier$i("bind")), [context]));
          }
        }
      };
    });
  
    var proposalFunctionSent = declare(function (api) {
      api.assertVersion(7);
      var isFunctionSent = function isFunctionSent(node) {
        return isIdentifier$j(node.meta, {
          name: "function"
        }) && isIdentifier$j(node.property, {
          name: "sent"
        });
      };
      var hasBeenReplaced = function hasBeenReplaced(node, sentId) {
        return isAssignmentExpression$4(node) && isIdentifier$j(node.left, {
          name: sentId
        });
      };
      var yieldVisitor = {
        Function: function Function(path) {
          path.skip();
        },
        YieldExpression: function YieldExpression(path) {
          if (!hasBeenReplaced(path.parent, this.sentId)) {
            path.replaceWith(assignmentExpression$d("=", identifier$i(this.sentId), path.node));
          }
        },
        MetaProperty: function MetaProperty(path) {
          if (isFunctionSent(path.node)) {
            path.replaceWith(identifier$i(this.sentId));
          }
        }
      };
      return {
        name: "proposal-function-sent",
        inherits: syntaxFunctionSent,
        visitor: {
          MetaProperty: function MetaProperty(path, state) {
            if (!isFunctionSent(path.node)) return;
            var fnPath = path.getFunctionParent();
            if (!fnPath.node.generator) {
              throw new Error("Parent generator function not found");
            }
            var sentId = path.scope.generateUid("function.sent");
            fnPath.traverse(yieldVisitor, {
              sentId: sentId
            });
            fnPath.node.body.body.unshift(variableDeclaration$8("let", [variableDeclarator$8(identifier$i(sentId), yieldExpression$2())]));
            wrapFunction(fnPath, state.addHelper("skipFirstGeneratorNext"));
          }
        }
      };
    });
  
    var lib$2 = {};
  
    var require$$0$5 = /*@__PURE__*/getAugmentedNamespace(pluginUtilsShim);
  
    Object.defineProperty(lib$2, "__esModule", {
      value: true
    });
    lib$2["default"] = void 0;
    var _helperPluginUtils$1 = require$$0$5;
    var _default$1 = (0, _helperPluginUtils$1.declare)(function (api) {
      api.assertVersion(7);
      return {
        name: "syntax-json-strings",
        manipulateOptions: function manipulateOptions(opts, parserOpts) {
          parserOpts.plugins.push("jsonStrings");
        }
      };
    });
    lib$2["default"] = _default$1;
  
    var proposalJsonStrings = declare(function (api) {
      api.assertVersion(7);
      var regex = /(\\*)([\u2028\u2029])/g;
      function replace(match, escapes, separator) {
        var isEscaped = escapes.length % 2 === 1;
        if (isEscaped) return match;
        return escapes + "\\u" + separator.charCodeAt(0).toString(16);
      }
      return {
        name: "proposal-json-strings",
        inherits: lib$2["default"],
        visitor: {
          "DirectiveLiteral|StringLiteral": function DirectiveLiteralStringLiteral(_ref) {
            var node = _ref.node;
            var extra = node.extra;
            if (!(extra != null && extra.raw)) return;
            extra.raw = extra.raw.replace(regex, replace);
          }
        }
      };
    });
  
    var _syntaxLogicalAssignmentOperators = makeNoopPlugin();
  
    var proposalLogicalAssignmentOperators = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "proposal-logical-assignment-operators",
        inherits: _syntaxLogicalAssignmentOperators["default"],
        visitor: {
          AssignmentExpression: function AssignmentExpression(path) {
            var node = path.node,
              scope = path.scope;
            var operator = node.operator,
              left = node.left,
              right = node.right;
            var operatorTrunc = operator.slice(0, -1);
            if (!LOGICAL_OPERATORS$3.includes(operatorTrunc)) {
              return;
            }
            var lhs = cloneNode$j(left);
            if (isMemberExpression$8(left)) {
              var object = left.object,
                property = left.property,
                computed = left.computed;
              var memo = scope.maybeGenerateMemoised(object);
              if (memo) {
                left.object = memo;
                lhs.object = assignmentExpression$d("=", cloneNode$j(memo), object);
              }
              if (computed) {
                var _memo = scope.maybeGenerateMemoised(property);
                if (_memo) {
                  left.property = _memo;
                  lhs.property = assignmentExpression$d("=", cloneNode$j(_memo), property);
                }
              }
            }
            path.replaceWith(logicalExpression$3(operatorTrunc, lhs, assignmentExpression$d("=", left, right)));
          }
        }
      };
    });
  
    var _syntaxNullishCoalescingOperator = makeNoopPlugin();
  
    var _templateObject$j;
    var proposalNullishCoalescingOperator = declare(function (api, _ref) {
      var _api$assumption;
      var _ref$loose = _ref.loose,
        loose = _ref$loose === void 0 ? false : _ref$loose;
      api.assertVersion(7);
      var noDocumentAll = (_api$assumption = api.assumption("noDocumentAll")) != null ? _api$assumption : loose;
      return {
        name: "proposal-nullish-coalescing-operator",
        inherits: _syntaxNullishCoalescingOperator["default"],
        visitor: {
          LogicalExpression: function LogicalExpression(path) {
            var node = path.node,
              scope = path.scope;
            if (node.operator !== "??") {
              return;
            }
            var ref;
            var assignment;
            if (scope.isStatic(node.left)) {
              ref = node.left;
              assignment = cloneNode$j(node.left);
            } else if (scope.path.isPattern()) {
              path.replaceWith(template$2.statement.ast(_templateObject$j || (_templateObject$j = _taggedTemplateLiteralLoose(["(() => ", ")()"])), path.node));
              return;
            } else {
              ref = scope.generateUidIdentifierBasedOnNode(node.left);
              scope.push({
                id: cloneNode$j(ref)
              });
              assignment = assignmentExpression$d("=", ref, node.left);
            }
            path.replaceWith(conditionalExpression$4(noDocumentAll ? binaryExpression$5("!=", assignment, nullLiteral$2()) : logicalExpression$3("&&", binaryExpression$5("!==", assignment, nullLiteral$2()), binaryExpression$5("!==", cloneNode$j(ref), scope.buildUndefinedNode())), cloneNode$j(ref), node.right));
          }
        }
      };
    });
  
    var _syntaxNumericSeparator = makeNoopPlugin();
  
    function remover(_ref) {
      var _extra$raw;
      var node = _ref.node;
      var extra = node.extra;
      if (extra != null && (_extra$raw = extra.raw) != null && _extra$raw.includes("_")) {
        extra.raw = extra.raw.replace(/_/g, "");
      }
    }
    var proposalNumericSeparator = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "proposal-numeric-separator",
        inherits: _syntaxNumericSeparator["default"],
        visitor: {
          NumericLiteral: remover,
          BigIntLiteral: remover
        }
      };
    });
  
    var require$$0$4 = {
        "es6.array.copy-within": {
        chrome: "45",
        opera: "32",
        edge: "12",
        firefox: "32",
        safari: "9",
        node: "4",
        deno: "1",
        ios: "9",
        samsung: "5",
        rhino: "1.7.13",
        electron: "0.31"
    },
        "es6.array.every": {
        chrome: "5",
        opera: "10.10",
        edge: "12",
        firefox: "2",
        safari: "3.1",
        node: "0.4",
        deno: "1",
        ie: "9",
        android: "4",
        ios: "6",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.array.fill": {
        chrome: "45",
        opera: "32",
        edge: "12",
        firefox: "31",
        safari: "7.1",
        node: "4",
        deno: "1",
        ios: "8",
        samsung: "5",
        rhino: "1.7.13",
        electron: "0.31"
    },
        "es6.array.filter": {
        chrome: "51",
        opera: "38",
        edge: "13",
        firefox: "48",
        safari: "10",
        node: "6.5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.2"
    },
        "es6.array.find": {
        chrome: "45",
        opera: "32",
        edge: "12",
        firefox: "25",
        safari: "7.1",
        node: "4",
        deno: "1",
        ios: "8",
        samsung: "5",
        rhino: "1.7.13",
        electron: "0.31"
    },
        "es6.array.find-index": {
        chrome: "45",
        opera: "32",
        edge: "12",
        firefox: "25",
        safari: "7.1",
        node: "4",
        deno: "1",
        ios: "8",
        samsung: "5",
        rhino: "1.7.13",
        electron: "0.31"
    },
        "es7.array.flat-map": {
        chrome: "69",
        opera: "56",
        edge: "79",
        firefox: "62",
        safari: "12",
        node: "11",
        deno: "1",
        ios: "12",
        samsung: "10",
        electron: "4.0"
    },
        "es6.array.for-each": {
        chrome: "5",
        opera: "10.10",
        edge: "12",
        firefox: "2",
        safari: "3.1",
        node: "0.4",
        deno: "1",
        ie: "9",
        android: "4",
        ios: "6",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.array.from": {
        chrome: "51",
        opera: "38",
        edge: "15",
        firefox: "36",
        safari: "10",
        node: "6.5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.2"
    },
        "es7.array.includes": {
        chrome: "47",
        opera: "34",
        edge: "14",
        firefox: "102",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "0.36"
    },
        "es6.array.index-of": {
        chrome: "5",
        opera: "10.10",
        edge: "12",
        firefox: "2",
        safari: "3.1",
        node: "0.4",
        deno: "1",
        ie: "9",
        android: "4",
        ios: "6",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.array.is-array": {
        chrome: "5",
        opera: "10.50",
        edge: "12",
        firefox: "4",
        safari: "4",
        node: "0.4",
        deno: "1",
        ie: "9",
        android: "4",
        ios: "6",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.array.iterator": {
        chrome: "66",
        opera: "53",
        edge: "12",
        firefox: "60",
        safari: "9",
        node: "10",
        deno: "1",
        ios: "9",
        samsung: "9",
        rhino: "1.7.13",
        electron: "3.0"
    },
        "es6.array.last-index-of": {
        chrome: "5",
        opera: "10.10",
        edge: "12",
        firefox: "2",
        safari: "3.1",
        node: "0.4",
        deno: "1",
        ie: "9",
        android: "4",
        ios: "6",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.array.map": {
        chrome: "51",
        opera: "38",
        edge: "13",
        firefox: "48",
        safari: "10",
        node: "6.5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.2"
    },
        "es6.array.of": {
        chrome: "45",
        opera: "32",
        edge: "12",
        firefox: "25",
        safari: "9",
        node: "4",
        deno: "1",
        ios: "9",
        samsung: "5",
        rhino: "1.7.13",
        electron: "0.31"
    },
        "es6.array.reduce": {
        chrome: "5",
        opera: "10.50",
        edge: "12",
        firefox: "3",
        safari: "4",
        node: "0.4",
        deno: "1",
        ie: "9",
        android: "4",
        ios: "6",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.array.reduce-right": {
        chrome: "5",
        opera: "10.50",
        edge: "12",
        firefox: "3",
        safari: "4",
        node: "0.4",
        deno: "1",
        ie: "9",
        android: "4",
        ios: "6",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.array.slice": {
        chrome: "51",
        opera: "38",
        edge: "13",
        firefox: "48",
        safari: "10",
        node: "6.5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.2"
    },
        "es6.array.some": {
        chrome: "5",
        opera: "10.10",
        edge: "12",
        firefox: "2",
        safari: "3.1",
        node: "0.4",
        deno: "1",
        ie: "9",
        android: "4",
        ios: "6",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.array.sort": {
        chrome: "63",
        opera: "50",
        edge: "12",
        firefox: "5",
        safari: "12",
        node: "10",
        deno: "1",
        ie: "9",
        ios: "12",
        samsung: "8",
        rhino: "1.7.13",
        electron: "3.0"
    },
        "es6.array.species": {
        chrome: "51",
        opera: "38",
        edge: "13",
        firefox: "48",
        safari: "10",
        node: "6.5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.2"
    },
        "es6.date.now": {
        chrome: "5",
        opera: "10.50",
        edge: "12",
        firefox: "2",
        safari: "4",
        node: "0.4",
        deno: "1",
        ie: "9",
        android: "4",
        ios: "6",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.date.to-iso-string": {
        chrome: "5",
        opera: "10.50",
        edge: "12",
        firefox: "3.5",
        safari: "4",
        node: "0.4",
        deno: "1",
        ie: "9",
        android: "4",
        ios: "6",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.date.to-json": {
        chrome: "5",
        opera: "12.10",
        edge: "12",
        firefox: "4",
        safari: "10",
        node: "0.4",
        deno: "1",
        ie: "9",
        android: "4",
        ios: "10",
        samsung: "1",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.date.to-primitive": {
        chrome: "47",
        opera: "34",
        edge: "15",
        firefox: "44",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "0.36"
    },
        "es6.date.to-string": {
        chrome: "5",
        opera: "10.50",
        edge: "12",
        firefox: "2",
        safari: "3.1",
        node: "0.4",
        deno: "1",
        ie: "10",
        android: "4",
        ios: "6",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.function.bind": {
        chrome: "7",
        opera: "12",
        edge: "12",
        firefox: "4",
        safari: "5.1",
        node: "0.4",
        deno: "1",
        ie: "9",
        android: "4",
        ios: "6",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.function.has-instance": {
        chrome: "51",
        opera: "38",
        edge: "15",
        firefox: "50",
        safari: "10",
        node: "6.5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.2"
    },
        "es6.function.name": {
        chrome: "5",
        opera: "10.50",
        edge: "14",
        firefox: "2",
        safari: "4",
        node: "0.4",
        deno: "1",
        android: "4",
        ios: "6",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.map": {
        chrome: "51",
        opera: "38",
        edge: "15",
        firefox: "53",
        safari: "10",
        node: "6.5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.2"
    },
        "es6.math.acosh": {
        chrome: "38",
        opera: "25",
        edge: "12",
        firefox: "25",
        safari: "7.1",
        node: "0.12",
        deno: "1",
        ios: "8",
        samsung: "3",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.math.asinh": {
        chrome: "38",
        opera: "25",
        edge: "12",
        firefox: "25",
        safari: "7.1",
        node: "0.12",
        deno: "1",
        ios: "8",
        samsung: "3",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.math.atanh": {
        chrome: "38",
        opera: "25",
        edge: "12",
        firefox: "25",
        safari: "7.1",
        node: "0.12",
        deno: "1",
        ios: "8",
        samsung: "3",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.math.cbrt": {
        chrome: "38",
        opera: "25",
        edge: "12",
        firefox: "25",
        safari: "7.1",
        node: "0.12",
        deno: "1",
        ios: "8",
        samsung: "3",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.math.clz32": {
        chrome: "38",
        opera: "25",
        edge: "12",
        firefox: "31",
        safari: "9",
        node: "0.12",
        deno: "1",
        ios: "9",
        samsung: "3",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.math.cosh": {
        chrome: "38",
        opera: "25",
        edge: "12",
        firefox: "25",
        safari: "7.1",
        node: "0.12",
        deno: "1",
        ios: "8",
        samsung: "3",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.math.expm1": {
        chrome: "38",
        opera: "25",
        edge: "12",
        firefox: "25",
        safari: "7.1",
        node: "0.12",
        deno: "1",
        ios: "8",
        samsung: "3",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.math.fround": {
        chrome: "38",
        opera: "25",
        edge: "12",
        firefox: "26",
        safari: "7.1",
        node: "0.12",
        deno: "1",
        ios: "8",
        samsung: "3",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.math.hypot": {
        chrome: "38",
        opera: "25",
        edge: "12",
        firefox: "27",
        safari: "7.1",
        node: "0.12",
        deno: "1",
        ios: "8",
        samsung: "3",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.math.imul": {
        chrome: "30",
        opera: "17",
        edge: "12",
        firefox: "23",
        safari: "7",
        node: "0.12",
        deno: "1",
        android: "4.4",
        ios: "7",
        samsung: "2",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.math.log1p": {
        chrome: "38",
        opera: "25",
        edge: "12",
        firefox: "25",
        safari: "7.1",
        node: "0.12",
        deno: "1",
        ios: "8",
        samsung: "3",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.math.log10": {
        chrome: "38",
        opera: "25",
        edge: "12",
        firefox: "25",
        safari: "7.1",
        node: "0.12",
        deno: "1",
        ios: "8",
        samsung: "3",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.math.log2": {
        chrome: "38",
        opera: "25",
        edge: "12",
        firefox: "25",
        safari: "7.1",
        node: "0.12",
        deno: "1",
        ios: "8",
        samsung: "3",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.math.sign": {
        chrome: "38",
        opera: "25",
        edge: "12",
        firefox: "25",
        safari: "9",
        node: "0.12",
        deno: "1",
        ios: "9",
        samsung: "3",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.math.sinh": {
        chrome: "38",
        opera: "25",
        edge: "12",
        firefox: "25",
        safari: "7.1",
        node: "0.12",
        deno: "1",
        ios: "8",
        samsung: "3",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.math.tanh": {
        chrome: "38",
        opera: "25",
        edge: "12",
        firefox: "25",
        safari: "7.1",
        node: "0.12",
        deno: "1",
        ios: "8",
        samsung: "3",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.math.trunc": {
        chrome: "38",
        opera: "25",
        edge: "12",
        firefox: "25",
        safari: "7.1",
        node: "0.12",
        deno: "1",
        ios: "8",
        samsung: "3",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.number.constructor": {
        chrome: "41",
        opera: "28",
        edge: "12",
        firefox: "36",
        safari: "9",
        node: "4",
        deno: "1",
        ios: "9",
        samsung: "3.4",
        rhino: "1.7.13",
        electron: "0.21"
    },
        "es6.number.epsilon": {
        chrome: "34",
        opera: "21",
        edge: "12",
        firefox: "25",
        safari: "9",
        node: "0.12",
        deno: "1",
        ios: "9",
        samsung: "2",
        rhino: "1.7.14",
        electron: "0.20"
    },
        "es6.number.is-finite": {
        chrome: "19",
        opera: "15",
        edge: "12",
        firefox: "16",
        safari: "9",
        node: "0.8",
        deno: "1",
        android: "4.1",
        ios: "9",
        samsung: "1.5",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.number.is-integer": {
        chrome: "34",
        opera: "21",
        edge: "12",
        firefox: "16",
        safari: "9",
        node: "0.12",
        deno: "1",
        ios: "9",
        samsung: "2",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.number.is-nan": {
        chrome: "19",
        opera: "15",
        edge: "12",
        firefox: "15",
        safari: "9",
        node: "0.8",
        deno: "1",
        android: "4.1",
        ios: "9",
        samsung: "1.5",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.number.is-safe-integer": {
        chrome: "34",
        opera: "21",
        edge: "12",
        firefox: "32",
        safari: "9",
        node: "0.12",
        deno: "1",
        ios: "9",
        samsung: "2",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.number.max-safe-integer": {
        chrome: "34",
        opera: "21",
        edge: "12",
        firefox: "31",
        safari: "9",
        node: "0.12",
        deno: "1",
        ios: "9",
        samsung: "2",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.number.min-safe-integer": {
        chrome: "34",
        opera: "21",
        edge: "12",
        firefox: "31",
        safari: "9",
        node: "0.12",
        deno: "1",
        ios: "9",
        samsung: "2",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.number.parse-float": {
        chrome: "34",
        opera: "21",
        edge: "12",
        firefox: "25",
        safari: "9",
        node: "0.12",
        deno: "1",
        ios: "9",
        samsung: "2",
        rhino: "1.7.14",
        electron: "0.20"
    },
        "es6.number.parse-int": {
        chrome: "34",
        opera: "21",
        edge: "12",
        firefox: "25",
        safari: "9",
        node: "0.12",
        deno: "1",
        ios: "9",
        samsung: "2",
        rhino: "1.7.14",
        electron: "0.20"
    },
        "es6.object.assign": {
        chrome: "49",
        opera: "36",
        edge: "13",
        firefox: "36",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "0.37"
    },
        "es6.object.create": {
        chrome: "5",
        opera: "12",
        edge: "12",
        firefox: "4",
        safari: "4",
        node: "0.4",
        deno: "1",
        ie: "9",
        android: "4",
        ios: "6",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es7.object.define-getter": {
        chrome: "62",
        opera: "49",
        edge: "16",
        firefox: "48",
        safari: "9",
        node: "8.10",
        deno: "1",
        ios: "9",
        samsung: "8",
        electron: "3.0"
    },
        "es7.object.define-setter": {
        chrome: "62",
        opera: "49",
        edge: "16",
        firefox: "48",
        safari: "9",
        node: "8.10",
        deno: "1",
        ios: "9",
        samsung: "8",
        electron: "3.0"
    },
        "es6.object.define-property": {
        chrome: "5",
        opera: "12",
        edge: "12",
        firefox: "4",
        safari: "5.1",
        node: "0.4",
        deno: "1",
        ie: "9",
        android: "4",
        ios: "6",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.object.define-properties": {
        chrome: "5",
        opera: "12",
        edge: "12",
        firefox: "4",
        safari: "4",
        node: "0.4",
        deno: "1",
        ie: "9",
        android: "4",
        ios: "6",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es7.object.entries": {
        chrome: "54",
        opera: "41",
        edge: "14",
        firefox: "47",
        safari: "10.1",
        node: "7",
        deno: "1",
        ios: "10.3",
        samsung: "6",
        rhino: "1.7.14",
        electron: "1.4"
    },
        "es6.object.freeze": {
        chrome: "44",
        opera: "31",
        edge: "12",
        firefox: "35",
        safari: "9",
        node: "4",
        deno: "1",
        ios: "9",
        samsung: "4",
        rhino: "1.7.13",
        electron: "0.30"
    },
        "es6.object.get-own-property-descriptor": {
        chrome: "44",
        opera: "31",
        edge: "12",
        firefox: "35",
        safari: "9",
        node: "4",
        deno: "1",
        ios: "9",
        samsung: "4",
        rhino: "1.7.13",
        electron: "0.30"
    },
        "es7.object.get-own-property-descriptors": {
        chrome: "54",
        opera: "41",
        edge: "15",
        firefox: "50",
        safari: "10.1",
        node: "7",
        deno: "1",
        ios: "10.3",
        samsung: "6",
        electron: "1.4"
    },
        "es6.object.get-own-property-names": {
        chrome: "40",
        opera: "27",
        edge: "12",
        firefox: "33",
        safari: "9",
        node: "4",
        deno: "1",
        ios: "9",
        samsung: "3.4",
        rhino: "1.7.13",
        electron: "0.21"
    },
        "es6.object.get-prototype-of": {
        chrome: "44",
        opera: "31",
        edge: "12",
        firefox: "35",
        safari: "9",
        node: "4",
        deno: "1",
        ios: "9",
        samsung: "4",
        rhino: "1.7.13",
        electron: "0.30"
    },
        "es7.object.lookup-getter": {
        chrome: "62",
        opera: "49",
        edge: "79",
        firefox: "36",
        safari: "9",
        node: "8.10",
        deno: "1",
        ios: "9",
        samsung: "8",
        electron: "3.0"
    },
        "es7.object.lookup-setter": {
        chrome: "62",
        opera: "49",
        edge: "79",
        firefox: "36",
        safari: "9",
        node: "8.10",
        deno: "1",
        ios: "9",
        samsung: "8",
        electron: "3.0"
    },
        "es6.object.prevent-extensions": {
        chrome: "44",
        opera: "31",
        edge: "12",
        firefox: "35",
        safari: "9",
        node: "4",
        deno: "1",
        ios: "9",
        samsung: "4",
        rhino: "1.7.13",
        electron: "0.30"
    },
        "es6.object.to-string": {
        chrome: "57",
        opera: "44",
        edge: "15",
        firefox: "51",
        safari: "10",
        node: "8",
        deno: "1",
        ios: "10",
        samsung: "7",
        electron: "1.7"
    },
        "es6.object.is": {
        chrome: "19",
        opera: "15",
        edge: "12",
        firefox: "22",
        safari: "9",
        node: "0.8",
        deno: "1",
        android: "4.1",
        ios: "9",
        samsung: "1.5",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.object.is-frozen": {
        chrome: "44",
        opera: "31",
        edge: "12",
        firefox: "35",
        safari: "9",
        node: "4",
        deno: "1",
        ios: "9",
        samsung: "4",
        rhino: "1.7.13",
        electron: "0.30"
    },
        "es6.object.is-sealed": {
        chrome: "44",
        opera: "31",
        edge: "12",
        firefox: "35",
        safari: "9",
        node: "4",
        deno: "1",
        ios: "9",
        samsung: "4",
        rhino: "1.7.13",
        electron: "0.30"
    },
        "es6.object.is-extensible": {
        chrome: "44",
        opera: "31",
        edge: "12",
        firefox: "35",
        safari: "9",
        node: "4",
        deno: "1",
        ios: "9",
        samsung: "4",
        rhino: "1.7.13",
        electron: "0.30"
    },
        "es6.object.keys": {
        chrome: "40",
        opera: "27",
        edge: "12",
        firefox: "35",
        safari: "9",
        node: "4",
        deno: "1",
        ios: "9",
        samsung: "3.4",
        rhino: "1.7.13",
        electron: "0.21"
    },
        "es6.object.seal": {
        chrome: "44",
        opera: "31",
        edge: "12",
        firefox: "35",
        safari: "9",
        node: "4",
        deno: "1",
        ios: "9",
        samsung: "4",
        rhino: "1.7.13",
        electron: "0.30"
    },
        "es6.object.set-prototype-of": {
        chrome: "34",
        opera: "21",
        edge: "12",
        firefox: "31",
        safari: "9",
        node: "0.12",
        deno: "1",
        ie: "11",
        ios: "9",
        samsung: "2",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es7.object.values": {
        chrome: "54",
        opera: "41",
        edge: "14",
        firefox: "47",
        safari: "10.1",
        node: "7",
        deno: "1",
        ios: "10.3",
        samsung: "6",
        rhino: "1.7.14",
        electron: "1.4"
    },
        "es6.promise": {
        chrome: "51",
        opera: "38",
        edge: "14",
        firefox: "45",
        safari: "10",
        node: "6.5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.2"
    },
        "es7.promise.finally": {
        chrome: "63",
        opera: "50",
        edge: "18",
        firefox: "58",
        safari: "11.1",
        node: "10",
        deno: "1",
        ios: "11.3",
        samsung: "8",
        electron: "3.0"
    },
        "es6.reflect.apply": {
        chrome: "49",
        opera: "36",
        edge: "12",
        firefox: "42",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "0.37"
    },
        "es6.reflect.construct": {
        chrome: "49",
        opera: "36",
        edge: "13",
        firefox: "49",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "0.37"
    },
        "es6.reflect.define-property": {
        chrome: "49",
        opera: "36",
        edge: "13",
        firefox: "42",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "0.37"
    },
        "es6.reflect.delete-property": {
        chrome: "49",
        opera: "36",
        edge: "12",
        firefox: "42",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "0.37"
    },
        "es6.reflect.get": {
        chrome: "49",
        opera: "36",
        edge: "12",
        firefox: "42",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "0.37"
    },
        "es6.reflect.get-own-property-descriptor": {
        chrome: "49",
        opera: "36",
        edge: "12",
        firefox: "42",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "0.37"
    },
        "es6.reflect.get-prototype-of": {
        chrome: "49",
        opera: "36",
        edge: "12",
        firefox: "42",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "0.37"
    },
        "es6.reflect.has": {
        chrome: "49",
        opera: "36",
        edge: "12",
        firefox: "42",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "0.37"
    },
        "es6.reflect.is-extensible": {
        chrome: "49",
        opera: "36",
        edge: "12",
        firefox: "42",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "0.37"
    },
        "es6.reflect.own-keys": {
        chrome: "49",
        opera: "36",
        edge: "12",
        firefox: "42",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "0.37"
    },
        "es6.reflect.prevent-extensions": {
        chrome: "49",
        opera: "36",
        edge: "12",
        firefox: "42",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "0.37"
    },
        "es6.reflect.set": {
        chrome: "49",
        opera: "36",
        edge: "12",
        firefox: "42",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "0.37"
    },
        "es6.reflect.set-prototype-of": {
        chrome: "49",
        opera: "36",
        edge: "12",
        firefox: "42",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "0.37"
    },
        "es6.regexp.constructor": {
        chrome: "50",
        opera: "37",
        edge: "79",
        firefox: "40",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.1"
    },
        "es6.regexp.flags": {
        chrome: "49",
        opera: "36",
        edge: "79",
        firefox: "37",
        safari: "9",
        node: "6",
        deno: "1",
        ios: "9",
        samsung: "5",
        electron: "0.37"
    },
        "es6.regexp.match": {
        chrome: "50",
        opera: "37",
        edge: "79",
        firefox: "49",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        rhino: "1.7.13",
        electron: "1.1"
    },
        "es6.regexp.replace": {
        chrome: "50",
        opera: "37",
        edge: "79",
        firefox: "49",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.1"
    },
        "es6.regexp.split": {
        chrome: "50",
        opera: "37",
        edge: "79",
        firefox: "49",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.1"
    },
        "es6.regexp.search": {
        chrome: "50",
        opera: "37",
        edge: "79",
        firefox: "49",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        rhino: "1.7.13",
        electron: "1.1"
    },
        "es6.regexp.to-string": {
        chrome: "50",
        opera: "37",
        edge: "79",
        firefox: "39",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.1"
    },
        "es6.set": {
        chrome: "51",
        opera: "38",
        edge: "15",
        firefox: "53",
        safari: "10",
        node: "6.5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.2"
    },
        "es6.symbol": {
        chrome: "51",
        opera: "38",
        edge: "79",
        firefox: "51",
        safari: "10",
        node: "6.5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.2"
    },
        "es7.symbol.async-iterator": {
        chrome: "63",
        opera: "50",
        edge: "79",
        firefox: "57",
        safari: "12",
        node: "10",
        deno: "1",
        ios: "12",
        samsung: "8",
        electron: "3.0"
    },
        "es6.string.anchor": {
        chrome: "5",
        opera: "15",
        edge: "12",
        firefox: "17",
        safari: "6",
        node: "0.4",
        deno: "1",
        android: "4",
        ios: "7",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.14",
        electron: "0.20"
    },
        "es6.string.big": {
        chrome: "5",
        opera: "15",
        edge: "12",
        firefox: "17",
        safari: "6",
        node: "0.4",
        deno: "1",
        android: "4",
        ios: "7",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.14",
        electron: "0.20"
    },
        "es6.string.blink": {
        chrome: "5",
        opera: "15",
        edge: "12",
        firefox: "17",
        safari: "6",
        node: "0.4",
        deno: "1",
        android: "4",
        ios: "7",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.14",
        electron: "0.20"
    },
        "es6.string.bold": {
        chrome: "5",
        opera: "15",
        edge: "12",
        firefox: "17",
        safari: "6",
        node: "0.4",
        deno: "1",
        android: "4",
        ios: "7",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.14",
        electron: "0.20"
    },
        "es6.string.code-point-at": {
        chrome: "41",
        opera: "28",
        edge: "12",
        firefox: "29",
        safari: "9",
        node: "4",
        deno: "1",
        ios: "9",
        samsung: "3.4",
        rhino: "1.7.13",
        electron: "0.21"
    },
        "es6.string.ends-with": {
        chrome: "41",
        opera: "28",
        edge: "12",
        firefox: "29",
        safari: "9",
        node: "4",
        deno: "1",
        ios: "9",
        samsung: "3.4",
        rhino: "1.7.13",
        electron: "0.21"
    },
        "es6.string.fixed": {
        chrome: "5",
        opera: "15",
        edge: "12",
        firefox: "17",
        safari: "6",
        node: "0.4",
        deno: "1",
        android: "4",
        ios: "7",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.14",
        electron: "0.20"
    },
        "es6.string.fontcolor": {
        chrome: "5",
        opera: "15",
        edge: "12",
        firefox: "17",
        safari: "6",
        node: "0.4",
        deno: "1",
        android: "4",
        ios: "7",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.14",
        electron: "0.20"
    },
        "es6.string.fontsize": {
        chrome: "5",
        opera: "15",
        edge: "12",
        firefox: "17",
        safari: "6",
        node: "0.4",
        deno: "1",
        android: "4",
        ios: "7",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.14",
        electron: "0.20"
    },
        "es6.string.from-code-point": {
        chrome: "41",
        opera: "28",
        edge: "12",
        firefox: "29",
        safari: "9",
        node: "4",
        deno: "1",
        ios: "9",
        samsung: "3.4",
        rhino: "1.7.13",
        electron: "0.21"
    },
        "es6.string.includes": {
        chrome: "41",
        opera: "28",
        edge: "12",
        firefox: "40",
        safari: "9",
        node: "4",
        deno: "1",
        ios: "9",
        samsung: "3.4",
        rhino: "1.7.13",
        electron: "0.21"
    },
        "es6.string.italics": {
        chrome: "5",
        opera: "15",
        edge: "12",
        firefox: "17",
        safari: "6",
        node: "0.4",
        deno: "1",
        android: "4",
        ios: "7",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.14",
        electron: "0.20"
    },
        "es6.string.iterator": {
        chrome: "38",
        opera: "25",
        edge: "12",
        firefox: "36",
        safari: "9",
        node: "0.12",
        deno: "1",
        ios: "9",
        samsung: "3",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.string.link": {
        chrome: "5",
        opera: "15",
        edge: "12",
        firefox: "17",
        safari: "6",
        node: "0.4",
        deno: "1",
        android: "4",
        ios: "7",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.14",
        electron: "0.20"
    },
        "es7.string.pad-start": {
        chrome: "57",
        opera: "44",
        edge: "15",
        firefox: "48",
        safari: "10",
        node: "8",
        deno: "1",
        ios: "10",
        samsung: "7",
        rhino: "1.7.13",
        electron: "1.7"
    },
        "es7.string.pad-end": {
        chrome: "57",
        opera: "44",
        edge: "15",
        firefox: "48",
        safari: "10",
        node: "8",
        deno: "1",
        ios: "10",
        samsung: "7",
        rhino: "1.7.13",
        electron: "1.7"
    },
        "es6.string.raw": {
        chrome: "41",
        opera: "28",
        edge: "12",
        firefox: "34",
        safari: "9",
        node: "4",
        deno: "1",
        ios: "9",
        samsung: "3.4",
        rhino: "1.7.14",
        electron: "0.21"
    },
        "es6.string.repeat": {
        chrome: "41",
        opera: "28",
        edge: "12",
        firefox: "24",
        safari: "9",
        node: "4",
        deno: "1",
        ios: "9",
        samsung: "3.4",
        rhino: "1.7.13",
        electron: "0.21"
    },
        "es6.string.small": {
        chrome: "5",
        opera: "15",
        edge: "12",
        firefox: "17",
        safari: "6",
        node: "0.4",
        deno: "1",
        android: "4",
        ios: "7",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.14",
        electron: "0.20"
    },
        "es6.string.starts-with": {
        chrome: "41",
        opera: "28",
        edge: "12",
        firefox: "29",
        safari: "9",
        node: "4",
        deno: "1",
        ios: "9",
        samsung: "3.4",
        rhino: "1.7.13",
        electron: "0.21"
    },
        "es6.string.strike": {
        chrome: "5",
        opera: "15",
        edge: "12",
        firefox: "17",
        safari: "6",
        node: "0.4",
        deno: "1",
        android: "4",
        ios: "7",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.14",
        electron: "0.20"
    },
        "es6.string.sub": {
        chrome: "5",
        opera: "15",
        edge: "12",
        firefox: "17",
        safari: "6",
        node: "0.4",
        deno: "1",
        android: "4",
        ios: "7",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.14",
        electron: "0.20"
    },
        "es6.string.sup": {
        chrome: "5",
        opera: "15",
        edge: "12",
        firefox: "17",
        safari: "6",
        node: "0.4",
        deno: "1",
        android: "4",
        ios: "7",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.14",
        electron: "0.20"
    },
        "es6.string.trim": {
        chrome: "5",
        opera: "10.50",
        edge: "12",
        firefox: "3.5",
        safari: "4",
        node: "0.4",
        deno: "1",
        ie: "9",
        android: "4",
        ios: "6",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es7.string.trim-left": {
        chrome: "66",
        opera: "53",
        edge: "79",
        firefox: "61",
        safari: "12",
        node: "10",
        deno: "1",
        ios: "12",
        samsung: "9",
        rhino: "1.7.13",
        electron: "3.0"
    },
        "es7.string.trim-right": {
        chrome: "66",
        opera: "53",
        edge: "79",
        firefox: "61",
        safari: "12",
        node: "10",
        deno: "1",
        ios: "12",
        samsung: "9",
        rhino: "1.7.13",
        electron: "3.0"
    },
        "es6.typed.array-buffer": {
        chrome: "51",
        opera: "38",
        edge: "13",
        firefox: "48",
        safari: "10",
        node: "6.5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.2"
    },
        "es6.typed.data-view": {
        chrome: "5",
        opera: "12",
        edge: "12",
        firefox: "15",
        safari: "5.1",
        node: "0.4",
        deno: "1",
        ie: "10",
        android: "4",
        ios: "6",
        phantom: "1.9",
        samsung: "1",
        rhino: "1.7.13",
        electron: "0.20"
    },
        "es6.typed.int8-array": {
        chrome: "51",
        opera: "38",
        edge: "13",
        firefox: "48",
        safari: "10",
        node: "6.5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.2"
    },
        "es6.typed.uint8-array": {
        chrome: "51",
        opera: "38",
        edge: "13",
        firefox: "48",
        safari: "10",
        node: "6.5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.2"
    },
        "es6.typed.uint8-clamped-array": {
        chrome: "51",
        opera: "38",
        edge: "13",
        firefox: "48",
        safari: "10",
        node: "6.5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.2"
    },
        "es6.typed.int16-array": {
        chrome: "51",
        opera: "38",
        edge: "13",
        firefox: "48",
        safari: "10",
        node: "6.5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.2"
    },
        "es6.typed.uint16-array": {
        chrome: "51",
        opera: "38",
        edge: "13",
        firefox: "48",
        safari: "10",
        node: "6.5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.2"
    },
        "es6.typed.int32-array": {
        chrome: "51",
        opera: "38",
        edge: "13",
        firefox: "48",
        safari: "10",
        node: "6.5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.2"
    },
        "es6.typed.uint32-array": {
        chrome: "51",
        opera: "38",
        edge: "13",
        firefox: "48",
        safari: "10",
        node: "6.5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.2"
    },
        "es6.typed.float32-array": {
        chrome: "51",
        opera: "38",
        edge: "13",
        firefox: "48",
        safari: "10",
        node: "6.5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.2"
    },
        "es6.typed.float64-array": {
        chrome: "51",
        opera: "38",
        edge: "13",
        firefox: "48",
        safari: "10",
        node: "6.5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.2"
    },
        "es6.weak-map": {
        chrome: "51",
        opera: "38",
        edge: "15",
        firefox: "53",
        safari: "9",
        node: "6.5",
        deno: "1",
        ios: "9",
        samsung: "5",
        electron: "1.2"
    },
        "es6.weak-set": {
        chrome: "51",
        opera: "38",
        edge: "15",
        firefox: "53",
        safari: "9",
        node: "6.5",
        deno: "1",
        ios: "9",
        samsung: "5",
        electron: "1.2"
    }
    };
  
    var corejs2BuiltIns = require$$0$4;
  
    var isObjectProperty$1 = isObjectProperty$5,
      isArrayPattern = isArrayPattern$1,
      isObjectPattern = isObjectPattern$2,
      isAssignmentPattern$1 = isAssignmentPattern$5,
      isRestElement = isRestElement$3,
      isIdentifier$3 = isIdentifier$j;
    function shouldStoreRHSInTemporaryVariable(node) {
      if (isArrayPattern(node)) {
        var nonNullElements = node.elements.filter(function (element) {
          return element !== null;
        });
        if (nonNullElements.length > 1) return true;else return shouldStoreRHSInTemporaryVariable(nonNullElements[0]);
      } else if (isObjectPattern(node)) {
        var properties = node.properties;
        if (properties.length > 1) return true;else if (properties.length === 0) return false;else {
          var firstProperty = properties[0];
          if (isObjectProperty$1(firstProperty)) {
            return shouldStoreRHSInTemporaryVariable(firstProperty.value);
          } else {
            return shouldStoreRHSInTemporaryVariable(firstProperty);
          }
        }
      } else if (isAssignmentPattern$1(node)) {
        return shouldStoreRHSInTemporaryVariable(node.left);
      } else if (isRestElement(node)) {
        if (isIdentifier$3(node.argument)) return true;
        return shouldStoreRHSInTemporaryVariable(node.argument);
      } else {
        return false;
      }
    }
  
    var isAssignmentPattern = isAssignmentPattern$5,
      isObjectProperty = isObjectProperty$5;
    {
      var node = identifier$i("a");
      var property = objectProperty$1(identifier$i("key"), node);
      var pattern = objectPattern$1([property]);
      var ZERO_REFS = isReferenced$2(node, property, pattern) ? 1 : 0;
    }
    var proposalObjectRestSpread = declare(function (api, opts) {
      var _api$assumption, _api$assumption2, _api$assumption3, _api$assumption4;
      api.assertVersion(7);
      var targets = api.targets();
      var supportsObjectAssign = !isRequired("es6.object.assign", targets, {
        compatData: corejs2BuiltIns
      });
      var _opts$useBuiltIns = opts.useBuiltIns,
        useBuiltIns = _opts$useBuiltIns === void 0 ? supportsObjectAssign : _opts$useBuiltIns,
        _opts$loose = opts.loose,
        loose = _opts$loose === void 0 ? false : _opts$loose;
      if (typeof loose !== "boolean") {
        throw new Error(".loose must be a boolean, or undefined");
      }
      var ignoreFunctionLength = (_api$assumption = api.assumption("ignoreFunctionLength")) != null ? _api$assumption : loose;
      var objectRestNoSymbols = (_api$assumption2 = api.assumption("objectRestNoSymbols")) != null ? _api$assumption2 : loose;
      var pureGetters = (_api$assumption3 = api.assumption("pureGetters")) != null ? _api$assumption3 : loose;
      var setSpreadProperties = (_api$assumption4 = api.assumption("setSpreadProperties")) != null ? _api$assumption4 : loose;
      function getExtendsHelper(file) {
        return useBuiltIns ? memberExpression$c(identifier$i("Object"), identifier$i("assign")) : file.addHelper("extends");
      }
      function hasRestElement(path) {
        var foundRestElement = false;
        visitRestElements(path, function (restElement) {
          foundRestElement = true;
          restElement.stop();
        });
        return foundRestElement;
      }
      function hasObjectPatternRestElement(path) {
        var foundRestElement = false;
        visitRestElements(path, function (restElement) {
          if (restElement.parentPath.isObjectPattern()) {
            foundRestElement = true;
            restElement.stop();
          }
        });
        return foundRestElement;
      }
      function visitRestElements(path, visitor) {
        path.traverse({
          Expression: function Expression(path) {
            var parent = path.parent,
              key = path.key;
            if (isAssignmentPattern(parent) && key === "right" || isObjectProperty(parent) && parent.computed && key === "key") {
              path.skip();
            }
          },
          RestElement: visitor
        });
      }
      function hasSpread(node) {
        for (var _iterator = _createForOfIteratorHelperLoose(node.properties), _step; !(_step = _iterator()).done;) {
          var prop = _step.value;
          if (isSpreadElement$1(prop)) {
            return true;
          }
        }
        return false;
      }
      function extractNormalizedKeys(node) {
        var props = node.properties;
        var keys = [];
        var allLiteral = true;
        var hasTemplateLiteral = false;
        for (var _iterator2 = _createForOfIteratorHelperLoose(props), _step2; !(_step2 = _iterator2()).done;) {
          var prop = _step2.value;
          if (isIdentifier$j(prop.key) && !prop.computed) {
            keys.push(stringLiteral$8(prop.key.name));
          } else if (isTemplateLiteral$2(prop.key)) {
            keys.push(cloneNode$j(prop.key));
            hasTemplateLiteral = true;
          } else if (isLiteral$6(prop.key)) {
            keys.push(stringLiteral$8(String(prop.key.value)));
          } else {
            keys.push(cloneNode$j(prop.key));
            allLiteral = false;
          }
        }
        return {
          keys: keys,
          allLiteral: allLiteral,
          hasTemplateLiteral: hasTemplateLiteral
        };
      }
      function replaceImpureComputedKeys(properties, scope) {
        var impureComputedPropertyDeclarators = [];
        for (var _iterator3 = _createForOfIteratorHelperLoose(properties), _step3; !(_step3 = _iterator3()).done;) {
          var propPath = _step3.value;
          var key = propPath.get("key");
          if (propPath.node.computed && !key.isPure()) {
            var name = scope.generateUidBasedOnNode(key.node);
            var declarator = variableDeclarator$8(identifier$i(name), key.node);
            impureComputedPropertyDeclarators.push(declarator);
            key.replaceWith(identifier$i(name));
          }
        }
        return impureComputedPropertyDeclarators;
      }
      function removeUnusedExcludedKeys(path) {
        var bindings = path.getOuterBindingIdentifierPaths();
        Object.keys(bindings).forEach(function (bindingName) {
          var bindingParentPath = bindings[bindingName].parentPath;
          if (path.scope.getBinding(bindingName).references > ZERO_REFS || !bindingParentPath.isObjectProperty()) {
            return;
          }
          bindingParentPath.remove();
        });
      }
      function createObjectRest(path, file, objRef) {
        var props = path.get("properties");
        var last = props[props.length - 1];
        assertRestElement(last.node);
        var restElement = cloneNode$j(last.node);
        last.remove();
        var impureComputedPropertyDeclarators = replaceImpureComputedKeys(path.get("properties"), path.scope);
        var _extractNormalizedKey = extractNormalizedKeys(path.node),
          keys = _extractNormalizedKey.keys,
          allLiteral = _extractNormalizedKey.allLiteral,
          hasTemplateLiteral = _extractNormalizedKey.hasTemplateLiteral;
        if (keys.length === 0) {
          return [impureComputedPropertyDeclarators, restElement.argument, callExpression$e(getExtendsHelper(file), [objectExpression$3([]), sequenceExpression$7([callExpression$e(file.addHelper("objectDestructuringEmpty"), [cloneNode$j(objRef)]), cloneNode$j(objRef)])])];
        }
        var keyExpression;
        if (!allLiteral) {
          keyExpression = callExpression$e(memberExpression$c(arrayExpression$1(keys), identifier$i("map")), [file.addHelper("toPropertyKey")]);
        } else {
          keyExpression = arrayExpression$1(keys);
          if (!hasTemplateLiteral && !isProgram$1(path.scope.block)) {
            var program = path.findParent(function (path) {
              return path.isProgram();
            });
            var id = path.scope.generateUidIdentifier("excluded");
            program.scope.push({
              id: id,
              init: keyExpression,
              kind: "const"
            });
            keyExpression = cloneNode$j(id);
          }
        }
        return [impureComputedPropertyDeclarators, restElement.argument, callExpression$e(file.addHelper("objectWithoutProperties" + (objectRestNoSymbols ? "Loose" : "")), [cloneNode$j(objRef), keyExpression])];
      }
      function replaceRestElement(parentPath, paramPath, container) {
        if (paramPath.isAssignmentPattern()) {
          replaceRestElement(parentPath, paramPath.get("left"), container);
          return;
        }
        if (paramPath.isArrayPattern() && hasRestElement(paramPath)) {
          var elements = paramPath.get("elements");
          for (var i = 0; i < elements.length; i++) {
            replaceRestElement(parentPath, elements[i], container);
          }
        }
        if (paramPath.isObjectPattern() && hasRestElement(paramPath)) {
          var uid = parentPath.scope.generateUidIdentifier("ref");
          var declar = variableDeclaration$8("let", [variableDeclarator$8(paramPath.node, uid)]);
          if (container) {
            container.push(declar);
          } else {
            parentPath.ensureBlock();
            parentPath.get("body").unshiftContainer("body", declar);
          }
          paramPath.replaceWith(cloneNode$j(uid));
        }
      }
      return {
        name: "proposal-object-rest-spread",
        inherits: syntaxObjectRestSpread["default"],
        visitor: {
          Function: function Function(path) {
            var params = path.get("params");
            var paramsWithRestElement = new Set();
            var idsInRestParams = new Set();
            for (var _i = 0; _i < params.length; ++_i) {
              var param = params[_i];
              if (hasRestElement(param)) {
                paramsWithRestElement.add(_i);
                for (var _i2 = 0, _Object$keys = Object.keys(param.getBindingIdentifiers()); _i2 < _Object$keys.length; _i2++) {
                  var name = _Object$keys[_i2];
                  idsInRestParams.add(name);
                }
              }
            }
            var idInRest = false;
            var IdentifierHandler = function IdentifierHandler(path, functionScope) {
              var name = path.node.name;
              if (path.scope.getBinding(name) === functionScope.getBinding(name) && idsInRestParams.has(name)) {
                idInRest = true;
                path.stop();
              }
            };
            var i;
            for (i = 0; i < params.length && !idInRest; ++i) {
              var _param = params[i];
              if (!paramsWithRestElement.has(i)) {
                if (_param.isReferencedIdentifier() || _param.isBindingIdentifier()) {
                  IdentifierHandler(_param, path.scope);
                } else {
                  _param.traverse({
                    "Scope|TypeAnnotation|TSTypeAnnotation": function ScopeTypeAnnotationTSTypeAnnotation(path) {
                      return path.skip();
                    },
                    "ReferencedIdentifier|BindingIdentifier": IdentifierHandler
                  }, path.scope);
                }
              }
            }
            if (!idInRest) {
              for (var _i3 = 0; _i3 < params.length; ++_i3) {
                var _param2 = params[_i3];
                if (paramsWithRestElement.has(_i3)) {
                  replaceRestElement(path, _param2);
                }
              }
            } else {
              var shouldTransformParam = function shouldTransformParam(idx) {
                return idx >= i - 1 || paramsWithRestElement.has(idx);
              };
              convertFunctionParams(path, ignoreFunctionLength, shouldTransformParam, replaceRestElement);
            }
          },
          VariableDeclarator: function (_VariableDeclarator) {
            function VariableDeclarator(_x, _x2) {
              return _VariableDeclarator.apply(this, arguments);
            }
            VariableDeclarator.toString = function () {
              return _VariableDeclarator.toString();
            };
            return VariableDeclarator;
          }(function (path, file) {
            if (!path.get("id").isObjectPattern()) {
              return;
            }
            var insertionPath = path;
            var originalPath = path;
            visitRestElements(path.get("id"), function (path) {
              if (!path.parentPath.isObjectPattern()) {
                return;
              }
              if (shouldStoreRHSInTemporaryVariable(originalPath.node.id) && !isIdentifier$j(originalPath.node.init)) {
                var initRef = path.scope.generateUidIdentifierBasedOnNode(originalPath.node.init, "ref");
                originalPath.insertBefore(variableDeclarator$8(initRef, originalPath.node.init));
                originalPath.replaceWith(variableDeclarator$8(originalPath.node.id, cloneNode$j(initRef)));
                return;
              }
              var ref = originalPath.node.init;
              var refPropertyPath = [];
              var kind;
              path.findParent(function (path) {
                if (path.isObjectProperty()) {
                  refPropertyPath.unshift(path);
                } else if (path.isVariableDeclarator()) {
                  kind = path.parentPath.node.kind;
                  return true;
                }
              });
              var impureObjRefComputedDeclarators = replaceImpureComputedKeys(refPropertyPath, path.scope);
              refPropertyPath.forEach(function (prop) {
                var node = prop.node;
                ref = memberExpression$c(ref, cloneNode$j(node.key), node.computed || isLiteral$6(node.key));
              });
              var objectPatternPath = path.findParent(function (path) {
                return path.isObjectPattern();
              });
              var _createObjectRest = createObjectRest(objectPatternPath, file, ref),
                _createObjectRest2 = _slicedToArray(_createObjectRest, 3),
                impureComputedPropertyDeclarators = _createObjectRest2[0],
                argument = _createObjectRest2[1],
                callExpression = _createObjectRest2[2];
              if (pureGetters) {
                removeUnusedExcludedKeys(objectPatternPath);
              }
              assertIdentifier(argument);
              insertionPath.insertBefore(impureComputedPropertyDeclarators);
              insertionPath.insertBefore(impureObjRefComputedDeclarators);
              insertionPath = insertionPath.insertAfter(variableDeclarator$8(argument, callExpression))[0];
              path.scope.registerBinding(kind, insertionPath);
              if (objectPatternPath.node.properties.length === 0) {
                objectPatternPath.findParent(function (path) {
                  return path.isObjectProperty() || path.isVariableDeclarator();
                }).remove();
              }
            });
          }),
          ExportNamedDeclaration: function ExportNamedDeclaration(path) {
            var declaration = path.get("declaration");
            if (!declaration.isVariableDeclaration()) return;
            var hasRest = declaration.get("declarations").some(function (path) {
              return hasObjectPatternRestElement(path.get("id"));
            });
            if (!hasRest) return;
            var specifiers = [];
            for (var _i4 = 0, _Object$keys2 = Object.keys(path.getOuterBindingIdentifiers(true)); _i4 < _Object$keys2.length; _i4++) {
              var name = _Object$keys2[_i4];
              specifiers.push(exportSpecifier$2(identifier$i(name), identifier$i(name)));
            }
            path.replaceWith(declaration.node);
            path.insertAfter(exportNamedDeclaration$2(null, specifiers));
          },
          CatchClause: function CatchClause(path) {
            var paramPath = path.get("param");
            replaceRestElement(path, paramPath);
          },
          AssignmentExpression: function AssignmentExpression(path, file) {
            var leftPath = path.get("left");
            if (leftPath.isObjectPattern() && hasRestElement(leftPath)) {
              var nodes = [];
              var refName = path.scope.generateUidBasedOnNode(path.node.right, "ref");
              nodes.push(variableDeclaration$8("var", [variableDeclarator$8(identifier$i(refName), path.node.right)]));
              var _createObjectRest3 = createObjectRest(leftPath, file, identifier$i(refName)),
                _createObjectRest4 = _slicedToArray(_createObjectRest3, 3),
                impureComputedPropertyDeclarators = _createObjectRest4[0],
                argument = _createObjectRest4[1],
                callExpression = _createObjectRest4[2];
              if (impureComputedPropertyDeclarators.length > 0) {
                nodes.push(variableDeclaration$8("var", impureComputedPropertyDeclarators));
              }
              var nodeWithoutSpread = cloneNode$j(path.node);
              nodeWithoutSpread.right = identifier$i(refName);
              nodes.push(expressionStatement$a(nodeWithoutSpread));
              nodes.push(expressionStatement$a(assignmentExpression$d("=", argument, callExpression)));
              nodes.push(expressionStatement$a(identifier$i(refName)));
              path.replaceWithMultiple(nodes);
            }
          },
          ForXStatement: function (_ForXStatement) {
            function ForXStatement(_x3) {
              return _ForXStatement.apply(this, arguments);
            }
            ForXStatement.toString = function () {
              return _ForXStatement.toString();
            };
            return ForXStatement;
          }(function (path) {
            var node = path.node,
              scope = path.scope;
            var leftPath = path.get("left");
            var left = node.left;
            if (!hasObjectPatternRestElement(leftPath)) {
              return;
            }
            if (!isVariableDeclaration$3(left)) {
              var temp = scope.generateUidIdentifier("ref");
              node.left = variableDeclaration$8("var", [variableDeclarator$8(temp)]);
              path.ensureBlock();
              var body = path.node.body;
              if (body.body.length === 0 && path.isCompletionRecord()) {
                body.body.unshift(expressionStatement$a(scope.buildUndefinedNode()));
              }
              body.body.unshift(expressionStatement$a(assignmentExpression$d("=", left, cloneNode$j(temp))));
            } else {
              var _pattern = left.declarations[0].id;
              var key = scope.generateUidIdentifier("ref");
              node.left = variableDeclaration$8(left.kind, [variableDeclarator$8(key, null)]);
              path.ensureBlock();
              var _body = node.body;
              _body.body.unshift(variableDeclaration$8(node.left.kind, [variableDeclarator$8(_pattern, cloneNode$j(key))]));
            }
          }),
          ArrayPattern: function ArrayPattern(path) {
            var objectPatterns = [];
            visitRestElements(path, function (path) {
              if (!path.parentPath.isObjectPattern()) {
                return;
              }
              var objectPattern = path.parentPath;
              var uid = path.scope.generateUidIdentifier("ref");
              objectPatterns.push(variableDeclarator$8(objectPattern.node, uid));
              objectPattern.replaceWith(cloneNode$j(uid));
              path.skip();
            });
            if (objectPatterns.length > 0) {
              var statementPath = path.getStatementParent();
              var statementNode = statementPath.node;
              var kind = statementNode.type === "VariableDeclaration" ? statementNode.kind : "var";
              statementPath.insertAfter(variableDeclaration$8(kind, objectPatterns));
            }
          },
          ObjectExpression: function ObjectExpression(path, file) {
            if (!hasSpread(path.node)) return;
            var helper;
            if (setSpreadProperties) {
              helper = getExtendsHelper(file);
            } else {
              try {
                helper = file.addHelper("objectSpread2");
              } catch (_unused) {
                this.file.declarations["objectSpread2"] = null;
                helper = file.addHelper("objectSpread");
              }
            }
            var exp = null;
            var props = [];
            function make() {
              var hadProps = props.length > 0;
              var obj = objectExpression$3(props);
              props = [];
              if (!exp) {
                exp = callExpression$e(helper, [obj]);
                return;
              }
              if (pureGetters) {
                if (hadProps) {
                  exp.arguments.push(obj);
                }
                return;
              }
              exp = callExpression$e(cloneNode$j(helper), [exp].concat(_toConsumableArray(hadProps ? [objectExpression$3([]), obj] : [])));
            }
            for (var _iterator4 = _createForOfIteratorHelperLoose(path.node.properties), _step4; !(_step4 = _iterator4()).done;) {
              var prop = _step4.value;
              if (isSpreadElement$1(prop)) {
                make();
                exp.arguments.push(prop.argument);
              } else {
                props.push(prop);
              }
            }
            if (props.length) make();
            path.replaceWith(exp);
          }
        }
      };
    });
  
    var proposalOptionalCatchBinding = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "proposal-optional-catch-binding",
        inherits: syntaxOptionalCatchBinding["default"],
        visitor: {
          CatchClause: function CatchClause(path) {
            if (!path.node.param) {
              var uid = path.scope.generateUidIdentifier("unused");
              var paramPath = path.get("param");
              paramPath.replaceWith(uid);
            }
          }
        }
      };
    });
  
    var _syntaxOptionalChaining = makeNoopPlugin();
  
    function willPathCastToBoolean(path) {
      var maybeWrapped = findOutermostTransparentParent(path);
      var node = maybeWrapped.node,
        parentPath = maybeWrapped.parentPath;
      if (parentPath.isLogicalExpression()) {
        var _parentPath$node = parentPath.node,
          operator = _parentPath$node.operator,
          right = _parentPath$node.right;
        if (operator === "&&" || operator === "||" || operator === "??" && node === right) {
          return willPathCastToBoolean(parentPath);
        }
      }
      if (parentPath.isSequenceExpression()) {
        var expressions = parentPath.node.expressions;
        if (expressions[expressions.length - 1] === node) {
          return willPathCastToBoolean(parentPath);
        } else {
          return true;
        }
      }
      return parentPath.isConditional({
        test: node
      }) || parentPath.isUnaryExpression({
        operator: "!"
      }) || parentPath.isLoop({
        test: node
      });
    }
    function findOutermostTransparentParent(path) {
      var maybeWrapped = path;
      path.findParent(function (p) {
        if (!isTransparentExprWrapper(p.node)) return true;
        maybeWrapped = p;
      });
      return maybeWrapped;
    }
  
    var _templateObject$i, _templateObject2$8, _templateObject3$7, _templateObject4$2, _templateObject5$1, _templateObject6$1, _templateObject7;
    var ast = template$2.expression.ast;
    function isSimpleMemberExpression(expression) {
      expression = skipTransparentExprWrapperNodes(expression);
      return isIdentifier$j(expression) || isSuper$3(expression) || isMemberExpression$8(expression) && !expression.computed && isSimpleMemberExpression(expression.object);
    }
    function needsMemoize(path) {
      var optionalPath = path;
      var scope = path.scope;
      while (optionalPath.isOptionalMemberExpression() || optionalPath.isOptionalCallExpression()) {
        var _optionalPath = optionalPath,
          node = _optionalPath.node;
        var childPath = skipTransparentExprWrappers(optionalPath.isOptionalMemberExpression() ? optionalPath.get("object") : optionalPath.get("callee"));
        if (node.optional) {
          return !scope.isStatic(childPath.node);
        }
        optionalPath = childPath;
      }
    }
    function transform$1(path, _ref) {
      var pureGetters = _ref.pureGetters,
        noDocumentAll = _ref.noDocumentAll;
      var scope = path.scope;
      var maybeWrapped = findOutermostTransparentParent(path);
      var parentPath = maybeWrapped.parentPath;
      var willReplacementCastToBoolean = willPathCastToBoolean(maybeWrapped);
      var isDeleteOperation = false;
      var parentIsCall = parentPath.isCallExpression({
        callee: maybeWrapped.node
      }) && path.isOptionalMemberExpression();
      var optionals = [];
      var optionalPath = path;
      if (scope.path.isPattern() && needsMemoize(optionalPath)) {
        path.replaceWith(template$2.ast(_templateObject$i || (_templateObject$i = _taggedTemplateLiteralLoose(["(() => ", ")()"])), path.node));
        return;
      }
      while (optionalPath.isOptionalMemberExpression() || optionalPath.isOptionalCallExpression()) {
        var _optionalPath2 = optionalPath,
          node = _optionalPath2.node;
        if (node.optional) {
          optionals.push(node);
        }
        if (optionalPath.isOptionalMemberExpression()) {
          optionalPath.node.type = "MemberExpression";
          optionalPath = skipTransparentExprWrappers(optionalPath.get("object"));
        } else if (optionalPath.isOptionalCallExpression()) {
          optionalPath.node.type = "CallExpression";
          optionalPath = skipTransparentExprWrappers(optionalPath.get("callee"));
        }
      }
      var replacementPath = path;
      if (parentPath.isUnaryExpression({
        operator: "delete"
      })) {
        replacementPath = parentPath;
        isDeleteOperation = true;
      }
      for (var i = optionals.length - 1; i >= 0; i--) {
        var _node = optionals[i];
        var isCall = isCallExpression$8(_node);
        var chainWithTypes = isCall ? _node.callee : _node.object;
        var chain = skipTransparentExprWrapperNodes(chainWithTypes);
        var ref = void 0;
        var check = void 0;
        if (isCall && isIdentifier$j(chain, {
          name: "eval"
        })) {
          check = ref = chain;
          _node.callee = sequenceExpression$7([numericLiteral$8(0), ref]);
        } else if (pureGetters && isCall && isSimpleMemberExpression(chain)) {
          check = ref = _node.callee;
        } else {
          ref = scope.maybeGenerateMemoised(chain);
          if (ref) {
            check = assignmentExpression$d("=", cloneNode$j(ref), chainWithTypes);
            isCall ? _node.callee = ref : _node.object = ref;
          } else {
            check = ref = chainWithTypes;
          }
        }
        if (isCall && isMemberExpression$8(chain)) {
          if (pureGetters && isSimpleMemberExpression(chain)) {
            _node.callee = chainWithTypes;
          } else {
            var object = chain.object;
            var context = void 0;
            if (isSuper$3(object)) {
              context = thisExpression$4();
            } else {
              var memoized = scope.maybeGenerateMemoised(object);
              if (memoized) {
                context = memoized;
                chain.object = assignmentExpression$d("=", memoized, object);
              } else {
                context = object;
              }
            }
            _node.arguments.unshift(cloneNode$j(context));
            _node.callee = memberExpression$c(_node.callee, identifier$i("call"));
          }
        }
        var replacement = replacementPath.node;
        if (i === 0 && parentIsCall) {
          var _baseRef;
          var _object = skipTransparentExprWrapperNodes(replacement.object);
          var baseRef = void 0;
          if (!pureGetters || !isSimpleMemberExpression(_object)) {
            baseRef = scope.maybeGenerateMemoised(_object);
            if (baseRef) {
              replacement.object = assignmentExpression$d("=", baseRef, _object);
            }
          }
          replacement = callExpression$e(memberExpression$c(replacement, identifier$i("bind")), [cloneNode$j((_baseRef = baseRef) != null ? _baseRef : _object)]);
        }
        if (willReplacementCastToBoolean) {
          var nonNullishCheck = noDocumentAll ? ast(_templateObject2$8 || (_templateObject2$8 = _taggedTemplateLiteralLoose(["", " != null"])), cloneNode$j(check)) : ast(_templateObject3$7 || (_templateObject3$7 = _taggedTemplateLiteralLoose(["\n            ", " !== null && ", " !== void 0"])), cloneNode$j(check), cloneNode$j(ref));
          replacementPath.replaceWith(logicalExpression$3("&&", nonNullishCheck, replacement));
          replacementPath = skipTransparentExprWrappers(replacementPath.get("right"));
        } else {
          var nullishCheck = noDocumentAll ? ast(_templateObject4$2 || (_templateObject4$2 = _taggedTemplateLiteralLoose(["", " == null"])), cloneNode$j(check)) : ast(_templateObject5$1 || (_templateObject5$1 = _taggedTemplateLiteralLoose(["\n            ", " === null || ", " === void 0"])), cloneNode$j(check), cloneNode$j(ref));
          var returnValue = isDeleteOperation ? ast(_templateObject6$1 || (_templateObject6$1 = _taggedTemplateLiteralLoose(["true"]))) : ast(_templateObject7 || (_templateObject7 = _taggedTemplateLiteralLoose(["void 0"])));
          replacementPath.replaceWith(conditionalExpression$4(nullishCheck, returnValue, replacement));
          replacementPath = skipTransparentExprWrappers(replacementPath.get("alternate"));
        }
      }
    }
  
    var proposalOptionalChaining = declare(function (api, options) {
      var _api$assumption, _api$assumption2;
      api.assertVersion(7);
      var _options$loose = options.loose,
        loose = _options$loose === void 0 ? false : _options$loose;
      var noDocumentAll = (_api$assumption = api.assumption("noDocumentAll")) != null ? _api$assumption : loose;
      var pureGetters = (_api$assumption2 = api.assumption("pureGetters")) != null ? _api$assumption2 : loose;
      return {
        name: "proposal-optional-chaining",
        inherits: _syntaxOptionalChaining["default"],
        visitor: {
          "OptionalCallExpression|OptionalMemberExpression": function OptionalCallExpressionOptionalMemberExpression(path) {
            transform$1(path, {
              noDocumentAll: noDocumentAll,
              pureGetters: pureGetters
            });
          }
        }
      };
    });
  
    function isConciseArrowExpression(node) {
      return isArrowFunctionExpression$1(node) && isExpression$4(node.body) && !node.async;
    }
    var buildOptimizedSequenceExpression = function buildOptimizedSequenceExpression(_ref) {
      var call = _ref.call,
        path = _ref.path,
        placeholder = _ref.placeholder;
      var calledExpression = call.callee;
      var pipelineLeft = path.node.left;
      var assign = assignmentExpression$d("=", cloneNode$j(placeholder), pipelineLeft);
      var expressionIsArrow = isConciseArrowExpression(calledExpression);
      if (expressionIsArrow) {
        var param;
        var optimizeArrow = true;
        var params = calledExpression.params;
        if (params.length === 1 && isIdentifier$j(params[0])) {
          param = params[0];
        } else if (params.length > 0) {
          optimizeArrow = false;
        }
        if (optimizeArrow && !param) {
          return sequenceExpression$7([pipelineLeft, calledExpression.body]);
        } else if (param) {
          path.scope.push({
            id: cloneNode$j(placeholder)
          });
          path.get("right").scope.rename(param.name, placeholder.name);
          return sequenceExpression$7([assign, calledExpression.body]);
        }
      } else if (isIdentifier$j(calledExpression, {
        name: "eval"
      })) {
        var evalSequence = sequenceExpression$7([numericLiteral$8(0), calledExpression]);
        call.callee = evalSequence;
      }
      path.scope.push({
        id: cloneNode$j(placeholder)
      });
      return sequenceExpression$7([assign, call]);
    };
  
    var minimalVisitor = {
      BinaryExpression: function (_BinaryExpression) {
        function BinaryExpression(_x) {
          return _BinaryExpression.apply(this, arguments);
        }
        BinaryExpression.toString = function () {
          return _BinaryExpression.toString();
        };
        return BinaryExpression;
      }(function (path) {
        var scope = path.scope,
          node = path.node;
        var operator = node.operator,
          left = node.left,
          right = node.right;
        if (operator !== "|>") return;
        var placeholder = scope.generateUidIdentifierBasedOnNode(left);
        var call = callExpression$e(right, [cloneNode$j(placeholder)]);
        path.replaceWith(buildOptimizedSequenceExpression({
          placeholder: placeholder,
          call: call,
          path: path
        }));
      })
    };
  
    var topicReferenceVisitor = {
      exit: function exit(path, state) {
        if (path.isTopicReference()) {
          state.topicReferences.push(path);
        } else {
          if (state.topicReferences.length === 0 && !state.sideEffectsBeforeFirstTopicReference && !path.isPure()) {
            state.sideEffectsBeforeFirstTopicReference = true;
          }
        }
      },
      "ClassBody|Function": function ClassBodyFunction(_, state) {
        if (state.topicReferences.length === 0) {
          state.sideEffectsBeforeFirstTopicReference = true;
        }
      }
    };
    var visitor = {
      BinaryExpression: {
        exit: function exit(path) {
          var scope = path.scope,
            node = path.node;
          if (node.operator !== "|>") {
            return;
          }
          var pipeBodyPath = path.get("right");
          if (pipeBodyPath.node.type === "TopicReference") {
            path.replaceWith(node.left);
            return;
          }
          var visitorState = {
            topicReferences: [],
            sideEffectsBeforeFirstTopicReference: pipeBodyPath.isFunction()
          };
          pipeBodyPath.traverse(topicReferenceVisitor, visitorState);
          if (visitorState.topicReferences.length === 1 && (!visitorState.sideEffectsBeforeFirstTopicReference || path.scope.isPure(node.left, true))) {
            visitorState.topicReferences[0].replaceWith(node.left);
            path.replaceWith(node.right);
            return;
          }
          var topicVariable = scope.generateUidIdentifierBasedOnNode(node);
          scope.push({
            id: topicVariable
          });
          visitorState.topicReferences.forEach(function (path) {
            return path.replaceWith(cloneNode$j(topicVariable));
          });
          path.replaceWith(sequenceExpression$7([assignmentExpression$d("=", cloneNode$j(topicVariable), node.left), node.right]));
        }
      }
    };
  
    var fsharpVisitor = {
      BinaryExpression: function (_BinaryExpression) {
        function BinaryExpression(_x) {
          return _BinaryExpression.apply(this, arguments);
        }
        BinaryExpression.toString = function () {
          return _BinaryExpression.toString();
        };
        return BinaryExpression;
      }(function (path) {
        var scope = path.scope,
          node = path.node;
        var operator = node.operator,
          left = node.left,
          right = node.right;
        if (operator !== "|>") return;
        var placeholder = scope.generateUidIdentifierBasedOnNode(left);
        var call = right.type === "AwaitExpression" ? awaitExpression$1(cloneNode$j(placeholder)) : callExpression$e(right, [cloneNode$j(placeholder)]);
        var sequence = buildOptimizedSequenceExpression({
          placeholder: placeholder,
          call: call,
          path: path
        });
        path.replaceWith(sequence);
      })
    };
  
    var updateTopicReferenceVisitor = {
      PipelinePrimaryTopicReference: function PipelinePrimaryTopicReference(path) {
        path.replaceWith(cloneNode$j(this.topicId));
      },
      PipelineTopicExpression: function PipelineTopicExpression(path) {
        path.skip();
      }
    };
    var smartVisitor = {
      BinaryExpression: function BinaryExpression(path) {
        var scope = path.scope;
        var node = path.node;
        var operator = node.operator,
          left = node.left,
          right = node.right;
        if (operator !== "|>") return;
        var placeholder = scope.generateUidIdentifierBasedOnNode(left);
        scope.push({
          id: placeholder
        });
        var call;
        if (isPipelineTopicExpression(right)) {
          path.get("right").traverse(updateTopicReferenceVisitor, {
            topicId: placeholder
          });
          call = right.expression;
        } else {
          var callee = right.callee;
          if (isIdentifier$j(callee, {
            name: "eval"
          })) {
            callee = sequenceExpression$7([numericLiteral$8(0), callee]);
          }
          call = callExpression$e(callee, [cloneNode$j(placeholder)]);
        }
        path.replaceWith(sequenceExpression$7([assignmentExpression$d("=", cloneNode$j(placeholder), left), call]));
      }
    };
  
    var visitorsPerProposal = {
      minimal: minimalVisitor,
      hack: visitor,
      fsharp: fsharpVisitor,
      smart: smartVisitor
    };
    var proposalPipelineOperator = declare(function (api, options) {
      api.assertVersion(7);
      var proposal = options.proposal;
      if (proposal === "smart") {
        console.warn("The smart-mix pipe operator is deprecated. Use \"proposal\": \"hack\" instead.");
      }
      return {
        name: "proposal-pipeline-operator",
        inherits: syntaxPipelineOperator,
        visitor: visitorsPerProposal[options.proposal]
      };
    });
  
    var proposalPrivateMethods = declare(function (api, options) {
      api.assertVersion(7);
      return createClassFeaturePlugin({
        name: "proposal-private-methods",
        api: api,
        feature: FEATURES$1.privateMethods,
        loose: options.loose,
        manipulateOptions: function manipulateOptions(opts, parserOpts) {
          parserOpts.plugins.push("classPrivateMethods");
        }
      });
    });
  
    var _syntaxPrivatePropertyInObject = makeNoopPlugin();
  
    var _templateObject$h, _templateObject2$7, _templateObject3$6, _templateObject4$1, _templateObject5, _templateObject6;
    var proposalPrivatePropertyInObject = declare(function (api, opt) {
      api.assertVersion(7);
      var t = api.types,
        template = api.template;
      var loose = opt.loose;
      var classWeakSets = new WeakMap();
      var fieldsWeakSets = new WeakMap();
      function unshadow(name, targetScope, scope) {
        while (scope !== targetScope) {
          if (scope.hasOwnBinding(name)) scope.rename(name);
          scope = scope.parent;
        }
      }
      function injectToFieldInit(fieldPath, expr, before) {
        if (before === void 0) {
          before = false;
        }
        if (fieldPath.node.value) {
          var value = fieldPath.get("value");
          if (before) {
            value.insertBefore(expr);
          } else {
            value.insertAfter(expr);
          }
        } else {
          fieldPath.set("value", t.unaryExpression("void", expr));
        }
      }
      function injectInitialization$1(classPath, init) {
        var firstFieldPath;
        var constructorPath;
        for (var _iterator = _createForOfIteratorHelperLoose(classPath.get("body.body")), _step; !(_step = _iterator()).done;) {
          var el = _step.value;
          if ((el.isClassProperty() || el.isClassPrivateProperty()) && !el.node["static"]) {
            firstFieldPath = el;
            break;
          }
          if (!constructorPath && el.isClassMethod({
            kind: "constructor"
          })) {
            constructorPath = el;
          }
        }
        if (firstFieldPath) {
          injectToFieldInit(firstFieldPath, init, true);
        } else {
          injectInitialization(classPath, constructorPath, [t.expressionStatement(init)]);
        }
      }
      function getWeakSetId(weakSets, outerClass, reference, name, inject) {
        if (name === void 0) {
          name = "";
        }
        var id = weakSets.get(reference.node);
        if (!id) {
          id = outerClass.scope.generateUidIdentifier((name || "") + " brandCheck");
          weakSets.set(reference.node, id);
          inject(reference, template.expression.ast(_templateObject$h || (_templateObject$h = _taggedTemplateLiteralLoose(["", ".add(this)"])), t.cloneNode(id)));
          var newExpr = t.newExpression(t.identifier("WeakSet"), []);
          annotateAsPure(newExpr);
          outerClass.insertBefore(template.ast(_templateObject2$7 || (_templateObject2$7 = _taggedTemplateLiteralLoose(["var ", " = ", ""])), id, newExpr));
        }
        return t.cloneNode(id);
      }
      return {
        name: "proposal-private-property-in-object",
        inherits: _syntaxPrivatePropertyInObject["default"],
        pre: function pre() {
          enableFeature$1(this.file, FEATURES$1.privateIn, loose);
        },
        visitor: {
          BinaryExpression: function BinaryExpression(path, state) {
            var node = path.node;
            var file = state.file;
            if (node.operator !== "in") return;
            if (!t.isPrivateName(node.left)) return;
            var name = node.left.id.name;
            var privateElement;
            var outerClass = path.findParent(function (path) {
              if (!path.isClass()) return false;
              privateElement = path.get("body.body").find(function (_ref) {
                var node = _ref.node;
                return t.isPrivate(node) && node.key.id.name === name;
              });
              return !!privateElement;
            });
            if (outerClass.parentPath.scope.path.isPattern()) {
              outerClass.replaceWith(template.ast(_templateObject3$6 || (_templateObject3$6 = _taggedTemplateLiteralLoose(["(() => ", ")()"])), outerClass.node));
              return;
            }
            if (privateElement.node.type === "ClassPrivateMethod") {
              if (privateElement.node["static"]) {
                if (outerClass.node.id) {
                  unshadow(outerClass.node.id.name, outerClass.scope, path.scope);
                } else {
                  outerClass.set("id", path.scope.generateUidIdentifier("class"));
                }
                path.replaceWith(template.expression.ast(_templateObject4$1 || (_templateObject4$1 = _taggedTemplateLiteralLoose(["\n                ", " === ", "\n              "])), t.cloneNode(outerClass.node.id), buildCheckInRHS(node.right, file)));
              } else {
                var _outerClass$node$id;
                var id = getWeakSetId(classWeakSets, outerClass, outerClass, (_outerClass$node$id = outerClass.node.id) == null ? void 0 : _outerClass$node$id.name, injectInitialization$1);
                path.replaceWith(template.expression.ast(_templateObject5 || (_templateObject5 = _taggedTemplateLiteralLoose(["", ".has(", ")"])), id, buildCheckInRHS(node.right, file)));
              }
            } else {
              var _id = getWeakSetId(fieldsWeakSets, outerClass, privateElement, privateElement.node.key.id.name, injectToFieldInit);
              path.replaceWith(template.expression.ast(_templateObject6 || (_templateObject6 = _taggedTemplateLiteralLoose(["", ".has(", ")"])), _id, buildCheckInRHS(node.right, file)));
            }
          }
        }
      };
    });
  
    var v$2 = new OptionValidator("@babel/plugin-proposal-record-and-tuple");
    var proposalRecordAndTuple = declare(function (api, options) {
      api.assertVersion(7);
      var polyfillModuleName = v$2.validateStringOption("polyfillModuleName", options.polyfillModuleName, "@bloomberg/record-tuple-polyfill");
      var shouldImportPolyfill = v$2.validateBooleanOption("importPolyfill", options.importPolyfill, !!options.polyfillModuleName);
      var importCaches = new WeakMap();
      function getOr(map, key, getDefault) {
        var value = map.get(key);
        if (!value) map.set(key, value = getDefault());
        return value;
      }
      function getBuiltIn(name, programPath) {
        if (!shouldImportPolyfill) return identifier$i(name);
        if (!programPath) {
          throw new Error("Internal error: unable to find the Program node.");
        }
        var cacheKey = name + ":" + isModule(programPath);
        var cache = getOr(importCaches, programPath.node, function () {
          return new Map();
        });
        var localBindingName = getOr(cache, cacheKey, function () {
          return addNamed(programPath, name, polyfillModuleName, {
            importedInterop: "uncompiled"
          }).name;
        });
        return identifier$i(localBindingName);
      }
      return {
        name: "proposal-record-and-tuple",
        inherits: syntaxRecordAndTuple,
        visitor: {
          Program: function Program(path, state) {
            state.programPath = path;
          },
          RecordExpression: function RecordExpression(path, state) {
            var record = getBuiltIn("Record", state.programPath);
            var object = objectExpression$3(path.node.properties);
            var wrapped = callExpression$e(record, [object]);
            path.replaceWith(wrapped);
          },
          TupleExpression: function TupleExpression(path, state) {
            var tuple = getBuiltIn("Tuple", state.programPath);
            var wrapped = callExpression$e(tuple, path.node.elements);
            path.replaceWith(wrapped);
          }
        }
      };
    });
  
    var proposalRegexpModifiers = declare(function (api) {
      api.assertVersion("^7.19.0");
      return createRegExpFeaturePlugin({
        name: "proposal-regexp-modifiers",
        feature: "modifiers"
      });
    });
  
    var syntaxThrowExpressions = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "syntax-throw-expressions",
        manipulateOptions: function manipulateOptions(opts, parserOpts) {
          parserOpts.plugins.push("throwExpressions");
        }
      };
    });
  
    var proposalThrowExpressions = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "proposal-throw-expressions",
        inherits: syntaxThrowExpressions,
        visitor: {
          UnaryExpression: function UnaryExpression(path) {
            var _path$node = path.node,
              operator = _path$node.operator,
              argument = _path$node.argument;
            if (operator !== "throw") return;
            var arrow = functionExpression$2(null, [identifier$i("e")], blockStatement$6([throwStatement(identifier$i("e"))]));
            path.replaceWith(callExpression$e(arrow, [argument]));
          }
        }
      };
    });
  
    var proposalUnicodePropertyRegex = declare(function (api, options) {
      api.assertVersion(7);
      var _options$useUnicodeFl = options.useUnicodeFlag,
        useUnicodeFlag = _options$useUnicodeFl === void 0 ? true : _options$useUnicodeFl;
      if (typeof useUnicodeFlag !== "boolean") {
        throw new Error(".useUnicodeFlag must be a boolean, or undefined");
      }
      return createRegExpFeaturePlugin({
        name: "proposal-unicode-property-regex",
        feature: "unicodePropertyEscape",
        options: {
          useUnicodeFlag: useUnicodeFlag
        }
      });
    });
  
    var proposalUnicodeSetsRegex = declare(function (api) {
      api.assertVersion(7);
      return createRegExpFeaturePlugin({
        name: "transform-unicode-sets-regex",
        feature: "unicodeSetsFlag",
        manipulateOptions: function manipulateOptions(opts, parserOpts) {
          parserOpts.plugins.push("regexpUnicodeSets");
        }
      });
    });
  
    var _transformAsyncToGenerator = declare(function (api, options) {
      var _api$assumption, _api$assumption2;
      api.assertVersion(7);
      var method = options.method,
        module = options.module;
      var noNewArrows = (_api$assumption = api.assumption("noNewArrows")) != null ? _api$assumption : true;
      var ignoreFunctionLength = (_api$assumption2 = api.assumption("ignoreFunctionLength")) != null ? _api$assumption2 : false;
      if (method && module) {
        return {
          name: "transform-async-to-generator",
          visitor: {
            Function: function Function(path, state) {
              if (!path.node.async || path.node.generator) return;
              var wrapAsync = state.methodWrapper;
              if (wrapAsync) {
                wrapAsync = cloneNode$j(wrapAsync);
              } else {
                wrapAsync = state.methodWrapper = addNamed(path, method, module);
              }
              remapAsyncToGenerator(path, {
                wrapAsync: wrapAsync
              }, noNewArrows, ignoreFunctionLength);
            }
          }
        };
      }
      return {
        name: "transform-async-to-generator",
        visitor: {
          Function: function Function(path, state) {
            if (!path.node.async || path.node.generator) return;
            remapAsyncToGenerator(path, {
              wrapAsync: state.addHelper("asyncToGenerator")
            }, noNewArrows, ignoreFunctionLength);
          }
        }
      };
    });
  
    var _transformArrowFunctions = declare(function (api, options) {
      var _api$assumption;
      api.assertVersion(7);
      var noNewArrows = (_api$assumption = api.assumption("noNewArrows")) != null ? _api$assumption : !options.spec;
      return {
        name: "transform-arrow-functions",
        visitor: {
          ArrowFunctionExpression: function ArrowFunctionExpression(path) {
            if (!path.isArrowFunctionExpression()) return;
            {
              path.arrowFunctionToExpression({
                allowInsertArrow: false,
                noNewArrows: noNewArrows,
                specCompliant: !noNewArrows
              });
            }
          }
        }
      };
    });
  
    var _transformBlockScopedFunctions = declare(function (api) {
      api.assertVersion(7);
      function transformStatementList(paths) {
        for (var _iterator = _createForOfIteratorHelperLoose(paths), _step; !(_step = _iterator()).done;) {
          var path = _step.value;
          if (!path.isFunctionDeclaration()) continue;
          var func = path.node;
          var declar = variableDeclaration$8("let", [variableDeclarator$8(func.id, toExpression$1(func))]);
          declar._blockHoist = 2;
          func.id = null;
          path.replaceWith(declar);
        }
      }
      return {
        name: "transform-block-scoped-functions",
        visitor: {
          BlockStatement: function BlockStatement(path) {
            var node = path.node,
              parent = path.parent;
            if (isFunction$4(parent, {
              body: node
            }) || isExportDeclaration$3(parent)) {
              return;
            }
            transformStatementList(path.get("body"));
          },
          SwitchCase: function SwitchCase(path) {
            transformStatementList(path.get("consequent"));
          }
        }
      };
    });
  
    var _templateObject$g, _templateObject2$6, _templateObject3$5;
    var collectLoopBodyBindingsVisitor = {
      "Expression|Declaration|Loop": function ExpressionDeclarationLoop(path) {
        path.skip();
      },
      Scope: function Scope(path, state) {
        if (path.isFunctionParent()) path.skip();
        var bindings = path.scope.bindings;
        for (var _i = 0, _Object$keys = Object.keys(bindings); _i < _Object$keys.length; _i++) {
          var name = _Object$keys[_i];
          var binding = bindings[name];
          if (binding.kind === "let" || binding.kind === "const" || binding.kind === "hoisted") {
            state.blockScoped.push(binding);
          }
        }
      }
    };
    function getLoopBodyBindings(loopPath) {
      var state = {
        blockScoped: []
      };
      loopPath.traverse(collectLoopBodyBindingsVisitor, state);
      return state.blockScoped;
    }
    function getUsageInBody(binding, loopPath) {
      var seen = new WeakSet();
      var capturedInClosure = false;
      var constantViolations = filterMap(binding.constantViolations, function (path) {
        var _relativeLoopLocation = relativeLoopLocation(path, loopPath),
          inBody = _relativeLoopLocation.inBody,
          inClosure = _relativeLoopLocation.inClosure;
        if (!inBody) return null;
        capturedInClosure || (capturedInClosure = inClosure);
        var id = path.isUpdateExpression() ? path.get("argument") : path.isAssignmentExpression() ? path.get("left") : null;
        if (id) seen.add(id.node);
        return id;
      });
      var references = filterMap(binding.referencePaths, function (path) {
        if (seen.has(path.node)) return null;
        var _relativeLoopLocation2 = relativeLoopLocation(path, loopPath),
          inBody = _relativeLoopLocation2.inBody,
          inClosure = _relativeLoopLocation2.inClosure;
        if (!inBody) return null;
        capturedInClosure || (capturedInClosure = inClosure);
        return path;
      });
      return {
        capturedInClosure: capturedInClosure,
        hasConstantViolations: constantViolations.length > 0,
        usages: references.concat(constantViolations)
      };
    }
    function relativeLoopLocation(path, loopPath) {
      var bodyPath = loopPath.get("body");
      var inClosure = false;
      for (var currPath = path; currPath; currPath = currPath.parentPath) {
        if (currPath.isFunction() || currPath.isClass()) inClosure = true;
        if (currPath === bodyPath) {
          return {
            inBody: true,
            inClosure: inClosure
          };
        } else if (currPath === loopPath) {
          return {
            inBody: false,
            inClosure: inClosure
          };
        }
      }
      throw new Error("Internal Babel error: path is not in loop. Please report this as a bug.");
    }
    var collectCompletionsAndVarsVisitor = {
      Function: function Function(path) {
        path.skip();
      },
      LabeledStatement: {
        enter: function enter(_ref, state) {
          var node = _ref.node;
          state.labelsStack.push(node.label.name);
        },
        exit: function exit(_ref2, state) {
          var node = _ref2.node;
          var popped = state.labelsStack.pop();
          if (popped !== node.label.name) {
            throw new Error("Assertion failure. Please report this bug to Babel.");
          }
        }
      },
      Loop: {
        enter: function enter(_, state) {
          state.labellessContinueTargets++;
          state.labellessBreakTargets++;
        },
        exit: function exit(_, state) {
          state.labellessContinueTargets--;
          state.labellessBreakTargets--;
        }
      },
      SwitchStatement: {
        enter: function enter(_, state) {
          state.labellessBreakTargets++;
        },
        exit: function exit(_, state) {
          state.labellessBreakTargets--;
        }
      },
      "BreakStatement|ContinueStatement": function BreakStatementContinueStatement(path, state) {
        var label = path.node.label;
        if (label) {
          if (state.labelsStack.includes(label.name)) return;
        } else if (path.isBreakStatement() ? state.labellessBreakTargets > 0 : state.labellessContinueTargets > 0) {
          return;
        }
        state.breaksContinues.push(path);
      },
      ReturnStatement: function ReturnStatement(path, state) {
        state.returns.push(path);
      },
      VariableDeclaration: function VariableDeclaration(path, state) {
        if (path.parent === state.loopNode && isVarInLoopHead(path)) return;
        if (path.node.kind === "var") state.vars.push(path);
      }
    };
    function wrapLoopBody(loopPath, captured, updatedBindingsUsages) {
      var loopNode = loopPath.node;
      var state = {
        breaksContinues: [],
        returns: [],
        labelsStack: [],
        labellessBreakTargets: 0,
        labellessContinueTargets: 0,
        vars: [],
        loopNode: loopNode
      };
      loopPath.traverse(collectCompletionsAndVarsVisitor, state);
      var callArgs = [];
      var closureParams = [];
      var updater = [];
      for (var _iterator = _createForOfIteratorHelperLoose(updatedBindingsUsages), _step; !(_step = _iterator()).done;) {
        var _step$value = _slicedToArray(_step.value, 2),
          _name = _step$value[0],
          updatedUsage = _step$value[1];
        callArgs.push(identifier$i(_name));
        var innerName = loopPath.scope.generateUid(_name);
        closureParams.push(identifier$i(innerName));
        updater.push(assignmentExpression$d("=", identifier$i(_name), identifier$i(innerName)));
        for (var _iterator6 = _createForOfIteratorHelperLoose(updatedUsage), _step6; !(_step6 = _iterator6()).done;) {
          var _path2 = _step6.value;
          _path2.replaceWith(identifier$i(innerName));
        }
      }
      for (var _iterator2 = _createForOfIteratorHelperLoose(captured), _step2; !(_step2 = _iterator2()).done;) {
        var _name2 = _step2.value;
        if (updatedBindingsUsages.has(_name2)) continue;
        callArgs.push(identifier$i(_name2));
        closureParams.push(identifier$i(_name2));
      }
      var id = loopPath.scope.generateUid("loop");
      var fn = functionExpression$2(null, closureParams, toBlock(loopNode.body));
      var call = callExpression$e(identifier$i(id), callArgs);
      var fnParent = loopPath.findParent(function (p) {
        return p.isFunction();
      });
      if (fnParent) {
        var _ref3 = fnParent.node,
          async = _ref3.async,
          generator = _ref3.generator;
        fn.async = async;
        fn.generator = generator;
        if (generator) call = yieldExpression$2(call, true);else if (async) call = awaitExpression$1(call);
      }
      var updaterNode = updater.length > 0 ? expressionStatement$a(sequenceExpression$7(updater)) : null;
      if (updaterNode) fn.body.body.push(updaterNode);
      var _ref4 = loopPath.insertBefore(variableDeclaration$8("var", [variableDeclarator$8(identifier$i(id), fn)])),
        _ref5 = _slicedToArray(_ref4, 1),
        varPath = _ref5[0];
      var bodyStmts = [];
      var varNames = [];
      for (var _iterator3 = _createForOfIteratorHelperLoose(state.vars), _step3; !(_step3 = _iterator3()).done;) {
        var _varPath = _step3.value;
        var assign = [];
        for (var _iterator7 = _createForOfIteratorHelperLoose(_varPath.node.declarations), _step7; !(_step7 = _iterator7()).done;) {
          var decl = _step7.value;
          varNames.push.apply(varNames, _toConsumableArray(Object.keys(getBindingIdentifiers$2(decl.id))));
          if (decl.init) {
            assign.push(assignmentExpression$d("=", decl.id, decl.init));
          }
        }
        if (assign.length > 0) {
          var replacement = assign.length === 1 ? assign[0] : sequenceExpression$7(assign);
          if (!isForStatement$3(_varPath.parent, {
            init: _varPath.node
          }) && !isForXStatement$1(_varPath.parent, {
            left: _varPath.node
          })) {
            replacement = expressionStatement$a(replacement);
          }
          _varPath.replaceWith(replacement);
        } else {
          _varPath.remove();
        }
      }
      if (varNames.length) {
        bodyStmts.push(variableDeclaration$8("var", varNames.map(function (name) {
          return variableDeclarator$8(identifier$i(name));
        })));
      }
      if (state.breaksContinues.length === 0 && state.returns.length === 0) {
        bodyStmts.push(expressionStatement$a(call));
      } else {
        var completionId = loopPath.scope.generateUid("ret");
        bodyStmts.push(variableDeclaration$8("var", [variableDeclarator$8(identifier$i(completionId), call)]));
        var injected = new Set();
        for (var _iterator4 = _createForOfIteratorHelperLoose(state.breaksContinues), _step4; !(_step4 = _iterator4()).done;) {
          var _path = _step4.value;
          var node = _path.node;
          var type = node.type,
            label = node.label;
          var name = type === "BreakStatement" ? "break" : "continue";
          if (label) name += "|" + label.name;
          _path.replaceWith(returnStatement$3(stringLiteral$8(name)));
          if (updaterNode) _path.insertBefore(cloneNode$j(updaterNode));
          if (injected.has(name)) continue;
          injected.add(name);
          bodyStmts.push(template$2.statement.ast(_templateObject3$5 || (_templateObject3$5 = _taggedTemplateLiteralLoose(["\n        if (\n          ", " === ", "\n        ) ", "\n      "])), identifier$i(completionId), stringLiteral$8(name), node));
        }
        if (state.returns.length) {
          for (var _iterator5 = _createForOfIteratorHelperLoose(state.returns), _step5; !(_step5 = _iterator5()).done;) {
            var path = _step5.value;
            var arg = path.node.argument || path.scope.buildUndefinedNode();
            path.replaceWith(template$2.statement.ast(_templateObject2$6 || (_templateObject2$6 = _taggedTemplateLiteralLoose(["\n          return { v: ", " };\n        "])), arg));
          }
          bodyStmts.push(template$2.statement.ast(_templateObject$g || (_templateObject$g = _taggedTemplateLiteralLoose(["\n        if (typeof ", " === \"object\")\n          return ", ".v;\n      "])), identifier$i(completionId), identifier$i(completionId)));
        }
      }
      loopNode.body = blockStatement$6(bodyStmts);
      return varPath;
    }
    function isVarInLoopHead(path) {
      if (isForStatement$3(path.parent)) return path.key === "init";
      if (isForXStatement$1(path.parent)) return path.key === "left";
      return false;
    }
    function filterMap(list, fn) {
      var result = [];
      for (var _iterator8 = _createForOfIteratorHelperLoose(list), _step8; !(_step8 = _iterator8()).done;) {
        var _item = _step8.value;
        var mapped = fn(_item);
        if (mapped) result.push(mapped);
      }
      return result;
    }
  
    function validateUsage(path, state, tdzEnabled) {
      var dynamicTDZNames = [];
      for (var _i = 0, _Object$keys = Object.keys(path.getBindingIdentifiers()); _i < _Object$keys.length; _i++) {
        var name = _Object$keys[_i];
        var binding = path.scope.getBinding(name);
        if (!binding) continue;
        if (tdzEnabled) {
          if (injectTDZChecks(binding, state)) dynamicTDZNames.push(name);
        }
        if (path.node.kind === "const") {
          disallowConstantViolations(name, binding, state);
        }
      }
      return dynamicTDZNames;
    }
    function disallowConstantViolations(name, binding, state) {
      for (var _iterator = _createForOfIteratorHelperLoose(binding.constantViolations), _step; !(_step = _iterator()).done;) {
        var violation = _step.value;
        var readOnlyError = state.addHelper("readOnlyError");
        var throwNode = callExpression$e(readOnlyError, [stringLiteral$8(name)]);
        if (violation.isAssignmentExpression()) {
          var _violation$node = violation.node,
            operator = _violation$node.operator,
            left = _violation$node.left,
            right = _violation$node.right;
          if (operator === "=") {
            var exprs = [right];
            exprs.push(throwNode);
            violation.replaceWith(sequenceExpression$7(exprs));
          } else if (["&&=", "||=", "??="].includes(operator)) {
            violation.replaceWith(logicalExpression$3(operator.slice(0, -1), left, sequenceExpression$7([right, throwNode])));
          } else {
            violation.replaceWith(sequenceExpression$7([binaryExpression$5(operator.slice(0, -1), left, right), throwNode]));
          }
        } else if (violation.isUpdateExpression()) {
          violation.replaceWith(sequenceExpression$7([unaryExpression$7("+", violation.get("argument").node), throwNode]));
        } else if (violation.isForXStatement()) {
          violation.ensureBlock();
          violation.get("left").replaceWith(variableDeclaration$8("var", [variableDeclarator$8(violation.scope.generateUidIdentifier(name))]));
          violation.node.body.body.unshift(expressionStatement$a(throwNode));
        }
      }
    }
    function getTDZStatus(refPath, bindingPath) {
      var executionStatus = bindingPath._guessExecutionStatusRelativeTo(refPath);
      if (executionStatus === "before") {
        return "outside";
      } else if (executionStatus === "after") {
        return "inside";
      } else {
        return "maybe";
      }
    }
    var skipTDZChecks = new WeakSet();
    function buildTDZAssert(status, node, state) {
      if (status === "maybe") {
        var clone = cloneNode$j(node);
        skipTDZChecks.add(clone);
        return callExpression$e(state.addHelper("temporalRef"), [clone, stringLiteral$8(node.name)]);
      } else {
        return callExpression$e(state.addHelper("tdz"), [stringLiteral$8(node.name)]);
      }
    }
    function getTDZReplacement(path, state, id) {
      var _path$scope$getBindin;
      if (id === void 0) {
        id = path.node;
      }
      if (skipTDZChecks.has(id)) return;
      skipTDZChecks.add(id);
      var bindingPath = (_path$scope$getBindin = path.scope.getBinding(id.name)) == null ? void 0 : _path$scope$getBindin.path;
      if (!bindingPath || bindingPath.isFunctionDeclaration()) return;
      var status = getTDZStatus(path, bindingPath);
      if (status === "outside") return;
      if (status === "maybe") {
        bindingPath.parent._tdzThis = true;
      }
      return {
        status: status,
        node: buildTDZAssert(status, id, state)
      };
    }
    function injectTDZChecks(binding, state) {
      var allUsages = new Set(binding.referencePaths);
      binding.constantViolations.forEach(allUsages.add, allUsages);
      var dynamicTdz = false;
      for (var _iterator2 = _createForOfIteratorHelperLoose(binding.constantViolations), _step2; !(_step2 = _iterator2()).done;) {
        var _path2 = _step2.value;
        var node = _path2.node;
        if (skipTDZChecks.has(node)) continue;
        skipTDZChecks.add(node);
        if (_path2.isUpdateExpression()) {
          var arg = _path2.get("argument");
          var _replacement = getTDZReplacement(_path2, state, arg.node);
          if (!_replacement) continue;
          if (_replacement.status === "maybe") {
            dynamicTdz = true;
            _path2.insertBefore(_replacement.node);
          } else {
            _path2.replaceWith(_replacement.node);
          }
        } else if (_path2.isAssignmentExpression()) {
          var nodes = [];
          var ids = _path2.getBindingIdentifiers();
          for (var _i3 = 0, _Object$keys2 = Object.keys(ids); _i3 < _Object$keys2.length; _i3++) {
            var name = _Object$keys2[_i3];
            var _replacement2 = getTDZReplacement(_path2, state, ids[name]);
            if (_replacement2) {
              nodes.push(expressionStatement$a(_replacement2.node));
              if (_replacement2.status === "inside") break;
              if (_replacement2.status === "maybe") dynamicTdz = true;
            }
          }
          if (nodes.length > 0) _path2.insertBefore(nodes);
        }
      }
      for (var _i2 = 0, _arr = binding.referencePaths; _i2 < _arr.length; _i2++) {
        var _path = _arr[_i2];
        if (_path.parentPath.isUpdateExpression()) continue;
        if (_path.parentPath.isFor({
          left: _path.node
        })) continue;
        var replacement = getTDZReplacement(_path, state);
        if (!replacement) continue;
        if (replacement.status === "maybe") dynamicTdz = true;
        _path.replaceWith(replacement.node);
      }
      return dynamicTdz;
    }
  
    var annexB33FunctionsVisitor = {
      VariableDeclaration: function VariableDeclaration(path) {
        if (isStrict(path)) return;
        if (path.node.kind !== "var") return;
        var varScope = path.scope.getFunctionParent() || path.scope.getProgramParent();
        varScope.path.traverse(functionsToVarVisitor, {
          names: Object.keys(path.getBindingIdentifiers())
        });
      },
      BlockStatement: function BlockStatement(path) {
        if (isStrict(path)) return;
        if (isFunction$4(path.parent, {
          body: path.node
        })) return;
        transformStatementList(path.get("body"));
      },
      SwitchCase: function SwitchCase(path) {
        if (isStrict(path)) return;
        transformStatementList(path.get("consequent"));
      }
    };
    function transformStatementList(paths) {
      outer: for (var _iterator = _createForOfIteratorHelperLoose(paths), _step; !(_step = _iterator()).done;) {
        var path = _step.value;
        if (!path.isFunctionDeclaration()) continue;
        if (path.node.async || path.node.generator) return;
        var scope = path.parentPath.scope;
        if (isVarScope(scope)) return;
        var name = path.node.id.name;
        var currScope = scope;
        do {
          if (currScope.parent.hasOwnBinding(name)) continue outer;
          currScope = currScope.parent;
        } while (!isVarScope(currScope));
        maybeTransformBlockScopedFunction(path);
      }
    }
    function maybeTransformBlockScopedFunction(path) {
      var node = path.node,
        scope = path.parentPath.scope;
      var id = node.id;
      scope.removeOwnBinding(id.name);
      node.id = null;
      var varNode = variableDeclaration$8("var", [variableDeclarator$8(id, toExpression$1(node))]);
      varNode._blockHoist = 2;
      var _path$replaceWith = path.replaceWith(varNode),
        _path$replaceWith2 = _slicedToArray(_path$replaceWith, 1),
        varPath = _path$replaceWith2[0];
      scope.registerDeclaration(varPath);
    }
    var functionsToVarVisitor = {
      Scope: function Scope(path, _ref) {
        var names = _ref.names;
        for (var _iterator2 = _createForOfIteratorHelperLoose(names), _step2; !(_step2 = _iterator2()).done;) {
          var name = _step2.value;
          var binding = path.scope.getOwnBinding(name);
          if (binding && binding.kind === "hoisted") {
            maybeTransformBlockScopedFunction(binding.path);
          }
        }
      },
      "Expression|Declaration": function ExpressionDeclaration(path) {
        path.skip();
      }
    };
    function isVarScope(scope) {
      return scope.path.isFunctionParent() || scope.path.isProgram();
    }
    function isStrict(path) {
      return !!path.find(function (_ref2) {
        var _node$directives;
        var node = _ref2.node;
        if (isProgram$1(node)) {
          if (node.sourceType === "module") return true;
        } else if (isClass$2(node)) {
          return true;
        } else if (!isBlockStatement$2(node)) {
          return false;
        }
        return (_node$directives = node.directives) == null ? void 0 : _node$directives.some(function (directive) {
          return directive.value.value === "use strict";
        });
      });
    }
  
    var _transformBlockScoping = declare(function (api, opts) {
      api.assertVersion(7);
      var _opts$throwIfClosureR = opts.throwIfClosureRequired,
        throwIfClosureRequired = _opts$throwIfClosureR === void 0 ? false : _opts$throwIfClosureR,
        _opts$tdz = opts.tdz,
        tdzEnabled = _opts$tdz === void 0 ? false : _opts$tdz;
      if (typeof throwIfClosureRequired !== "boolean") {
        throw new Error(".throwIfClosureRequired must be a boolean, or undefined");
      }
      if (typeof tdzEnabled !== "boolean") {
        throw new Error(".tdz must be a boolean, or undefined");
      }
      return {
        name: "transform-block-scoping",
        visitor: traverse.visitors.merge([annexB33FunctionsVisitor, {
          Loop: function (_Loop) {
            function Loop(_x, _x2) {
              return _Loop.apply(this, arguments);
            }
            Loop.toString = function () {
              return _Loop.toString();
            };
            return Loop;
          }(function (path, state) {
            var isForStatement = path.isForStatement();
            var headPath = isForStatement ? path.get("init") : path.isForXStatement() ? path.get("left") : null;
            var needsBodyWrap = false;
            var markNeedsBodyWrap = function markNeedsBodyWrap() {
              if (throwIfClosureRequired) {
                throw path.buildCodeFrameError("Compiling let/const in this block would add a closure " + "(throwIfClosureRequired).");
              }
              needsBodyWrap = true;
            };
            var body = path.get("body");
            var bodyScope;
            if (body.isBlockStatement()) {
              bodyScope = body.scope;
              var bindings = getLoopBodyBindings(path);
              for (var _iterator = _createForOfIteratorHelperLoose(bindings), _step; !(_step = _iterator()).done;) {
                var binding = _step.value;
                var _getUsageInBody = getUsageInBody(binding, path),
                  capturedInClosure = _getUsageInBody.capturedInClosure;
                if (capturedInClosure) markNeedsBodyWrap();
              }
            }
            var captured = [];
            var updatedBindingsUsages = new Map();
            if (headPath && isBlockScoped(headPath.node)) {
              var names = Object.keys(headPath.getBindingIdentifiers());
              var headScope = headPath.scope;
              for (var _i = 0, _names = names; _i < _names.length; _i++) {
                var _bodyScope;
                var name = _names[_i];
                if ((_bodyScope = bodyScope) != null && _bodyScope.hasOwnBinding(name)) continue;
                var _binding = headScope.getOwnBinding(name);
                if (!_binding) {
                  headScope.crawl();
                  _binding = headScope.getOwnBinding(name);
                }
                var _getUsageInBody2 = getUsageInBody(_binding, path),
                  usages = _getUsageInBody2.usages,
                  _capturedInClosure = _getUsageInBody2.capturedInClosure,
                  hasConstantViolations = _getUsageInBody2.hasConstantViolations;
                if (headScope.parent.hasBinding(name) || headScope.parent.hasGlobal(name)) {
                  var newName = headScope.generateUid(name);
                  headScope.rename(name, newName);
                  name = newName;
                }
                if (_capturedInClosure) {
                  markNeedsBodyWrap();
                  captured.push(name);
                }
                if (isForStatement && hasConstantViolations) {
                  updatedBindingsUsages.set(name, usages);
                }
              }
            }
            if (needsBodyWrap) {
              var varPath = wrapLoopBody(path, captured, updatedBindingsUsages);
              if (headPath != null && headPath.isVariableDeclaration()) {
                transformBlockScopedVariable(headPath, state, tdzEnabled);
              }
              varPath.get("declarations.0.init").unwrapFunctionEnvironment();
            }
          }),
          VariableDeclaration: function VariableDeclaration(path, state) {
            transformBlockScopedVariable(path, state, tdzEnabled);
          },
          ClassDeclaration: function ClassDeclaration(path) {
            var id = path.node.id;
            if (!id) return;
            var scope = path.parentPath.scope;
            if (!isVarScope(scope) && scope.parent.hasBinding(id.name, {
              noUids: true
            })) {
              path.scope.rename(id.name);
            }
          }
        }])
      };
    });
    var conflictingFunctionsVisitor = {
      Scope: function Scope(path, _ref) {
        var names = _ref.names;
        for (var _iterator2 = _createForOfIteratorHelperLoose(names), _step2; !(_step2 = _iterator2()).done;) {
          var name = _step2.value;
          var binding = path.scope.getOwnBinding(name);
          if (binding && binding.kind === "hoisted") {
            path.scope.rename(name);
          }
        }
      },
      "Expression|Declaration": function ExpressionDeclaration(path) {
        path.skip();
      }
    };
    function transformBlockScopedVariable(path, state, tdzEnabled) {
      if (!isBlockScoped(path.node)) return;
      var dynamicTDZNames = validateUsage(path, state, tdzEnabled);
      path.node.kind = "var";
      var bindingNames = Object.keys(path.getBindingIdentifiers());
      for (var _i2 = 0, _bindingNames = bindingNames; _i2 < _bindingNames.length; _i2++) {
        var name = _bindingNames[_i2];
        var binding = path.scope.getOwnBinding(name);
        if (!binding) continue;
        binding.kind = "var";
      }
      if (isInLoop(path) && !isVarInLoopHead(path) || dynamicTDZNames.length > 0) {
        for (var _iterator3 = _createForOfIteratorHelperLoose(path.node.declarations), _step3; !(_step3 = _iterator3()).done;) {
          var _decl$init;
          var decl = _step3.value;
          (_decl$init = decl.init) != null ? _decl$init : decl.init = path.scope.buildUndefinedNode();
        }
      }
      var blockScope = path.scope;
      var varScope = blockScope.getFunctionParent() || blockScope.getProgramParent();
      if (varScope !== blockScope) {
        for (var _iterator4 = _createForOfIteratorHelperLoose(bindingNames), _step4; !(_step4 = _iterator4()).done;) {
          var _name = _step4.value;
          var newName = _name;
          if (blockScope.parent.hasBinding(_name, {
            noUids: true
          }) || blockScope.parent.hasGlobal(_name)) {
            newName = blockScope.generateUid(_name);
            blockScope.rename(_name, newName);
          }
          blockScope.moveBindingTo(newName, varScope);
        }
      }
      blockScope.path.traverse(conflictingFunctionsVisitor, {
        names: bindingNames
      });
      for (var _iterator5 = _createForOfIteratorHelperLoose(dynamicTDZNames), _step5; !(_step5 = _iterator5()).done;) {
        var _name2 = _step5.value;
        path.scope.push({
          id: identifier$i(_name2),
          init: state.addHelper("temporalUndefined")
        });
      }
    }
    function isLetOrConst(kind) {
      return kind === "let" || kind === "const";
    }
    function isInLoop(path) {
      if (!path.parentPath) return false;
      if (path.parentPath.isLoop()) return true;
      if (path.parentPath.isFunctionParent()) return false;
      return isInLoop(path.parentPath);
    }
    function isBlockScoped(node) {
      if (!isVariableDeclaration$3(node)) return false;
      if (node[BLOCK_SCOPED_SYMBOL]) {
        return true;
      }
      if (!isLetOrConst(node.kind) && node.kind !== "using") {
        return false;
      }
      return true;
    }
  
    var _templateObject$f;
    var helper$1 = template$2.statement(_templateObject$f || (_templateObject$f = _taggedTemplateLiteralLoose(["\n  function CREATE_SUPER(Derived) {\n    function isNativeReflectConstruct() {\n      if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n\n      // core-js@3\n      if (Reflect.construct.sham) return false;\n\n      // Proxy can't be polyfilled. Every browser implemented\n      // proxies before or at the same time as Reflect.construct,\n      // so if they support Proxy they also support Reflect.construct.\n      if (typeof Proxy === \"function\") return true;\n\n      // Since Reflect.construct can't be properly polyfilled, some\n      // implementations (e.g. core-js@2) don't set the correct internal slots.\n      // Those polyfills don't allow us to subclass built-ins, so we need to\n      // use our fallback implementation.\n      try {\n        // If the internal slots aren't set, this throws an error similar to\n        //   TypeError: this is not a Date object.\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n        return true;\n      } catch (e) {\n        return false;\n      }\n    }\n\n    return function () {\n      var Super = GET_PROTOTYPE_OF(Derived), result;\n      if (isNativeReflectConstruct()) {\n        // NOTE: This doesn't work if this.__proto__.constructor has been modified.\n        var NewTarget = GET_PROTOTYPE_OF(this).constructor;\n        result = Reflect.construct(Super, arguments, NewTarget);\n      } else {\n        result = Super.apply(this, arguments);\n      }\n      return POSSIBLE_CONSTRUCTOR_RETURN(this, result);\n    }\n  }\n"])));
    var helperIDs = new WeakMap();
    function addCreateSuperHelper(file) {
      if (helperIDs.has(file)) {
        return (cloneNode$j || clone)(helperIDs.get(file));
      }
      try {
        return file.addHelper("createSuper");
      } catch (_unused) {}
      var id = file.scope.generateUidIdentifier("createSuper");
      helperIDs.set(file, id);
      var fn = helper$1({
        CREATE_SUPER: id,
        GET_PROTOTYPE_OF: file.addHelper("getPrototypeOf"),
        POSSIBLE_CONSTRUCTOR_RETURN: file.addHelper("possibleConstructorReturn")
      });
      file.path.unshiftContainer("body", [fn]);
      file.scope.registerDeclaration(file.path.get("body.0"));
      return cloneNode$j(id);
    }
  
    var _templateObject$e;
    function buildConstructor(classRef, constructorBody, node) {
      var func = functionDeclaration(cloneNode$j(classRef), [], constructorBody);
      inherits$1(func, node);
      return func;
    }
    function transformClass(path, file, builtinClasses, isLoose, assumptions, supportUnicodeId) {
      var classState = {
        parent: undefined,
        scope: undefined,
        node: undefined,
        path: undefined,
        file: undefined,
        classId: undefined,
        classRef: undefined,
        superFnId: undefined,
        superName: null,
        superReturns: [],
        isDerived: false,
        extendsNative: false,
        construct: undefined,
        constructorBody: undefined,
        userConstructor: undefined,
        userConstructorPath: undefined,
        hasConstructor: false,
        body: [],
        superThises: [],
        pushedConstructor: false,
        pushedInherits: false,
        pushedCreateClass: false,
        protoAlias: null,
        isLoose: false,
        dynamicKeys: new Map(),
        methods: {
          instance: {
            hasComputed: false,
            list: [],
            map: new Map()
          },
          "static": {
            hasComputed: false,
            list: [],
            map: new Map()
          }
        }
      };
      var setState = function setState(newState) {
        Object.assign(classState, newState);
      };
      var findThisesVisitor = traverse.visitors.merge([visitor$5, {
        ThisExpression: function ThisExpression(path) {
          classState.superThises.push(path);
        }
      }]);
      function createClassHelper(args) {
        return callExpression$e(classState.file.addHelper("createClass"), args);
      }
      function maybeCreateConstructor() {
        var hasConstructor = false;
        var paths = classState.path.get("body.body");
        for (var _iterator = _createForOfIteratorHelperLoose(paths), _step; !(_step = _iterator()).done;) {
          var _path = _step.value;
          hasConstructor = _path.equals("kind", "constructor");
          if (hasConstructor) break;
        }
        if (hasConstructor) return;
        var params, body;
        if (classState.isDerived) {
          var _constructor = template$2.expression.ast(_templateObject$e || (_templateObject$e = _taggedTemplateLiteralLoose(["\n        (function () {\n          super(...arguments);\n        })\n      "])));
          params = _constructor.params;
          body = _constructor.body;
        } else {
          params = [];
          body = blockStatement$6([]);
        }
        classState.path.get("body").unshiftContainer("body", classMethod("constructor", identifier$i("constructor"), params, body));
      }
      function buildBody() {
        maybeCreateConstructor();
        pushBody();
        verifyConstructor();
        if (classState.userConstructor) {
          var _constructorBody$body;
          var constructorBody = classState.constructorBody,
            userConstructor = classState.userConstructor,
            construct = classState.construct;
          (_constructorBody$body = constructorBody.body).push.apply(_constructorBody$body, _toConsumableArray(userConstructor.body.body));
          inherits$1(construct, userConstructor);
          inherits$1(constructorBody, userConstructor.body);
        }
        pushDescriptors();
      }
      function pushBody() {
        var classBodyPaths = classState.path.get("body.body");
        var _loop = function _loop() {
          var path = _step2.value;
          var node = path.node;
          if (path.isClassProperty()) {
            throw path.buildCodeFrameError("Missing class properties transform.");
          }
          if (node.decorators) {
            throw path.buildCodeFrameError("Method has decorators, put the decorator plugin before the classes one.");
          }
          if (isClassMethod(node)) {
            var isConstructor = node.kind === "constructor";
            var replaceSupers = new ReplaceSupers({
              methodPath: path,
              objectRef: classState.classRef,
              superRef: classState.superName,
              constantSuper: assumptions.constantSuper,
              file: classState.file,
              refToPreserve: classState.classRef
            });
            replaceSupers.replace();
            var superReturns = [];
            path.traverse(traverse.visitors.merge([visitor$5, {
              ReturnStatement: function ReturnStatement(path) {
                if (!path.getFunctionParent().isArrowFunctionExpression()) {
                  superReturns.push(path);
                }
              }
            }]));
            if (isConstructor) {
              pushConstructor(superReturns, node, path);
            } else {
              pushMethod(node, path);
            }
          }
        };
        for (var _iterator2 = _createForOfIteratorHelperLoose(classBodyPaths), _step2; !(_step2 = _iterator2()).done;) {
          _loop();
        }
      }
      function pushDescriptors() {
        pushInheritsToBody();
        var body = classState.body;
        var props = {
          instance: null,
          "static": null
        };
        for (var _iterator3 = _createForOfIteratorHelperLoose(["static", "instance"]), _step3; !(_step3 = _iterator3()).done;) {
          var placement = _step3.value;
          if (classState.methods[placement].list.length) {
            props[placement] = classState.methods[placement].list.map(function (desc) {
              var obj = objectExpression$3([objectProperty$1(identifier$i("key"), desc.key)]);
              for (var _iterator4 = _createForOfIteratorHelperLoose(["get", "set", "value"]), _step4; !(_step4 = _iterator4()).done;) {
                var kind = _step4.value;
                if (desc[kind] != null) {
                  obj.properties.push(objectProperty$1(identifier$i(kind), desc[kind]));
                }
              }
              return obj;
            });
          }
        }
        if (props.instance || props["static"]) {
          var args = [cloneNode$j(classState.classRef), props.instance ? arrayExpression$1(props.instance) : nullLiteral$2(), props["static"] ? arrayExpression$1(props["static"]) : nullLiteral$2()];
          var lastNonNullIndex = 0;
          for (var i = 0; i < args.length; i++) {
            if (!isNullLiteral$2(args[i])) lastNonNullIndex = i;
          }
          args = args.slice(0, lastNonNullIndex + 1);
          body.push(expressionStatement$a(createClassHelper(args)));
          classState.pushedCreateClass = true;
        }
      }
      function wrapSuperCall(bareSuper, superRef, thisRef, body) {
        var bareSuperNode = bareSuper.node;
        var call;
        if (assumptions.superIsCallableConstructor) {
          bareSuperNode.arguments.unshift(thisExpression$4());
          if (bareSuperNode.arguments.length === 2 && isSpreadElement$1(bareSuperNode.arguments[1]) && isIdentifier$j(bareSuperNode.arguments[1].argument, {
            name: "arguments"
          })) {
            bareSuperNode.arguments[1] = bareSuperNode.arguments[1].argument;
            bareSuperNode.callee = memberExpression$c(cloneNode$j(superRef), identifier$i("apply"));
          } else {
            bareSuperNode.callee = memberExpression$c(cloneNode$j(superRef), identifier$i("call"));
          }
          call = logicalExpression$3("||", bareSuperNode, thisExpression$4());
        } else {
          call = optimiseCallExpression(cloneNode$j(classState.superFnId), thisExpression$4(), bareSuperNode.arguments, false);
        }
        if (bareSuper.parentPath.isExpressionStatement() && bareSuper.parentPath.container === body.node.body && body.node.body.length - 1 === bareSuper.parentPath.key) {
          if (classState.superThises.length) {
            call = assignmentExpression$d("=", thisRef(), call);
          }
          bareSuper.parentPath.replaceWith(returnStatement$3(call));
        } else {
          bareSuper.replaceWith(assignmentExpression$d("=", thisRef(), call));
        }
      }
      function verifyConstructor() {
        if (!classState.isDerived) return;
        var path = classState.userConstructorPath;
        var body = path.get("body");
        path.traverse(findThisesVisitor);
        var _thisRef = function thisRef() {
          var ref = path.scope.generateDeclaredUidIdentifier("this");
          _thisRef = function thisRef() {
            return cloneNode$j(ref);
          };
          return ref;
        };
        for (var _iterator5 = _createForOfIteratorHelperLoose(classState.superThises), _step5; !(_step5 = _iterator5()).done;) {
          var thisPath = _step5.value;
          var node = thisPath.node,
            parentPath = thisPath.parentPath;
          if (parentPath.isMemberExpression({
            object: node
          })) {
            thisPath.replaceWith(_thisRef());
            continue;
          }
          thisPath.replaceWith(callExpression$e(classState.file.addHelper("assertThisInitialized"), [_thisRef()]));
        }
        var bareSupers = [];
        path.traverse(traverse.visitors.merge([visitor$5, {
          Super: function Super(path) {
            var node = path.node,
              parentPath = path.parentPath;
            if (parentPath.isCallExpression({
              callee: node
            })) {
              bareSupers.unshift(parentPath);
            }
          }
        }]));
        var guaranteedSuperBeforeFinish = !!bareSupers.length;
        for (var _i = 0, _bareSupers = bareSupers; _i < _bareSupers.length; _i++) {
          var bareSuper = _bareSupers[_i];
          wrapSuperCall(bareSuper, classState.superName, _thisRef, body);
          if (guaranteedSuperBeforeFinish) {
            bareSuper.find(function (parentPath) {
              if (parentPath === path) {
                return true;
              }
              if (parentPath.isLoop() || parentPath.isConditional() || parentPath.isArrowFunctionExpression()) {
                guaranteedSuperBeforeFinish = false;
                return true;
              }
            });
          }
        }
        var wrapReturn;
        if (classState.isLoose) {
          wrapReturn = function wrapReturn(returnArg) {
            var thisExpr = callExpression$e(classState.file.addHelper("assertThisInitialized"), [_thisRef()]);
            return returnArg ? logicalExpression$3("||", returnArg, thisExpr) : thisExpr;
          };
        } else {
          wrapReturn = function wrapReturn(returnArg) {
            var returnParams = [_thisRef()];
            if (returnArg != null) {
              returnParams.push(returnArg);
            }
            return callExpression$e(classState.file.addHelper("possibleConstructorReturn"), returnParams);
          };
        }
        var bodyPaths = body.get("body");
        if (!bodyPaths.length || !bodyPaths.pop().isReturnStatement()) {
          body.pushContainer("body", returnStatement$3(guaranteedSuperBeforeFinish ? _thisRef() : wrapReturn()));
        }
        for (var _iterator6 = _createForOfIteratorHelperLoose(classState.superReturns), _step6; !(_step6 = _iterator6()).done;) {
          var returnPath = _step6.value;
          returnPath.get("argument").replaceWith(wrapReturn(returnPath.node.argument));
        }
      }
      function pushMethod(node, path) {
        var scope = path ? path.scope : classState.scope;
        if (node.kind === "method") {
          if (processMethod(node, scope)) return;
        }
        var placement = node["static"] ? "static" : "instance";
        var methods = classState.methods[placement];
        var descKey = node.kind === "method" ? "value" : node.kind;
        var key = isNumericLiteral(node.key) || isBigIntLiteral(node.key) ? stringLiteral$8(String(node.key.value)) : toComputedKey$2(node);
        var fn = toExpression$1(node);
        if (isStringLiteral$6(key)) {
          if (node.kind === "method") {
            var _nameFunction;
            fn = (_nameFunction = nameFunction({
              id: key,
              node: node,
              scope: scope
            }, undefined, supportUnicodeId)) != null ? _nameFunction : fn;
          }
        } else {
          methods.hasComputed = true;
        }
        var descriptor;
        if (!methods.hasComputed && methods.map.has(key.value)) {
          descriptor = methods.map.get(key.value);
          descriptor[descKey] = fn;
          if (descKey === "value") {
            descriptor.get = null;
            descriptor.set = null;
          } else {
            descriptor.value = null;
          }
        } else {
          var _descriptor;
          descriptor = (_descriptor = {
            key: key
          }, _descriptor[descKey] = fn, _descriptor);
          methods.list.push(descriptor);
          if (!methods.hasComputed) {
            methods.map.set(key.value, descriptor);
          }
        }
      }
      function processMethod(node, scope) {
        if (assumptions.setClassMethods && !node.decorators) {
          var classRef = classState.classRef;
          if (!node["static"]) {
            insertProtoAliasOnce();
            classRef = classState.protoAlias;
          }
          var methodName = memberExpression$c(cloneNode$j(classRef), node.key, node.computed || isLiteral$6(node.key));
          var func = functionExpression$2(null, node.params, node.body, node.generator, node.async);
          inherits$1(func, node);
          var key = toComputedKey$2(node, node.key);
          if (isStringLiteral$6(key)) {
            var _nameFunction2;
            func = (_nameFunction2 = nameFunction({
              node: func,
              id: key,
              scope: scope
            }, undefined, supportUnicodeId)) != null ? _nameFunction2 : func;
          }
          var expr = expressionStatement$a(assignmentExpression$d("=", methodName, func));
          inheritsComments$1(expr, node);
          classState.body.push(expr);
          return true;
        }
        return false;
      }
      function insertProtoAliasOnce() {
        if (classState.protoAlias === null) {
          setState({
            protoAlias: classState.scope.generateUidIdentifier("proto")
          });
          var classProto = memberExpression$c(classState.classRef, identifier$i("prototype"));
          var protoDeclaration = variableDeclaration$8("var", [variableDeclarator$8(classState.protoAlias, classProto)]);
          classState.body.push(protoDeclaration);
        }
      }
      function pushConstructor(superReturns, method, path) {
        setState({
          userConstructorPath: path,
          userConstructor: method,
          hasConstructor: true,
          superReturns: superReturns
        });
        var construct = classState.construct;
        inheritsComments$1(construct, method);
        construct.params = method.params;
        inherits$1(construct.body, method.body);
        construct.body.directives = method.body.directives;
        pushConstructorToBody();
      }
      function pushConstructorToBody() {
        if (classState.pushedConstructor) return;
        classState.pushedConstructor = true;
        if (classState.hasInstanceDescriptors || classState.hasStaticDescriptors) {
          pushDescriptors();
        }
        classState.body.push(classState.construct);
        pushInheritsToBody();
      }
      function pushInheritsToBody() {
        if (!classState.isDerived || classState.pushedInherits) return;
        var superFnId = path.scope.generateUidIdentifier("super");
        setState({
          pushedInherits: true,
          superFnId: superFnId
        });
        if (!assumptions.superIsCallableConstructor) {
          classState.body.unshift(variableDeclaration$8("var", [variableDeclarator$8(superFnId, callExpression$e(addCreateSuperHelper(classState.file), [cloneNode$j(classState.classRef)]))]));
        }
        classState.body.unshift(expressionStatement$a(callExpression$e(classState.file.addHelper(classState.isLoose ? "inheritsLoose" : "inherits"), [cloneNode$j(classState.classRef), cloneNode$j(classState.superName)])));
      }
      function extractDynamicKeys() {
        var dynamicKeys = classState.dynamicKeys,
          node = classState.node,
          scope = classState.scope;
        for (var _iterator7 = _createForOfIteratorHelperLoose(node.body.body), _step7; !(_step7 = _iterator7()).done;) {
          var elem = _step7.value;
          if (!isClassMethod(elem) || !elem.computed) continue;
          if (scope.isPure(elem.key, true)) continue;
          var id = scope.generateUidIdentifierBasedOnNode(elem.key);
          dynamicKeys.set(id.name, elem.key);
          elem.key = id;
        }
      }
      function setupClosureParamsArgs() {
        var superName = classState.superName,
          dynamicKeys = classState.dynamicKeys;
        var closureParams = [];
        var closureArgs = [];
        if (classState.isDerived) {
          var arg = cloneNode$j(superName);
          if (classState.extendsNative) {
            arg = callExpression$e(classState.file.addHelper("wrapNativeSuper"), [arg]);
            annotateAsPure(arg);
          }
          var param = classState.scope.generateUidIdentifierBasedOnNode(superName);
          closureParams.push(param);
          closureArgs.push(arg);
          setState({
            superName: cloneNode$j(param)
          });
        }
        for (var _iterator8 = _createForOfIteratorHelperLoose(dynamicKeys), _step8; !(_step8 = _iterator8()).done;) {
          var _step8$value = _slicedToArray(_step8.value, 2),
            name = _step8$value[0],
            value = _step8$value[1];
          closureParams.push(identifier$i(name));
          closureArgs.push(value);
        }
        return {
          closureParams: closureParams,
          closureArgs: closureArgs
        };
      }
      function classTransformer(path, file, builtinClasses, isLoose) {
        setState({
          parent: path.parent,
          scope: path.scope,
          node: path.node,
          path: path,
          file: file,
          isLoose: isLoose
        });
        setState({
          classId: classState.node.id,
          classRef: classState.node.id ? identifier$i(classState.node.id.name) : classState.scope.generateUidIdentifier("class"),
          superName: classState.node.superClass,
          isDerived: !!classState.node.superClass,
          constructorBody: blockStatement$6([])
        });
        setState({
          extendsNative: isIdentifier$j(classState.superName) && builtinClasses.has(classState.superName.name) && !classState.scope.hasBinding(classState.superName.name, true)
        });
        var classRef = classState.classRef,
          node = classState.node,
          constructorBody = classState.constructorBody;
        setState({
          construct: buildConstructor(classRef, constructorBody, node)
        });
        extractDynamicKeys();
        var body = classState.body;
        var _setupClosureParamsAr = setupClosureParamsArgs(),
          closureParams = _setupClosureParamsAr.closureParams,
          closureArgs = _setupClosureParamsAr.closureArgs;
        buildBody();
        if (!assumptions.noClassCalls) {
          constructorBody.body.unshift(expressionStatement$a(callExpression$e(classState.file.addHelper("classCallCheck"), [thisExpression$4(), cloneNode$j(classState.classRef)])));
        }
        var isStrict = path.isInStrictMode();
        var constructorOnly = classState.classId && body.length === 1;
        if (constructorOnly && !isStrict) {
          for (var _iterator9 = _createForOfIteratorHelperLoose(classState.construct.params), _step9; !(_step9 = _iterator9()).done;) {
            var param = _step9.value;
            if (!isIdentifier$j(param)) {
              constructorOnly = false;
              break;
            }
          }
        }
        var directives = constructorOnly ? body[0].body.directives : [];
        if (!isStrict) {
          directives.push(directive$1(directiveLiteral$1("use strict")));
        }
        if (constructorOnly) {
          var expr = toExpression$1(body[0]);
          return classState.isLoose ? expr : createClassHelper([expr]);
        }
        var returnArg = cloneNode$j(classState.classRef);
        if (!classState.pushedCreateClass && !classState.isLoose) {
          returnArg = createClassHelper([returnArg]);
        }
        body.push(returnStatement$3(returnArg));
        var container = arrowFunctionExpression$4(closureParams, blockStatement$6(body, directives));
        return callExpression$e(container, closureArgs);
      }
      return classTransformer(path, file, builtinClasses, isLoose);
    }
  
    var getBuiltinClasses = function getBuiltinClasses(category) {
      return Object.keys(globals[category]).filter(function (name) {
        return /^[A-Z]/.test(name);
      });
    };
    var builtinClasses = new Set([].concat(_toConsumableArray(getBuiltinClasses("builtin")), _toConsumableArray(getBuiltinClasses("browser"))));
    var _transformClasses = declare(function (api, options) {
      var _api$assumption, _api$assumption2, _api$assumption3, _api$assumption4;
      api.assertVersion(7);
      var _options$loose = options.loose,
        loose = _options$loose === void 0 ? false : _options$loose;
      var setClassMethods = (_api$assumption = api.assumption("setClassMethods")) != null ? _api$assumption : loose;
      var constantSuper = (_api$assumption2 = api.assumption("constantSuper")) != null ? _api$assumption2 : loose;
      var superIsCallableConstructor = (_api$assumption3 = api.assumption("superIsCallableConstructor")) != null ? _api$assumption3 : loose;
      var noClassCalls = (_api$assumption4 = api.assumption("noClassCalls")) != null ? _api$assumption4 : loose;
      var supportUnicodeId = !isRequired("transform-unicode-escapes", api.targets());
      var VISITED = new WeakSet();
      return {
        name: "transform-classes",
        visitor: {
          ExportDefaultDeclaration: function ExportDefaultDeclaration(path) {
            if (!path.get("declaration").isClassDeclaration()) return;
            splitExportDeclaration(path);
          },
          ClassDeclaration: function ClassDeclaration(path) {
            var node = path.node;
            var ref = node.id || path.scope.generateUidIdentifier("class");
            path.replaceWith(variableDeclaration$8("let", [variableDeclarator$8(ref, toExpression$1(node))]));
          },
          ClassExpression: function ClassExpression(path, state) {
            var node = path.node;
            if (VISITED.has(node)) return;
            var inferred = nameFunction(path, undefined, supportUnicodeId);
            if (inferred && inferred !== node) {
              path.replaceWith(inferred);
              return;
            }
            VISITED.add(node);
            var _path$replaceWith = path.replaceWith(transformClass(path, state.file, builtinClasses, loose, {
                setClassMethods: setClassMethods,
                constantSuper: constantSuper,
                superIsCallableConstructor: superIsCallableConstructor,
                noClassCalls: noClassCalls
              }, supportUnicodeId)),
              _path$replaceWith2 = _slicedToArray(_path$replaceWith, 1),
              replacedPath = _path$replaceWith2[0];
            if (replacedPath.isCallExpression()) {
              annotateAsPure(replacedPath);
              var callee = replacedPath.get("callee");
              if (callee.isArrowFunctionExpression()) {
                callee.arrowFunctionToExpression();
              }
            }
          }
        }
      };
    });
  
    var _templateObject$d;
    {
      var DefineAccessorHelper = template$2.expression.ast(_templateObject$d || (_templateObject$d = _taggedTemplateLiteralLoose(["\n    function (type, obj, key, fn) {\n      var desc = { configurable: true, enumerable: true };\n      desc[type] = fn;\n      return Object.defineProperty(obj, key, desc);\n    }\n  "])));
      DefineAccessorHelper._compact = true;
    }
    var _transformComputedProperties = declare(function (api, options) {
      var _api$assumption;
      api.assertVersion(7);
      var setComputedProperties = (_api$assumption = api.assumption("setComputedProperties")) != null ? _api$assumption : options.loose;
      var pushComputedProps = setComputedProperties ? pushComputedPropsLoose : pushComputedPropsSpec;
      function buildDefineAccessor(state, type, obj, key, fn) {
        {
          var helper;
          if (state.availableHelper("defineAccessor")) {
            helper = state.addHelper("defineAccessor");
          } else {
            var file = state.file;
            helper = file.get("fallbackDefineAccessorHelper");
            if (!helper) {
              var id = file.scope.generateUidIdentifier("defineAccessor");
              file.scope.push({
                id: id,
                init: DefineAccessorHelper
              });
              file.set("fallbackDefineAccessorHelper", helper = id);
            }
            helper = cloneNode$j(helper);
          }
          return callExpression$e(helper, [stringLiteral$8(type), obj, key, fn]);
        }
      }
      function getValue(prop) {
        if (isObjectProperty$5(prop)) {
          return prop.value;
        } else if (isObjectMethod$1(prop)) {
          return functionExpression$2(null, prop.params, prop.body, prop.generator, prop.async);
        }
      }
      function pushAssign(objId, prop, body) {
        body.push(expressionStatement$a(assignmentExpression$d("=", memberExpression$c(cloneNode$j(objId), prop.key, prop.computed || isLiteral$6(prop.key)), getValue(prop))));
      }
      function pushAccessorDefine(_ref, prop) {
        var body = _ref.body,
          computedProps = _ref.computedProps,
          initPropExpression = _ref.initPropExpression,
          objId = _ref.objId,
          state = _ref.state;
        var kind = prop.kind;
        var key = !prop.computed && isIdentifier$j(prop.key) ? stringLiteral$8(prop.key.name) : prop.key;
        var value = getValue(prop);
        if (computedProps.length === 1) {
          return buildDefineAccessor(state, kind, initPropExpression, key, value);
        } else {
          body.push(expressionStatement$a(buildDefineAccessor(state, kind, cloneNode$j(objId), key, value)));
        }
      }
      function pushComputedPropsLoose(info) {
        for (var _iterator = _createForOfIteratorHelperLoose(info.computedProps), _step; !(_step = _iterator()).done;) {
          var prop = _step.value;
          if (isObjectMethod$1(prop) && (prop.kind === "get" || prop.kind === "set")) {
            var single = pushAccessorDefine(info, prop);
            if (single) return single;
          } else {
            pushAssign(cloneNode$j(info.objId), prop, info.body);
          }
        }
      }
      function pushComputedPropsSpec(info) {
        var objId = info.objId,
          body = info.body,
          computedProps = info.computedProps,
          state = info.state;
        for (var _iterator2 = _createForOfIteratorHelperLoose(computedProps), _step2; !(_step2 = _iterator2()).done;) {
          var prop = _step2.value;
          var key = toComputedKey$2(prop);
          if (isObjectMethod$1(prop) && (prop.kind === "get" || prop.kind === "set")) {
            var single = pushAccessorDefine(info, prop);
            if (single) return single;
          } else {
            var value = getValue(prop);
            if (computedProps.length === 1) {
              return callExpression$e(state.addHelper("defineProperty"), [info.initPropExpression, key, value]);
            } else {
              body.push(expressionStatement$a(callExpression$e(state.addHelper("defineProperty"), [cloneNode$j(objId), key, value])));
            }
          }
        }
      }
      return {
        name: "transform-computed-properties",
        visitor: {
          ObjectExpression: {
            exit: function exit(path, state) {
              var node = path.node,
                parent = path.parent,
                scope = path.scope;
              var hasComputed = false;
              for (var _iterator3 = _createForOfIteratorHelperLoose(node.properties), _step3; !(_step3 = _iterator3()).done;) {
                var prop = _step3.value;
                hasComputed = prop.computed === true;
                if (hasComputed) break;
              }
              if (!hasComputed) return;
              var initProps = [];
              var computedProps = [];
              var foundComputed = false;
              for (var _iterator4 = _createForOfIteratorHelperLoose(node.properties), _step4; !(_step4 = _iterator4()).done;) {
                var _prop = _step4.value;
                if (isSpreadElement$1(_prop)) {
                  continue;
                }
                if (_prop.computed) {
                  foundComputed = true;
                }
                if (foundComputed) {
                  computedProps.push(_prop);
                } else {
                  initProps.push(_prop);
                }
              }
              var objId = scope.generateUidIdentifierBasedOnNode(parent);
              var initPropExpression = objectExpression$3(initProps);
              var body = [];
              body.push(variableDeclaration$8("var", [variableDeclarator$8(objId, initPropExpression)]));
              var single = pushComputedProps({
                scope: scope,
                objId: objId,
                body: body,
                computedProps: computedProps,
                initPropExpression: initPropExpression,
                state: state
              });
              if (single) {
                path.replaceWith(single);
              } else {
                body.push(expressionStatement$a(cloneNode$j(objId)));
                path.replaceWithMultiple(body);
              }
            }
          }
        }
      };
    });
  
    var _transformDotallRegex = declare(function (api) {
      api.assertVersion(7);
      return createRegExpFeaturePlugin({
        name: "transform-dotall-regex",
        feature: "dotAllFlag"
      });
    });
  
    function getName(key) {
      if (isIdentifier$j(key)) {
        return key.name;
      }
      return key.value.toString();
    }
    var _transformDuplicateKeys = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "transform-duplicate-keys",
        visitor: {
          ObjectExpression: function ObjectExpression(path) {
            var node = path.node;
            var plainProps = node.properties.filter(function (prop) {
              return !isSpreadElement$1(prop) && !prop.computed;
            });
            var alreadySeenData = Object.create(null);
            var alreadySeenGetters = Object.create(null);
            var alreadySeenSetters = Object.create(null);
            for (var _iterator = _createForOfIteratorHelperLoose(plainProps), _step; !(_step = _iterator()).done;) {
              var prop = _step.value;
              var name = getName(prop.key);
              var isDuplicate = false;
              switch (prop.kind) {
                case "get":
                  if (alreadySeenData[name] || alreadySeenGetters[name]) {
                    isDuplicate = true;
                  }
                  alreadySeenGetters[name] = true;
                  break;
                case "set":
                  if (alreadySeenData[name] || alreadySeenSetters[name]) {
                    isDuplicate = true;
                  }
                  alreadySeenSetters[name] = true;
                  break;
                default:
                  if (alreadySeenData[name] || alreadySeenGetters[name] || alreadySeenSetters[name]) {
                    isDuplicate = true;
                  }
                  alreadySeenData[name] = true;
              }
              if (isDuplicate) {
                prop.computed = true;
                prop.key = stringLiteral$8(name);
              }
            }
          }
        }
      };
    });
  
    var assignmentExpression$1 = assignmentExpression$d,
      cloneNode = cloneNode$j,
      isIdentifier$2 = isIdentifier$j,
      isLiteral = isLiteral$6,
      isMemberExpression = isMemberExpression$8,
      isPrivateName = isPrivateName$3,
      isPureish = isPureish$2,
      isSuper = isSuper$3,
      memberExpression$1 = memberExpression$c,
      toComputedKey = toComputedKey$2;
    function getObjRef(node, nodes, scope) {
      var ref;
      if (isIdentifier$2(node)) {
        if (scope.hasBinding(node.name)) {
          return node;
        } else {
          ref = node;
        }
      } else if (isMemberExpression(node)) {
        ref = node.object;
        if (isSuper(ref) || isIdentifier$2(ref) && scope.hasBinding(ref.name)) {
          return ref;
        }
      } else {
        throw new Error("We can't explode this node type " + node["type"]);
      }
      var temp = scope.generateUidIdentifierBasedOnNode(ref);
      scope.push({
        id: temp
      });
      nodes.push(assignmentExpression$1("=", cloneNode(temp), cloneNode(ref)));
      return temp;
    }
    function getPropRef(node, nodes, scope) {
      var prop = node.property;
      if (isPrivateName(prop)) {
        throw new Error("We can't generate property ref for private name, please install `@babel/plugin-proposal-class-properties`");
      }
      var key = toComputedKey(node, prop);
      if (isLiteral(key) && isPureish(key)) return key;
      var temp = scope.generateUidIdentifierBasedOnNode(prop);
      scope.push({
        id: temp
      });
      nodes.push(assignmentExpression$1("=", cloneNode(temp), cloneNode(prop)));
      return temp;
    }
    function explode(node, nodes, scope) {
      var obj = getObjRef(node, nodes, scope);
      var ref, uid;
      if (isIdentifier$2(node)) {
        ref = cloneNode(node);
        uid = obj;
      } else {
        var prop = getPropRef(node, nodes, scope);
        var computed = node.computed || isLiteral(prop);
        uid = memberExpression$1(cloneNode(obj), cloneNode(prop), computed);
        ref = memberExpression$1(cloneNode(obj), cloneNode(prop), computed);
      }
      return {
        uid: uid,
        ref: ref
      };
    }
  
    var assignmentExpression = assignmentExpression$d,
      sequenceExpression = sequenceExpression$7;
    function build (opts) {
      var build = opts.build,
        operator = opts.operator;
      var visitor = {
        AssignmentExpression: function (_AssignmentExpression) {
          function AssignmentExpression(_x) {
            return _AssignmentExpression.apply(this, arguments);
          }
          AssignmentExpression.toString = function () {
            return _AssignmentExpression.toString();
          };
          return AssignmentExpression;
        }(function (path) {
          var node = path.node,
            scope = path.scope;
          if (node.operator !== operator + "=") return;
          var nodes = [];
          var exploded = explode(node.left, nodes, scope);
          nodes.push(assignmentExpression("=", exploded.ref, build(exploded.uid, node.right)));
          path.replaceWith(sequenceExpression(nodes));
        }),
        BinaryExpression: function BinaryExpression(path) {
          var node = path.node;
          if (node.operator === operator) {
            path.replaceWith(build(node.left, node.right));
          }
        }
      };
      return visitor;
    }
  
    var transformExponentialOperator = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "transform-exponentiation-operator",
        visitor: build({
          operator: "**",
          build: function build(left, right) {
            return callExpression$e(memberExpression$c(identifier$i("Math"), identifier$i("pow")), [left, right]);
          }
        })
      };
    });
  
    var transformFlowComments = declare(function (api) {
      api.assertVersion(7);
      function commentFromString(comment) {
        return typeof comment === "string" ? {
          type: "CommentBlock",
          value: comment
        } : comment;
      }
      function attachComment(_ref) {
        var _toPath;
        var ofPath = _ref.ofPath,
          toPath = _ref.toPath,
          _ref$where = _ref.where,
          where = _ref$where === void 0 ? "trailing" : _ref$where,
          _ref$optional = _ref.optional,
          optional = _ref$optional === void 0 ? false : _ref$optional,
          _ref$comments = _ref.comments,
          comments = _ref$comments === void 0 ? generateComment(ofPath, optional) : _ref$comments,
          _ref$keepType = _ref.keepType,
          keepType = _ref$keepType === void 0 ? false : _ref$keepType;
        if (!((_toPath = toPath) != null && _toPath.node)) {
          toPath = ofPath.getPrevSibling();
          where = "trailing";
        }
        if (!toPath.node) {
          toPath = ofPath.getNextSibling();
          where = "leading";
        }
        if (!toPath.node) {
          toPath = ofPath.parentPath;
          where = "inner";
        }
        if (!Array.isArray(comments)) {
          comments = [comments];
        }
        var newComments = comments.map(commentFromString);
        if (!keepType && ofPath != null && ofPath.node) {
          var node = ofPath.node;
          var parent = ofPath.parentPath;
          var prev = ofPath.getPrevSibling();
          var next = ofPath.getNextSibling();
          var isSingleChild = !(prev.node || next.node);
          var leading = node.leadingComments;
          var trailing = node.trailingComments;
          if (isSingleChild && leading) {
            parent.addComments("inner", leading);
          }
          toPath.addComments(where, newComments);
          ofPath.remove();
          if (isSingleChild && trailing) {
            parent.addComments("inner", trailing);
          }
        } else {
          toPath.addComments(where, newComments);
        }
      }
      function wrapInFlowComment(path) {
        attachComment({
          ofPath: path,
          comments: generateComment(path, path.parent.optional)
        });
      }
      function generateComment(path, optional) {
        var comment = path.getSource().replace(/\*-\//g, "*-ESCAPED/").replace(/\*\//g, "*-/");
        if (optional) comment = "?" + comment;
        if (comment[0] !== ":") comment = ":: " + comment;
        return comment;
      }
      function isTypeImport(importKind) {
        return importKind === "type" || importKind === "typeof";
      }
      return {
        name: "transform-flow-comments",
        inherits: syntaxFlow,
        visitor: {
          TypeCastExpression: function TypeCastExpression(path) {
            var node = path.node;
            attachComment({
              ofPath: path.get("typeAnnotation"),
              toPath: path.get("expression"),
              keepType: true
            });
            path.replaceWith(parenthesizedExpression(node.expression));
          },
          Identifier: function Identifier(path) {
            if (path.parentPath.isFlow()) return;
            var node = path.node;
            if (node.typeAnnotation) {
              attachComment({
                ofPath: path.get("typeAnnotation"),
                toPath: path,
                optional: node.optional || node.typeAnnotation.optional
              });
              if (node.optional) {
                node.optional = false;
              }
            } else if (node.optional) {
              attachComment({
                toPath: path,
                comments: ":: ?"
              });
              node.optional = false;
            }
          },
          AssignmentPattern: {
            exit: function exit(_ref2) {
              var node = _ref2.node;
              var left = node.left;
              if (left.optional) {
                left.optional = false;
              }
            }
          },
          Function: function Function(path) {
            if (path.isDeclareFunction()) return;
            var node = path.node;
            if (node.typeParameters) {
              attachComment({
                ofPath: path.get("typeParameters"),
                toPath: path.get("id"),
                optional: node.typeParameters.optional
              });
            }
            if (node.returnType) {
              attachComment({
                ofPath: path.get("returnType"),
                toPath: path.get("body"),
                where: "leading",
                optional: node.returnType.typeAnnotation.optional
              });
            }
          },
          ClassProperty: function ClassProperty(path) {
            var node = path.node;
            if (!node.value) {
              wrapInFlowComment(path);
            } else if (node.typeAnnotation) {
              attachComment({
                ofPath: path.get("typeAnnotation"),
                toPath: path.get("key"),
                optional: node.typeAnnotation.optional
              });
            }
          },
          ExportNamedDeclaration: function ExportNamedDeclaration(path) {
            var node = path.node;
            if (node.exportKind !== "type" && !isFlow$1(node.declaration)) {
              return;
            }
            wrapInFlowComment(path);
          },
          ImportDeclaration: function ImportDeclaration(path) {
            var node = path.node;
            if (isTypeImport(node.importKind)) {
              wrapInFlowComment(path);
              return;
            }
            var typeSpecifiers = node.specifiers.filter(function (specifier) {
              return specifier.type === "ImportSpecifier" && isTypeImport(specifier.importKind);
            });
            var nonTypeSpecifiers = node.specifiers.filter(function (specifier) {
              return specifier.type !== "ImportSpecifier" || !isTypeImport(specifier.importKind);
            });
            node.specifiers = nonTypeSpecifiers;
            if (typeSpecifiers.length > 0) {
              var typeImportNode = cloneNode$j(node);
              typeImportNode.specifiers = typeSpecifiers;
              var comment = ":: " + generate$1(typeImportNode).code;
              if (nonTypeSpecifiers.length > 0) {
                attachComment({
                  toPath: path,
                  comments: comment
                });
              } else {
                attachComment({
                  ofPath: path,
                  comments: comment
                });
              }
            }
          },
          ObjectPattern: function ObjectPattern(path) {
            var node = path.node;
            if (node.typeAnnotation) {
              attachComment({
                ofPath: path.get("typeAnnotation"),
                toPath: path,
                optional: node.optional || node.typeAnnotation.optional
              });
            }
          },
          Flow: function (_Flow) {
            function Flow(_x) {
              return _Flow.apply(this, arguments);
            }
            Flow.toString = function () {
              return _Flow.toString();
            };
            return Flow;
          }(function (path) {
            wrapInFlowComment(path);
          }),
          Class: function Class(path) {
            var node = path.node;
            var comments = [];
            if (node.typeParameters) {
              var typeParameters = path.get("typeParameters");
              comments.push(generateComment(typeParameters, node.typeParameters.optional));
              var trailingComments = node.typeParameters.trailingComments;
              if (trailingComments) {
                var _comments;
                (_comments = comments).push.apply(_comments, _toConsumableArray(trailingComments));
              }
              typeParameters.remove();
            }
            if (node.superClass) {
              if (comments.length > 0) {
                attachComment({
                  toPath: path.get("id"),
                  comments: comments
                });
                comments = [];
              }
              if (node.superTypeParameters) {
                var superTypeParameters = path.get("superTypeParameters");
                comments.push(generateComment(superTypeParameters, superTypeParameters.node.optional));
                superTypeParameters.remove();
              }
            }
            if (node["implements"]) {
              var impls = path.get("implements");
              var comment = "implements " + impls.map(function (impl) {
                return generateComment(impl).replace(/^:: /, "");
              }).join(", ");
              delete node["implements"];
              if (comments.length === 1) {
                comments[0] += " " + comment;
              } else {
                comments.push(":: " + comment);
              }
            }
            if (comments.length > 0) {
              attachComment({
                toPath: path.get("body"),
                where: "leading",
                comments: comments
              });
            }
          }
        }
      };
    });
  
    var transformFlowStripTypes = declare(function (api, opts) {
      api.assertVersion(7);
      var FLOW_DIRECTIVE = /(@flow(\s+(strict(-local)?|weak))?|@noflow)/;
      var skipStrip = false;
      var _opts$requireDirectiv = opts.requireDirective,
        requireDirective = _opts$requireDirectiv === void 0 ? false : _opts$requireDirectiv;
      {
        var _opts$allowDeclareFie = opts.allowDeclareFields,
          allowDeclareFields = _opts$allowDeclareFie === void 0 ? false : _opts$allowDeclareFie;
      }
      return {
        name: "transform-flow-strip-types",
        inherits: syntaxFlow,
        visitor: {
          Program: function Program(path, _ref) {
            var comments = _ref.file.ast.comments;
            skipStrip = false;
            var directiveFound = false;
            if (comments) {
              for (var _iterator = _createForOfIteratorHelperLoose(comments), _step; !(_step = _iterator()).done;) {
                var comment = _step.value;
                if (FLOW_DIRECTIVE.test(comment.value)) {
                  directiveFound = true;
                  comment.value = comment.value.replace(FLOW_DIRECTIVE, "");
                  if (!comment.value.replace(/\*/g, "").trim()) {
                    comment.ignore = true;
                  }
                }
              }
            }
            if (!directiveFound && requireDirective) {
              skipStrip = true;
            }
          },
          ImportDeclaration: function ImportDeclaration(path) {
            if (skipStrip) return;
            if (!path.node.specifiers.length) return;
            var typeCount = 0;
            path.node.specifiers.forEach(function (_ref2) {
              var importKind = _ref2.importKind;
              if (importKind === "type" || importKind === "typeof") {
                typeCount++;
              }
            });
            if (typeCount === path.node.specifiers.length) {
              path.remove();
            }
          },
          Flow: function (_Flow) {
            function Flow(_x) {
              return _Flow.apply(this, arguments);
            }
            Flow.toString = function () {
              return _Flow.toString();
            };
            return Flow;
          }(function (path) {
            if (skipStrip) {
              throw path.buildCodeFrameError("A @flow directive is required when using Flow annotations with " + "the `requireDirective` option.");
            }
            path.remove();
          }),
          ClassPrivateProperty: function ClassPrivateProperty(path) {
            if (skipStrip) return;
            path.node.typeAnnotation = null;
          },
          Class: function Class(path) {
            if (skipStrip) return;
            path.node["implements"] = null;
            path.get("body.body").forEach(function (child) {
              if (child.isClassProperty()) {
                var node = child.node;
                {
                  if (!allowDeclareFields && node.declare) {
                    throw child.buildCodeFrameError("The 'declare' modifier is only allowed when the " + "'allowDeclareFields' option of " + "@babel/plugin-transform-flow-strip-types or " + "@babel/preset-flow is enabled.");
                  }
                }
                if (node.declare) {
                  child.remove();
                } else {
                  {
                    if (!allowDeclareFields && !node.value && !node.decorators) {
                      child.remove();
                      return;
                    }
                  }
                  node.variance = null;
                  node.typeAnnotation = null;
                }
              }
            });
          },
          AssignmentPattern: function AssignmentPattern(_ref3) {
            var node = _ref3.node;
            if (skipStrip) return;
            if (node.left.optional) {
              node.left.optional = false;
            }
          },
          Function: function Function(_ref4) {
            var node = _ref4.node;
            if (skipStrip) return;
            if (node.params.length > 0 && node.params[0].type === "Identifier" && node.params[0].name === "this") {
              node.params.shift();
            }
            for (var i = 0; i < node.params.length; i++) {
              var param = node.params[i];
              if (param.type === "AssignmentPattern") {
                param = param.left;
              }
              if (param.optional) {
                param.optional = false;
              }
            }
            if (!isMethod$1(node)) {
              node.predicate = null;
            }
          },
          TypeCastExpression: function TypeCastExpression(path) {
            if (skipStrip) return;
            var node = path.node;
            do {
              node = node.expression;
            } while (isTypeCastExpression$1(node));
            path.replaceWith(node);
          },
          CallExpression: function CallExpression(_ref5) {
            var node = _ref5.node;
            if (skipStrip) return;
            node.typeArguments = null;
          },
          OptionalCallExpression: function OptionalCallExpression(_ref6) {
            var node = _ref6.node;
            if (skipStrip) return;
            node.typeArguments = null;
          },
          NewExpression: function NewExpression(_ref7) {
            var node = _ref7.node;
            if (skipStrip) return;
            node.typeArguments = null;
          }
        }
      };
    });
  
    function transformWithoutHelper(loose, path, state) {
      var _block$body;
      var pushComputedProps = loose ? pushComputedPropsLoose : pushComputedPropsSpec;
      var node = path.node;
      var build = pushComputedProps(path, state);
      var declar = build.declar;
      var loop = build.loop;
      var block = loop.body;
      path.ensureBlock();
      if (declar) {
        block.body.push(declar);
      }
      (_block$body = block.body).push.apply(_block$body, _toConsumableArray(node.body.body));
      inherits$1(loop, node);
      inherits$1(loop.body, node.body);
      if (build.replaceParent) {
        path.parentPath.replaceWithMultiple(build.node);
        path.remove();
      } else {
        path.replaceWithMultiple(build.node);
      }
    }
    var buildForOfLoose = template$2.statement("\n  for (var LOOP_OBJECT = OBJECT,\n          IS_ARRAY = Array.isArray(LOOP_OBJECT),\n          INDEX = 0,\n          LOOP_OBJECT = IS_ARRAY ? LOOP_OBJECT : LOOP_OBJECT[Symbol.iterator]();;) {\n    INTERMEDIATE;\n    if (IS_ARRAY) {\n      if (INDEX >= LOOP_OBJECT.length) break;\n      ID = LOOP_OBJECT[INDEX++];\n    } else {\n      INDEX = LOOP_OBJECT.next();\n      if (INDEX.done) break;\n      ID = INDEX.value;\n    }\n  }\n");
    var buildForOf = template$2.statements("\n  var ITERATOR_COMPLETION = true;\n  var ITERATOR_HAD_ERROR_KEY = false;\n  var ITERATOR_ERROR_KEY = undefined;\n  try {\n    for (\n      var ITERATOR_KEY = OBJECT[Symbol.iterator](), STEP_KEY;\n      !(ITERATOR_COMPLETION = (STEP_KEY = ITERATOR_KEY.next()).done);\n      ITERATOR_COMPLETION = true\n    ) {}\n  } catch (err) {\n    ITERATOR_HAD_ERROR_KEY = true;\n    ITERATOR_ERROR_KEY = err;\n  } finally {\n    try {\n      if (!ITERATOR_COMPLETION && ITERATOR_KEY.return != null) {\n        ITERATOR_KEY.return();\n      }\n    } finally {\n      if (ITERATOR_HAD_ERROR_KEY) {\n        throw ITERATOR_ERROR_KEY;\n      }\n    }\n  }\n");
    function pushComputedPropsLoose(path, state) {
      var node = path.node,
        scope = path.scope,
        parent = path.parent;
      var left = node.left;
      var declar, id, intermediate;
      if (isIdentifier$j(left) || isPattern(left) || isMemberExpression$8(left)) {
        id = left;
        intermediate = null;
      } else if (isVariableDeclaration$3(left)) {
        id = scope.generateUidIdentifier("ref");
        declar = variableDeclaration$8(left.kind, [variableDeclarator$8(left.declarations[0].id, identifier$i(id.name))]);
        intermediate = variableDeclaration$8("var", [variableDeclarator$8(identifier$i(id.name))]);
      } else {
        throw state.buildCodeFrameError(left, "Unknown node type " + left.type + " in ForStatement");
      }
      var iteratorKey = scope.generateUidIdentifier("iterator");
      var isArrayKey = scope.generateUidIdentifier("isArray");
      var loop = buildForOfLoose({
        LOOP_OBJECT: iteratorKey,
        IS_ARRAY: isArrayKey,
        OBJECT: node.right,
        INDEX: scope.generateUidIdentifier("i"),
        ID: id,
        INTERMEDIATE: intermediate
      });
      var isLabeledParent = isLabeledStatement(parent);
      var labeled;
      if (isLabeledParent) {
        labeled = labeledStatement(parent.label, loop);
      }
      return {
        replaceParent: isLabeledParent,
        declar: declar,
        node: labeled || loop,
        loop: loop
      };
    }
    function pushComputedPropsSpec(path, state) {
      var node = path.node,
        scope = path.scope,
        parent = path.parent;
      var left = node.left;
      var declar;
      var stepKey = scope.generateUid("step");
      var stepValue = memberExpression$c(identifier$i(stepKey), identifier$i("value"));
      if (isIdentifier$j(left) || isPattern(left) || isMemberExpression$8(left)) {
        declar = expressionStatement$a(assignmentExpression$d("=", left, stepValue));
      } else if (isVariableDeclaration$3(left)) {
        declar = variableDeclaration$8(left.kind, [variableDeclarator$8(left.declarations[0].id, stepValue)]);
      } else {
        throw state.buildCodeFrameError(left, "Unknown node type " + left.type + " in ForStatement");
      }
      var template = buildForOf({
        ITERATOR_HAD_ERROR_KEY: scope.generateUidIdentifier("didIteratorError"),
        ITERATOR_COMPLETION: scope.generateUidIdentifier("iteratorNormalCompletion"),
        ITERATOR_ERROR_KEY: scope.generateUidIdentifier("iteratorError"),
        ITERATOR_KEY: scope.generateUidIdentifier("iterator"),
        STEP_KEY: identifier$i(stepKey),
        OBJECT: node.right
      });
      var isLabeledParent = isLabeledStatement(parent);
      var tryBody = template[3].block.body;
      var loop = tryBody[0];
      if (isLabeledParent) {
        tryBody[0] = labeledStatement(parent.label, loop);
      }
      return {
        replaceParent: isLabeledParent,
        declar: declar,
        loop: loop,
        node: template
      };
    }
  
    var _templateObject$c, _templateObject2$5, _templateObject3$4;
    function buildLoopBody(path, declar, newBody) {
      var block;
      var bodyPath = path.get("body");
      var body = newBody != null ? newBody : bodyPath.node;
      if (isBlockStatement$2(body) && Object.keys(path.getBindingIdentifiers()).some(function (id) {
        return bodyPath.scope.hasOwnBinding(id);
      })) {
        block = blockStatement$6([declar, body]);
      } else {
        block = toBlock(body);
        block.body.unshift(declar);
      }
      return block;
    }
    var _transformForOf = declare(function (api, options) {
      var _options$assumeArray, _options$allowArrayLi, _api$assumption;
      api.assertVersion(7);
      {
        var assumeArray = options.assumeArray,
          allowArrayLike = options.allowArrayLike,
          loose = options.loose;
        if (loose === true && assumeArray === true) {
          throw new Error("The loose and assumeArray options cannot be used together in @babel/plugin-transform-for-of");
        }
        if (assumeArray === true && allowArrayLike === true) {
          throw new Error("The assumeArray and allowArrayLike options cannot be used together in @babel/plugin-transform-for-of");
        }
        {
          if (allowArrayLike && /^7\.\d\./.test(api.version)) {
            throw new Error("The allowArrayLike is only supported when using @babel/core@^7.10.0");
          }
        }
      }
      var iterableIsArray = (_options$assumeArray = options.assumeArray) != null ? _options$assumeArray : !options.loose && api.assumption("iterableIsArray");
      var arrayLikeIsIterable = (_options$allowArrayLi = options.allowArrayLike) != null ? _options$allowArrayLi : api.assumption("arrayLikeIsIterable");
      var skipIteratorClosing = (_api$assumption = api.assumption("skipForOfIteratorClosing")) != null ? _api$assumption : options.loose;
      if (iterableIsArray && arrayLikeIsIterable) {
        throw new Error("The \"iterableIsArray\" and \"arrayLikeIsIterable\" assumptions are not compatible.");
      }
      if (iterableIsArray) {
        return {
          name: "transform-for-of",
          visitor: {
            ForOfStatement: function ForOfStatement(path) {
              var scope = path.scope;
              var _path$node = path.node,
                left = _path$node.left,
                right = _path$node.right,
                isAwait = _path$node["await"];
              if (isAwait) {
                return;
              }
              var i = scope.generateUidIdentifier("i");
              var array = scope.maybeGenerateMemoised(right, true);
              var inits = [variableDeclarator$8(i, numericLiteral$8(0))];
              if (array) {
                inits.push(variableDeclarator$8(array, right));
              } else {
                array = right;
              }
              var item = memberExpression$c(cloneNode$j(array), cloneNode$j(i), true);
              var assignment;
              if (isVariableDeclaration$3(left)) {
                assignment = left;
                assignment.declarations[0].init = item;
              } else {
                assignment = expressionStatement$a(assignmentExpression$d("=", left, item));
              }
              path.replaceWith(forStatement(variableDeclaration$8("let", inits), binaryExpression$5("<", cloneNode$j(i), memberExpression$c(cloneNode$j(array), identifier$i("length"))), updateExpression$1("++", cloneNode$j(i)), buildLoopBody(path, assignment)));
            }
          }
        };
      }
      var buildForOfArray = template$2(_templateObject$c || (_templateObject$c = _taggedTemplateLiteralLoose(["\n    for (var KEY = 0, NAME = ARR; KEY < NAME.length; KEY++) BODY;\n  "])));
      var buildForOfNoIteratorClosing = template$2.statements(_templateObject2$5 || (_templateObject2$5 = _taggedTemplateLiteralLoose(["\n    for (var ITERATOR_HELPER = CREATE_ITERATOR_HELPER(OBJECT, ARRAY_LIKE_IS_ITERABLE), STEP_KEY;\n        !(STEP_KEY = ITERATOR_HELPER()).done;) BODY;\n  "])));
      var buildForOf = template$2.statements(_templateObject3$4 || (_templateObject3$4 = _taggedTemplateLiteralLoose(["\n    var ITERATOR_HELPER = CREATE_ITERATOR_HELPER(OBJECT, ARRAY_LIKE_IS_ITERABLE), STEP_KEY;\n    try {\n      for (ITERATOR_HELPER.s(); !(STEP_KEY = ITERATOR_HELPER.n()).done;) BODY;\n    } catch (err) {\n      ITERATOR_HELPER.e(err);\n    } finally {\n      ITERATOR_HELPER.f();\n    }\n  "])));
      var builder = skipIteratorClosing ? {
        build: buildForOfNoIteratorClosing,
        helper: "createForOfIteratorHelperLoose",
        getContainer: function getContainer(nodes) {
          return nodes;
        }
      } : {
        build: buildForOf,
        helper: "createForOfIteratorHelper",
        getContainer: function getContainer(nodes) {
          return nodes[1].block.body;
        }
      };
      function _ForOfStatementArray(path) {
        var node = path.node,
          scope = path.scope;
        var right = scope.generateUidIdentifierBasedOnNode(node.right, "arr");
        var iterationKey = scope.generateUidIdentifier("i");
        var loop = buildForOfArray({
          BODY: node.body,
          KEY: iterationKey,
          NAME: right,
          ARR: node.right
        });
        inherits$1(loop, node);
        var iterationValue = memberExpression$c(cloneNode$j(right), cloneNode$j(iterationKey), true);
        var declar;
        var left = node.left;
        if (isVariableDeclaration$3(left)) {
          left.declarations[0].init = iterationValue;
          declar = left;
        } else {
          declar = expressionStatement$a(assignmentExpression$d("=", left, iterationValue));
        }
        loop.body = buildLoopBody(path, declar, loop.body);
        return loop;
      }
      return {
        name: "transform-for-of",
        visitor: {
          ForOfStatement: function ForOfStatement(path, state) {
            var right = path.get("right");
            if (right.isArrayExpression() || right.isGenericType("Array") || isArrayTypeAnnotation$2(right.getTypeAnnotation())) {
              path.replaceWith(_ForOfStatementArray(path));
              return;
            }
            {
              if (!state.availableHelper(builder.helper)) {
                transformWithoutHelper(skipIteratorClosing, path, state);
                return;
              }
            }
            var node = path.node,
              parent = path.parent,
              scope = path.scope;
            var left = node.left;
            var declar;
            var stepKey = scope.generateUid("step");
            var stepValue = memberExpression$c(identifier$i(stepKey), identifier$i("value"));
            if (isVariableDeclaration$3(left)) {
              declar = variableDeclaration$8(left.kind, [variableDeclarator$8(left.declarations[0].id, stepValue)]);
            } else {
              declar = expressionStatement$a(assignmentExpression$d("=", left, stepValue));
            }
            var nodes = builder.build({
              CREATE_ITERATOR_HELPER: state.addHelper(builder.helper),
              ITERATOR_HELPER: scope.generateUidIdentifier("iterator"),
              ARRAY_LIKE_IS_ITERABLE: arrayLikeIsIterable ? booleanLiteral$4(true) : null,
              STEP_KEY: identifier$i(stepKey),
              OBJECT: node.right,
              BODY: buildLoopBody(path, declar)
            });
            var container = builder.getContainer(nodes);
            inherits$1(container[0], node);
            inherits$1(container[0].body, node.body);
            if (isLabeledStatement(parent)) {
              container[0] = labeledStatement(parent.label, container[0]);
              path.parentPath.replaceWithMultiple(nodes);
              path.skip();
            } else {
              path.replaceWithMultiple(nodes);
            }
          }
        }
      };
    });
  
    var _transformFunctionName = declare(function (api) {
      api.assertVersion(7);
      var supportUnicodeId = !isRequired("transform-unicode-escapes", api.targets());
      return {
        name: "transform-function-name",
        visitor: {
          FunctionExpression: {
            exit: function exit(path) {
              if (path.key !== "value" && !path.parentPath.isObjectProperty()) {
                var replacement = nameFunction(path);
                if (replacement) path.replaceWith(replacement);
              }
            }
          },
          ObjectProperty: function ObjectProperty(path) {
            var value = path.get("value");
            if (value.isFunction()) {
              var newNode = nameFunction(value, false, supportUnicodeId);
              if (newNode) value.replaceWith(newNode);
            }
          }
        }
      };
    });
  
    var transformInstanceof = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "transform-instanceof",
        visitor: {
          BinaryExpression: function BinaryExpression(path) {
            var node = path.node;
            if (node.operator === "instanceof") {
              var helper = this.addHelper("instanceof");
              var isUnderHelper = path.findParent(function (path) {
                return path.isVariableDeclarator() && path.node.id === helper || path.isFunctionDeclaration() && path.node.id && path.node.id.name === helper.name;
              });
              if (isUnderHelper) {
                return;
              } else {
                path.replaceWith(callExpression$e(helper, [node.left, node.right]));
              }
            }
          }
        }
      };
    });
  
    var transformJscript = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "transform-jscript",
        visitor: {
          FunctionExpression: {
            exit: function exit(path) {
              var node = path.node;
              if (!node.id) return;
              path.replaceWith(callExpression$e(functionExpression$2(null, [], blockStatement$6([toStatement(node), returnStatement$3(cloneNode$j(node.id))])), []));
            }
          }
        }
      };
    });
  
    var _transformLiterals = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "transform-literals",
        visitor: {
          NumericLiteral: function NumericLiteral(_ref) {
            var node = _ref.node;
            if (node.extra && /^0[ob]/i.test(node.extra.raw)) {
              node.extra = undefined;
            }
          },
          StringLiteral: function StringLiteral(_ref2) {
            var node = _ref2.node;
            if (node.extra && /\\[u]/gi.test(node.extra.raw)) {
              node.extra = undefined;
            }
          }
        }
      };
    });
  
    var _transformMemberExpressionLiterals = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "transform-member-expression-literals",
        visitor: {
          MemberExpression: {
            exit: function exit(_ref) {
              var node = _ref.node;
              var prop = node.property;
              if (!node.computed && isIdentifier$j(prop) && !isValidES3Identifier(prop.name)) {
                node.property = stringLiteral$8(prop.name);
                node.computed = true;
              }
            }
          }
        }
      };
    });
  
    var _templateObject$b;
    var buildWrapper$1 = template$2.statement("\n  define(MODULE_NAME, AMD_ARGUMENTS, function(IMPORT_NAMES) {\n  })\n");
    var buildAnonymousWrapper = template$2.statement("\n  define([\"require\"], function(REQUIRE) {\n  })\n");
    function injectWrapper(path, wrapper) {
      var _path$node = path.node,
        body = _path$node.body,
        directives = _path$node.directives;
      path.node.directives = [];
      path.node.body = [];
      var amdFactoryCall = path.pushContainer("body", wrapper)[0].get("expression");
      var amdFactoryCallArgs = amdFactoryCall.get("arguments");
      var amdFactory = amdFactoryCallArgs[amdFactoryCallArgs.length - 1].get("body");
      amdFactory.pushContainer("directives", directives);
      amdFactory.pushContainer("body", body);
    }
    var _transformModulesAmd = declare(function (api, options) {
      var _api$assumption, _api$assumption2;
      api.assertVersion(7);
      var allowTopLevelThis = options.allowTopLevelThis,
        strict = options.strict,
        strictMode = options.strictMode,
        importInterop = options.importInterop,
        noInterop = options.noInterop;
      var constantReexports = (_api$assumption = api.assumption("constantReexports")) != null ? _api$assumption : options.loose;
      var enumerableModuleMeta = (_api$assumption2 = api.assumption("enumerableModuleMeta")) != null ? _api$assumption2 : options.loose;
      return {
        name: "transform-modules-amd",
        pre: function pre() {
          this.file.set("@babel/plugin-transform-modules-*", "amd");
        },
        visitor: {
          CallExpression: function CallExpression(path, state) {
            if (!this.file.has("@babel/plugin-proposal-dynamic-import")) return;
            if (!path.get("callee").isImport()) return;
            var requireId = state.requireId,
              resolveId = state.resolveId,
              rejectId = state.rejectId;
            if (!requireId) {
              requireId = path.scope.generateUidIdentifier("require");
              state.requireId = requireId;
            }
            if (!resolveId || !rejectId) {
              resolveId = path.scope.generateUidIdentifier("resolve");
              rejectId = path.scope.generateUidIdentifier("reject");
              state.resolveId = resolveId;
              state.rejectId = rejectId;
            }
            var result = identifier$i("imported");
            if (!noInterop) result = wrapInterop(path, result, "namespace");
            path.replaceWith(buildDynamicImport(path.node, false, false, function (specifier) {
              return template$2.expression.ast(_templateObject$b || (_templateObject$b = _taggedTemplateLiteralLoose(["\n              new Promise((", ", ", ") =>\n                ", "(\n                  [", "],\n                  imported => ", "(", "),\n                  ", "\n                )\n              )\n            "])), resolveId, rejectId, requireId, specifier, cloneNode$j(resolveId), result, cloneNode$j(rejectId));
            }));
          },
          Program: {
            exit: function exit(path, _ref) {
              var requireId = _ref.requireId;
              if (!isModule(path)) {
                if (requireId) {
                  injectWrapper(path, buildAnonymousWrapper({
                    REQUIRE: cloneNode$j(requireId)
                  }));
                }
                return;
              }
              var amdArgs = [];
              var importNames = [];
              if (requireId) {
                amdArgs.push(stringLiteral$8("require"));
                importNames.push(cloneNode$j(requireId));
              }
              var moduleName = getModuleName(this.file.opts, options);
              if (moduleName) moduleName = stringLiteral$8(moduleName);
              var _rewriteModuleStateme = rewriteModuleStatementsAndPrepareHeader(path, {
                  enumerableModuleMeta: enumerableModuleMeta,
                  constantReexports: constantReexports,
                  strict: strict,
                  strictMode: strictMode,
                  allowTopLevelThis: allowTopLevelThis,
                  importInterop: importInterop,
                  noInterop: noInterop,
                  filename: this.file.opts.filename
                }),
                meta = _rewriteModuleStateme.meta,
                headers = _rewriteModuleStateme.headers;
              if (hasExports(meta)) {
                amdArgs.push(stringLiteral$8("exports"));
                importNames.push(identifier$i(meta.exportName));
              }
              for (var _iterator = _createForOfIteratorHelperLoose(meta.source), _step; !(_step = _iterator()).done;) {
                var _step$value = _slicedToArray(_step.value, 2),
                  source = _step$value[0],
                  metadata = _step$value[1];
                amdArgs.push(stringLiteral$8(source));
                importNames.push(identifier$i(metadata.name));
                if (!isSideEffectImport(metadata)) {
                  var interop = wrapInterop(path, identifier$i(metadata.name), metadata.interop);
                  if (interop) {
                    var header = expressionStatement$a(assignmentExpression$d("=", identifier$i(metadata.name), interop));
                    header.loc = metadata.loc;
                    headers.push(header);
                  }
                }
                headers.push.apply(headers, _toConsumableArray(buildNamespaceInitStatements(meta, metadata, constantReexports)));
              }
              ensureStatementsHoisted(headers);
              path.unshiftContainer("body", headers);
              injectWrapper(path, buildWrapper$1({
                MODULE_NAME: moduleName,
                AMD_ARGUMENTS: arrayExpression$1(amdArgs),
                IMPORT_NAMES: importNames
              }));
            }
          }
        }
      };
    });
  
    var _templateObject$a;
    var requireNoInterop = function requireNoInterop(source) {
      return template$2.expression.ast(_templateObject$a || (_templateObject$a = _taggedTemplateLiteralLoose(["require(", ")"])), source);
    };
    var requireInterop = function requireInterop(source, file) {
      return callExpression$e(file.addHelper("interopRequireWildcard"), [requireNoInterop(source)]);
    };
    function transformDynamicImport(path, noInterop, file) {
      var buildRequire = noInterop ? requireNoInterop : requireInterop;
      path.replaceWith(buildDynamicImport(path.node, true, false, function (specifier) {
        return buildRequire(specifier, file);
      }));
    }
  
    var _templateObject$9, _templateObject2$4, _templateObject3$3;
    var transformModulesCommonJS = declare(function (api, options) {
      var _api$assumption, _api$assumption2, _api$assumption3;
      api.assertVersion(7);
      var _options$strictNamesp = options.strictNamespace,
        strictNamespace = _options$strictNamesp === void 0 ? false : _options$strictNamesp,
        _options$mjsStrictNam = options.mjsStrictNamespace,
        mjsStrictNamespace = _options$mjsStrictNam === void 0 ? strictNamespace : _options$mjsStrictNam,
        allowTopLevelThis = options.allowTopLevelThis,
        strict = options.strict,
        strictMode = options.strictMode,
        noInterop = options.noInterop,
        importInterop = options.importInterop,
        _options$lazy = options.lazy,
        lazy = _options$lazy === void 0 ? false : _options$lazy,
        _options$allowCommonJ = options.allowCommonJSExports,
        allowCommonJSExports = _options$allowCommonJ === void 0 ? true : _options$allowCommonJ,
        _options$loose = options.loose,
        loose = _options$loose === void 0 ? false : _options$loose;
      var constantReexports = (_api$assumption = api.assumption("constantReexports")) != null ? _api$assumption : loose;
      var enumerableModuleMeta = (_api$assumption2 = api.assumption("enumerableModuleMeta")) != null ? _api$assumption2 : loose;
      var noIncompleteNsImportDetection = (_api$assumption3 = api.assumption("noIncompleteNsImportDetection")) != null ? _api$assumption3 : false;
      if (typeof lazy !== "boolean" && typeof lazy !== "function" && (!Array.isArray(lazy) || !lazy.every(function (item) {
        return typeof item === "string";
      }))) {
        throw new Error(".lazy must be a boolean, array of strings, or a function");
      }
      if (typeof strictNamespace !== "boolean") {
        throw new Error(".strictNamespace must be a boolean, or undefined");
      }
      if (typeof mjsStrictNamespace !== "boolean") {
        throw new Error(".mjsStrictNamespace must be a boolean, or undefined");
      }
      var getAssertion = function getAssertion(localName) {
        return template$2.expression.ast(_templateObject$9 || (_templateObject$9 = _taggedTemplateLiteralLoose(["\n    (function(){\n      throw new Error(\n        \"The CommonJS '\" + \"", "\" + \"' variable is not available in ES6 modules.\" +\n        \"Consider setting setting sourceType:script or sourceType:unambiguous in your \" +\n        \"Babel config for this file.\");\n    })()\n  "])), localName);
      };
      var moduleExportsVisitor = {
        ReferencedIdentifier: function ReferencedIdentifier(path) {
          var localName = path.node.name;
          if (localName !== "module" && localName !== "exports") return;
          var localBinding = path.scope.getBinding(localName);
          var rootBinding = this.scope.getBinding(localName);
          if (rootBinding !== localBinding || path.parentPath.isObjectProperty({
            value: path.node
          }) && path.parentPath.parentPath.isObjectPattern() || path.parentPath.isAssignmentExpression({
            left: path.node
          }) || path.isAssignmentExpression({
            left: path.node
          })) {
            return;
          }
          path.replaceWith(getAssertion(localName));
        },
        UpdateExpression: function UpdateExpression(path) {
          var arg = path.get("argument");
          if (!arg.isIdentifier()) return;
          var localName = arg.node.name;
          if (localName !== "module" && localName !== "exports") return;
          var localBinding = path.scope.getBinding(localName);
          var rootBinding = this.scope.getBinding(localName);
          if (rootBinding !== localBinding) return;
          path.replaceWith(assignmentExpression$d(path.node.operator[0] + "=", arg.node, getAssertion(localName)));
        },
        AssignmentExpression: function AssignmentExpression(path) {
          var _this = this;
          var left = path.get("left");
          if (left.isIdentifier()) {
            var localName = left.node.name;
            if (localName !== "module" && localName !== "exports") return;
            var localBinding = path.scope.getBinding(localName);
            var rootBinding = this.scope.getBinding(localName);
            if (rootBinding !== localBinding) return;
            var right = path.get("right");
            right.replaceWith(sequenceExpression$7([right.node, getAssertion(localName)]));
          } else if (left.isPattern()) {
            var ids = left.getOuterBindingIdentifiers();
            var _localName = Object.keys(ids).filter(function (localName) {
              if (localName !== "module" && localName !== "exports") return false;
              return _this.scope.getBinding(localName) === path.scope.getBinding(localName);
            })[0];
            if (_localName) {
              var _right = path.get("right");
              _right.replaceWith(sequenceExpression$7([_right.node, getAssertion(_localName)]));
            }
          }
        }
      };
      return {
        name: "transform-modules-commonjs",
        pre: function pre() {
          this.file.set("@babel/plugin-transform-modules-*", "commonjs");
        },
        visitor: {
          CallExpression: function CallExpression(path) {
            if (!this.file.has("@babel/plugin-proposal-dynamic-import")) return;
            if (!isImport(path.node.callee)) return;
            var scope = path.scope;
            do {
              scope.rename("require");
            } while (scope = scope.parent);
            transformDynamicImport(path, noInterop, this.file);
          },
          Program: {
            exit: function exit(path, state) {
              if (!isModule(path)) return;
              path.scope.rename("exports");
              path.scope.rename("module");
              path.scope.rename("require");
              path.scope.rename("__filename");
              path.scope.rename("__dirname");
              if (!allowCommonJSExports) {
                {
                  simplifyAccess(path, new Set(["module", "exports"]), false);
                }
                path.traverse(moduleExportsVisitor, {
                  scope: path.scope
                });
              }
              var moduleName = getModuleName(this.file.opts, options);
              if (moduleName) moduleName = stringLiteral$8(moduleName);
              var _rewriteModuleStateme = rewriteModuleStatementsAndPrepareHeader(path, {
                  exportName: "exports",
                  constantReexports: constantReexports,
                  enumerableModuleMeta: enumerableModuleMeta,
                  strict: strict,
                  strictMode: strictMode,
                  allowTopLevelThis: allowTopLevelThis,
                  noInterop: noInterop,
                  importInterop: importInterop,
                  lazy: lazy,
                  esNamespaceOnly: typeof state.filename === "string" && /\.mjs$/.test(state.filename) ? mjsStrictNamespace : strictNamespace,
                  noIncompleteNsImportDetection: noIncompleteNsImportDetection,
                  filename: this.file.opts.filename
                }),
                meta = _rewriteModuleStateme.meta,
                headers = _rewriteModuleStateme.headers;
              for (var _iterator = _createForOfIteratorHelperLoose(meta.source), _step; !(_step = _iterator()).done;) {
                var _step$value = _slicedToArray(_step.value, 2),
                  source = _step$value[0],
                  metadata = _step$value[1];
                var loadExpr = callExpression$e(identifier$i("require"), [stringLiteral$8(source)]);
                var header = void 0;
                if (isSideEffectImport(metadata)) {
                  if (metadata.lazy) throw new Error("Assertion failure");
                  header = expressionStatement$a(loadExpr);
                } else {
                  if (metadata.lazy && !metadata.referenced) {
                    continue;
                  }
                  var init = wrapInterop(path, loadExpr, metadata.interop) || loadExpr;
                  if (metadata.lazy) {
                    header = template$2.statement.ast(_templateObject2$4 || (_templateObject2$4 = _taggedTemplateLiteralLoose(["\n                  function ", "() {\n                    const data = ", ";\n                    ", " = function(){ return data; };\n                    return data;\n                  }\n                "])), metadata.name, init, metadata.name);
                  } else {
                    header = template$2.statement.ast(_templateObject3$3 || (_templateObject3$3 = _taggedTemplateLiteralLoose(["\n                  var ", " = ", ";\n                "])), metadata.name, init);
                  }
                }
                header.loc = metadata.loc;
                headers.push(header);
                headers.push.apply(headers, _toConsumableArray(buildNamespaceInitStatements(meta, metadata, constantReexports)));
              }
              ensureStatementsHoisted(headers);
              path.unshiftContainer("body", headers);
              path.get("body").forEach(function (path) {
                if (headers.indexOf(path.node) === -1) return;
                if (path.isVariableDeclaration()) {
                  path.scope.registerDeclaration(path);
                }
              });
            }
          }
        }
      };
    });
  
    var buildTemplate = template$2.statement("\n  SYSTEM_REGISTER(MODULE_NAME, SOURCES, function (EXPORT_IDENTIFIER, CONTEXT_IDENTIFIER) {\n    \"use strict\";\n    BEFORE_BODY;\n    return {\n      setters: SETTERS,\n      execute: EXECUTE,\n    };\n  });\n");
    var buildExportAll = template$2.statement("\n  for (var KEY in TARGET) {\n    if (KEY !== \"default\" && KEY !== \"__esModule\") EXPORT_OBJ[KEY] = TARGET[KEY];\n  }\n");
    var MISSING_PLUGIN_WARNING = "WARNING: Dynamic import() transformation must be enabled using the\n         @babel/plugin-proposal-dynamic-import plugin. Babel 8 will\n         no longer transform import() without using that plugin.\n";
    function getExportSpecifierName(node, stringSpecifiers) {
      if (node.type === "Identifier") {
        return node.name;
      } else if (node.type === "StringLiteral") {
        var stringValue = node.value;
        if (!isIdentifierName(stringValue)) {
          stringSpecifiers.add(stringValue);
        }
        return stringValue;
      } else {
        throw new Error("Expected export specifier to be either Identifier or StringLiteral, got " + node.type);
      }
    }
    function constructExportCall(path, exportIdent, exportNames, exportValues, exportStarTarget, stringSpecifiers) {
      var statements = [];
      if (!exportStarTarget) {
        if (exportNames.length === 1) {
          statements.push(expressionStatement$a(callExpression$e(exportIdent, [stringLiteral$8(exportNames[0]), exportValues[0]])));
        } else {
          var objectProperties = [];
          for (var i = 0; i < exportNames.length; i++) {
            var exportName = exportNames[i];
            var exportValue = exportValues[i];
            objectProperties.push(objectProperty$1(stringSpecifiers.has(exportName) ? stringLiteral$8(exportName) : identifier$i(exportName), exportValue));
          }
          statements.push(expressionStatement$a(callExpression$e(exportIdent, [objectExpression$3(objectProperties)])));
        }
      } else {
        var exportObj = path.scope.generateUid("exportObj");
        statements.push(variableDeclaration$8("var", [variableDeclarator$8(identifier$i(exportObj), objectExpression$3([]))]));
        statements.push(buildExportAll({
          KEY: path.scope.generateUidIdentifier("key"),
          EXPORT_OBJ: identifier$i(exportObj),
          TARGET: exportStarTarget
        }));
        for (var _i = 0; _i < exportNames.length; _i++) {
          var _exportName = exportNames[_i];
          var _exportValue = exportValues[_i];
          statements.push(expressionStatement$a(assignmentExpression$d("=", memberExpression$c(identifier$i(exportObj), identifier$i(_exportName)), _exportValue)));
        }
        statements.push(expressionStatement$a(callExpression$e(exportIdent, [identifier$i(exportObj)])));
      }
      return statements;
    }
    var _transformModulesSystemjs = declare(function (api, options) {
      api.assertVersion(7);
      var _options$systemGlobal = options.systemGlobal,
        systemGlobal = _options$systemGlobal === void 0 ? "System" : _options$systemGlobal,
        _options$allowTopLeve = options.allowTopLevelThis,
        allowTopLevelThis = _options$allowTopLeve === void 0 ? false : _options$allowTopLeve;
      var reassignmentVisited = new WeakSet();
      var reassignmentVisitor = {
        "AssignmentExpression|UpdateExpression": function AssignmentExpressionUpdateExpression(path) {
          if (reassignmentVisited.has(path.node)) return;
          reassignmentVisited.add(path.node);
          var arg = path.isAssignmentExpression() ? path.get("left") : path.get("argument");
          if (arg.isObjectPattern() || arg.isArrayPattern()) {
            var exprs = [path.node];
            for (var _i2 = 0, _Object$keys = Object.keys(arg.getBindingIdentifiers()); _i2 < _Object$keys.length; _i2++) {
              var _name = _Object$keys[_i2];
              if (this.scope.getBinding(_name) !== path.scope.getBinding(_name)) {
                return;
              }
              var _exportedNames = this.exports[_name];
              if (!_exportedNames) continue;
              for (var _iterator = _createForOfIteratorHelperLoose(_exportedNames), _step; !(_step = _iterator()).done;) {
                var exportedName = _step.value;
                exprs.push(this.buildCall(exportedName, identifier$i(_name)).expression);
              }
            }
            path.replaceWith(sequenceExpression$7(exprs));
            return;
          }
          if (!arg.isIdentifier()) return;
          var name = arg.node.name;
          if (this.scope.getBinding(name) !== path.scope.getBinding(name)) return;
          var exportedNames = this.exports[name];
          if (!exportedNames) return;
          var node = path.node;
          var isPostUpdateExpression = isUpdateExpression$2(node, {
            prefix: false
          });
          if (isPostUpdateExpression) {
            node = binaryExpression$5(node.operator[0], unaryExpression$7("+", cloneNode$j(node.argument)), numericLiteral$8(1));
          }
          for (var _iterator2 = _createForOfIteratorHelperLoose(exportedNames), _step2; !(_step2 = _iterator2()).done;) {
            var _exportedName = _step2.value;
            node = this.buildCall(_exportedName, node).expression;
          }
          if (isPostUpdateExpression) {
            node = sequenceExpression$7([node, path.node]);
          }
          path.replaceWith(node);
        }
      };
      return {
        name: "transform-modules-systemjs",
        pre: function pre() {
          this.file.set("@babel/plugin-transform-modules-*", "systemjs");
        },
        visitor: {
          CallExpression: function CallExpression(path, state) {
            if (isImport(path.node.callee)) {
              if (!this.file.has("@babel/plugin-proposal-dynamic-import")) {
                {
                  console.warn(MISSING_PLUGIN_WARNING);
                }
              }
              path.replaceWith(buildDynamicImport(path.node, false, true, function (specifier) {
                return callExpression$e(memberExpression$c(identifier$i(state.contextIdent), identifier$i("import")), [specifier]);
              }));
            }
          },
          MetaProperty: function MetaProperty(path, state) {
            if (path.node.meta.name === "import" && path.node.property.name === "meta") {
              path.replaceWith(memberExpression$c(identifier$i(state.contextIdent), identifier$i("meta")));
            }
          },
          ReferencedIdentifier: function ReferencedIdentifier(path, state) {
            if (path.node.name === "__moduleName" && !path.scope.hasBinding("__moduleName")) {
              path.replaceWith(memberExpression$c(identifier$i(state.contextIdent), identifier$i("id")));
            }
          },
          Program: {
            enter: function enter(path, state) {
              state.contextIdent = path.scope.generateUid("context");
              state.stringSpecifiers = new Set();
              if (!allowTopLevelThis) {
                rewriteThis(path);
              }
            },
            exit: function exit(path, state) {
              var scope = path.scope;
              var exportIdent = scope.generateUid("export");
              var contextIdent = state.contextIdent,
                stringSpecifiers = state.stringSpecifiers;
              var exportMap = Object.create(null);
              var modules = [];
              var beforeBody = [];
              var setters = [];
              var sources = [];
              var variableIds = [];
              var removedPaths = [];
              function addExportName(key, val) {
                exportMap[key] = exportMap[key] || [];
                exportMap[key].push(val);
              }
              function pushModule(source, key, specifiers) {
                var module;
                modules.forEach(function (m) {
                  if (m.key === source) {
                    module = m;
                  }
                });
                if (!module) {
                  modules.push(module = {
                    key: source,
                    imports: [],
                    exports: []
                  });
                }
                module[key] = module[key].concat(specifiers);
              }
              function buildExportCall(name, val) {
                return expressionStatement$a(callExpression$e(identifier$i(exportIdent), [stringLiteral$8(name), val]));
              }
              var exportNames = [];
              var exportValues = [];
              var body = path.get("body");
              for (var _iterator3 = _createForOfIteratorHelperLoose(body), _step3; !(_step3 = _iterator3()).done;) {
                var _path2 = _step3.value;
                if (_path2.isFunctionDeclaration()) {
                  beforeBody.push(_path2.node);
                  removedPaths.push(_path2);
                } else if (_path2.isClassDeclaration()) {
                  variableIds.push(cloneNode$j(_path2.node.id));
                  _path2.replaceWith(expressionStatement$a(assignmentExpression$d("=", cloneNode$j(_path2.node.id), toExpression$1(_path2.node))));
                } else if (_path2.isVariableDeclaration()) {
                  _path2.node.kind = "var";
                } else if (_path2.isImportDeclaration()) {
                  var source = _path2.node.source.value;
                  pushModule(source, "imports", _path2.node.specifiers);
                  for (var _i4 = 0, _Object$keys2 = Object.keys(_path2.getBindingIdentifiers()); _i4 < _Object$keys2.length; _i4++) {
                    var _name2 = _Object$keys2[_i4];
                    scope.removeBinding(_name2);
                    variableIds.push(identifier$i(_name2));
                  }
                  _path2.remove();
                } else if (_path2.isExportAllDeclaration()) {
                  pushModule(_path2.node.source.value, "exports", _path2.node);
                  _path2.remove();
                } else if (_path2.isExportDefaultDeclaration()) {
                  var declar = _path2.node.declaration;
                  if (isClassDeclaration$2(declar)) {
                    var id = declar.id;
                    if (id) {
                      exportNames.push("default");
                      exportValues.push(scope.buildUndefinedNode());
                      variableIds.push(cloneNode$j(id));
                      addExportName(id.name, "default");
                      _path2.replaceWith(expressionStatement$a(assignmentExpression$d("=", cloneNode$j(id), toExpression$1(declar))));
                    } else {
                      exportNames.push("default");
                      exportValues.push(toExpression$1(declar));
                      removedPaths.push(_path2);
                    }
                  } else if (isFunctionDeclaration$2(declar)) {
                    var _id = declar.id;
                    if (_id) {
                      beforeBody.push(declar);
                      exportNames.push("default");
                      exportValues.push(cloneNode$j(_id));
                      addExportName(_id.name, "default");
                    } else {
                      exportNames.push("default");
                      exportValues.push(toExpression$1(declar));
                    }
                    removedPaths.push(_path2);
                  } else {
                    _path2.replaceWith(buildExportCall("default", declar));
                  }
                } else if (_path2.isExportNamedDeclaration()) {
                  var _declar = _path2.node.declaration;
                  if (_declar) {
                    _path2.replaceWith(_declar);
                    if (isFunction$4(_declar)) {
                      var _name3 = _declar.id.name;
                      addExportName(_name3, _name3);
                      beforeBody.push(_declar);
                      exportNames.push(_name3);
                      exportValues.push(cloneNode$j(_declar.id));
                      removedPaths.push(_path2);
                    } else if (isClass$2(_declar)) {
                      var _name4 = _declar.id.name;
                      exportNames.push(_name4);
                      exportValues.push(scope.buildUndefinedNode());
                      variableIds.push(cloneNode$j(_declar.id));
                      _path2.replaceWith(expressionStatement$a(assignmentExpression$d("=", cloneNode$j(_declar.id), toExpression$1(_declar))));
                      addExportName(_name4, _name4);
                    } else {
                      if (isVariableDeclaration$3(_declar)) {
                        _declar.kind = "var";
                      }
                      for (var _i5 = 0, _Object$keys3 = Object.keys(getBindingIdentifiers$2(_declar)); _i5 < _Object$keys3.length; _i5++) {
                        var _name5 = _Object$keys3[_i5];
                        addExportName(_name5, _name5);
                      }
                    }
                  } else {
                    var specifiers = _path2.node.specifiers;
                    if (specifiers != null && specifiers.length) {
                      if (_path2.node.source) {
                        pushModule(_path2.node.source.value, "exports", specifiers);
                        _path2.remove();
                      } else {
                        var nodes = [];
                        for (var _iterator7 = _createForOfIteratorHelperLoose(specifiers), _step7; !(_step7 = _iterator7()).done;) {
                          var specifier = _step7.value;
                          var local = specifier.local,
                            exported = specifier.exported;
                          var binding = scope.getBinding(local.name);
                          var exportedName = getExportSpecifierName(exported, stringSpecifiers);
                          if (binding && isFunctionDeclaration$2(binding.path.node)) {
                            exportNames.push(exportedName);
                            exportValues.push(cloneNode$j(local));
                          } else if (!binding) {
                            nodes.push(buildExportCall(exportedName, local));
                          }
                          addExportName(local.name, exportedName);
                        }
                        _path2.replaceWithMultiple(nodes);
                      }
                    } else {
                      _path2.remove();
                    }
                  }
                }
              }
              modules.forEach(function (specifiers) {
                var setterBody = [];
                var target = scope.generateUid(specifiers.key);
                for (var _iterator4 = _createForOfIteratorHelperLoose(specifiers.imports), _step4; !(_step4 = _iterator4()).done;) {
                  var specifier = _step4.value;
                  if (isImportNamespaceSpecifier$1(specifier)) {
                    setterBody.push(expressionStatement$a(assignmentExpression$d("=", specifier.local, identifier$i(target))));
                  } else if (isImportDefaultSpecifier$1(specifier)) {
                    specifier = importSpecifier$1(specifier.local, identifier$i("default"));
                  }
                  if (isImportSpecifier$1(specifier)) {
                    var _specifier = specifier,
                      imported = _specifier.imported;
                    setterBody.push(expressionStatement$a(assignmentExpression$d("=", specifier.local, memberExpression$c(identifier$i(target), specifier.imported, imported.type === "StringLiteral"))));
                  }
                }
                if (specifiers.exports.length) {
                  var _exportNames = [];
                  var _exportValues = [];
                  var hasExportStar = false;
                  for (var _iterator5 = _createForOfIteratorHelperLoose(specifiers.exports), _step5; !(_step5 = _iterator5()).done;) {
                    var node = _step5.value;
                    if (isExportAllDeclaration$1(node)) {
                      hasExportStar = true;
                    } else if (isExportSpecifier(node)) {
                      var exportedName = getExportSpecifierName(node.exported, stringSpecifiers);
                      _exportNames.push(exportedName);
                      _exportValues.push(memberExpression$c(identifier$i(target), node.local, isStringLiteral$6(node.local)));
                    } else ;
                  }
                  setterBody.push.apply(setterBody, _toConsumableArray(constructExportCall(path, identifier$i(exportIdent), _exportNames, _exportValues, hasExportStar ? identifier$i(target) : null, stringSpecifiers)));
                }
                sources.push(stringLiteral$8(specifiers.key));
                setters.push(functionExpression$2(null, [identifier$i(target)], blockStatement$6(setterBody)));
              });
              var moduleName = getModuleName(this.file.opts, options);
              if (moduleName) moduleName = stringLiteral$8(moduleName);
              hoistVariables(path, function (id, name, hasInit) {
                variableIds.push(id);
                if (!hasInit && name in exportMap) {
                  for (var _iterator6 = _createForOfIteratorHelperLoose(exportMap[name]), _step6; !(_step6 = _iterator6()).done;) {
                    var exported = _step6.value;
                    exportNames.push(exported);
                    exportValues.push(scope.buildUndefinedNode());
                  }
                }
              });
              if (variableIds.length) {
                beforeBody.unshift(variableDeclaration$8("var", variableIds.map(function (id) {
                  return variableDeclarator$8(id);
                })));
              }
              if (exportNames.length) {
                beforeBody.push.apply(beforeBody, _toConsumableArray(constructExportCall(path, identifier$i(exportIdent), exportNames, exportValues, null, stringSpecifiers)));
              }
              path.traverse(reassignmentVisitor, {
                exports: exportMap,
                buildCall: buildExportCall,
                scope: scope
              });
              for (var _i3 = 0, _removedPaths = removedPaths; _i3 < _removedPaths.length; _i3++) {
                var _path = _removedPaths[_i3];
                _path.remove();
              }
              var hasTLA = false;
              path.traverse({
                AwaitExpression: function AwaitExpression(path) {
                  hasTLA = true;
                  path.stop();
                },
                Function: function Function(path) {
                  path.skip();
                },
                noScope: true
              });
              path.node.body = [buildTemplate({
                SYSTEM_REGISTER: memberExpression$c(identifier$i(systemGlobal), identifier$i("register")),
                BEFORE_BODY: beforeBody,
                MODULE_NAME: moduleName,
                SETTERS: arrayExpression$1(setters),
                EXECUTE: functionExpression$2(null, [], blockStatement$6(path.node.body), false, hasTLA),
                SOURCES: arrayExpression$1(sources),
                EXPORT_IDENTIFIER: identifier$i(exportIdent),
                CONTEXT_IDENTIFIER: identifier$i(contextIdent)
              })];
            }
          }
        }
      };
    });
  
    var buildPrerequisiteAssignment = template$2("\n  GLOBAL_REFERENCE = GLOBAL_REFERENCE || {}\n");
    var buildWrapper = template$2("\n  (function (global, factory) {\n    if (typeof define === \"function\" && define.amd) {\n      define(MODULE_NAME, AMD_ARGUMENTS, factory);\n    } else if (typeof exports !== \"undefined\") {\n      factory(COMMONJS_ARGUMENTS);\n    } else {\n      var mod = { exports: {} };\n      factory(BROWSER_ARGUMENTS);\n\n      GLOBAL_TO_ASSIGN;\n    }\n  })(\n    typeof globalThis !== \"undefined\" ? globalThis\n      : typeof self !== \"undefined\" ? self\n      : this,\n    function(IMPORT_NAMES) {\n  })\n");
    var _transformModulesUmd = declare(function (api, options) {
      var _api$assumption, _api$assumption2;
      api.assertVersion(7);
      var globals = options.globals,
        exactGlobals = options.exactGlobals,
        allowTopLevelThis = options.allowTopLevelThis,
        strict = options.strict,
        strictMode = options.strictMode,
        noInterop = options.noInterop,
        importInterop = options.importInterop;
      var constantReexports = (_api$assumption = api.assumption("constantReexports")) != null ? _api$assumption : options.loose;
      var enumerableModuleMeta = (_api$assumption2 = api.assumption("enumerableModuleMeta")) != null ? _api$assumption2 : options.loose;
      function buildBrowserInit(browserGlobals, exactGlobals, filename, moduleName) {
        var moduleNameOrBasename = moduleName ? moduleName.value : basename(filename, extname(filename));
        var globalToAssign = memberExpression$c(identifier$i("global"), identifier$i(toIdentifier$1(moduleNameOrBasename)));
        var initAssignments = [];
        if (exactGlobals) {
          var globalName = browserGlobals[moduleNameOrBasename];
          if (globalName) {
            initAssignments = [];
            var members = globalName.split(".");
            globalToAssign = members.slice(1).reduce(function (accum, curr) {
              initAssignments.push(buildPrerequisiteAssignment({
                GLOBAL_REFERENCE: cloneNode$j(accum)
              }));
              return memberExpression$c(accum, identifier$i(curr));
            }, memberExpression$c(identifier$i("global"), identifier$i(members[0])));
          }
        }
        initAssignments.push(expressionStatement$a(assignmentExpression$d("=", globalToAssign, memberExpression$c(identifier$i("mod"), identifier$i("exports")))));
        return initAssignments;
      }
      function buildBrowserArg(browserGlobals, exactGlobals, source) {
        var memberExpression;
        if (exactGlobals) {
          var globalRef = browserGlobals[source];
          if (globalRef) {
            memberExpression = globalRef.split(".").reduce(function (accum, curr) {
              return memberExpression$c(accum, identifier$i(curr));
            }, identifier$i("global"));
          } else {
            memberExpression = memberExpression$c(identifier$i("global"), identifier$i(toIdentifier$1(source)));
          }
        } else {
          var requireName = basename(source, extname(source));
          var globalName = browserGlobals[requireName] || requireName;
          memberExpression = memberExpression$c(identifier$i("global"), identifier$i(toIdentifier$1(globalName)));
        }
        return memberExpression;
      }
      return {
        name: "transform-modules-umd",
        visitor: {
          Program: {
            exit: function exit(path) {
              if (!isModule(path)) return;
              var browserGlobals = globals || {};
              var moduleName = getModuleName(this.file.opts, options);
              var moduleNameLiteral;
              if (moduleName) moduleNameLiteral = stringLiteral$8(moduleName);
              var _rewriteModuleStateme = rewriteModuleStatementsAndPrepareHeader(path, {
                  constantReexports: constantReexports,
                  enumerableModuleMeta: enumerableModuleMeta,
                  strict: strict,
                  strictMode: strictMode,
                  allowTopLevelThis: allowTopLevelThis,
                  noInterop: noInterop,
                  importInterop: importInterop,
                  filename: this.file.opts.filename
                }),
                meta = _rewriteModuleStateme.meta,
                headers = _rewriteModuleStateme.headers;
              var amdArgs = [];
              var commonjsArgs = [];
              var browserArgs = [];
              var importNames = [];
              if (hasExports(meta)) {
                amdArgs.push(stringLiteral$8("exports"));
                commonjsArgs.push(identifier$i("exports"));
                browserArgs.push(memberExpression$c(identifier$i("mod"), identifier$i("exports")));
                importNames.push(identifier$i(meta.exportName));
              }
              for (var _iterator = _createForOfIteratorHelperLoose(meta.source), _step; !(_step = _iterator()).done;) {
                var _step$value = _slicedToArray(_step.value, 2),
                  source = _step$value[0],
                  metadata = _step$value[1];
                amdArgs.push(stringLiteral$8(source));
                commonjsArgs.push(callExpression$e(identifier$i("require"), [stringLiteral$8(source)]));
                browserArgs.push(buildBrowserArg(browserGlobals, exactGlobals, source));
                importNames.push(identifier$i(metadata.name));
                if (!isSideEffectImport(metadata)) {
                  var interop = wrapInterop(path, identifier$i(metadata.name), metadata.interop);
                  if (interop) {
                    var header = expressionStatement$a(assignmentExpression$d("=", identifier$i(metadata.name), interop));
                    header.loc = meta.loc;
                    headers.push(header);
                  }
                }
                headers.push.apply(headers, _toConsumableArray(buildNamespaceInitStatements(meta, metadata, constantReexports)));
              }
              ensureStatementsHoisted(headers);
              path.unshiftContainer("body", headers);
              var _path$node = path.node,
                body = _path$node.body,
                directives = _path$node.directives;
              path.node.directives = [];
              path.node.body = [];
              var umdWrapper = path.pushContainer("body", [buildWrapper({
                MODULE_NAME: moduleNameLiteral,
                AMD_ARGUMENTS: arrayExpression$1(amdArgs),
                COMMONJS_ARGUMENTS: commonjsArgs,
                BROWSER_ARGUMENTS: browserArgs,
                IMPORT_NAMES: importNames,
                GLOBAL_TO_ASSIGN: buildBrowserInit(browserGlobals, exactGlobals, this.filename || "unknown", moduleNameLiteral)
              })])[0];
              var umdFactory = umdWrapper.get("expression.arguments")[1].get("body");
              umdFactory.pushContainer("directives", directives);
              umdFactory.pushContainer("body", body);
            }
          }
        }
      };
    });
  
    var _transformNamedCapturingGroupsRegex = declare(function (api, options) {
      var runtime = options.runtime;
      if (runtime !== undefined && typeof runtime !== "boolean") {
        throw new Error("The 'runtime' option must be boolean");
      }
      return createRegExpFeaturePlugin({
        name: "transform-named-capturing-groups-regex",
        feature: "namedCaptureGroups",
        options: {
          runtime: runtime
        }
      });
    });
  
    var _transformNewTarget = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "transform-new-target",
        visitor: {
          MetaProperty: function MetaProperty(path) {
            var meta = path.get("meta");
            var property = path.get("property");
            var scope = path.scope;
            if (meta.isIdentifier({
              name: "new"
            }) && property.isIdentifier({
              name: "target"
            })) {
              var func = path.findParent(function (path) {
                if (path.isClass()) return true;
                if (path.isFunction() && !path.isArrowFunctionExpression()) {
                  if (path.isClassMethod({
                    kind: "constructor"
                  })) {
                    return false;
                  }
                  return true;
                }
                return false;
              });
              if (!func) {
                throw path.buildCodeFrameError("new.target must be under a (non-arrow) function or a class.");
              }
              var node = func.node;
              if (isMethod$1(node)) {
                path.replaceWith(scope.buildUndefinedNode());
                return;
              }
              var _constructor = memberExpression$c(thisExpression$4(), identifier$i("constructor"));
              if (func.isClass()) {
                path.replaceWith(_constructor);
                return;
              }
              if (!node.id) {
                node.id = scope.generateUidIdentifier("target");
              } else {
                var _scope = path.scope;
                var name = node.id.name;
                while (_scope !== func.parentPath.scope) {
                  if (_scope.hasOwnBinding(name) && !_scope.bindingIdentifierEquals(name, node.id)) {
                    _scope.rename(name);
                  }
                  _scope = _scope.parent;
                }
              }
              path.replaceWith(conditionalExpression$4(binaryExpression$5("instanceof", thisExpression$4(), cloneNode$j(node.id)), _constructor, scope.buildUndefinedNode()));
            }
          }
        }
      };
    });
  
    var transformObjectAssign = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "transform-object-assign",
        visitor: {
          CallExpression: function CallExpression(path, file) {
            if (path.get("callee").matchesPattern("Object.assign")) {
              path.node.callee = file.addHelper("extends");
            }
          }
        }
      };
    });
  
    function replacePropertySuper(path, getObjectRef, file) {
      var replaceSupers = new ReplaceSupers({
        getObjectRef: getObjectRef,
        methodPath: path,
        file: file
      });
      replaceSupers.replace();
    }
    var _transformObjectSuper = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "transform-object-super",
        visitor: {
          ObjectExpression: function ObjectExpression(path, state) {
            var objectRef;
            var getObjectRef = function getObjectRef() {
              return objectRef = objectRef || path.scope.generateUidIdentifier("obj");
            };
            path.get("properties").forEach(function (propPath) {
              if (!propPath.isMethod()) return;
              replacePropertySuper(propPath, getObjectRef, state.file);
            });
            if (objectRef) {
              path.scope.push({
                id: cloneNode$j(objectRef)
              });
              path.replaceWith(assignmentExpression$d("=", cloneNode$j(objectRef), path.node));
            }
          }
        }
      };
    });
  
    var transformObjectSetPrototypeOfToAssign = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "transform-object-set-prototype-of-to-assign",
        visitor: {
          CallExpression: function CallExpression(path, file) {
            if (path.get("callee").matchesPattern("Object.setPrototypeOf")) {
              path.node.callee = file.addHelper("defaults");
            }
          }
        }
      };
    });
  
    var _transformPropertyLiterals = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "transform-property-literals",
        visitor: {
          ObjectProperty: {
            exit: function exit(_ref) {
              var node = _ref.node;
              var key = node.key;
              if (!node.computed && isIdentifier$j(key) && !isValidES3Identifier(key.name)) {
                node.key = stringLiteral$8(key.name);
              }
            }
          }
        }
      };
    });
  
    function pushAccessor(mutatorMap, node) {
      var _mutatorMap$alias;
      var alias = toKeyAlias(node);
      var map = (_mutatorMap$alias = mutatorMap[alias]) != null ? _mutatorMap$alias : mutatorMap[alias] = {
        _inherits: [],
        _key: node.key
      };
      map._inherits.push(node);
      var value = functionExpression$2(null, node.params, node.body, node.generator, node.async);
      value.returnType = node.returnType;
      inheritsComments$1(value, node);
      map[node.kind] = value;
      return map;
    }
    function toDefineObject(mutatorMap) {
      var objExpr = objectExpression$3([]);
      Object.keys(mutatorMap).forEach(function (mutatorMapKey) {
        var map = mutatorMap[mutatorMapKey];
        map.configurable = booleanLiteral$4(true);
        map.enumerable = booleanLiteral$4(true);
        var mapNode = objectExpression$3([]);
        var propNode = objectProperty$1(map._key, mapNode, map._computed);
        Object.keys(map).forEach(function (key) {
          var node = map[key];
          if (key[0] === "_") return;
          var prop = objectProperty$1(identifier$i(key), node);
          inheritsComments$1(prop, node);
          removeComments$1(node);
          mapNode.properties.push(prop);
        });
        objExpr.properties.push(propNode);
      });
      return objExpr;
    }
  
    var transformPropertyMutators = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "transform-property-mutators",
        visitor: {
          ObjectExpression: function ObjectExpression(path) {
            var node = path.node;
            var mutatorMap;
            var newProperties = node.properties.filter(function (prop) {
              if (isObjectMethod$1(prop) && !prop.computed && (prop.kind === "get" || prop.kind === "set")) {
                var _mutatorMap;
                pushAccessor((_mutatorMap = mutatorMap) != null ? _mutatorMap : mutatorMap = {}, prop);
                return false;
              }
              return true;
            });
            if (mutatorMap === undefined) {
              return;
            }
            node.properties = newProperties;
            path.replaceWith(callExpression$e(memberExpression$c(identifier$i("Object"), identifier$i("defineProperties")), [node, toDefineObject(mutatorMap)]));
          }
        }
      };
    });
  
    var transformProtoToAssign = declare(function (api) {
      api.assertVersion(7);
      function isProtoKey(node) {
        return !isSpreadElement$1(node) && isStringLiteral$6(toComputedKey$2(node, node.key), {
          value: "__proto__"
        });
      }
      function isProtoAssignmentExpression(node) {
        var left = node;
        return isMemberExpression$8(left) && isStringLiteral$6(toComputedKey$2(left, left.property), {
          value: "__proto__"
        });
      }
      function buildDefaultsCallExpression(expr, ref, file) {
        return expressionStatement$a(callExpression$e(file.addHelper("defaults"), [ref, expr.right]));
      }
      return {
        name: "transform-proto-to-assign",
        visitor: {
          AssignmentExpression: function AssignmentExpression(path, _ref) {
            var file = _ref.file;
            if (!isProtoAssignmentExpression(path.node.left)) return;
            var nodes = [];
            var left = path.node.left.object;
            var temp = path.scope.maybeGenerateMemoised(left);
            if (temp) {
              nodes.push(expressionStatement$a(assignmentExpression$d("=", temp, left)));
            }
            nodes.push(buildDefaultsCallExpression(path.node, cloneNode$j(temp || left), file));
            if (temp) nodes.push(cloneNode$j(temp));
            path.replaceWithMultiple(nodes);
          },
          ExpressionStatement: function ExpressionStatement(path, _ref2) {
            var file = _ref2.file;
            var expr = path.node.expression;
            if (!isAssignmentExpression$4(expr, {
              operator: "="
            })) return;
            if (isProtoAssignmentExpression(expr.left)) {
              path.replaceWith(buildDefaultsCallExpression(expr, expr.left.object, file));
            }
          },
          ObjectExpression: function ObjectExpression(path, _ref3) {
            var file = _ref3.file;
            var proto;
            var node = path.node;
            var properties = node.properties;
            for (var i = 0; i < properties.length; i++) {
              var prop = properties[i];
              if (isProtoKey(prop)) {
                proto = prop.value;
                properties.splice(i, 1);
                break;
              }
            }
            if (proto) {
              var args = [objectExpression$3([]), proto];
              if (node.properties.length) args.push(node);
              path.replaceWith(callExpression$e(file.addHelper("extends"), args));
            }
          }
        }
      };
    });
  
    var _templateObject$8;
    var transformReactConstantElements = declare(function (api, options) {
      api.assertVersion(7);
      var allowMutablePropsOnTags = options.allowMutablePropsOnTags;
      if (allowMutablePropsOnTags != null && !Array.isArray(allowMutablePropsOnTags)) {
        throw new Error(".allowMutablePropsOnTags must be an array, null, or undefined.");
      }
      var HOISTED = new WeakMap();
      function declares(node, scope) {
        if (isJSXIdentifier$3(node, {
          name: "this"
        }) || isJSXIdentifier$3(node, {
          name: "arguments"
        }) || isJSXIdentifier$3(node, {
          name: "super"
        }) || isJSXIdentifier$3(node, {
          name: "new"
        })) {
          var path = scope.path;
          return path.isFunctionParent() && !path.isArrowFunctionExpression();
        }
        return scope.hasOwnBinding(node.name);
      }
      function isHoistingScope(_ref) {
        var path = _ref.path;
        return path.isFunctionParent() || path.isLoop() || path.isProgram();
      }
      function getHoistingScope(scope) {
        while (!isHoistingScope(scope)) scope = scope.parent;
        return scope;
      }
      var targetScopeVisitor = {
        ReferencedIdentifier: function ReferencedIdentifier(path, state) {
          var node = path.node;
          var scope = path.scope;
          while (scope !== state.jsxScope) {
            if (declares(node, scope)) return;
            scope = scope.parent;
          }
          while (scope) {
            if (scope === state.targetScope) return;
            if (declares(node, scope)) break;
            scope = scope.parent;
          }
          state.targetScope = getHoistingScope(scope);
        }
      };
      var immutabilityVisitor = {
        enter: function enter(path, state) {
          var stop = function stop() {
            state.isImmutable = false;
            path.stop();
          };
          var skip = function skip() {
            path.skip();
          };
          if (path.isJSXClosingElement()) {
            skip();
            return;
          }
          if (path.isJSXIdentifier({
            name: "ref"
          }) && path.parentPath.isJSXAttribute({
            name: path.node
          })) {
            stop();
            return;
          }
          if (path.isJSXIdentifier() || path.isJSXMemberExpression() || path.isJSXNamespacedName() || path.isImmutable()) {
            return;
          }
          if (path.isIdentifier()) {
            var binding = path.scope.getBinding(path.node.name);
            if (binding && binding.constant) return;
          }
          var mutablePropsAllowed = state.mutablePropsAllowed;
          if (mutablePropsAllowed && path.isFunction()) {
            path.traverse(targetScopeVisitor, state);
            skip();
            return;
          }
          if (!path.isPure()) {
            stop();
            return;
          }
          var expressionResult = path.evaluate();
          if (expressionResult.confident) {
            var value = expressionResult.value;
            if (mutablePropsAllowed || value === null || typeof value !== "object" && typeof value !== "function") {
              skip();
              return;
            }
          } else if (isIdentifier$j(expressionResult.deopt)) {
            return;
          }
          stop();
        }
      };
      var hoistingVisitor = Object.assign({}, immutabilityVisitor, targetScopeVisitor);
      return {
        name: "transform-react-constant-elements",
        visitor: {
          JSXElement: function JSXElement(path) {
            var _jsxScope;
            if (HOISTED.has(path.node)) return;
            var name = path.node.openingElement.name;
            var mutablePropsAllowed = false;
            if (allowMutablePropsOnTags != null) {
              var lastSegment = name;
              while (isJSXMemberExpression$2(lastSegment)) {
                lastSegment = lastSegment.property;
              }
              var elementName = lastSegment.name;
              mutablePropsAllowed = allowMutablePropsOnTags.includes(elementName);
            }
            var jsxScope;
            var current = path;
            while (!jsxScope && current.parentPath.isJSX()) {
              current = current.parentPath;
              jsxScope = HOISTED.get(current.node);
            }
            (_jsxScope = jsxScope) != null ? _jsxScope : jsxScope = path.scope;
            HOISTED.set(path.node, jsxScope);
            var visitorState = {
              isImmutable: true,
              mutablePropsAllowed: mutablePropsAllowed,
              jsxScope: jsxScope,
              targetScope: path.scope.getProgramParent()
            };
            path.traverse(hoistingVisitor, visitorState);
            if (!visitorState.isImmutable) return;
            var targetScope = visitorState.targetScope;
            for (var currentScope = jsxScope;;) {
              if (targetScope === currentScope) return;
              if (isHoistingScope(currentScope)) break;
              currentScope = currentScope.parent;
              if (!currentScope) {
                throw new Error("Internal @babel/plugin-transform-react-constant-elements error: " + "targetScope must be an ancestor of jsxScope. " + "This is a Babel bug, please report it.");
              }
            }
            var id = path.scope.generateUidBasedOnNode(name);
            targetScope.push({
              id: identifier$i(id)
            });
            HOISTED.set(path.node, targetScope);
            var replacement = template$2.expression.ast(_templateObject$8 || (_templateObject$8 = _taggedTemplateLiteralLoose(["\n          ", " || (", " = ", ")\n        "])), identifier$i(id), identifier$i(id), path.node);
            if (path.parentPath.isJSXElement() || path.parentPath.isJSXAttribute()) {
              replacement = jsxExpressionContainer$1(replacement);
            }
            path.replaceWith(replacement);
          }
        }
      };
    });
  
    var transformReactDisplayName = declare(function (api) {
      api.assertVersion(7);
      function addDisplayName(id, call) {
        var props = call.arguments[0].properties;
        var safe = true;
        for (var i = 0; i < props.length; i++) {
          var prop = props[i];
          if (isSpreadElement$1(prop)) {
            continue;
          }
          var key = toComputedKey$2(prop);
          if (isStringLiteral$6(key, {
            value: "displayName"
          })) {
            safe = false;
            break;
          }
        }
        if (safe) {
          props.unshift(objectProperty$1(identifier$i("displayName"), stringLiteral$8(id)));
        }
      }
      var isCreateClassCallExpression = buildMatchMemberExpression$1("React.createClass");
      var isCreateClassAddon = function isCreateClassAddon(callee) {
        return isIdentifier$j(callee, {
          name: "createReactClass"
        });
      };
      function isCreateClass(node) {
        if (!node || !isCallExpression$8(node)) return false;
        if (!isCreateClassCallExpression(node.callee) && !isCreateClassAddon(node.callee)) {
          return false;
        }
        var args = node.arguments;
        if (args.length !== 1) return false;
        var first = args[0];
        if (!isObjectExpression$3(first)) return false;
        return true;
      }
      return {
        name: "transform-react-display-name",
        visitor: {
          ExportDefaultDeclaration: function ExportDefaultDeclaration(_ref, state) {
            var node = _ref.node;
            if (isCreateClass(node.declaration)) {
              var filename = state.filename || "unknown";
              var displayName = path$1.basename(filename, path$1.extname(filename));
              if (displayName === "index") {
                displayName = path$1.basename(path$1.dirname(filename));
              }
              addDisplayName(displayName, node.declaration);
            }
          },
          CallExpression: function CallExpression(path) {
            var node = path.node;
            if (!isCreateClass(node)) return;
            var id;
            path.find(function (path) {
              if (path.isAssignmentExpression()) {
                id = path.node.left;
              } else if (path.isObjectProperty()) {
                id = path.node.key;
              } else if (path.isVariableDeclarator()) {
                id = path.node.id;
              } else if (path.isStatement()) {
                return true;
              }
              if (id) return true;
            });
            if (!id) return;
            if (isMemberExpression$8(id)) {
              id = id.property;
            }
            if (isIdentifier$j(id)) {
              addDisplayName(id.name, node);
            }
          }
        }
      };
    });
  
    var booleanLiteral = booleanLiteral$4,
      callExpression = callExpression$e,
      identifier = identifier$i,
      inherits = inherits$1,
      isIdentifier$1 = isIdentifier$j,
      isJSXExpressionContainer = isJSXExpressionContainer$1,
      isJSXIdentifier = isJSXIdentifier$3,
      isJSXMemberExpression = isJSXMemberExpression$2,
      isJSXNamespacedName = isJSXNamespacedName$1,
      isJSXSpreadAttribute = isJSXSpreadAttribute$1,
      isObjectExpression = isObjectExpression$3,
      isReferenced = isReferenced$2,
      isStringLiteral$1 = isStringLiteral$6,
      isValidIdentifier = isValidIdentifier$1,
      memberExpression = memberExpression$c,
      nullLiteral = nullLiteral$2,
      objectExpression = objectExpression$3,
      objectProperty = objectProperty$1,
      react = react$3,
      spreadElement = spreadElement$2,
      stringLiteral = stringLiteral$8,
      thisExpression = thisExpression$4;
    function helper (opts) {
      var visitor = {};
      visitor.JSXNamespacedName = function (path) {
        if (opts.throwIfNamespace) {
          throw path.buildCodeFrameError("Namespace tags are not supported by default. React's JSX doesn't support namespace tags. You can set `throwIfNamespace: false` to bypass this warning.");
        }
      };
      visitor.JSXSpreadChild = function (path) {
        throw path.buildCodeFrameError("Spread children are not supported in React.");
      };
      visitor.JSXElement = {
        exit: function exit(path, state) {
          var callExpr = buildElementCall(path, state);
          if (callExpr) {
            path.replaceWith(inherits(callExpr, path.node));
          }
        }
      };
      visitor.JSXFragment = {
        exit: function exit(path, state) {
          if (opts.compat) {
            throw path.buildCodeFrameError("Fragment tags are only supported in React 16 and up.");
          }
          var callExpr = buildFragmentCall(path, state);
          if (callExpr) {
            path.replaceWith(inherits(callExpr, path.node));
          }
        }
      };
      return visitor;
      function convertJSXIdentifier(node, parent) {
        if (isJSXIdentifier(node)) {
          if (node.name === "this" && isReferenced(node, parent)) {
            return thisExpression();
          } else if (isValidIdentifier(node.name, false)) {
            node.type = "Identifier";
            return node;
          } else {
            return stringLiteral(node.name);
          }
        } else if (isJSXMemberExpression(node)) {
          return memberExpression(convertJSXIdentifier(node.object, node), convertJSXIdentifier(node.property, node));
        } else if (isJSXNamespacedName(node)) {
          return stringLiteral(node.namespace.name + ":" + node.name.name);
        }
        return node;
      }
      function convertAttributeValue(node) {
        if (isJSXExpressionContainer(node)) {
          return node.expression;
        } else {
          return node;
        }
      }
      function convertAttribute(node) {
        if (isJSXSpreadAttribute(node)) {
          return spreadElement(node.argument);
        }
        var value = convertAttributeValue(node.value || booleanLiteral(true));
        if (isStringLiteral$1(value) && !isJSXExpressionContainer(node.value)) {
          var _value$extra;
          value.value = value.value.replace(/\n\s+/g, " ");
          (_value$extra = value.extra) == null ? true : delete _value$extra.raw;
        }
        if (isJSXNamespacedName(node.name)) {
          node.name = stringLiteral(node.name.namespace.name + ":" + node.name.name.name);
        } else if (isValidIdentifier(node.name.name, false)) {
          node.name.type = "Identifier";
        } else {
          node.name = stringLiteral(node.name.name);
        }
        return inherits(objectProperty(node.name, value), node);
      }
      function buildElementCall(path, pass) {
        if (opts.filter && !opts.filter(path.node, pass)) return;
        var openingPath = path.get("openingElement");
        path.node.children = react.buildChildren(path.node);
        var tagExpr = convertJSXIdentifier(openingPath.node.name, openingPath.node);
        var args = [];
        var tagName;
        if (isIdentifier$1(tagExpr)) {
          tagName = tagExpr.name;
        } else if (isStringLiteral$1(tagExpr)) {
          tagName = tagExpr.value;
        }
        var state = {
          tagExpr: tagExpr,
          tagName: tagName,
          args: args,
          pure: false
        };
        if (opts.pre) {
          opts.pre(state, pass);
        }
        var attribs = openingPath.node.attributes;
        var convertedAttributes;
        if (attribs.length) {
          {
            convertedAttributes = buildOpeningElementAttributes(attribs, pass);
          }
        } else {
          convertedAttributes = nullLiteral();
        }
        args.push.apply(args, [convertedAttributes].concat(_toConsumableArray(path.node.children)));
        if (opts.post) {
          opts.post(state, pass);
        }
        var call = state.call || callExpression(state.callee, args);
        if (state.pure) annotateAsPure(call);
        return call;
      }
      function pushProps(_props, objs) {
        if (!_props.length) return _props;
        objs.push(objectExpression(_props));
        return [];
      }
      function buildOpeningElementAttributes(attribs, pass) {
        var _props = [];
        var objs = [];
        var _pass$opts$useSpread = pass.opts.useSpread,
          useSpread = _pass$opts$useSpread === void 0 ? false : _pass$opts$useSpread;
        if (typeof useSpread !== "boolean") {
          throw new Error("transform-react-jsx currently only accepts a boolean option for " + "useSpread (defaults to false)");
        }
        var useBuiltIns = pass.opts.useBuiltIns || false;
        if (typeof useBuiltIns !== "boolean") {
          throw new Error("transform-react-jsx currently only accepts a boolean option for " + "useBuiltIns (defaults to false)");
        }
        if (useSpread && useBuiltIns) {
          throw new Error("transform-react-jsx currently only accepts useBuiltIns or useSpread " + "but not both");
        }
        if (useSpread) {
          var props = attribs.map(convertAttribute);
          return objectExpression(props);
        }
        while (attribs.length) {
          var prop = attribs.shift();
          if (isJSXSpreadAttribute(prop)) {
            _props = pushProps(_props, objs);
            objs.push(prop.argument);
          } else {
            _props.push(convertAttribute(prop));
          }
        }
        pushProps(_props, objs);
        var convertedAttribs;
        if (objs.length === 1) {
          convertedAttribs = objs[0];
        } else {
          if (!isObjectExpression(objs[0])) {
            objs.unshift(objectExpression([]));
          }
          var helper = useBuiltIns ? memberExpression(identifier("Object"), identifier("assign")) : pass.addHelper("extends");
          convertedAttribs = callExpression(helper, objs);
        }
        return convertedAttribs;
      }
      function buildFragmentCall(path, pass) {
        if (opts.filter && !opts.filter(path.node, pass)) return;
        path.node.children = react.buildChildren(path.node);
        var args = [];
        var tagName = null;
        var tagExpr = pass.get("jsxFragIdentifier")();
        var state = {
          tagExpr: tagExpr,
          tagName: tagName,
          args: args,
          pure: false
        };
        if (opts.pre) {
          opts.pre(state, pass);
        }
        args.push.apply(args, [nullLiteral()].concat(_toConsumableArray(path.node.children)));
        if (opts.post) {
          opts.post(state, pass);
        }
        pass.set("usedFragment", true);
        var call = state.call || callExpression(state.callee, args);
        if (state.pure) annotateAsPure(call);
        return call;
      }
    }
  
    var transformReactInlineElements = declare(function (api) {
      api.assertVersion(7);
      function hasRefOrSpread(attrs) {
        for (var i = 0; i < attrs.length; i++) {
          var attr = attrs[i];
          if (isJSXSpreadAttribute$1(attr)) return true;
          if (isJSXAttributeOfName(attr, "ref")) return true;
        }
        return false;
      }
      function isJSXAttributeOfName(attr, name) {
        return isJSXAttribute(attr) && isJSXIdentifier$3(attr.name, {
          name: name
        });
      }
      var visitor = helper({
        filter: function filter(node) {
          return node.type === "JSXElement" && !hasRefOrSpread(node.openingElement.attributes);
        },
        pre: function pre(state) {
          var tagName = state.tagName;
          var args = state.args;
          if (react$3.isCompatTag(tagName)) {
            args.push(stringLiteral$8(tagName));
          } else {
            args.push(state.tagExpr);
          }
        },
        post: function post(state, pass) {
          state.callee = pass.addHelper("jsx");
          var props = state.args[1];
          var hasKey = false;
          if (isObjectExpression$3(props)) {
            var keyIndex = props.properties.findIndex(function (prop) {
              return isIdentifier$j(prop.key, {
                name: "key"
              });
            });
            if (keyIndex > -1) {
              state.args.splice(2, 0, props.properties[keyIndex].value);
              props.properties.splice(keyIndex, 1);
              hasKey = true;
            }
          } else if (isNullLiteral$2(props)) {
            state.args.splice(1, 1, objectExpression$3([]));
          }
          if (!hasKey && state.args.length > 2) {
            state.args.splice(2, 0, unaryExpression$7("void", numericLiteral$8(0)));
          }
          state.pure = true;
        }
      });
      return {
        name: "transform-react-inline-elements",
        visitor: visitor
      };
    });
  
    var _templateObject$7;
    var DEFAULT = {
      importSource: "react",
      runtime: "automatic",
      pragma: "React.createElement",
      pragmaFrag: "React.Fragment"
    };
    var JSX_SOURCE_ANNOTATION_REGEX = /^\s*\*?\s*@jsxImportSource\s+([^\s]+)\s*$/m;
    var JSX_RUNTIME_ANNOTATION_REGEX = /^\s*\*?\s*@jsxRuntime\s+([^\s]+)\s*$/m;
    var JSX_ANNOTATION_REGEX = /^\s*\*?\s*@jsx\s+([^\s]+)\s*$/m;
    var JSX_FRAG_ANNOTATION_REGEX = /^\s*\*?\s*@jsxFrag\s+([^\s]+)\s*$/m;
    var get = function get(pass, name) {
      return pass.get("@babel/plugin-react-jsx/" + name);
    };
    var set = function set(pass, name, v) {
      return pass.set("@babel/plugin-react-jsx/" + name, v);
    };
    function hasProto(node) {
      return node.properties.some(function (value) {
        return isObjectProperty$5(value, {
          computed: false,
          shorthand: false
        }) && (isIdentifier$j(value.key, {
          name: "__proto__"
        }) || isStringLiteral$6(value.key, {
          value: "__proto__"
        }));
      });
    }
    function createPlugin(_ref) {
      var name = _ref.name,
        development = _ref.development;
      return declare(function (_, options) {
        var PURE_ANNOTATION = options.pure,
          _options$throwIfNames = options.throwIfNamespace,
          throwIfNamespace = _options$throwIfNames === void 0 ? true : _options$throwIfNames,
          filter = options.filter,
          _options$runtime = options.runtime,
          RUNTIME_DEFAULT = _options$runtime === void 0 ? development ? "automatic" : "classic" : _options$runtime,
          _options$importSource = options.importSource,
          IMPORT_SOURCE_DEFAULT = _options$importSource === void 0 ? DEFAULT.importSource : _options$importSource,
          _options$pragma = options.pragma,
          PRAGMA_DEFAULT = _options$pragma === void 0 ? DEFAULT.pragma : _options$pragma,
          _options$pragmaFrag = options.pragmaFrag,
          PRAGMA_FRAG_DEFAULT = _options$pragmaFrag === void 0 ? DEFAULT.pragmaFrag : _options$pragmaFrag;
        {
          var _options$useSpread = options.useSpread,
            useSpread = _options$useSpread === void 0 ? false : _options$useSpread,
            _options$useBuiltIns = options.useBuiltIns,
            useBuiltIns = _options$useBuiltIns === void 0 ? false : _options$useBuiltIns;
          if (RUNTIME_DEFAULT === "classic") {
            if (typeof useSpread !== "boolean") {
              throw new Error("transform-react-jsx currently only accepts a boolean option for " + "useSpread (defaults to false)");
            }
            if (typeof useBuiltIns !== "boolean") {
              throw new Error("transform-react-jsx currently only accepts a boolean option for " + "useBuiltIns (defaults to false)");
            }
            if (useSpread && useBuiltIns) {
              throw new Error("transform-react-jsx currently only accepts useBuiltIns or useSpread " + "but not both");
            }
          }
        }
        var injectMetaPropertiesVisitor = {
          JSXOpeningElement: function JSXOpeningElement(path, state) {
            var attributes = [];
            if (isThisAllowed(path.scope)) {
              attributes.push(jsxAttribute(jsxIdentifier$2("__self"), jsxExpressionContainer$1(thisExpression$4())));
            }
            attributes.push(jsxAttribute(jsxIdentifier$2("__source"), jsxExpressionContainer$1(makeSource(path, state))));
            path.pushContainer("attributes", attributes);
          }
        };
        return {
          name: name,
          inherits: syntaxJsx,
          visitor: {
            JSXNamespacedName: function JSXNamespacedName(path) {
              if (throwIfNamespace) {
                throw path.buildCodeFrameError("Namespace tags are not supported by default. React's JSX doesn't support namespace tags. You can set `throwIfNamespace: false` to bypass this warning.");
              }
            },
            JSXSpreadChild: function JSXSpreadChild(path) {
              throw path.buildCodeFrameError("Spread children are not supported in React.");
            },
            Program: {
              enter: function enter(path, state) {
                var file = state.file;
                var runtime = RUNTIME_DEFAULT;
                var source = IMPORT_SOURCE_DEFAULT;
                var pragma = PRAGMA_DEFAULT;
                var pragmaFrag = PRAGMA_FRAG_DEFAULT;
                var sourceSet = !!options.importSource;
                var pragmaSet = !!options.pragma;
                var pragmaFragSet = !!options.pragmaFrag;
                if (file.ast.comments) {
                  for (var _iterator = _createForOfIteratorHelperLoose(file.ast.comments), _step; !(_step = _iterator()).done;) {
                    var comment = _step.value;
                    var sourceMatches = JSX_SOURCE_ANNOTATION_REGEX.exec(comment.value);
                    if (sourceMatches) {
                      source = sourceMatches[1];
                      sourceSet = true;
                    }
                    var runtimeMatches = JSX_RUNTIME_ANNOTATION_REGEX.exec(comment.value);
                    if (runtimeMatches) {
                      runtime = runtimeMatches[1];
                    }
                    var jsxMatches = JSX_ANNOTATION_REGEX.exec(comment.value);
                    if (jsxMatches) {
                      pragma = jsxMatches[1];
                      pragmaSet = true;
                    }
                    var jsxFragMatches = JSX_FRAG_ANNOTATION_REGEX.exec(comment.value);
                    if (jsxFragMatches) {
                      pragmaFrag = jsxFragMatches[1];
                      pragmaFragSet = true;
                    }
                  }
                }
                set(state, "runtime", runtime);
                if (runtime === "classic") {
                  if (sourceSet) {
                    throw path.buildCodeFrameError("importSource cannot be set when runtime is classic.");
                  }
                  var createElement = toMemberExpression(pragma);
                  var fragment = toMemberExpression(pragmaFrag);
                  set(state, "id/createElement", function () {
                    return cloneNode$j(createElement);
                  });
                  set(state, "id/fragment", function () {
                    return cloneNode$j(fragment);
                  });
                  set(state, "defaultPure", pragma === DEFAULT.pragma);
                } else if (runtime === "automatic") {
                  if (pragmaSet || pragmaFragSet) {
                    throw path.buildCodeFrameError("pragma and pragmaFrag cannot be set when runtime is automatic.");
                  }
                  var define = function define(name, id) {
                    return set(state, name, createImportLazily(state, path, id, source));
                  };
                  define("id/jsx", development ? "jsxDEV" : "jsx");
                  define("id/jsxs", development ? "jsxDEV" : "jsxs");
                  define("id/createElement", "createElement");
                  define("id/fragment", "Fragment");
                  set(state, "defaultPure", source === DEFAULT.importSource);
                } else {
                  throw path.buildCodeFrameError("Runtime must be either \"classic\" or \"automatic\".");
                }
                if (development) {
                  path.traverse(injectMetaPropertiesVisitor, state);
                }
              }
            },
            JSXFragment: {
              exit: function exit(path, file) {
                var callExpr;
                if (get(file, "runtime") === "classic") {
                  callExpr = buildCreateElementFragmentCall(path, file);
                } else {
                  callExpr = buildJSXFragmentCall(path, file);
                }
                path.replaceWith(inherits$1(callExpr, path.node));
              }
            },
            JSXElement: {
              exit: function exit(path, file) {
                var callExpr;
                if (get(file, "runtime") === "classic" || shouldUseCreateElement(path)) {
                  callExpr = buildCreateElementCall(path, file);
                } else {
                  callExpr = buildJSXElementCall(path, file);
                }
                path.replaceWith(inherits$1(callExpr, path.node));
              }
            },
            JSXAttribute: function JSXAttribute(path) {
              if (isJSXElement(path.node.value)) {
                path.node.value = jsxExpressionContainer$1(path.node.value);
              }
            }
          }
        };
        function isDerivedClass(classPath) {
          return classPath.node.superClass !== null;
        }
        function isThisAllowed(scope) {
          do {
            var _scope = scope,
              path = _scope.path;
            if (path.isFunctionParent() && !path.isArrowFunctionExpression()) {
              if (!path.isMethod()) {
                return true;
              }
              if (path.node.kind !== "constructor") {
                return true;
              }
              return !isDerivedClass(path.parentPath.parentPath);
            }
            if (path.isTSModuleBlock()) {
              return false;
            }
          } while (scope = scope.parent);
          return true;
        }
        function call(pass, name, args) {
          var node = callExpression$e(get(pass, "id/" + name)(), args);
          if (PURE_ANNOTATION != null ? PURE_ANNOTATION : get(pass, "defaultPure")) annotateAsPure(node);
          return node;
        }
        function shouldUseCreateElement(path) {
          var openingPath = path.get("openingElement");
          var attributes = openingPath.node.attributes;
          var seenPropsSpread = false;
          for (var i = 0; i < attributes.length; i++) {
            var attr = attributes[i];
            if (seenPropsSpread && isJSXAttribute(attr) && attr.name.name === "key") {
              return true;
            } else if (isJSXSpreadAttribute$1(attr)) {
              seenPropsSpread = true;
            }
          }
          return false;
        }
        function convertJSXIdentifier(node, parent) {
          if (isJSXIdentifier$3(node)) {
            if (node.name === "this" && isReferenced$2(node, parent)) {
              return thisExpression$4();
            } else if (isValidIdentifier$1(node.name, false)) {
              node.type = "Identifier";
              return node;
            } else {
              return stringLiteral$8(node.name);
            }
          } else if (isJSXMemberExpression$2(node)) {
            return memberExpression$c(convertJSXIdentifier(node.object, node), convertJSXIdentifier(node.property, node));
          } else if (isJSXNamespacedName$1(node)) {
            return stringLiteral$8(node.namespace.name + ":" + node.name.name);
          }
          return node;
        }
        function convertAttributeValue(node) {
          if (isJSXExpressionContainer$1(node)) {
            return node.expression;
          } else {
            return node;
          }
        }
        function accumulateAttribute(array, attribute) {
          if (isJSXSpreadAttribute$1(attribute.node)) {
            var arg = attribute.node.argument;
            if (isObjectExpression$3(arg) && !hasProto(arg)) {
              array.push.apply(array, _toConsumableArray(arg.properties));
            } else {
              array.push(spreadElement$2(arg));
            }
            return array;
          }
          var value = convertAttributeValue(attribute.node.name.name !== "key" ? attribute.node.value || booleanLiteral$4(true) : attribute.node.value);
          if (attribute.node.name.name === "key" && value === null) {
            throw attribute.buildCodeFrameError('Please provide an explicit key value. Using "key" as a shorthand for "key={true}" is not allowed.');
          }
          if (isStringLiteral$6(value) && !isJSXExpressionContainer$1(attribute.node.value)) {
            var _value$extra;
            value.value = value.value.replace(/\n\s+/g, " ");
            (_value$extra = value.extra) == null ? true : delete _value$extra.raw;
          }
          if (isJSXNamespacedName$1(attribute.node.name)) {
            attribute.node.name = stringLiteral$8(attribute.node.name.namespace.name + ":" + attribute.node.name.name.name);
          } else if (isValidIdentifier$1(attribute.node.name.name, false)) {
            attribute.node.name.type = "Identifier";
          } else {
            attribute.node.name = stringLiteral$8(attribute.node.name.name);
          }
          array.push(inherits$1(objectProperty$1(attribute.node.name, value), attribute.node));
          return array;
        }
        function buildChildrenProperty(children) {
          var childrenNode;
          if (children.length === 1) {
            childrenNode = children[0];
          } else if (children.length > 1) {
            childrenNode = arrayExpression$1(children);
          } else {
            return undefined;
          }
          return objectProperty$1(identifier$i("children"), childrenNode);
        }
        function buildJSXElementCall(path, file) {
          var openingPath = path.get("openingElement");
          var args = [getTag(openingPath)];
          var attribsArray = [];
          var extracted = Object.create(null);
          for (var _iterator2 = _createForOfIteratorHelperLoose(openingPath.get("attributes")), _step2; !(_step2 = _iterator2()).done;) {
            var attr = _step2.value;
            if (attr.isJSXAttribute() && isJSXIdentifier$3(attr.node.name)) {
              var _name = attr.node.name.name;
              switch (_name) {
                case "__source":
                case "__self":
                  if (extracted[_name]) throw sourceSelfError(path, _name);
                case "key":
                  {
                    var keyValue = convertAttributeValue(attr.node.value);
                    if (keyValue === null) {
                      throw attr.buildCodeFrameError('Please provide an explicit key value. Using "key" as a shorthand for "key={true}" is not allowed.');
                    }
                    extracted[_name] = keyValue;
                    break;
                  }
                default:
                  attribsArray.push(attr);
              }
            } else {
              attribsArray.push(attr);
            }
          }
          var children = react$3.buildChildren(path.node);
          var attribs;
          if (attribsArray.length || children.length) {
            attribs = buildJSXOpeningElementAttributes(attribsArray, children);
          } else {
            attribs = objectExpression$3([]);
          }
          args.push(attribs);
          if (development) {
            var _extracted$key;
            args.push((_extracted$key = extracted.key) != null ? _extracted$key : path.scope.buildUndefinedNode(), booleanLiteral$4(children.length > 1));
            if (extracted.__source) {
              args.push(extracted.__source);
              if (extracted.__self) args.push(extracted.__self);
            } else if (extracted.__self) {
              args.push(path.scope.buildUndefinedNode(), extracted.__self);
            }
          } else if (extracted.key !== undefined) {
            args.push(extracted.key);
          }
          return call(file, children.length > 1 ? "jsxs" : "jsx", args);
        }
        function buildJSXOpeningElementAttributes(attribs, children) {
          var props = attribs.reduce(accumulateAttribute, []);
          if ((children == null ? void 0 : children.length) > 0) {
            props.push(buildChildrenProperty(children));
          }
          return objectExpression$3(props);
        }
        function buildJSXFragmentCall(path, file) {
          var args = [get(file, "id/fragment")()];
          var children = react$3.buildChildren(path.node);
          args.push(objectExpression$3(children.length > 0 ? [buildChildrenProperty(children)] : []));
          if (development) {
            args.push(path.scope.buildUndefinedNode(), booleanLiteral$4(children.length > 1));
          }
          return call(file, children.length > 1 ? "jsxs" : "jsx", args);
        }
        function buildCreateElementFragmentCall(path, file) {
          if (filter && !filter(path.node, file)) return;
          return call(file, "createElement", [get(file, "id/fragment")(), nullLiteral$2()].concat(_toConsumableArray(react$3.buildChildren(path.node))));
        }
        function buildCreateElementCall(path, file) {
          var openingPath = path.get("openingElement");
          return call(file, "createElement", [getTag(openingPath), buildCreateElementOpeningElementAttributes(file, path, openingPath.get("attributes"))].concat(_toConsumableArray(react$3.buildChildren(path.node))));
        }
        function getTag(openingPath) {
          var tagExpr = convertJSXIdentifier(openingPath.node.name, openingPath.node);
          var tagName;
          if (isIdentifier$j(tagExpr)) {
            tagName = tagExpr.name;
          } else if (isStringLiteral$6(tagExpr)) {
            tagName = tagExpr.value;
          }
          if (react$3.isCompatTag(tagName)) {
            return stringLiteral$8(tagName);
          } else {
            return tagExpr;
          }
        }
        function buildCreateElementOpeningElementAttributes(file, path, attribs) {
          var runtime = get(file, "runtime");
          {
            if (runtime !== "automatic") {
              var objs = [];
              var _props = attribs.reduce(accumulateAttribute, []);
              if (!useSpread) {
                var start = 0;
                _props.forEach(function (prop, i) {
                  if (isSpreadElement$1(prop)) {
                    if (i > start) {
                      objs.push(objectExpression$3(_props.slice(start, i)));
                    }
                    objs.push(prop.argument);
                    start = i + 1;
                  }
                });
                if (_props.length > start) {
                  objs.push(objectExpression$3(_props.slice(start)));
                }
              } else if (_props.length) {
                objs.push(objectExpression$3(_props));
              }
              if (!objs.length) {
                return nullLiteral$2();
              }
              if (objs.length === 1) {
                if (!(isSpreadElement$1(_props[0]) && isObjectExpression$3(_props[0].argument))) {
                  return objs[0];
                }
              }
              if (!isObjectExpression$3(objs[0])) {
                objs.unshift(objectExpression$3([]));
              }
              var helper = useBuiltIns ? memberExpression$c(identifier$i("Object"), identifier$i("assign")) : file.addHelper("extends");
              return callExpression$e(helper, objs);
            }
          }
          var props = [];
          var found = Object.create(null);
          for (var _iterator3 = _createForOfIteratorHelperLoose(attribs), _step3; !(_step3 = _iterator3()).done;) {
            var attr = _step3.value;
            var _name2 = isJSXAttribute(attr) && isJSXIdentifier$3(attr.name) && attr.name.name;
            if (runtime === "automatic" && (_name2 === "__source" || _name2 === "__self")) {
              if (found[_name2]) throw sourceSelfError(path, _name2);
              found[_name2] = true;
            }
            accumulateAttribute(props, attr);
          }
          return props.length === 1 && isSpreadElement$1(props[0]) && !isObjectExpression$3(props[0].argument) ? props[0].argument : props.length > 0 ? objectExpression$3(props) : nullLiteral$2();
        }
      });
      function getSource(source, importName) {
        switch (importName) {
          case "Fragment":
            return source + "/" + (development ? "jsx-dev-runtime" : "jsx-runtime");
          case "jsxDEV":
            return source + "/jsx-dev-runtime";
          case "jsx":
          case "jsxs":
            return source + "/jsx-runtime";
          case "createElement":
            return source;
        }
      }
      function createImportLazily(pass, path, importName, source) {
        return function () {
          var actualSource = getSource(source, importName);
          if (isModule(path)) {
            var reference = get(pass, "imports/" + importName);
            if (reference) return cloneNode$j(reference);
            reference = addNamed(path, importName, actualSource, {
              importedInterop: "uncompiled",
              importPosition: "after"
            });
            set(pass, "imports/" + importName, reference);
            return reference;
          } else {
            var _reference = get(pass, "requires/" + actualSource);
            if (_reference) {
              _reference = cloneNode$j(_reference);
            } else {
              _reference = addNamespace(path, actualSource, {
                importedInterop: "uncompiled"
              });
              set(pass, "requires/" + actualSource, _reference);
            }
            return memberExpression$c(_reference, identifier$i(importName));
          }
        };
      }
    }
    function toMemberExpression(id) {
      return id.split(".").map(function (name) {
        return identifier$i(name);
      }).reduce(function (object, property) {
        return memberExpression$c(object, property);
      });
    }
    function makeSource(path, state) {
      var location = path.node.loc;
      if (!location) {
        return path.scope.buildUndefinedNode();
      }
      if (!state.fileNameIdentifier) {
        var _state$filename = state.filename,
          filename = _state$filename === void 0 ? "" : _state$filename;
        var fileNameIdentifier = path.scope.generateUidIdentifier("_jsxFileName");
        path.scope.getProgramParent().push({
          id: fileNameIdentifier,
          init: stringLiteral$8(filename)
        });
        state.fileNameIdentifier = fileNameIdentifier;
      }
      return makeTrace(cloneNode$j(state.fileNameIdentifier), location.start.line, location.start.column);
    }
    function makeTrace(fileNameIdentifier, lineNumber, column0Based) {
      var fileLineLiteral = lineNumber != null ? numericLiteral$8(lineNumber) : nullLiteral$2();
      var fileColumnLiteral = column0Based != null ? numericLiteral$8(column0Based + 1) : nullLiteral$2();
      return template$2.expression.ast(_templateObject$7 || (_templateObject$7 = _taggedTemplateLiteralLoose(["{\n    fileName: ", ",\n    lineNumber: ", ",\n    columnNumber: ", ",\n  }"])), fileNameIdentifier, fileLineLiteral, fileColumnLiteral);
    }
    function sourceSelfError(path, name) {
      var pluginName = "transform-react-jsx-" + name.slice(2);
      return path.buildCodeFrameError("Duplicate " + name + " prop found. You are most likely using the deprecated " + pluginName + " Babel plugin. Both __source and __self are automatically set when using the automatic runtime. Please remove transform-react-jsx-source and transform-react-jsx-self from your Babel config.");
    }
  
    var transformReactJSX = createPlugin({
      name: "transform-react-jsx",
      development: false
    });
  
    var transformReactJsxCompat = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "transform-react-jsx-compat",
        manipulateOptions: function manipulateOptions(_, parserOpts) {
          parserOpts.plugins.push("jsx");
        },
        visitor: helper({
          pre: function pre(state) {
            state.callee = state.tagExpr;
          },
          post: function post(state) {
            if (react$3.isCompatTag(state.tagName)) {
              state.call = callExpression$e(memberExpression$c(memberExpression$c(identifier$i("React"), identifier$i("DOM")), state.tagExpr, isLiteral$6(state.tagExpr)), state.args);
            }
          },
          compat: true
        })
      };
    });
  
    var transformReactJSXDevelopment = createPlugin({
      name: "transform-react-jsx/development",
      development: true
    });
  
    var TRACE_ID$1 = "__self";
    function getThisFunctionParent(path) {
      var scope = path.scope;
      do {
        var _scope = scope,
          _path = _scope.path;
        if (_path.isFunctionParent() && !_path.isArrowFunctionExpression()) {
          return _path;
        }
      } while (scope = scope.parent);
      return null;
    }
    function isDerivedClass(classPath) {
      return classPath.node.superClass !== null;
    }
    function isThisAllowed(path) {
      var parentMethodOrFunction = getThisFunctionParent(path);
      if (parentMethodOrFunction === null) {
        return true;
      }
      if (!parentMethodOrFunction.isMethod()) {
        return true;
      }
      if (parentMethodOrFunction.node.kind !== "constructor") {
        return true;
      }
      return !isDerivedClass(parentMethodOrFunction.parentPath.parentPath);
    }
    var transformReactJsxSelf = declare(function (api) {
      api.assertVersion(7);
      var visitor = {
        JSXOpeningElement: function JSXOpeningElement(path) {
          if (!isThisAllowed(path)) {
            return;
          }
          var node = path.node;
          var id = jsxIdentifier$2(TRACE_ID$1);
          var trace = thisExpression$4();
          node.attributes.push(jsxAttribute(id, jsxExpressionContainer$1(trace)));
        }
      };
      return {
        name: "transform-react-jsx-self",
        visitor: {
          Program: function Program(path) {
            path.traverse(visitor);
          }
        }
      };
    });
  
    var _templateObject$6;
    var TRACE_ID = "__source";
    var FILE_NAME_VAR = "_jsxFileName";
    var createNodeFromNullish = function createNodeFromNullish(val, fn) {
      return val == null ? nullLiteral$2() : fn(val);
    };
    var transformReactJsxSource = declare(function (api) {
      api.assertVersion(7);
      function makeTrace(fileNameIdentifier, _ref) {
        var line = _ref.line,
          column = _ref.column;
        var fileLineLiteral = createNodeFromNullish(line, numericLiteral$8);
        var fileColumnLiteral = createNodeFromNullish(column, function (c) {
          return numericLiteral$8(c + 1);
        });
        return template$2.expression.ast(_templateObject$6 || (_templateObject$6 = _taggedTemplateLiteralLoose(["{\n      fileName: ", ",\n      lineNumber: ", ",\n      columnNumber: ", ",\n    }"])), fileNameIdentifier, fileLineLiteral, fileColumnLiteral);
      }
      var isSourceAttr = function isSourceAttr(attr) {
        return isJSXAttribute(attr) && attr.name.name === TRACE_ID;
      };
      return {
        name: "transform-react-jsx-source",
        visitor: {
          JSXOpeningElement: function JSXOpeningElement(path, state) {
            var node = path.node;
            if (!node.loc || path.node.attributes.some(isSourceAttr)) {
              return;
            }
            if (!state.fileNameIdentifier) {
              var fileNameId = path.scope.generateUidIdentifier(FILE_NAME_VAR);
              state.fileNameIdentifier = fileNameId;
              path.scope.getProgramParent().push({
                id: fileNameId,
                init: stringLiteral$8(state.filename || "")
              });
            }
            node.attributes.push(jsxAttribute(jsxIdentifier$2(TRACE_ID), jsxExpressionContainer$1(makeTrace(cloneNode$j(state.fileNameIdentifier), node.loc.start))));
          }
        }
      };
    });
  
    var lib$1 = {};
  
    var visit = {};
  
    var interopRequireDefault = {exports: {}};
  
    (function (module) {
      function _interopRequireDefault(obj) {
        return obj && obj.__esModule ? obj : {
          "default": obj
        };
      }
      module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports;
    })(interopRequireDefault);
  
    var hoist$2 = {};
  
    var util$1 = {};
  
    var hasRequiredUtil;
    function requireUtil() {
      if (hasRequiredUtil) return util$1;
      hasRequiredUtil = 1;
      util$1.__esModule = true;
      util$1.getTypes = getTypes;
      util$1.isReference = isReference;
      util$1.replaceWithOrRemove = replaceWithOrRemove;
      util$1.runtimeProperty = runtimeProperty;
      util$1.wrapWithTypes = wrapWithTypes;
      var currentTypes = null;
      function wrapWithTypes(types, fn) {
        return function () {
          var oldTypes = currentTypes;
          currentTypes = types;
          try {
            for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
              args[_key] = arguments[_key];
            }
            return fn.apply(this, args);
          } finally {
            currentTypes = oldTypes;
          }
        };
      }
      function getTypes() {
        return currentTypes;
      }
      function runtimeProperty(name) {
        var t = getTypes();
        return t.memberExpression(t.identifier("regeneratorRuntime"), t.identifier(name), false);
      }
      function isReference(path) {
        return path.isReferenced() || path.parentPath.isAssignmentExpression({
          left: path.node
        });
      }
      function replaceWithOrRemove(path, replacement) {
        if (replacement) {
          path.replaceWith(replacement);
        } else {
          path.remove();
        }
      }
      return util$1;
    }
  
    var hasRequiredHoist;
    function requireHoist() {
      if (hasRequiredHoist) return hoist$2;
      hasRequiredHoist = 1;
      var util = _interopRequireWildcard(requireUtil());
      function _getRequireWildcardCache(nodeInterop) {
        if (typeof WeakMap !== "function") return null;
        var cacheBabelInterop = new WeakMap();
        var cacheNodeInterop = new WeakMap();
        return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
          return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
        })(nodeInterop);
      }
      function _interopRequireWildcard(obj, nodeInterop) {
        if (!nodeInterop && obj && obj.__esModule) {
          return obj;
        }
        if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
          return {
            "default": obj
          };
        }
        var cache = _getRequireWildcardCache(nodeInterop);
        if (cache && cache.has(obj)) {
          return cache.get(obj);
        }
        var newObj = {};
        var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
        for (var key in obj) {
          if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
            if (desc && (desc.get || desc.set)) {
              Object.defineProperty(newObj, key, desc);
            } else {
              newObj[key] = obj[key];
            }
          }
        }
        newObj["default"] = obj;
        if (cache) {
          cache.set(obj, newObj);
        }
        return newObj;
      }
      var hasOwn = Object.prototype.hasOwnProperty;
      hoist$2.hoist = function (funPath) {
        var t = util.getTypes();
        t.assertFunction(funPath.node);
        var vars = {};
        function varDeclToExpr(_ref, includeIdentifiers) {
          var vdec = _ref.node,
            scope = _ref.scope;
          t.assertVariableDeclaration(vdec);
          var exprs = [];
          vdec.declarations.forEach(function (dec) {
            vars[dec.id.name] = t.identifier(dec.id.name);
            scope.removeBinding(dec.id.name);
            if (dec.init) {
              exprs.push(t.assignmentExpression("=", dec.id, dec.init));
            } else if (includeIdentifiers) {
              exprs.push(dec.id);
            }
          });
          if (exprs.length === 0) return null;
          if (exprs.length === 1) return exprs[0];
          return t.sequenceExpression(exprs);
        }
        funPath.get("body").traverse({
          VariableDeclaration: {
            exit: function exit(path) {
              var expr = varDeclToExpr(path, false);
              if (expr === null) {
                path.remove();
              } else {
                util.replaceWithOrRemove(path, t.expressionStatement(expr));
              }
              path.skip();
            }
          },
          ForStatement: function ForStatement(path) {
            var init = path.get("init");
            if (init.isVariableDeclaration()) {
              util.replaceWithOrRemove(init, varDeclToExpr(init, false));
            }
          },
          ForXStatement: function ForXStatement(path) {
            var left = path.get("left");
            if (left.isVariableDeclaration()) {
              util.replaceWithOrRemove(left, varDeclToExpr(left, true));
            }
          },
          FunctionDeclaration: function FunctionDeclaration(path) {
            var node = path.node;
            vars[node.id.name] = node.id;
            var assignment = t.expressionStatement(t.assignmentExpression("=", t.clone(node.id), t.functionExpression(path.scope.generateUidIdentifierBasedOnNode(node), node.params, node.body, node.generator, node.expression)));
            if (path.parentPath.isBlockStatement()) {
              path.parentPath.unshiftContainer("body", assignment);
              path.remove();
            } else {
              util.replaceWithOrRemove(path, assignment);
            }
            path.scope.removeBinding(node.id.name);
            path.skip();
          },
          FunctionExpression: function FunctionExpression(path) {
            path.skip();
          },
          ArrowFunctionExpression: function ArrowFunctionExpression(path) {
            path.skip();
          }
        });
        var paramNames = {};
        funPath.get("params").forEach(function (paramPath) {
          var param = paramPath.node;
          if (t.isIdentifier(param)) {
            paramNames[param.name] = param;
          }
        });
        var declarations = [];
        Object.keys(vars).forEach(function (name) {
          if (!hasOwn.call(paramNames, name)) {
            declarations.push(t.variableDeclarator(vars[name], null));
          }
        });
        if (declarations.length === 0) {
          return null;
        }
        return t.variableDeclaration("var", declarations);
      };
      return hoist$2;
    }
  
    var emit = {};
  
    var leap = {};
  
    var hasRequiredLeap;
    function requireLeap() {
      if (hasRequiredLeap) return leap;
      hasRequiredLeap = 1;
      var _interopRequireDefault = interopRequireDefault.exports;
      var _assert = _interopRequireDefault(assert$1.exports);
      var _emit = requireEmit();
      var _util = util$3;
      var _util2 = requireUtil();
      function Entry() {
        _assert["default"].ok(this instanceof Entry);
      }
      function FunctionEntry(returnLoc) {
        Entry.call(this);
        (0, _util2.getTypes)().assertLiteral(returnLoc);
        this.returnLoc = returnLoc;
      }
      (0, _util.inherits)(FunctionEntry, Entry);
      leap.FunctionEntry = FunctionEntry;
      function LoopEntry(breakLoc, continueLoc, label) {
        Entry.call(this);
        var t = (0, _util2.getTypes)();
        t.assertLiteral(breakLoc);
        t.assertLiteral(continueLoc);
        if (label) {
          t.assertIdentifier(label);
        } else {
          label = null;
        }
        this.breakLoc = breakLoc;
        this.continueLoc = continueLoc;
        this.label = label;
      }
      (0, _util.inherits)(LoopEntry, Entry);
      leap.LoopEntry = LoopEntry;
      function SwitchEntry(breakLoc) {
        Entry.call(this);
        (0, _util2.getTypes)().assertLiteral(breakLoc);
        this.breakLoc = breakLoc;
      }
      (0, _util.inherits)(SwitchEntry, Entry);
      leap.SwitchEntry = SwitchEntry;
      function TryEntry(firstLoc, catchEntry, finallyEntry) {
        Entry.call(this);
        var t = (0, _util2.getTypes)();
        t.assertLiteral(firstLoc);
        if (catchEntry) {
          _assert["default"].ok(catchEntry instanceof CatchEntry);
        } else {
          catchEntry = null;
        }
        if (finallyEntry) {
          _assert["default"].ok(finallyEntry instanceof FinallyEntry);
        } else {
          finallyEntry = null;
        }
        _assert["default"].ok(catchEntry || finallyEntry);
        this.firstLoc = firstLoc;
        this.catchEntry = catchEntry;
        this.finallyEntry = finallyEntry;
      }
      (0, _util.inherits)(TryEntry, Entry);
      leap.TryEntry = TryEntry;
      function CatchEntry(firstLoc, paramId) {
        Entry.call(this);
        var t = (0, _util2.getTypes)();
        t.assertLiteral(firstLoc);
        t.assertIdentifier(paramId);
        this.firstLoc = firstLoc;
        this.paramId = paramId;
      }
      (0, _util.inherits)(CatchEntry, Entry);
      leap.CatchEntry = CatchEntry;
      function FinallyEntry(firstLoc, afterLoc) {
        Entry.call(this);
        var t = (0, _util2.getTypes)();
        t.assertLiteral(firstLoc);
        t.assertLiteral(afterLoc);
        this.firstLoc = firstLoc;
        this.afterLoc = afterLoc;
      }
      (0, _util.inherits)(FinallyEntry, Entry);
      leap.FinallyEntry = FinallyEntry;
      function LabeledEntry(breakLoc, label) {
        Entry.call(this);
        var t = (0, _util2.getTypes)();
        t.assertLiteral(breakLoc);
        t.assertIdentifier(label);
        this.breakLoc = breakLoc;
        this.label = label;
      }
      (0, _util.inherits)(LabeledEntry, Entry);
      leap.LabeledEntry = LabeledEntry;
      function LeapManager(emitter) {
        _assert["default"].ok(this instanceof LeapManager);
        _assert["default"].ok(emitter instanceof _emit.Emitter);
        this.emitter = emitter;
        this.entryStack = [new FunctionEntry(emitter.finalLoc)];
      }
      var LMp = LeapManager.prototype;
      leap.LeapManager = LeapManager;
      LMp.withEntry = function (entry, callback) {
        _assert["default"].ok(entry instanceof Entry);
        this.entryStack.push(entry);
        try {
          callback.call(this.emitter);
        } finally {
          var popped = this.entryStack.pop();
          _assert["default"].strictEqual(popped, entry);
        }
      };
      LMp._findLeapLocation = function (property, label) {
        for (var i = this.entryStack.length - 1; i >= 0; --i) {
          var entry = this.entryStack[i];
          var loc = entry[property];
          if (loc) {
            if (label) {
              if (entry.label && entry.label.name === label.name) {
                return loc;
              }
            } else if (entry instanceof LabeledEntry) ; else {
              return loc;
            }
          }
        }
        return null;
      };
      LMp.getBreakLoc = function (label) {
        return this._findLeapLocation("breakLoc", label);
      };
      LMp.getContinueLoc = function (label) {
        return this._findLeapLocation("continueLoc", label);
      };
      return leap;
    }
  
    var meta = {};
  
    var hasRequiredMeta;
    function requireMeta() {
      if (hasRequiredMeta) return meta;
      hasRequiredMeta = 1;
      var _interopRequireDefault = interopRequireDefault.exports;
      var _assert = _interopRequireDefault(assert$1.exports);
      var _util = requireUtil();
      var mMap = new WeakMap();
      function m(node) {
        if (!mMap.has(node)) {
          mMap.set(node, {});
        }
        return mMap.get(node);
      }
      var hasOwn = Object.prototype.hasOwnProperty;
      function makePredicate(propertyName, knownTypes) {
        function onlyChildren(node) {
          var t = (0, _util.getTypes)();
          t.assertNode(node);
          var result = false;
          function check(child) {
            if (result) ; else if (Array.isArray(child)) {
              child.some(check);
            } else if (t.isNode(child)) {
              _assert["default"].strictEqual(result, false);
              result = predicate(child);
            }
            return result;
          }
          var keys = t.VISITOR_KEYS[node.type];
          if (keys) {
            for (var i = 0; i < keys.length; i++) {
              var key = keys[i];
              var child = node[key];
              check(child);
            }
          }
          return result;
        }
        function predicate(node) {
          (0, _util.getTypes)().assertNode(node);
          var meta = m(node);
          if (hasOwn.call(meta, propertyName)) return meta[propertyName];
          if (hasOwn.call(opaqueTypes, node.type)) return meta[propertyName] = false;
          if (hasOwn.call(knownTypes, node.type)) return meta[propertyName] = true;
          return meta[propertyName] = onlyChildren(node);
        }
        predicate.onlyChildren = onlyChildren;
        return predicate;
      }
      var opaqueTypes = {
        FunctionExpression: true,
        ArrowFunctionExpression: true
      };
      var sideEffectTypes = {
        CallExpression: true,
        ForInStatement: true,
        UnaryExpression: true,
        BinaryExpression: true,
        AssignmentExpression: true,
        UpdateExpression: true,
        NewExpression: true
      };
      var leapTypes = {
        YieldExpression: true,
        BreakStatement: true,
        ContinueStatement: true,
        ReturnStatement: true,
        ThrowStatement: true
      };
      for (var type in leapTypes) {
        if (hasOwn.call(leapTypes, type)) {
          sideEffectTypes[type] = leapTypes[type];
        }
      }
      meta.hasSideEffects = makePredicate("hasSideEffects", sideEffectTypes);
      meta.containsLeap = makePredicate("containsLeap", leapTypes);
      return meta;
    }
  
    var hasRequiredEmit;
    function requireEmit() {
      if (hasRequiredEmit) return emit;
      hasRequiredEmit = 1;
      var _interopRequireDefault = interopRequireDefault.exports;
      var _assert = _interopRequireDefault(assert$1.exports);
      var leap = _interopRequireWildcard(requireLeap());
      var meta = _interopRequireWildcard(requireMeta());
      var util = _interopRequireWildcard(requireUtil());
      function _getRequireWildcardCache(nodeInterop) {
        if (typeof WeakMap !== "function") return null;
        var cacheBabelInterop = new WeakMap();
        var cacheNodeInterop = new WeakMap();
        return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
          return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
        })(nodeInterop);
      }
      function _interopRequireWildcard(obj, nodeInterop) {
        if (!nodeInterop && obj && obj.__esModule) {
          return obj;
        }
        if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
          return {
            "default": obj
          };
        }
        var cache = _getRequireWildcardCache(nodeInterop);
        if (cache && cache.has(obj)) {
          return cache.get(obj);
        }
        var newObj = {};
        var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
        for (var key in obj) {
          if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
            var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
            if (desc && (desc.get || desc.set)) {
              Object.defineProperty(newObj, key, desc);
            } else {
              newObj[key] = obj[key];
            }
          }
        }
        newObj["default"] = obj;
        if (cache) {
          cache.set(obj, newObj);
        }
        return newObj;
      }
      var hasOwn = Object.prototype.hasOwnProperty;
      function Emitter(contextId) {
        _assert["default"].ok(this instanceof Emitter);
        util.getTypes().assertIdentifier(contextId);
        this.nextTempId = 0;
        this.contextId = contextId;
        this.listing = [];
        this.marked = [true];
        this.insertedLocs = new Set();
        this.finalLoc = this.loc();
        this.tryEntries = [];
        this.leapManager = new leap.LeapManager(this);
      }
      var Ep = Emitter.prototype;
      emit.Emitter = Emitter;
      Ep.loc = function () {
        var l = util.getTypes().numericLiteral(-1);
        this.insertedLocs.add(l);
        return l;
      };
      Ep.getInsertedLocs = function () {
        return this.insertedLocs;
      };
      Ep.getContextId = function () {
        return util.getTypes().clone(this.contextId);
      };
      Ep.mark = function (loc) {
        util.getTypes().assertLiteral(loc);
        var index = this.listing.length;
        if (loc.value === -1) {
          loc.value = index;
        } else {
          _assert["default"].strictEqual(loc.value, index);
        }
        this.marked[index] = true;
        return loc;
      };
      Ep.emit = function (node) {
        var t = util.getTypes();
        if (t.isExpression(node)) {
          node = t.expressionStatement(node);
        }
        t.assertStatement(node);
        this.listing.push(node);
      };
      Ep.emitAssign = function (lhs, rhs) {
        this.emit(this.assign(lhs, rhs));
        return lhs;
      };
      Ep.assign = function (lhs, rhs) {
        var t = util.getTypes();
        return t.expressionStatement(t.assignmentExpression("=", t.cloneDeep(lhs), rhs));
      };
      Ep.contextProperty = function (name, computed) {
        var t = util.getTypes();
        return t.memberExpression(this.getContextId(), computed ? t.stringLiteral(name) : t.identifier(name), !!computed);
      };
      Ep.stop = function (rval) {
        if (rval) {
          this.setReturnValue(rval);
        }
        this.jump(this.finalLoc);
      };
      Ep.setReturnValue = function (valuePath) {
        util.getTypes().assertExpression(valuePath.value);
        this.emitAssign(this.contextProperty("rval"), this.explodeExpression(valuePath));
      };
      Ep.clearPendingException = function (tryLoc, assignee) {
        var t = util.getTypes();
        t.assertLiteral(tryLoc);
        var catchCall = t.callExpression(this.contextProperty("catch", true), [t.clone(tryLoc)]);
        if (assignee) {
          this.emitAssign(assignee, catchCall);
        } else {
          this.emit(catchCall);
        }
      };
      Ep.jump = function (toLoc) {
        this.emitAssign(this.contextProperty("next"), toLoc);
        this.emit(util.getTypes().breakStatement());
      };
      Ep.jumpIf = function (test, toLoc) {
        var t = util.getTypes();
        t.assertExpression(test);
        t.assertLiteral(toLoc);
        this.emit(t.ifStatement(test, t.blockStatement([this.assign(this.contextProperty("next"), toLoc), t.breakStatement()])));
      };
      Ep.jumpIfNot = function (test, toLoc) {
        var t = util.getTypes();
        t.assertExpression(test);
        t.assertLiteral(toLoc);
        var negatedTest;
        if (t.isUnaryExpression(test) && test.operator === "!") {
          negatedTest = test.argument;
        } else {
          negatedTest = t.unaryExpression("!", test);
        }
        this.emit(t.ifStatement(negatedTest, t.blockStatement([this.assign(this.contextProperty("next"), toLoc), t.breakStatement()])));
      };
      Ep.makeTempVar = function () {
        return this.contextProperty("t" + this.nextTempId++);
      };
      Ep.getContextFunction = function (id) {
        var t = util.getTypes();
        return t.functionExpression(id || null, [this.getContextId()], t.blockStatement([this.getDispatchLoop()]), false, false);
      };
      Ep.getDispatchLoop = function () {
        var self = this;
        var t = util.getTypes();
        var cases = [];
        var current;
        var alreadyEnded = false;
        self.listing.forEach(function (stmt, i) {
          if (self.marked.hasOwnProperty(i)) {
            cases.push(t.switchCase(t.numericLiteral(i), current = []));
            alreadyEnded = false;
          }
          if (!alreadyEnded) {
            current.push(stmt);
            if (t.isCompletionStatement(stmt)) alreadyEnded = true;
          }
        });
        this.finalLoc.value = this.listing.length;
        cases.push(t.switchCase(this.finalLoc, []), t.switchCase(t.stringLiteral("end"), [t.returnStatement(t.callExpression(this.contextProperty("stop"), []))]));
        return t.whileStatement(t.numericLiteral(1), t.switchStatement(t.assignmentExpression("=", this.contextProperty("prev"), this.contextProperty("next")), cases));
      };
      Ep.getTryLocsList = function () {
        if (this.tryEntries.length === 0) {
          return null;
        }
        var t = util.getTypes();
        var lastLocValue = 0;
        return t.arrayExpression(this.tryEntries.map(function (tryEntry) {
          var thisLocValue = tryEntry.firstLoc.value;
          _assert["default"].ok(thisLocValue >= lastLocValue, "try entries out of order");
          lastLocValue = thisLocValue;
          var ce = tryEntry.catchEntry;
          var fe = tryEntry.finallyEntry;
          var locs = [tryEntry.firstLoc, ce ? ce.firstLoc : null];
          if (fe) {
            locs[2] = fe.firstLoc;
            locs[3] = fe.afterLoc;
          }
          return t.arrayExpression(locs.map(function (loc) {
            return loc && t.clone(loc);
          }));
        }));
      };
      Ep.explode = function (path, ignoreResult) {
        var t = util.getTypes();
        var node = path.node;
        var self = this;
        t.assertNode(node);
        if (t.isDeclaration(node)) throw getDeclError(node);
        if (t.isStatement(node)) return self.explodeStatement(path);
        if (t.isExpression(node)) return self.explodeExpression(path, ignoreResult);
        switch (node.type) {
          case "Program":
            return path.get("body").map(self.explodeStatement, self);
          case "VariableDeclarator":
            throw getDeclError(node);
          case "Property":
          case "SwitchCase":
          case "CatchClause":
            throw new Error(node.type + " nodes should be handled by their parents");
          default:
            throw new Error("unknown Node of type " + JSON.stringify(node.type));
        }
      };
      function getDeclError(node) {
        return new Error("all declarations should have been transformed into " + "assignments before the Exploder began its work: " + JSON.stringify(node));
      }
      Ep.explodeStatement = function (path, labelId) {
        var t = util.getTypes();
        var stmt = path.node;
        var self = this;
        var before, after, head;
        t.assertStatement(stmt);
        if (labelId) {
          t.assertIdentifier(labelId);
        } else {
          labelId = null;
        }
        if (t.isBlockStatement(stmt)) {
          path.get("body").forEach(function (path) {
            self.explodeStatement(path);
          });
          return;
        }
        if (!meta.containsLeap(stmt)) {
          self.emit(stmt);
          return;
        }
        switch (stmt.type) {
          case "ExpressionStatement":
            self.explodeExpression(path.get("expression"), true);
            break;
          case "LabeledStatement":
            after = this.loc();
            self.leapManager.withEntry(new leap.LabeledEntry(after, stmt.label), function () {
              self.explodeStatement(path.get("body"), stmt.label);
            });
            self.mark(after);
            break;
          case "WhileStatement":
            before = this.loc();
            after = this.loc();
            self.mark(before);
            self.jumpIfNot(self.explodeExpression(path.get("test")), after);
            self.leapManager.withEntry(new leap.LoopEntry(after, before, labelId), function () {
              self.explodeStatement(path.get("body"));
            });
            self.jump(before);
            self.mark(after);
            break;
          case "DoWhileStatement":
            var first = this.loc();
            var test = this.loc();
            after = this.loc();
            self.mark(first);
            self.leapManager.withEntry(new leap.LoopEntry(after, test, labelId), function () {
              self.explode(path.get("body"));
            });
            self.mark(test);
            self.jumpIf(self.explodeExpression(path.get("test")), first);
            self.mark(after);
            break;
          case "ForStatement":
            head = this.loc();
            var update = this.loc();
            after = this.loc();
            if (stmt.init) {
              self.explode(path.get("init"), true);
            }
            self.mark(head);
            if (stmt.test) {
              self.jumpIfNot(self.explodeExpression(path.get("test")), after);
            }
            self.leapManager.withEntry(new leap.LoopEntry(after, update, labelId), function () {
              self.explodeStatement(path.get("body"));
            });
            self.mark(update);
            if (stmt.update) {
              self.explode(path.get("update"), true);
            }
            self.jump(head);
            self.mark(after);
            break;
          case "TypeCastExpression":
            return self.explodeExpression(path.get("expression"));
          case "ForInStatement":
            head = this.loc();
            after = this.loc();
            var keyIterNextFn = self.makeTempVar();
            self.emitAssign(keyIterNextFn, t.callExpression(util.runtimeProperty("keys"), [self.explodeExpression(path.get("right"))]));
            self.mark(head);
            var keyInfoTmpVar = self.makeTempVar();
            self.jumpIf(t.memberExpression(t.assignmentExpression("=", keyInfoTmpVar, t.callExpression(t.cloneDeep(keyIterNextFn), [])), t.identifier("done"), false), after);
            self.emitAssign(stmt.left, t.memberExpression(t.cloneDeep(keyInfoTmpVar), t.identifier("value"), false));
            self.leapManager.withEntry(new leap.LoopEntry(after, head, labelId), function () {
              self.explodeStatement(path.get("body"));
            });
            self.jump(head);
            self.mark(after);
            break;
          case "BreakStatement":
            self.emitAbruptCompletion({
              type: "break",
              target: self.leapManager.getBreakLoc(stmt.label)
            });
            break;
          case "ContinueStatement":
            self.emitAbruptCompletion({
              type: "continue",
              target: self.leapManager.getContinueLoc(stmt.label)
            });
            break;
          case "SwitchStatement":
            var disc = self.emitAssign(self.makeTempVar(), self.explodeExpression(path.get("discriminant")));
            after = this.loc();
            var defaultLoc = this.loc();
            var condition = defaultLoc;
            var caseLocs = [];
            var cases = stmt.cases || [];
            for (var i = cases.length - 1; i >= 0; --i) {
              var c = cases[i];
              t.assertSwitchCase(c);
              if (c.test) {
                condition = t.conditionalExpression(t.binaryExpression("===", t.cloneDeep(disc), c.test), caseLocs[i] = this.loc(), condition);
              } else {
                caseLocs[i] = defaultLoc;
              }
            }
            var discriminant = path.get("discriminant");
            util.replaceWithOrRemove(discriminant, condition);
            self.jump(self.explodeExpression(discriminant));
            self.leapManager.withEntry(new leap.SwitchEntry(after), function () {
              path.get("cases").forEach(function (casePath) {
                var i = casePath.key;
                self.mark(caseLocs[i]);
                casePath.get("consequent").forEach(function (path) {
                  self.explodeStatement(path);
                });
              });
            });
            self.mark(after);
            if (defaultLoc.value === -1) {
              self.mark(defaultLoc);
              _assert["default"].strictEqual(after.value, defaultLoc.value);
            }
            break;
          case "IfStatement":
            var elseLoc = stmt.alternate && this.loc();
            after = this.loc();
            self.jumpIfNot(self.explodeExpression(path.get("test")), elseLoc || after);
            self.explodeStatement(path.get("consequent"));
            if (elseLoc) {
              self.jump(after);
              self.mark(elseLoc);
              self.explodeStatement(path.get("alternate"));
            }
            self.mark(after);
            break;
          case "ReturnStatement":
            self.emitAbruptCompletion({
              type: "return",
              value: self.explodeExpression(path.get("argument"))
            });
            break;
          case "WithStatement":
            throw new Error("WithStatement not supported in generator functions.");
          case "TryStatement":
            after = this.loc();
            var handler = stmt.handler;
            var catchLoc = handler && this.loc();
            var catchEntry = catchLoc && new leap.CatchEntry(catchLoc, handler.param);
            var finallyLoc = stmt.finalizer && this.loc();
            var finallyEntry = finallyLoc && new leap.FinallyEntry(finallyLoc, after);
            var tryEntry = new leap.TryEntry(self.getUnmarkedCurrentLoc(), catchEntry, finallyEntry);
            self.tryEntries.push(tryEntry);
            self.updateContextPrevLoc(tryEntry.firstLoc);
            self.leapManager.withEntry(tryEntry, function () {
              self.explodeStatement(path.get("block"));
              if (catchLoc) {
                if (finallyLoc) {
                  self.jump(finallyLoc);
                } else {
                  self.jump(after);
                }
                self.updateContextPrevLoc(self.mark(catchLoc));
                var bodyPath = path.get("handler.body");
                var safeParam = self.makeTempVar();
                self.clearPendingException(tryEntry.firstLoc, safeParam);
                bodyPath.traverse(catchParamVisitor, {
                  getSafeParam: function getSafeParam() {
                    return t.cloneDeep(safeParam);
                  },
                  catchParamName: handler.param.name
                });
                self.leapManager.withEntry(catchEntry, function () {
                  self.explodeStatement(bodyPath);
                });
              }
              if (finallyLoc) {
                self.updateContextPrevLoc(self.mark(finallyLoc));
                self.leapManager.withEntry(finallyEntry, function () {
                  self.explodeStatement(path.get("finalizer"));
                });
                self.emit(t.returnStatement(t.callExpression(self.contextProperty("finish"), [finallyEntry.firstLoc])));
              }
            });
            self.mark(after);
            break;
          case "ThrowStatement":
            self.emit(t.throwStatement(self.explodeExpression(path.get("argument"))));
            break;
          case "ClassDeclaration":
            self.emit(self.explodeClass(path));
            break;
          default:
            throw new Error("unknown Statement of type " + JSON.stringify(stmt.type));
        }
      };
      var catchParamVisitor = {
        Identifier: function Identifier(path, state) {
          if (path.node.name === state.catchParamName && util.isReference(path)) {
            util.replaceWithOrRemove(path, state.getSafeParam());
          }
        },
        Scope: function Scope(path, state) {
          if (path.scope.hasOwnBinding(state.catchParamName)) {
            path.skip();
          }
        }
      };
      Ep.emitAbruptCompletion = function (record) {
        if (!isValidCompletion(record)) {
          _assert["default"].ok(false, "invalid completion record: " + JSON.stringify(record));
        }
        _assert["default"].notStrictEqual(record.type, "normal", "normal completions are not abrupt");
        var t = util.getTypes();
        var abruptArgs = [t.stringLiteral(record.type)];
        if (record.type === "break" || record.type === "continue") {
          t.assertLiteral(record.target);
          abruptArgs[1] = this.insertedLocs.has(record.target) ? record.target : t.cloneDeep(record.target);
        } else if (record.type === "return" || record.type === "throw") {
          if (record.value) {
            t.assertExpression(record.value);
            abruptArgs[1] = this.insertedLocs.has(record.value) ? record.value : t.cloneDeep(record.value);
          }
        }
        this.emit(t.returnStatement(t.callExpression(this.contextProperty("abrupt"), abruptArgs)));
      };
      function isValidCompletion(record) {
        var type = record.type;
        if (type === "normal") {
          return !hasOwn.call(record, "target");
        }
        if (type === "break" || type === "continue") {
          return !hasOwn.call(record, "value") && util.getTypes().isLiteral(record.target);
        }
        if (type === "return" || type === "throw") {
          return hasOwn.call(record, "value") && !hasOwn.call(record, "target");
        }
        return false;
      }
      Ep.getUnmarkedCurrentLoc = function () {
        return util.getTypes().numericLiteral(this.listing.length);
      };
      Ep.updateContextPrevLoc = function (loc) {
        var t = util.getTypes();
        if (loc) {
          t.assertLiteral(loc);
          if (loc.value === -1) {
            loc.value = this.listing.length;
          } else {
            _assert["default"].strictEqual(loc.value, this.listing.length);
          }
        } else {
          loc = this.getUnmarkedCurrentLoc();
        }
        this.emitAssign(this.contextProperty("prev"), loc);
      };
      Ep.explodeViaTempVar = function (tempVar, childPath, hasLeapingChildren, ignoreChildResult) {
        _assert["default"].ok(!ignoreChildResult || !tempVar, "Ignoring the result of a child expression but forcing it to " + "be assigned to a temporary variable?");
        var t = util.getTypes();
        var result = this.explodeExpression(childPath, ignoreChildResult);
        if (ignoreChildResult) ; else if (tempVar || hasLeapingChildren && !t.isLiteral(result)) {
          result = this.emitAssign(tempVar || this.makeTempVar(), result);
        }
        return result;
      };
      Ep.explodeExpression = function (path, ignoreResult) {
        var t = util.getTypes();
        var expr = path.node;
        if (expr) {
          t.assertExpression(expr);
        } else {
          return expr;
        }
        var self = this;
        var result;
        var after;
        function finish(expr) {
          t.assertExpression(expr);
          if (ignoreResult) {
            self.emit(expr);
          }
          return expr;
        }
        if (!meta.containsLeap(expr)) {
          return finish(expr);
        }
        var hasLeapingChildren = meta.containsLeap.onlyChildren(expr);
        switch (expr.type) {
          case "MemberExpression":
            return finish(t.memberExpression(self.explodeExpression(path.get("object")), expr.computed ? self.explodeViaTempVar(null, path.get("property"), hasLeapingChildren) : expr.property, expr.computed));
          case "CallExpression":
            var calleePath = path.get("callee");
            var argsPath = path.get("arguments");
            var newCallee;
            var newArgs;
            var hasLeapingArgs = argsPath.some(function (argPath) {
              return meta.containsLeap(argPath.node);
            });
            var injectFirstArg = null;
            if (t.isMemberExpression(calleePath.node)) {
              if (hasLeapingArgs) {
                var newObject = self.explodeViaTempVar(self.makeTempVar(), calleePath.get("object"), hasLeapingChildren);
                var newProperty = calleePath.node.computed ? self.explodeViaTempVar(null, calleePath.get("property"), hasLeapingChildren) : calleePath.node.property;
                injectFirstArg = newObject;
                newCallee = t.memberExpression(t.memberExpression(t.cloneDeep(newObject), newProperty, calleePath.node.computed), t.identifier("call"), false);
              } else {
                newCallee = self.explodeExpression(calleePath);
              }
            } else {
              newCallee = self.explodeViaTempVar(null, calleePath, hasLeapingChildren);
              if (t.isMemberExpression(newCallee)) {
                newCallee = t.sequenceExpression([t.numericLiteral(0), t.cloneDeep(newCallee)]);
              }
            }
            if (hasLeapingArgs) {
              newArgs = argsPath.map(function (argPath) {
                return self.explodeViaTempVar(null, argPath, hasLeapingChildren);
              });
              if (injectFirstArg) newArgs.unshift(injectFirstArg);
              newArgs = newArgs.map(function (arg) {
                return t.cloneDeep(arg);
              });
            } else {
              newArgs = path.node.arguments;
            }
            return finish(t.callExpression(newCallee, newArgs));
          case "NewExpression":
            return finish(t.newExpression(self.explodeViaTempVar(null, path.get("callee"), hasLeapingChildren), path.get("arguments").map(function (argPath) {
              return self.explodeViaTempVar(null, argPath, hasLeapingChildren);
            })));
          case "ObjectExpression":
            return finish(t.objectExpression(path.get("properties").map(function (propPath) {
              if (propPath.isObjectProperty()) {
                return t.objectProperty(propPath.node.key, self.explodeViaTempVar(null, propPath.get("value"), hasLeapingChildren), propPath.node.computed);
              } else {
                return propPath.node;
              }
            })));
          case "ArrayExpression":
            return finish(t.arrayExpression(path.get("elements").map(function (elemPath) {
              if (!elemPath.node) {
                return null;
              }
              if (elemPath.isSpreadElement()) {
                return t.spreadElement(self.explodeViaTempVar(null, elemPath.get("argument"), hasLeapingChildren));
              } else {
                return self.explodeViaTempVar(null, elemPath, hasLeapingChildren);
              }
            })));
          case "SequenceExpression":
            var lastIndex = expr.expressions.length - 1;
            path.get("expressions").forEach(function (exprPath) {
              if (exprPath.key === lastIndex) {
                result = self.explodeExpression(exprPath, ignoreResult);
              } else {
                self.explodeExpression(exprPath, true);
              }
            });
            return result;
          case "LogicalExpression":
            after = this.loc();
            if (!ignoreResult) {
              result = self.makeTempVar();
            }
            var left = self.explodeViaTempVar(result, path.get("left"), hasLeapingChildren);
            if (expr.operator === "&&") {
              self.jumpIfNot(left, after);
            } else {
              _assert["default"].strictEqual(expr.operator, "||");
              self.jumpIf(left, after);
            }
            self.explodeViaTempVar(result, path.get("right"), hasLeapingChildren, ignoreResult);
            self.mark(after);
            return result;
          case "ConditionalExpression":
            var elseLoc = this.loc();
            after = this.loc();
            var test = self.explodeExpression(path.get("test"));
            self.jumpIfNot(test, elseLoc);
            if (!ignoreResult) {
              result = self.makeTempVar();
            }
            self.explodeViaTempVar(result, path.get("consequent"), hasLeapingChildren, ignoreResult);
            self.jump(after);
            self.mark(elseLoc);
            self.explodeViaTempVar(result, path.get("alternate"), hasLeapingChildren, ignoreResult);
            self.mark(after);
            return result;
          case "UnaryExpression":
            return finish(t.unaryExpression(expr.operator, self.explodeExpression(path.get("argument")), !!expr.prefix));
          case "BinaryExpression":
            return finish(t.binaryExpression(expr.operator, self.explodeViaTempVar(null, path.get("left"), hasLeapingChildren), self.explodeViaTempVar(null, path.get("right"), hasLeapingChildren)));
          case "AssignmentExpression":
            if (expr.operator === "=") {
              return finish(t.assignmentExpression(expr.operator, self.explodeExpression(path.get("left")), self.explodeExpression(path.get("right"))));
            }
            var lhs = self.explodeExpression(path.get("left"));
            var temp = self.emitAssign(self.makeTempVar(), lhs);
            return finish(t.assignmentExpression("=", t.cloneDeep(lhs), t.assignmentExpression(expr.operator, t.cloneDeep(temp), self.explodeExpression(path.get("right")))));
          case "UpdateExpression":
            return finish(t.updateExpression(expr.operator, self.explodeExpression(path.get("argument")), expr.prefix));
          case "YieldExpression":
            after = this.loc();
            var arg = expr.argument && self.explodeExpression(path.get("argument"));
            if (arg && expr.delegate) {
              var _result = self.makeTempVar();
              var _ret = t.returnStatement(t.callExpression(self.contextProperty("delegateYield"), [arg, t.stringLiteral(_result.property.name), after]));
              _ret.loc = expr.loc;
              self.emit(_ret);
              self.mark(after);
              return _result;
            }
            self.emitAssign(self.contextProperty("next"), after);
            var ret = t.returnStatement(t.cloneDeep(arg) || null);
            ret.loc = expr.loc;
            self.emit(ret);
            self.mark(after);
            return self.contextProperty("sent");
          case "ClassExpression":
            return finish(self.explodeClass(path));
          default:
            throw new Error("unknown Expression of type " + JSON.stringify(expr.type));
        }
      };
      Ep.explodeClass = function (path) {
        var explodingChildren = [];
        if (path.node.superClass) {
          explodingChildren.push(path.get("superClass"));
        }
        path.get("body.body").forEach(function (member) {
          if (member.node.computed) {
            explodingChildren.push(member.get("key"));
          }
        });
        var hasLeapingChildren = explodingChildren.some(function (child) {
          return meta.containsLeap(child);
        });
        for (var i = 0; i < explodingChildren.length; i++) {
          var child = explodingChildren[i];
          var isLast = i === explodingChildren.length - 1;
          if (isLast) {
            child.replaceWith(this.explodeExpression(child));
          } else {
            child.replaceWith(this.explodeViaTempVar(null, child, hasLeapingChildren));
          }
        }
        return path.node;
      };
      return emit;
    }
  
    var replaceShorthandObjectMethod = {};
  
    var hasRequiredReplaceShorthandObjectMethod;
    function requireReplaceShorthandObjectMethod() {
      if (hasRequiredReplaceShorthandObjectMethod) return replaceShorthandObjectMethod;
      hasRequiredReplaceShorthandObjectMethod = 1;
      (function (exports) {
  
        exports.__esModule = true;
        exports["default"] = replaceShorthandObjectMethod;
        var util = _interopRequireWildcard(requireUtil());
        function _getRequireWildcardCache(nodeInterop) {
          if (typeof WeakMap !== "function") return null;
          var cacheBabelInterop = new WeakMap();
          var cacheNodeInterop = new WeakMap();
          return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
            return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
          })(nodeInterop);
        }
        function _interopRequireWildcard(obj, nodeInterop) {
          if (!nodeInterop && obj && obj.__esModule) {
            return obj;
          }
          if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
            return {
              "default": obj
            };
          }
          var cache = _getRequireWildcardCache(nodeInterop);
          if (cache && cache.has(obj)) {
            return cache.get(obj);
          }
          var newObj = {};
          var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
          for (var key in obj) {
            if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
              var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
              if (desc && (desc.get || desc.set)) {
                Object.defineProperty(newObj, key, desc);
              } else {
                newObj[key] = obj[key];
              }
            }
          }
          newObj["default"] = obj;
          if (cache) {
            cache.set(obj, newObj);
          }
          return newObj;
        }
        function replaceShorthandObjectMethod(path) {
          var t = util.getTypes();
          if (!path.node || !t.isFunction(path.node)) {
            throw new Error("replaceShorthandObjectMethod can only be called on Function AST node paths.");
          }
          if (!t.isObjectMethod(path.node)) {
            return path;
          }
          if (!path.node.generator) {
            return path;
          }
          var parameters = path.node.params.map(function (param) {
            return t.cloneDeep(param);
          });
          var functionExpression = t.functionExpression(null, parameters, t.cloneDeep(path.node.body), path.node.generator, path.node.async);
          util.replaceWithOrRemove(path, t.objectProperty(t.cloneDeep(path.node.key), functionExpression, path.node.computed, false));
          return path.get("value");
        }
      })(replaceShorthandObjectMethod);
      return replaceShorthandObjectMethod;
    }
  
    var _interopRequireDefault = interopRequireDefault.exports;
    var _assert = _interopRequireDefault(assert$1.exports);
    var _hoist = requireHoist();
    var _emit = requireEmit();
    var _replaceShorthandObjectMethod = _interopRequireDefault(requireReplaceShorthandObjectMethod());
    var util = _interopRequireWildcard(requireUtil());
    function _getRequireWildcardCache(nodeInterop) {
      if (typeof WeakMap !== "function") return null;
      var cacheBabelInterop = new WeakMap();
      var cacheNodeInterop = new WeakMap();
      return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {
        return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
      })(nodeInterop);
    }
    function _interopRequireWildcard(obj, nodeInterop) {
      if (!nodeInterop && obj && obj.__esModule) {
        return obj;
      }
      if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
        return {
          "default": obj
        };
      }
      var cache = _getRequireWildcardCache(nodeInterop);
      if (cache && cache.has(obj)) {
        return cache.get(obj);
      }
      var newObj = {};
      var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
      for (var key in obj) {
        if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
          var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
          if (desc && (desc.get || desc.set)) {
            Object.defineProperty(newObj, key, desc);
          } else {
            newObj[key] = obj[key];
          }
        }
      }
      newObj["default"] = obj;
      if (cache) {
        cache.set(obj, newObj);
      }
      return newObj;
    }
    visit.getVisitor = function (_ref) {
      var t = _ref.types;
      return {
        Method: function Method(path, state) {
          var node = path.node;
          if (!shouldRegenerate(node, state)) return;
          var container = t.functionExpression(null, [], t.cloneNode(node.body, false), node.generator, node.async);
          path.get("body").set("body", [t.returnStatement(t.callExpression(container, []))]);
          node.async = false;
          node.generator = false;
          path.get("body.body.0.argument.callee").unwrapFunctionEnvironment();
        },
        Function: {
          exit: util.wrapWithTypes(t, function (path, state) {
            var node = path.node;
            if (!shouldRegenerate(node, state)) return;
            path = (0, _replaceShorthandObjectMethod["default"])(path);
            node = path.node;
            var contextId = path.scope.generateUidIdentifier("context");
            var argsId = path.scope.generateUidIdentifier("args");
            path.ensureBlock();
            var bodyBlockPath = path.get("body");
            if (node.async) {
              bodyBlockPath.traverse(awaitVisitor);
            }
            bodyBlockPath.traverse(functionSentVisitor, {
              context: contextId
            });
            var outerBody = [];
            var innerBody = [];
            bodyBlockPath.get("body").forEach(function (childPath) {
              var node = childPath.node;
              if (t.isExpressionStatement(node) && t.isStringLiteral(node.expression)) {
                outerBody.push(node);
              } else if (node && node._blockHoist != null) {
                outerBody.push(node);
              } else {
                innerBody.push(node);
              }
            });
            if (outerBody.length > 0) {
              bodyBlockPath.node.body = innerBody;
            }
            var outerFnExpr = getOuterFnExpr(path);
            t.assertIdentifier(node.id);
            var innerFnId = t.identifier(node.id.name + "$");
            var vars = (0, _hoist.hoist)(path);
            var context = {
              usesThis: false,
              usesArguments: false,
              getArgsId: function getArgsId() {
                return t.clone(argsId);
              }
            };
            path.traverse(argumentsThisVisitor, context);
            if (context.usesArguments) {
              vars = vars || t.variableDeclaration("var", []);
              vars.declarations.push(t.variableDeclarator(t.clone(argsId), t.identifier("arguments")));
            }
            var emitter = new _emit.Emitter(contextId);
            emitter.explode(path.get("body"));
            if (vars && vars.declarations.length > 0) {
              outerBody.push(vars);
            }
            var wrapArgs = [emitter.getContextFunction(innerFnId)];
            var tryLocsList = emitter.getTryLocsList();
            if (node.generator) {
              wrapArgs.push(outerFnExpr);
            } else if (context.usesThis || tryLocsList || node.async) {
              wrapArgs.push(t.nullLiteral());
            }
            if (context.usesThis) {
              wrapArgs.push(t.thisExpression());
            } else if (tryLocsList || node.async) {
              wrapArgs.push(t.nullLiteral());
            }
            if (tryLocsList) {
              wrapArgs.push(tryLocsList);
            } else if (node.async) {
              wrapArgs.push(t.nullLiteral());
            }
            if (node.async) {
              var currentScope = path.scope;
              do {
                if (currentScope.hasOwnBinding("Promise")) currentScope.rename("Promise");
              } while (currentScope = currentScope.parent);
              wrapArgs.push(t.identifier("Promise"));
            }
            var wrapCall = t.callExpression(util.runtimeProperty(node.async ? "async" : "wrap"), wrapArgs);
            outerBody.push(t.returnStatement(wrapCall));
            node.body = t.blockStatement(outerBody);
            path.get("body.body").forEach(function (p) {
              return p.scope.registerDeclaration(p);
            });
            var oldDirectives = bodyBlockPath.node.directives;
            if (oldDirectives) {
              node.body.directives = oldDirectives;
            }
            var wasGeneratorFunction = node.generator;
            if (wasGeneratorFunction) {
              node.generator = false;
            }
            if (node.async) {
              node.async = false;
            }
            if (wasGeneratorFunction && t.isExpression(node)) {
              util.replaceWithOrRemove(path, t.callExpression(util.runtimeProperty("mark"), [node]));
              path.addComment("leading", "#__PURE__");
            }
            var insertedLocs = emitter.getInsertedLocs();
            path.traverse({
              NumericLiteral: function NumericLiteral(path) {
                if (!insertedLocs.has(path.node)) {
                  return;
                }
                path.replaceWith(t.numericLiteral(path.node.value));
              }
            });
            path.requeue();
          })
        }
      };
    };
    function shouldRegenerate(node, state) {
      if (node.generator) {
        if (node.async) {
          return state.opts.asyncGenerators !== false;
        } else {
          return state.opts.generators !== false;
        }
      } else if (node.async) {
        return state.opts.async !== false;
      } else {
        return false;
      }
    }
    function getOuterFnExpr(funPath) {
      var t = util.getTypes();
      var node = funPath.node;
      t.assertFunction(node);
      if (!node.id) {
        node.id = funPath.scope.parent.generateUidIdentifier("callee");
      }
      if (node.generator && t.isFunctionDeclaration(node)) {
        return getMarkedFunctionId(funPath);
      }
      return t.clone(node.id);
    }
    var markInfo = new WeakMap();
    function getMarkInfo(node) {
      if (!markInfo.has(node)) {
        markInfo.set(node, {});
      }
      return markInfo.get(node);
    }
    function getMarkedFunctionId(funPath) {
      var t = util.getTypes();
      var node = funPath.node;
      t.assertIdentifier(node.id);
      var blockPath = funPath.findParent(function (path) {
        return path.isProgram() || path.isBlockStatement();
      });
      if (!blockPath) {
        return node.id;
      }
      var block = blockPath.node;
      _assert["default"].ok(Array.isArray(block.body));
      var info = getMarkInfo(block);
      if (!info.decl) {
        info.decl = t.variableDeclaration("var", []);
        blockPath.unshiftContainer("body", info.decl);
        info.declPath = blockPath.get("body.0");
      }
      _assert["default"].strictEqual(info.declPath.node, info.decl);
      var markedId = blockPath.scope.generateUidIdentifier("marked");
      var markCallExp = t.callExpression(util.runtimeProperty("mark"), [t.clone(node.id)]);
      var index = info.decl.declarations.push(t.variableDeclarator(markedId, markCallExp)) - 1;
      var markCallExpPath = info.declPath.get("declarations." + index + ".init");
      _assert["default"].strictEqual(markCallExpPath.node, markCallExp);
      markCallExpPath.addComment("leading", "#__PURE__");
      return t.clone(markedId);
    }
    var argumentsThisVisitor = {
      "FunctionExpression|FunctionDeclaration|Method": function FunctionExpressionFunctionDeclarationMethod(path) {
        path.skip();
      },
      Identifier: function Identifier(path, state) {
        if (path.node.name === "arguments" && util.isReference(path)) {
          util.replaceWithOrRemove(path, state.getArgsId());
          state.usesArguments = true;
        }
      },
      ThisExpression: function ThisExpression(path, state) {
        state.usesThis = true;
      }
    };
    var functionSentVisitor = {
      MetaProperty: function MetaProperty(path) {
        var node = path.node;
        if (node.meta.name === "function" && node.property.name === "sent") {
          var t = util.getTypes();
          util.replaceWithOrRemove(path, t.memberExpression(t.clone(this.context), t.identifier("_sent")));
        }
      }
    };
    var awaitVisitor = {
      Function: function Function(path) {
        path.skip();
      },
      AwaitExpression: function AwaitExpression(path) {
        var t = util.getTypes();
        var argument = path.node.argument;
        util.replaceWithOrRemove(path, t.yieldExpression(t.callExpression(util.runtimeProperty("awrap"), [argument]), false));
      }
    };
  
    (function (exports) {
  
      exports.__esModule = true;
      exports["default"] = _default;
      var _visit = visit;
      function _default(context) {
        var plugin = {
          visitor: (0, _visit.getVisitor)(context)
        };
        var version = context && context.version;
        if (version && parseInt(version, 10) >= 7) {
          plugin.name = "regenerator-transform";
        }
        return plugin;
      }
    })(lib$1);
  
    var _transformRegenerator = declare(function (_ref) {
      var t = _ref.types,
        assertVersion = _ref.assertVersion;
      assertVersion(7);
      return {
        name: "transform-regenerator",
        inherits: lib$1["default"],
        visitor: {
          MemberExpression: function MemberExpression(path) {
            {
              var _this$availableHelper;
              if (!((_this$availableHelper = this.availableHelper) != null && _this$availableHelper.call(this, "regeneratorRuntime"))) {
                return;
              }
            }
            var obj = path.get("object");
            if (obj.isIdentifier({
              name: "regeneratorRuntime"
            })) {
              var helper = this.addHelper("regeneratorRuntime");
              {
                if (t.isArrowFunctionExpression(helper)) {
                  obj.replaceWith(helper.body);
                  return;
                }
              }
              obj.replaceWith(t.callExpression(helper, []));
            }
          }
        }
      };
    });
  
    var _transformReservedWords = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "transform-reserved-words",
        visitor: {
          "BindingIdentifier|ReferencedIdentifier": function BindingIdentifierReferencedIdentifier(path) {
            if (!isValidES3Identifier(path.node.name)) {
              path.scope.rename(path.node.name);
            }
          }
        }
      };
    });
  
    function bool$1(value) {
      if (value == null) return false;
      return value && value !== "false" && value !== "0";
    }
    var semver$7 = bool$1(browser$1$1.env["BABEL_8_BREAKING"]) ? requireSemverBABEL_8_BREAKINGTrue() : requireSemver();
  
    function hasMinVersion$2(minVersion, runtimeVersion) {
      if (!runtimeVersion) return true;
      if (semver$7.valid(runtimeVersion)) runtimeVersion = "^" + runtimeVersion;
      return !semver$7.intersects("<" + minVersion, runtimeVersion) && !semver$7.intersects(">=8.0.0", runtimeVersion);
    }
  
    function getRuntimePath (moduleName, dirname, absoluteRuntime) {
      if (absoluteRuntime === false) return moduleName;
      resolveFSPath();
    }
    function resolveFSPath() {
      throw new Error("The 'absoluteRuntime' option is not supported when using @babel/standalone.");
    }
  
    var semver$6 = {exports: {}};
  
    (function (module, exports) {
      exports = module.exports = SemVer;
      var debug;
      if (typeof browser$1$1 === 'object' && browser$1$1.env && browser$1$1.env.NODE_DEBUG && /\bsemver\b/i.test(browser$1$1.env.NODE_DEBUG)) {
        debug = function debug() {
          var args = Array.prototype.slice.call(arguments, 0);
          args.unshift('SEMVER');
          console.log.apply(console, args);
        };
      } else {
        debug = function debug() {};
      }
      exports.SEMVER_SPEC_VERSION = '2.0.0';
      var MAX_LENGTH = 256;
      var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
      var MAX_SAFE_COMPONENT_LENGTH = 16;
      var re = exports.re = [];
      var src = exports.src = [];
      var t = exports.tokens = {};
      var R = 0;
      function tok(n) {
        t[n] = R++;
      }
      tok('NUMERICIDENTIFIER');
      src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*';
      tok('NUMERICIDENTIFIERLOOSE');
      src[t.NUMERICIDENTIFIERLOOSE] = '[0-9]+';
      tok('NONNUMERICIDENTIFIER');
      src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*';
      tok('MAINVERSION');
      src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + '(' + src[t.NUMERICIDENTIFIER] + ')';
      tok('MAINVERSIONLOOSE');
      src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')';
      tok('PRERELEASEIDENTIFIER');
      src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] + '|' + src[t.NONNUMERICIDENTIFIER] + ')';
      tok('PRERELEASEIDENTIFIERLOOSE');
      src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] + '|' + src[t.NONNUMERICIDENTIFIER] + ')';
      tok('PRERELEASE');
      src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] + '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))';
      tok('PRERELEASELOOSE');
      src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] + '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))';
      tok('BUILDIDENTIFIER');
      src[t.BUILDIDENTIFIER] = '[0-9A-Za-z-]+';
      tok('BUILD');
      src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] + '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))';
      tok('FULL');
      tok('FULLPLAIN');
      src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] + src[t.PRERELEASE] + '?' + src[t.BUILD] + '?';
      src[t.FULL] = '^' + src[t.FULLPLAIN] + '$';
      tok('LOOSEPLAIN');
      src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] + src[t.PRERELEASELOOSE] + '?' + src[t.BUILD] + '?';
      tok('LOOSE');
      src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$';
      tok('GTLT');
      src[t.GTLT] = '((?:<|>)?=?)';
      tok('XRANGEIDENTIFIERLOOSE');
      src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*';
      tok('XRANGEIDENTIFIER');
      src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*';
      tok('XRANGEPLAIN');
      src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:' + src[t.PRERELEASE] + ')?' + src[t.BUILD] + '?' + ')?)?';
      tok('XRANGEPLAINLOOSE');
      src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:' + src[t.PRERELEASELOOSE] + ')?' + src[t.BUILD] + '?' + ')?)?';
      tok('XRANGE');
      src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$';
      tok('XRANGELOOSE');
      src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$';
      tok('COERCE');
      src[t.COERCE] = '(^|[^\\d])' + '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:$|[^\\d])';
      tok('COERCERTL');
      re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g');
      tok('LONETILDE');
      src[t.LONETILDE] = '(?:~>?)';
      tok('TILDETRIM');
      src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+';
      re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g');
      var tildeTrimReplace = '$1~';
      tok('TILDE');
      src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$';
      tok('TILDELOOSE');
      src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$';
      tok('LONECARET');
      src[t.LONECARET] = '(?:\\^)';
      tok('CARETTRIM');
      src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+';
      re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g');
      var caretTrimReplace = '$1^';
      tok('CARET');
      src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$';
      tok('CARETLOOSE');
      src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$';
      tok('COMPARATORLOOSE');
      src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$';
      tok('COMPARATOR');
      src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$';
      tok('COMPARATORTRIM');
      src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')';
      re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g');
      var comparatorTrimReplace = '$1$2$3';
      tok('HYPHENRANGE');
      src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' + '\\s+-\\s+' + '(' + src[t.XRANGEPLAIN] + ')' + '\\s*$';
      tok('HYPHENRANGELOOSE');
      src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' + '\\s+-\\s+' + '(' + src[t.XRANGEPLAINLOOSE] + ')' + '\\s*$';
      tok('STAR');
      src[t.STAR] = '(<|>)?=?\\s*\\*';
      for (var i = 0; i < R; i++) {
        debug(i, src[i]);
        if (!re[i]) {
          re[i] = new RegExp(src[i]);
        }
      }
      exports.parse = parse;
      function parse(version, options) {
        if (!options || typeof options !== 'object') {
          options = {
            loose: !!options,
            includePrerelease: false
          };
        }
        if (version instanceof SemVer) {
          return version;
        }
        if (typeof version !== 'string') {
          return null;
        }
        if (version.length > MAX_LENGTH) {
          return null;
        }
        var r = options.loose ? re[t.LOOSE] : re[t.FULL];
        if (!r.test(version)) {
          return null;
        }
        try {
          return new SemVer(version, options);
        } catch (er) {
          return null;
        }
      }
      exports.valid = valid;
      function valid(version, options) {
        var v = parse(version, options);
        return v ? v.version : null;
      }
      exports.clean = clean;
      function clean(version, options) {
        var s = parse(version.trim().replace(/^[=v]+/, ''), options);
        return s ? s.version : null;
      }
      exports.SemVer = SemVer;
      function SemVer(version, options) {
        if (!options || typeof options !== 'object') {
          options = {
            loose: !!options,
            includePrerelease: false
          };
        }
        if (version instanceof SemVer) {
          if (version.loose === options.loose) {
            return version;
          } else {
            version = version.version;
          }
        } else if (typeof version !== 'string') {
          throw new TypeError('Invalid Version: ' + version);
        }
        if (version.length > MAX_LENGTH) {
          throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters');
        }
        if (!(this instanceof SemVer)) {
          return new SemVer(version, options);
        }
        debug('SemVer', version, options);
        this.options = options;
        this.loose = !!options.loose;
        var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]);
        if (!m) {
          throw new TypeError('Invalid Version: ' + version);
        }
        this.raw = version;
        this.major = +m[1];
        this.minor = +m[2];
        this.patch = +m[3];
        if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
          throw new TypeError('Invalid major version');
        }
        if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
          throw new TypeError('Invalid minor version');
        }
        if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
          throw new TypeError('Invalid patch version');
        }
        if (!m[4]) {
          this.prerelease = [];
        } else {
          this.prerelease = m[4].split('.').map(function (id) {
            if (/^[0-9]+$/.test(id)) {
              var num = +id;
              if (num >= 0 && num < MAX_SAFE_INTEGER) {
                return num;
              }
            }
            return id;
          });
        }
        this.build = m[5] ? m[5].split('.') : [];
        this.format();
      }
      SemVer.prototype.format = function () {
        this.version = this.major + '.' + this.minor + '.' + this.patch;
        if (this.prerelease.length) {
          this.version += '-' + this.prerelease.join('.');
        }
        return this.version;
      };
      SemVer.prototype.toString = function () {
        return this.version;
      };
      SemVer.prototype.compare = function (other) {
        debug('SemVer.compare', this.version, this.options, other);
        if (!(other instanceof SemVer)) {
          other = new SemVer(other, this.options);
        }
        return this.compareMain(other) || this.comparePre(other);
      };
      SemVer.prototype.compareMain = function (other) {
        if (!(other instanceof SemVer)) {
          other = new SemVer(other, this.options);
        }
        return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);
      };
      SemVer.prototype.comparePre = function (other) {
        if (!(other instanceof SemVer)) {
          other = new SemVer(other, this.options);
        }
        if (this.prerelease.length && !other.prerelease.length) {
          return -1;
        } else if (!this.prerelease.length && other.prerelease.length) {
          return 1;
        } else if (!this.prerelease.length && !other.prerelease.length) {
          return 0;
        }
        var i = 0;
        do {
          var a = this.prerelease[i];
          var b = other.prerelease[i];
          debug('prerelease compare', i, a, b);
          if (a === undefined && b === undefined) {
            return 0;
          } else if (b === undefined) {
            return 1;
          } else if (a === undefined) {
            return -1;
          } else if (a === b) {
            continue;
          } else {
            return compareIdentifiers(a, b);
          }
        } while (++i);
      };
      SemVer.prototype.compareBuild = function (other) {
        if (!(other instanceof SemVer)) {
          other = new SemVer(other, this.options);
        }
        var i = 0;
        do {
          var a = this.build[i];
          var b = other.build[i];
          debug('prerelease compare', i, a, b);
          if (a === undefined && b === undefined) {
            return 0;
          } else if (b === undefined) {
            return 1;
          } else if (a === undefined) {
            return -1;
          } else if (a === b) {
            continue;
          } else {
            return compareIdentifiers(a, b);
          }
        } while (++i);
      };
      SemVer.prototype.inc = function (release, identifier) {
        switch (release) {
          case 'premajor':
            this.prerelease.length = 0;
            this.patch = 0;
            this.minor = 0;
            this.major++;
            this.inc('pre', identifier);
            break;
          case 'preminor':
            this.prerelease.length = 0;
            this.patch = 0;
            this.minor++;
            this.inc('pre', identifier);
            break;
          case 'prepatch':
            this.prerelease.length = 0;
            this.inc('patch', identifier);
            this.inc('pre', identifier);
            break;
          case 'prerelease':
            if (this.prerelease.length === 0) {
              this.inc('patch', identifier);
            }
            this.inc('pre', identifier);
            break;
          case 'major':
            if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {
              this.major++;
            }
            this.minor = 0;
            this.patch = 0;
            this.prerelease = [];
            break;
          case 'minor':
            if (this.patch !== 0 || this.prerelease.length === 0) {
              this.minor++;
            }
            this.patch = 0;
            this.prerelease = [];
            break;
          case 'patch':
            if (this.prerelease.length === 0) {
              this.patch++;
            }
            this.prerelease = [];
            break;
          case 'pre':
            if (this.prerelease.length === 0) {
              this.prerelease = [0];
            } else {
              var i = this.prerelease.length;
              while (--i >= 0) {
                if (typeof this.prerelease[i] === 'number') {
                  this.prerelease[i]++;
                  i = -2;
                }
              }
              if (i === -1) {
                this.prerelease.push(0);
              }
            }
            if (identifier) {
              if (this.prerelease[0] === identifier) {
                if (isNaN(this.prerelease[1])) {
                  this.prerelease = [identifier, 0];
                }
              } else {
                this.prerelease = [identifier, 0];
              }
            }
            break;
          default:
            throw new Error('invalid increment argument: ' + release);
        }
        this.format();
        this.raw = this.version;
        return this;
      };
      exports.inc = inc;
      function inc(version, release, loose, identifier) {
        if (typeof loose === 'string') {
          identifier = loose;
          loose = undefined;
        }
        try {
          return new SemVer(version, loose).inc(release, identifier).version;
        } catch (er) {
          return null;
        }
      }
      exports.diff = diff;
      function diff(version1, version2) {
        if (eq(version1, version2)) {
          return null;
        } else {
          var v1 = parse(version1);
          var v2 = parse(version2);
          var prefix = '';
          if (v1.prerelease.length || v2.prerelease.length) {
            prefix = 'pre';
            var defaultResult = 'prerelease';
          }
          for (var key in v1) {
            if (key === 'major' || key === 'minor' || key === 'patch') {
              if (v1[key] !== v2[key]) {
                return prefix + key;
              }
            }
          }
          return defaultResult;
        }
      }
      exports.compareIdentifiers = compareIdentifiers;
      var numeric = /^[0-9]+$/;
      function compareIdentifiers(a, b) {
        var anum = numeric.test(a);
        var bnum = numeric.test(b);
        if (anum && bnum) {
          a = +a;
          b = +b;
        }
        return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;
      }
      exports.rcompareIdentifiers = rcompareIdentifiers;
      function rcompareIdentifiers(a, b) {
        return compareIdentifiers(b, a);
      }
      exports.major = major;
      function major(a, loose) {
        return new SemVer(a, loose).major;
      }
      exports.minor = minor;
      function minor(a, loose) {
        return new SemVer(a, loose).minor;
      }
      exports.patch = patch;
      function patch(a, loose) {
        return new SemVer(a, loose).patch;
      }
      exports.compare = compare;
      function compare(a, b, loose) {
        return new SemVer(a, loose).compare(new SemVer(b, loose));
      }
      exports.compareLoose = compareLoose;
      function compareLoose(a, b) {
        return compare(a, b, true);
      }
      exports.compareBuild = compareBuild;
      function compareBuild(a, b, loose) {
        var versionA = new SemVer(a, loose);
        var versionB = new SemVer(b, loose);
        return versionA.compare(versionB) || versionA.compareBuild(versionB);
      }
      exports.rcompare = rcompare;
      function rcompare(a, b, loose) {
        return compare(b, a, loose);
      }
      exports.sort = sort;
      function sort(list, loose) {
        return list.sort(function (a, b) {
          return exports.compareBuild(a, b, loose);
        });
      }
      exports.rsort = rsort;
      function rsort(list, loose) {
        return list.sort(function (a, b) {
          return exports.compareBuild(b, a, loose);
        });
      }
      exports.gt = gt;
      function gt(a, b, loose) {
        return compare(a, b, loose) > 0;
      }
      exports.lt = lt;
      function lt(a, b, loose) {
        return compare(a, b, loose) < 0;
      }
      exports.eq = eq;
      function eq(a, b, loose) {
        return compare(a, b, loose) === 0;
      }
      exports.neq = neq;
      function neq(a, b, loose) {
        return compare(a, b, loose) !== 0;
      }
      exports.gte = gte;
      function gte(a, b, loose) {
        return compare(a, b, loose) >= 0;
      }
      exports.lte = lte;
      function lte(a, b, loose) {
        return compare(a, b, loose) <= 0;
      }
      exports.cmp = cmp;
      function cmp(a, op, b, loose) {
        switch (op) {
          case '===':
            if (typeof a === 'object') a = a.version;
            if (typeof b === 'object') b = b.version;
            return a === b;
          case '!==':
            if (typeof a === 'object') a = a.version;
            if (typeof b === 'object') b = b.version;
            return a !== b;
          case '':
          case '=':
          case '==':
            return eq(a, b, loose);
          case '!=':
            return neq(a, b, loose);
          case '>':
            return gt(a, b, loose);
          case '>=':
            return gte(a, b, loose);
          case '<':
            return lt(a, b, loose);
          case '<=':
            return lte(a, b, loose);
          default:
            throw new TypeError('Invalid operator: ' + op);
        }
      }
      exports.Comparator = Comparator;
      function Comparator(comp, options) {
        if (!options || typeof options !== 'object') {
          options = {
            loose: !!options,
            includePrerelease: false
          };
        }
        if (comp instanceof Comparator) {
          if (comp.loose === !!options.loose) {
            return comp;
          } else {
            comp = comp.value;
          }
        }
        if (!(this instanceof Comparator)) {
          return new Comparator(comp, options);
        }
        debug('comparator', comp, options);
        this.options = options;
        this.loose = !!options.loose;
        this.parse(comp);
        if (this.semver === ANY) {
          this.value = '';
        } else {
          this.value = this.operator + this.semver.version;
        }
        debug('comp', this);
      }
      var ANY = {};
      Comparator.prototype.parse = function (comp) {
        var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
        var m = comp.match(r);
        if (!m) {
          throw new TypeError('Invalid comparator: ' + comp);
        }
        this.operator = m[1] !== undefined ? m[1] : '';
        if (this.operator === '=') {
          this.operator = '';
        }
        if (!m[2]) {
          this.semver = ANY;
        } else {
          this.semver = new SemVer(m[2], this.options.loose);
        }
      };
      Comparator.prototype.toString = function () {
        return this.value;
      };
      Comparator.prototype.test = function (version) {
        debug('Comparator.test', version, this.options.loose);
        if (this.semver === ANY || version === ANY) {
          return true;
        }
        if (typeof version === 'string') {
          try {
            version = new SemVer(version, this.options);
          } catch (er) {
            return false;
          }
        }
        return cmp(version, this.operator, this.semver, this.options);
      };
      Comparator.prototype.intersects = function (comp, options) {
        if (!(comp instanceof Comparator)) {
          throw new TypeError('a Comparator is required');
        }
        if (!options || typeof options !== 'object') {
          options = {
            loose: !!options,
            includePrerelease: false
          };
        }
        var rangeTmp;
        if (this.operator === '') {
          if (this.value === '') {
            return true;
          }
          rangeTmp = new Range(comp.value, options);
          return satisfies(this.value, rangeTmp, options);
        } else if (comp.operator === '') {
          if (comp.value === '') {
            return true;
          }
          rangeTmp = new Range(this.value, options);
          return satisfies(comp.semver, rangeTmp, options);
        }
        var sameDirectionIncreasing = (this.operator === '>=' || this.operator === '>') && (comp.operator === '>=' || comp.operator === '>');
        var sameDirectionDecreasing = (this.operator === '<=' || this.operator === '<') && (comp.operator === '<=' || comp.operator === '<');
        var sameSemVer = this.semver.version === comp.semver.version;
        var differentDirectionsInclusive = (this.operator === '>=' || this.operator === '<=') && (comp.operator === '>=' || comp.operator === '<=');
        var oppositeDirectionsLessThan = cmp(this.semver, '<', comp.semver, options) && (this.operator === '>=' || this.operator === '>') && (comp.operator === '<=' || comp.operator === '<');
        var oppositeDirectionsGreaterThan = cmp(this.semver, '>', comp.semver, options) && (this.operator === '<=' || this.operator === '<') && (comp.operator === '>=' || comp.operator === '>');
        return sameDirectionIncreasing || sameDirectionDecreasing || sameSemVer && differentDirectionsInclusive || oppositeDirectionsLessThan || oppositeDirectionsGreaterThan;
      };
      exports.Range = Range;
      function Range(range, options) {
        if (!options || typeof options !== 'object') {
          options = {
            loose: !!options,
            includePrerelease: false
          };
        }
        if (range instanceof Range) {
          if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {
            return range;
          } else {
            return new Range(range.raw, options);
          }
        }
        if (range instanceof Comparator) {
          return new Range(range.value, options);
        }
        if (!(this instanceof Range)) {
          return new Range(range, options);
        }
        this.options = options;
        this.loose = !!options.loose;
        this.includePrerelease = !!options.includePrerelease;
        this.raw = range;
        this.set = range.split(/\s*\|\|\s*/).map(function (range) {
          return this.parseRange(range.trim());
        }, this).filter(function (c) {
          return c.length;
        });
        if (!this.set.length) {
          throw new TypeError('Invalid SemVer Range: ' + range);
        }
        this.format();
      }
      Range.prototype.format = function () {
        this.range = this.set.map(function (comps) {
          return comps.join(' ').trim();
        }).join('||').trim();
        return this.range;
      };
      Range.prototype.toString = function () {
        return this.range;
      };
      Range.prototype.parseRange = function (range) {
        var loose = this.options.loose;
        range = range.trim();
        var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE];
        range = range.replace(hr, hyphenReplace);
        debug('hyphen replace', range);
        range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace);
        debug('comparator trim', range, re[t.COMPARATORTRIM]);
        range = range.replace(re[t.TILDETRIM], tildeTrimReplace);
        range = range.replace(re[t.CARETTRIM], caretTrimReplace);
        range = range.split(/\s+/).join(' ');
        var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
        var set = range.split(' ').map(function (comp) {
          return parseComparator(comp, this.options);
        }, this).join(' ').split(/\s+/);
        if (this.options.loose) {
          set = set.filter(function (comp) {
            return !!comp.match(compRe);
          });
        }
        set = set.map(function (comp) {
          return new Comparator(comp, this.options);
        }, this);
        return set;
      };
      Range.prototype.intersects = function (range, options) {
        if (!(range instanceof Range)) {
          throw new TypeError('a Range is required');
        }
        return this.set.some(function (thisComparators) {
          return isSatisfiable(thisComparators, options) && range.set.some(function (rangeComparators) {
            return isSatisfiable(rangeComparators, options) && thisComparators.every(function (thisComparator) {
              return rangeComparators.every(function (rangeComparator) {
                return thisComparator.intersects(rangeComparator, options);
              });
            });
          });
        });
      };
      function isSatisfiable(comparators, options) {
        var result = true;
        var remainingComparators = comparators.slice();
        var testComparator = remainingComparators.pop();
        while (result && remainingComparators.length) {
          result = remainingComparators.every(function (otherComparator) {
            return testComparator.intersects(otherComparator, options);
          });
          testComparator = remainingComparators.pop();
        }
        return result;
      }
      exports.toComparators = toComparators;
      function toComparators(range, options) {
        return new Range(range, options).set.map(function (comp) {
          return comp.map(function (c) {
            return c.value;
          }).join(' ').trim().split(' ');
        });
      }
      function parseComparator(comp, options) {
        debug('comp', comp, options);
        comp = replaceCarets(comp, options);
        debug('caret', comp);
        comp = replaceTildes(comp, options);
        debug('tildes', comp);
        comp = replaceXRanges(comp, options);
        debug('xrange', comp);
        comp = replaceStars(comp, options);
        debug('stars', comp);
        return comp;
      }
      function isX(id) {
        return !id || id.toLowerCase() === 'x' || id === '*';
      }
      function replaceTildes(comp, options) {
        return comp.trim().split(/\s+/).map(function (comp) {
          return replaceTilde(comp, options);
        }).join(' ');
      }
      function replaceTilde(comp, options) {
        var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
        return comp.replace(r, function (_, M, m, p, pr) {
          debug('tilde', comp, _, M, m, p, pr);
          var ret;
          if (isX(M)) {
            ret = '';
          } else if (isX(m)) {
            ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
          } else if (isX(p)) {
            ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
          } else if (pr) {
            debug('replaceTilde pr', pr);
            ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + (+m + 1) + '.0';
          } else {
            ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';
          }
          debug('tilde return', ret);
          return ret;
        });
      }
      function replaceCarets(comp, options) {
        return comp.trim().split(/\s+/).map(function (comp) {
          return replaceCaret(comp, options);
        }).join(' ');
      }
      function replaceCaret(comp, options) {
        debug('caret', comp, options);
        var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET];
        return comp.replace(r, function (_, M, m, p, pr) {
          debug('caret', comp, _, M, m, p, pr);
          var ret;
          if (isX(M)) {
            ret = '';
          } else if (isX(m)) {
            ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
          } else if (isX(p)) {
            if (M === '0') {
              ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
            } else {
              ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0';
            }
          } else if (pr) {
            debug('replaceCaret pr', pr);
            if (M === '0') {
              if (m === '0') {
                ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + m + '.' + (+p + 1);
              } else {
                ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + (+m + 1) + '.0';
              }
            } else {
              ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + (+M + 1) + '.0.0';
            }
          } else {
            debug('no pr');
            if (M === '0') {
              if (m === '0') {
                ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + m + '.' + (+p + 1);
              } else {
                ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';
              }
            } else {
              ret = '>=' + M + '.' + m + '.' + p + ' <' + (+M + 1) + '.0.0';
            }
          }
          debug('caret return', ret);
          return ret;
        });
      }
      function replaceXRanges(comp, options) {
        debug('replaceXRanges', comp, options);
        return comp.split(/\s+/).map(function (comp) {
          return replaceXRange(comp, options);
        }).join(' ');
      }
      function replaceXRange(comp, options) {
        comp = comp.trim();
        var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
        return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
          debug('xRange', comp, ret, gtlt, M, m, p, pr);
          var xM = isX(M);
          var xm = xM || isX(m);
          var xp = xm || isX(p);
          var anyX = xp;
          if (gtlt === '=' && anyX) {
            gtlt = '';
          }
          pr = options.includePrerelease ? '-0' : '';
          if (xM) {
            if (gtlt === '>' || gtlt === '<') {
              ret = '<0.0.0-0';
            } else {
              ret = '*';
            }
          } else if (gtlt && anyX) {
            if (xm) {
              m = 0;
            }
            p = 0;
            if (gtlt === '>') {
              gtlt = '>=';
              if (xm) {
                M = +M + 1;
                m = 0;
                p = 0;
              } else {
                m = +m + 1;
                p = 0;
              }
            } else if (gtlt === '<=') {
              gtlt = '<';
              if (xm) {
                M = +M + 1;
              } else {
                m = +m + 1;
              }
            }
            ret = gtlt + M + '.' + m + '.' + p + pr;
          } else if (xm) {
            ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr;
          } else if (xp) {
            ret = '>=' + M + '.' + m + '.0' + pr + ' <' + M + '.' + (+m + 1) + '.0' + pr;
          }
          debug('xRange return', ret);
          return ret;
        });
      }
      function replaceStars(comp, options) {
        debug('replaceStars', comp, options);
        return comp.trim().replace(re[t.STAR], '');
      }
      function hyphenReplace($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) {
        if (isX(fM)) {
          from = '';
        } else if (isX(fm)) {
          from = '>=' + fM + '.0.0';
        } else if (isX(fp)) {
          from = '>=' + fM + '.' + fm + '.0';
        } else {
          from = '>=' + from;
        }
        if (isX(tM)) {
          to = '';
        } else if (isX(tm)) {
          to = '<' + (+tM + 1) + '.0.0';
        } else if (isX(tp)) {
          to = '<' + tM + '.' + (+tm + 1) + '.0';
        } else if (tpr) {
          to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr;
        } else {
          to = '<=' + to;
        }
        return (from + ' ' + to).trim();
      }
      Range.prototype.test = function (version) {
        if (!version) {
          return false;
        }
        if (typeof version === 'string') {
          try {
            version = new SemVer(version, this.options);
          } catch (er) {
            return false;
          }
        }
        for (var i = 0; i < this.set.length; i++) {
          if (testSet(this.set[i], version, this.options)) {
            return true;
          }
        }
        return false;
      };
      function testSet(set, version, options) {
        for (var i = 0; i < set.length; i++) {
          if (!set[i].test(version)) {
            return false;
          }
        }
        if (version.prerelease.length && !options.includePrerelease) {
          for (i = 0; i < set.length; i++) {
            debug(set[i].semver);
            if (set[i].semver === ANY) {
              continue;
            }
            if (set[i].semver.prerelease.length > 0) {
              var allowed = set[i].semver;
              if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) {
                return true;
              }
            }
          }
          return false;
        }
        return true;
      }
      exports.satisfies = satisfies;
      function satisfies(version, range, options) {
        try {
          range = new Range(range, options);
        } catch (er) {
          return false;
        }
        return range.test(version);
      }
      exports.maxSatisfying = maxSatisfying;
      function maxSatisfying(versions, range, options) {
        var max = null;
        var maxSV = null;
        try {
          var rangeObj = new Range(range, options);
        } catch (er) {
          return null;
        }
        versions.forEach(function (v) {
          if (rangeObj.test(v)) {
            if (!max || maxSV.compare(v) === -1) {
              max = v;
              maxSV = new SemVer(max, options);
            }
          }
        });
        return max;
      }
      exports.minSatisfying = minSatisfying;
      function minSatisfying(versions, range, options) {
        var min = null;
        var minSV = null;
        try {
          var rangeObj = new Range(range, options);
        } catch (er) {
          return null;
        }
        versions.forEach(function (v) {
          if (rangeObj.test(v)) {
            if (!min || minSV.compare(v) === 1) {
              min = v;
              minSV = new SemVer(min, options);
            }
          }
        });
        return min;
      }
      exports.minVersion = minVersion;
      function minVersion(range, loose) {
        range = new Range(range, loose);
        var minver = new SemVer('0.0.0');
        if (range.test(minver)) {
          return minver;
        }
        minver = new SemVer('0.0.0-0');
        if (range.test(minver)) {
          return minver;
        }
        minver = null;
        for (var i = 0; i < range.set.length; ++i) {
          var comparators = range.set[i];
          comparators.forEach(function (comparator) {
            var compver = new SemVer(comparator.semver.version);
            switch (comparator.operator) {
              case '>':
                if (compver.prerelease.length === 0) {
                  compver.patch++;
                } else {
                  compver.prerelease.push(0);
                }
                compver.raw = compver.format();
              case '':
              case '>=':
                if (!minver || gt(minver, compver)) {
                  minver = compver;
                }
                break;
              case '<':
              case '<=':
                break;
              default:
                throw new Error('Unexpected operation: ' + comparator.operator);
            }
          });
        }
        if (minver && range.test(minver)) {
          return minver;
        }
        return null;
      }
      exports.validRange = validRange;
      function validRange(range, options) {
        try {
          return new Range(range, options).range || '*';
        } catch (er) {
          return null;
        }
      }
      exports.ltr = ltr;
      function ltr(version, range, options) {
        return outside(version, range, '<', options);
      }
      exports.gtr = gtr;
      function gtr(version, range, options) {
        return outside(version, range, '>', options);
      }
      exports.outside = outside;
      function outside(version, range, hilo, options) {
        version = new SemVer(version, options);
        range = new Range(range, options);
        var gtfn, ltefn, ltfn, comp, ecomp;
        switch (hilo) {
          case '>':
            gtfn = gt;
            ltefn = lte;
            ltfn = lt;
            comp = '>';
            ecomp = '>=';
            break;
          case '<':
            gtfn = lt;
            ltefn = gte;
            ltfn = gt;
            comp = '<';
            ecomp = '<=';
            break;
          default:
            throw new TypeError('Must provide a hilo val of "<" or ">"');
        }
        if (satisfies(version, range, options)) {
          return false;
        }
        for (var i = 0; i < range.set.length; ++i) {
          var comparators = range.set[i];
          var high = null;
          var low = null;
          comparators.forEach(function (comparator) {
            if (comparator.semver === ANY) {
              comparator = new Comparator('>=0.0.0');
            }
            high = high || comparator;
            low = low || comparator;
            if (gtfn(comparator.semver, high.semver, options)) {
              high = comparator;
            } else if (ltfn(comparator.semver, low.semver, options)) {
              low = comparator;
            }
          });
          if (high.operator === comp || high.operator === ecomp) {
            return false;
          }
          if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) {
            return false;
          } else if (low.operator === ecomp && ltfn(version, low.semver)) {
            return false;
          }
        }
        return true;
      }
      exports.prerelease = prerelease;
      function prerelease(version, options) {
        var parsed = parse(version, options);
        return parsed && parsed.prerelease.length ? parsed.prerelease : null;
      }
      exports.intersects = intersects;
      function intersects(r1, r2, options) {
        r1 = new Range(r1, options);
        r2 = new Range(r2, options);
        return r1.intersects(r2);
      }
      exports.coerce = coerce;
      function coerce(version, options) {
        if (version instanceof SemVer) {
          return version;
        }
        if (typeof version === 'number') {
          version = String(version);
        }
        if (typeof version !== 'string') {
          return null;
        }
        options = options || {};
        var match = null;
        if (!options.rtl) {
          match = version.match(re[t.COERCE]);
        } else {
          var next;
          while ((next = re[t.COERCERTL].exec(version)) && (!match || match.index + match[0].length !== version.length)) {
            if (!match || next.index + next[0].length !== match.index + match[0].length) {
              match = next;
            }
            re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length;
          }
          re[t.COERCERTL].lastIndex = -1;
        }
        if (match === null) {
          return null;
        }
        return parse(match[2] + '.' + (match[3] || '0') + '.' + (match[4] || '0'), options);
      }
    })(semver$6, semver$6.exports);
    var semver$5 = semver$6.exports;
  
    var _excluded$1 = ["method", "targets", "ignoreBrowserslistConfig", "configPath", "debug", "shouldInjectPolyfill", "absoluteImports"];
    var _templateObject$5, _templateObject2$3, _templateObject3$2;
    var _ref$5 = undefined || _babel,
      t$1$3 = _ref$5.types,
      template$1 = _ref$5.template;
    function intersection$3(a, b) {
      var result = new Set();
      a.forEach(function (v) {
        return b.has(v) && result.add(v);
      });
      return result;
    }
    function has$1$1(object, key) {
      return Object.prototype.hasOwnProperty.call(object, key);
    }
    function getType$1(target) {
      return Object.prototype.toString.call(target).slice(8, -1);
    }
    function resolveId$1(path) {
      if (path.isIdentifier() && !path.scope.hasBinding(path.node.name, true)) {
        return path.node.name;
      }
      var _path$evaluate = path.evaluate(),
        deopt = _path$evaluate.deopt;
      if (deopt && deopt.isIdentifier()) {
        return deopt.node.name;
      }
    }
    function resolveKey$1(path, computed) {
      if (computed === void 0) {
        computed = false;
      }
      var scope = path.scope;
      if (path.isStringLiteral()) return path.node.value;
      var isIdentifier = path.isIdentifier();
      if (isIdentifier && !(computed || path.parent.computed)) {
        return path.node.name;
      }
      if (computed && path.isMemberExpression() && path.get("object").isIdentifier({
        name: "Symbol"
      }) && !scope.hasBinding("Symbol", true)) {
        var sym = resolveKey$1(path.get("property"), path.node.computed);
        if (sym) return "Symbol." + sym;
      }
      if (!isIdentifier || scope.hasBinding(path.node.name, true)) {
        var _path$evaluate2 = path.evaluate(),
          value = _path$evaluate2.value;
        if (typeof value === "string") return value;
      }
    }
    function resolveSource$1(obj) {
      if (obj.isMemberExpression() && obj.get("property").isIdentifier({
        name: "prototype"
      })) {
        var _id = resolveId$1(obj.get("object"));
        if (_id) {
          return {
            id: _id,
            placement: "prototype"
          };
        }
        return {
          id: null,
          placement: null
        };
      }
      var id = resolveId$1(obj);
      if (id) {
        return {
          id: id,
          placement: "static"
        };
      }
      var _obj$evaluate = obj.evaluate(),
        value = _obj$evaluate.value;
      if (value !== undefined) {
        return {
          id: getType$1(value),
          placement: "prototype"
        };
      } else if (obj.isRegExpLiteral()) {
        return {
          id: "RegExp",
          placement: "prototype"
        };
      } else if (obj.isFunction()) {
        return {
          id: "Function",
          placement: "prototype"
        };
      }
      return {
        id: null,
        placement: null
      };
    }
    function getImportSource$2(_ref2) {
      var node = _ref2.node;
      if (node.specifiers.length === 0) return node.source.value;
    }
    function getRequireSource$2(_ref3) {
      var node = _ref3.node;
      if (!t$1$3.isExpressionStatement(node)) return;
      var expression = node.expression;
      if (t$1$3.isCallExpression(expression) && t$1$3.isIdentifier(expression.callee) && expression.callee.name === "require" && expression.arguments.length === 1 && t$1$3.isStringLiteral(expression.arguments[0])) {
        return expression.arguments[0].value;
      }
    }
    function hoist$1(node) {
      node._blockHoist = 3;
      return node;
    }
    function createUtilsGetter$1(cache) {
      return function (path) {
        var prog = path.findParent(function (p) {
          return p.isProgram();
        });
        return {
          injectGlobalImport: function injectGlobalImport(url) {
            cache.storeAnonymous(prog, url, function (isScript, source) {
              return isScript ? template$1.statement.ast(_templateObject$5 || (_templateObject$5 = _taggedTemplateLiteralLoose(["require(", ")"])), source) : t$1$3.importDeclaration([], source);
            });
          },
          injectNamedImport: function injectNamedImport(url, name, hint) {
            if (hint === void 0) {
              hint = name;
            }
            return cache.storeNamed(prog, url, name, function (isScript, source, name) {
              var id = prog.scope.generateUidIdentifier(hint);
              return {
                node: isScript ? hoist$1(template$1.statement.ast(_templateObject2$3 || (_templateObject2$3 = _taggedTemplateLiteralLoose(["\n                  var ", " = require(", ").", "\n                "])), id, source, name)) : t$1$3.importDeclaration([t$1$3.importSpecifier(id, name)], source),
                name: id.name
              };
            });
          },
          injectDefaultImport: function injectDefaultImport(url, hint) {
            if (hint === void 0) {
              hint = url;
            }
            return cache.storeNamed(prog, url, "default", function (isScript, source) {
              var id = prog.scope.generateUidIdentifier(hint);
              return {
                node: isScript ? hoist$1(template$1.statement.ast(_templateObject3$2 || (_templateObject3$2 = _taggedTemplateLiteralLoose(["var ", " = require(", ")"])), id, source)) : t$1$3.importDeclaration([t$1$3.importDefaultSpecifier(id)], source),
                name: id.name
              };
            });
          }
        };
      };
    }
    var _ref4$1 = undefined || _babel,
      t$7 = _ref4$1.types;
    var ImportsCache$1 = function () {
      function ImportsCache(resolver) {
        this._imports = new WeakMap();
        this._anonymousImports = new WeakMap();
        this._lastImports = new WeakMap();
        this._resolver = resolver;
      }
      var _proto = ImportsCache.prototype;
      _proto.storeAnonymous = function storeAnonymous(programPath, url, getVal) {
        var key = this._normalizeKey(programPath, url);
        var imports = this._ensure(this._anonymousImports, programPath, Set);
        if (imports.has(key)) return;
        var node = getVal(programPath.node.sourceType === "script", t$7.stringLiteral(this._resolver(url)));
        imports.add(key);
        this._injectImport(programPath, node);
      };
      _proto.storeNamed = function storeNamed(programPath, url, name, getVal) {
        var key = this._normalizeKey(programPath, url, name);
        var imports = this._ensure(this._imports, programPath, Map);
        if (!imports.has(key)) {
          var _getVal = getVal(programPath.node.sourceType === "script", t$7.stringLiteral(this._resolver(url)), t$7.identifier(name)),
            node = _getVal.node,
            id = _getVal.name;
          imports.set(key, id);
          this._injectImport(programPath, node);
        }
        return t$7.identifier(imports.get(key));
      };
      _proto._injectImport = function _injectImport(programPath, node) {
        var lastImport = this._lastImports.get(programPath);
        var newNodes;
        if (lastImport && lastImport.node && lastImport.parent === programPath.node && lastImport.container === programPath.node.body) {
          newNodes = lastImport.insertAfter(node);
        } else {
          newNodes = programPath.unshiftContainer("body", node);
        }
        var newNode = newNodes[newNodes.length - 1];
        this._lastImports.set(programPath, newNode);
      };
      _proto._ensure = function _ensure(map, programPath, Collection) {
        var collection = map.get(programPath);
        if (!collection) {
          collection = new Collection();
          map.set(programPath, collection);
        }
        return collection;
      };
      _proto._normalizeKey = function _normalizeKey(programPath, url, name) {
        if (name === void 0) {
          name = "";
        }
        var sourceType = programPath.node.sourceType;
        return (name && sourceType) + "::" + url + "::" + name;
      };
      return _createClass(ImportsCache);
    }();
    var presetEnvSilentDebugHeader$1 = "#__secret_key__@babel/preset-env__don't_log_debug_header_and_resolved_targets";
    function stringifyTargetsMultiline$1(targets) {
      return JSON.stringify(prettifyTargets(targets), null, 2);
    }
    function patternToRegExp$1(pattern) {
      if (pattern instanceof RegExp) return pattern;
      try {
        return new RegExp("^" + pattern + "$");
      } catch (_unused) {
        return null;
      }
    }
    function buildUnusedError$1(label, unused) {
      if (!unused.length) return "";
      return "  - The following \"" + label + "\" patterns didn't match any polyfill:\n" + unused.map(function (original) {
        return "    " + String(original) + "\n";
      }).join("");
    }
    function buldDuplicatesError$1(duplicates) {
      if (!duplicates.size) return "";
      return "  - The following polyfills were matched both by \"include\" and \"exclude\" patterns:\n" + Array.from(duplicates, function (name) {
        return "    " + name + "\n";
      }).join("");
    }
    function validateIncludeExclude$1(provider, polyfills, includePatterns, excludePatterns) {
      var current;
      var filter = function filter(pattern) {
        var regexp = patternToRegExp$1(pattern);
        if (!regexp) return false;
        var matched = false;
        for (var _iterator = _createForOfIteratorHelperLoose(polyfills), _step; !(_step = _iterator()).done;) {
          var polyfill = _step.value;
          if (regexp.test(polyfill)) {
            matched = true;
            current.add(polyfill);
          }
        }
        return !matched;
      };
      var include = current = new Set();
      var unusedInclude = Array.from(includePatterns).filter(filter);
      var exclude = current = new Set();
      var unusedExclude = Array.from(excludePatterns).filter(filter);
      var duplicates = intersection$3(include, exclude);
      if (duplicates.size > 0 || unusedInclude.length > 0 || unusedExclude.length > 0) {
        throw new Error("Error while validating the \"" + provider + "\" provider options:\n" + buildUnusedError$1("include", unusedInclude) + buildUnusedError$1("exclude", unusedExclude) + buldDuplicatesError$1(duplicates));
      }
      return {
        include: include,
        exclude: exclude
      };
    }
    function applyMissingDependenciesDefaults$1(options, babelApi) {
      var _options$missingDepen = options.missingDependencies,
        missingDependencies = _options$missingDepen === void 0 ? {} : _options$missingDepen;
      if (missingDependencies === false) return false;
      var caller = babelApi.caller(function (caller) {
        return caller == null ? void 0 : caller.name;
      });
      var _missingDependencies$ = missingDependencies.log,
        log = _missingDependencies$ === void 0 ? "deferred" : _missingDependencies$,
        _missingDependencies$2 = missingDependencies.inject,
        inject = _missingDependencies$2 === void 0 ? caller === "rollup-plugin-babel" ? "throw" : "import" : _missingDependencies$2,
        _missingDependencies$3 = missingDependencies.all,
        all = _missingDependencies$3 === void 0 ? false : _missingDependencies$3;
      return {
        log: log,
        inject: inject,
        all: all
      };
    }
    var usage$1 = function usage(callProvider) {
      function property(object, key, placement, path) {
        return callProvider({
          kind: "property",
          object: object,
          key: key,
          placement: placement
        }, path);
      }
      return {
        ReferencedIdentifier: function ReferencedIdentifier(path) {
          var name = path.node.name,
            scope = path.scope;
          if (scope.getBindingIdentifier(name)) return;
          callProvider({
            kind: "global",
            name: name
          }, path);
        },
        MemberExpression: function MemberExpression(path) {
          var key = resolveKey$1(path.get("property"), path.node.computed);
          if (!key || key === "prototype") return;
          var object = path.get("object");
          if (object.isIdentifier()) {
            var binding = object.scope.getBinding(object.node.name);
            if (binding && binding.path.isImportNamespaceSpecifier()) return;
          }
          var source = resolveSource$1(object);
          return property(source.id, key, source.placement, path);
        },
        ObjectPattern: function ObjectPattern(path) {
          var parentPath = path.parentPath,
            parent = path.parent;
          var obj;
          if (parentPath.isVariableDeclarator()) {
            obj = parentPath.get("init");
          } else if (parentPath.isAssignmentExpression()) {
            obj = parentPath.get("right");
          } else if (parentPath.isFunction()) {
            var grand = parentPath.parentPath;
            if (grand.isCallExpression() || grand.isNewExpression()) {
              if (grand.node.callee === parent) {
                obj = grand.get("arguments")[path.key];
              }
            }
          }
          var id = null;
          var placement = null;
          if (obj) {
            var _resolveSource = resolveSource$1(obj);
            id = _resolveSource.id;
            placement = _resolveSource.placement;
          }
          for (var _iterator2 = _createForOfIteratorHelperLoose(path.get("properties")), _step2; !(_step2 = _iterator2()).done;) {
            var prop = _step2.value;
            if (prop.isObjectProperty()) {
              var key = resolveKey$1(prop.get("key"));
              if (key) property(id, key, placement, prop);
            }
          }
        },
        BinaryExpression: function BinaryExpression(path) {
          if (path.node.operator !== "in") return;
          var source = resolveSource$1(path.get("right"));
          var key = resolveKey$1(path.get("left"), true);
          if (!key) return;
          callProvider({
            kind: "in",
            object: source.id,
            key: key,
            placement: source.placement
          }, path);
        }
      };
    };
    var entry$1 = function entry(callProvider) {
      return {
        ImportDeclaration: function ImportDeclaration(path) {
          var source = getImportSource$2(path);
          if (!source) return;
          callProvider({
            kind: "import",
            source: source
          }, path);
        },
        Program: function Program(path) {
          path.get("body").forEach(function (bodyPath) {
            var source = getRequireSource$2(bodyPath);
            if (!source) return;
            callProvider({
              kind: "import",
              source: source
            }, bodyPath);
          });
        }
      };
    };
    function resolve$1(dirname, moduleName, absoluteImports) {
      if (absoluteImports === false) return moduleName;
      throw new Error("\"absoluteImports\" is not supported in bundles prepared for the browser.");
    }
    function has$6(basedir, name) {
      return true;
    }
    function logMissing$1(missingDeps) {}
    function laterLogMissing$1(missingDeps) {}
    var PossibleGlobalObjects$1 = new Set(["global", "globalThis", "self", "window"]);
    function createMetaResolver$1(polyfills) {
      var staticP = polyfills["static"],
        instanceP = polyfills.instance,
        globalP = polyfills.global;
      return function (meta) {
        if (meta.kind === "global" && globalP && has$1$1(globalP, meta.name)) {
          return {
            kind: "global",
            desc: globalP[meta.name],
            name: meta.name
          };
        }
        if (meta.kind === "property" || meta.kind === "in") {
          var placement = meta.placement,
            object = meta.object,
            key = meta.key;
          if (object && placement === "static") {
            if (globalP && PossibleGlobalObjects$1.has(object) && has$1$1(globalP, key)) {
              return {
                kind: "global",
                desc: globalP[key],
                name: key
              };
            }
            if (staticP && has$1$1(staticP, object) && has$1$1(staticP[object], key)) {
              return {
                kind: "static",
                desc: staticP[object][key],
                name: object + "$" + key
              };
            }
          }
          if (instanceP && has$1$1(instanceP, key)) {
            return {
              kind: "instance",
              desc: instanceP[key],
              name: "" + key
            };
          }
        }
      };
    }
    var getTargets$1 = getTargets$2["default"] || getTargets$2;
    function resolveOptions$1(options, babelApi) {
      var method = options.method,
        targetsOption = options.targets,
        ignoreBrowserslistConfig = options.ignoreBrowserslistConfig,
        configPath = options.configPath,
        debug = options.debug,
        shouldInjectPolyfill = options.shouldInjectPolyfill,
        absoluteImports = options.absoluteImports,
        providerOptions = _objectWithoutProperties(options, _excluded$1);
      if (isEmpty$1(options)) {
        throw new Error("This plugin requires options, for example:\n    {\n      \"plugins\": [\n        [\"<plugin name>\", { method: \"usage-pure\" }]\n      ]\n    }\n\nSee more options at https://github.com/babel/babel-polyfills/blob/main/docs/usage.md");
      }
      var methodName;
      if (method === "usage-global") methodName = "usageGlobal";else if (method === "entry-global") methodName = "entryGlobal";else if (method === "usage-pure") methodName = "usagePure";else if (typeof method !== "string") {
        throw new Error(".method must be a string");
      } else {
        throw new Error(".method must be one of \"entry-global\", \"usage-global\"" + (" or \"usage-pure\" (received " + JSON.stringify(method) + ")"));
      }
      if (typeof shouldInjectPolyfill === "function") {
        if (options.include || options.exclude) {
          throw new Error(".include and .exclude are not supported when using the" + " .shouldInjectPolyfill function.");
        }
      } else if (shouldInjectPolyfill != null) {
        throw new Error(".shouldInjectPolyfill must be a function, or undefined" + (" (received " + JSON.stringify(shouldInjectPolyfill) + ")"));
      }
      if (absoluteImports != null && typeof absoluteImports !== "boolean" && typeof absoluteImports !== "string") {
        throw new Error(".absoluteImports must be a boolean, a string, or undefined" + (" (received " + JSON.stringify(absoluteImports) + ")"));
      }
      var targets;
      if (targetsOption || configPath || ignoreBrowserslistConfig) {
        var targetsObj = typeof targetsOption === "string" || Array.isArray(targetsOption) ? {
          browsers: targetsOption
        } : targetsOption;
        targets = getTargets$1(targetsObj, {
          ignoreBrowserslistConfig: ignoreBrowserslistConfig,
          configPath: configPath
        });
      } else {
        targets = babelApi.targets();
      }
      return {
        method: method,
        methodName: methodName,
        targets: targets,
        absoluteImports: absoluteImports != null ? absoluteImports : false,
        shouldInjectPolyfill: shouldInjectPolyfill,
        debug: !!debug,
        providerOptions: providerOptions
      };
    }
    function instantiateProvider$1(factory, options, missingDependencies, dirname, debugLog, babelApi) {
      var _resolveOptions = resolveOptions$1(options, babelApi),
        method = _resolveOptions.method,
        methodName = _resolveOptions.methodName,
        targets = _resolveOptions.targets,
        _debug = _resolveOptions.debug,
        _shouldInjectPolyfill = _resolveOptions.shouldInjectPolyfill,
        providerOptions = _resolveOptions.providerOptions,
        absoluteImports = _resolveOptions.absoluteImports;
      var getUtils = createUtilsGetter$1(new ImportsCache$1(function (moduleName) {
        return resolve$1(dirname, moduleName, absoluteImports);
      }));
      var include, exclude;
      var polyfillsSupport;
      var polyfillsNames;
      var filterPolyfills;
      var depsCache = new Map();
      var api = {
        babel: babelApi,
        getUtils: getUtils,
        method: options.method,
        targets: targets,
        createMetaResolver: createMetaResolver$1,
        shouldInjectPolyfill: function shouldInjectPolyfill(name) {
          if (polyfillsNames === undefined) {
            throw new Error("Internal error in the " + factory.name + " provider: " + "shouldInjectPolyfill() can't be called during initialization.");
          }
          if (!polyfillsNames.has(name)) {
            console.warn("Internal error in the " + provider.name + " provider: " + ("unknown polyfill \"" + name + "\"."));
          }
          if (filterPolyfills && !filterPolyfills(name)) return false;
          var shouldInject = isRequired(name, targets, {
            compatData: polyfillsSupport,
            includes: include,
            excludes: exclude
          });
          if (_shouldInjectPolyfill) {
            shouldInject = _shouldInjectPolyfill(name, shouldInject);
            if (typeof shouldInject !== "boolean") {
              throw new Error(".shouldInjectPolyfill must return a boolean.");
            }
          }
          return shouldInject;
        },
        debug: function debug(name) {
          var _debugLog, _debugLog$polyfillsSu;
          debugLog().found = true;
          if (!_debug || !name) return;
          if (debugLog().polyfills.has(provider.name)) return;
          debugLog().polyfills.add(name);
          (_debugLog$polyfillsSu = (_debugLog = debugLog()).polyfillsSupport) != null ? _debugLog$polyfillsSu : _debugLog.polyfillsSupport = polyfillsSupport;
        },
        assertDependency: function assertDependency(name, version) {
          if (version === void 0) {
            version = "*";
          }
          if (missingDependencies === false) return;
          if (absoluteImports) {
            return;
          }
          var dep = version === "*" ? name : name + "@^" + version;
          var found = missingDependencies.all ? false : mapGetOr$1(depsCache, name + " :: " + dirname, function () {
            return has$6();
          });
          if (!found) {
            debugLog().missingDeps.add(dep);
          }
        }
      };
      var provider = factory(api, providerOptions, dirname);
      if (typeof provider[methodName] !== "function") {
        throw new Error("The \"" + (provider.name || factory.name) + "\" provider doesn't " + ("support the \"" + method + "\" polyfilling method."));
      }
      if (Array.isArray(provider.polyfills)) {
        polyfillsNames = new Set(provider.polyfills);
        filterPolyfills = provider.filterPolyfills;
      } else if (provider.polyfills) {
        polyfillsNames = new Set(Object.keys(provider.polyfills));
        polyfillsSupport = provider.polyfills;
        filterPolyfills = provider.filterPolyfills;
      } else {
        polyfillsNames = new Set();
      }
      var _validateIncludeExclu = validateIncludeExclude$1(provider.name || factory.name, polyfillsNames, providerOptions.include || [], providerOptions.exclude || []);
      include = _validateIncludeExclu.include;
      exclude = _validateIncludeExclu.exclude;
      return {
        debug: _debug,
        method: method,
        targets: targets,
        provider: provider,
        callProvider: function callProvider(payload, path) {
          var utils = getUtils(path);
          provider[methodName](payload, utils, path);
        }
      };
    }
    function definePolyfillProvider$1(factory) {
      return declare(function (babelApi, options, dirname) {
        babelApi.assertVersion(7);
        var traverse = babelApi.traverse;
        var debugLog;
        var missingDependencies = applyMissingDependenciesDefaults$1(options, babelApi);
        var _instantiateProvider = instantiateProvider$1(factory, options, missingDependencies, dirname, function () {
            return debugLog;
          }, babelApi),
          debug = _instantiateProvider.debug,
          method = _instantiateProvider.method,
          targets = _instantiateProvider.targets,
          provider = _instantiateProvider.provider,
          callProvider = _instantiateProvider.callProvider;
        var createVisitor = method === "entry-global" ? entry$1 : usage$1;
        var visitor = provider.visitor ? traverse.visitors.merge([createVisitor(callProvider), provider.visitor]) : createVisitor(callProvider);
        if (debug && debug !== presetEnvSilentDebugHeader$1) {
          console.log(provider.name + ": `DEBUG` option");
          console.log("\nUsing targets: " + stringifyTargetsMultiline$1(targets));
          console.log("\nUsing polyfills with `" + method + "` method:");
        }
        return {
          name: "inject-polyfills",
          visitor: visitor,
          pre: function pre() {
            var _provider$pre;
            debugLog = {
              polyfills: new Set(),
              polyfillsSupport: undefined,
              found: false,
              providers: new Set(),
              missingDeps: new Set()
            };
            (_provider$pre = provider.pre) == null ? void 0 : _provider$pre.apply(this, arguments);
          },
          post: function post() {
            var _provider$post;
            (_provider$post = provider.post) == null ? void 0 : _provider$post.apply(this, arguments);
            if (missingDependencies !== false) {
              if (missingDependencies.log === "per-file") {
                logMissing$1(debugLog.missingDeps);
              } else {
                laterLogMissing$1(debugLog.missingDeps);
              }
            }
            if (!debug) return;
            if (this.filename) console.log("\n[" + this.filename + "]");
            if (debugLog.polyfills.size === 0) {
              console.log(method === "entry-global" ? debugLog.found ? "Based on your targets, the " + provider.name + " polyfill did not add any polyfill." : "The entry point for the " + provider.name + " polyfill has not been found." : "Based on your code and targets, the " + provider.name + " polyfill did not add any polyfill.");
              return;
            }
            if (method === "entry-global") {
              console.log("The " + provider.name + " polyfill entry has been replaced with " + "the following polyfills:");
            } else {
              console.log("The " + provider.name + " polyfill added the following polyfills:");
            }
            for (var _iterator3 = _createForOfIteratorHelperLoose(debugLog.polyfills), _step3; !(_step3 = _iterator3()).done;) {
              var name = _step3.value;
              var _debugLog$polyfillsSu2;
              if ((_debugLog$polyfillsSu2 = debugLog.polyfillsSupport) != null && _debugLog$polyfillsSu2[name]) {
                var filteredTargets = getInclusionReasons(name, targets, debugLog.polyfillsSupport);
                var formattedTargets = JSON.stringify(filteredTargets).replace(/,/g, ", ").replace(/^\{"/, '{ "').replace(/"\}$/, '" }');
                console.log("  " + name + " " + formattedTargets);
              } else {
                console.log("  " + name);
              }
            }
          }
        };
      });
    }
    function mapGetOr$1(map, key, getDefault) {
      var val = map.get(key);
      if (val === undefined) {
        val = getDefault();
        map.set(key, val);
      }
      return val;
    }
    function isEmpty$1(obj) {
      return Object.keys(obj).length === 0;
    }
  
    var define$3 = function define(name, pure, global, meta) {
      if (global === void 0) {
        global = [];
      }
      return {
        name: name,
        pure: pure,
        global: global,
        meta: meta
      };
    };
    var pureAndGlobal$1 = function pureAndGlobal(pure, global, minRuntimeVersion) {
      if (minRuntimeVersion === void 0) {
        minRuntimeVersion = null;
      }
      return define$3(global[0], pure, global, {
        minRuntimeVersion: minRuntimeVersion
      });
    };
    var globalOnly$1 = function globalOnly(global) {
      return define$3(global[0], null, global);
    };
    var pureOnly$1 = function pureOnly(pure, name) {
      return define$3(name, pure, []);
    };
    var ArrayNatureIterators$3 = ["es6.object.to-string", "es6.array.iterator", "web.dom.iterable"];
    var CommonIterators$3 = ["es6.string.iterator"].concat(ArrayNatureIterators$3);
    var PromiseDependencies$3 = ["es6.object.to-string", "es6.promise"];
    var BuiltIns$3 = {
      DataView: globalOnly$1(["es6.typed.data-view"]),
      Float32Array: globalOnly$1(["es6.typed.float32-array"]),
      Float64Array: globalOnly$1(["es6.typed.float64-array"]),
      Int8Array: globalOnly$1(["es6.typed.int8-array"]),
      Int16Array: globalOnly$1(["es6.typed.int16-array"]),
      Int32Array: globalOnly$1(["es6.typed.int32-array"]),
      Map: pureAndGlobal$1("map", ["es6.map"].concat(_toConsumableArray(CommonIterators$3))),
      Number: globalOnly$1(["es6.number.constructor"]),
      Promise: pureAndGlobal$1("promise", PromiseDependencies$3),
      RegExp: globalOnly$1(["es6.regexp.constructor"]),
      Set: pureAndGlobal$1("set", ["es6.set"].concat(_toConsumableArray(CommonIterators$3))),
      Symbol: pureAndGlobal$1("symbol", ["es6.symbol"]),
      Uint8Array: globalOnly$1(["es6.typed.uint8-array"]),
      Uint8ClampedArray: globalOnly$1(["es6.typed.uint8-clamped-array"]),
      Uint16Array: globalOnly$1(["es6.typed.uint16-array"]),
      Uint32Array: globalOnly$1(["es6.typed.uint32-array"]),
      WeakMap: pureAndGlobal$1("weak-map", ["es6.weak-map"].concat(_toConsumableArray(CommonIterators$3))),
      WeakSet: pureAndGlobal$1("weak-set", ["es6.weak-set"].concat(_toConsumableArray(CommonIterators$3))),
      setImmediate: pureOnly$1("set-immediate", "web.immediate"),
      clearImmediate: pureOnly$1("clear-immediate", "web.immediate"),
      parseFloat: pureOnly$1("parse-float", "es6.parse-float"),
      parseInt: pureOnly$1("parse-int", "es6.parse-int")
    };
    var InstanceProperties$3 = {
      __defineGetter__: globalOnly$1(["es7.object.define-getter"]),
      __defineSetter__: globalOnly$1(["es7.object.define-setter"]),
      __lookupGetter__: globalOnly$1(["es7.object.lookup-getter"]),
      __lookupSetter__: globalOnly$1(["es7.object.lookup-setter"]),
      anchor: globalOnly$1(["es6.string.anchor"]),
      big: globalOnly$1(["es6.string.big"]),
      bind: globalOnly$1(["es6.function.bind"]),
      blink: globalOnly$1(["es6.string.blink"]),
      bold: globalOnly$1(["es6.string.bold"]),
      codePointAt: globalOnly$1(["es6.string.code-point-at"]),
      copyWithin: globalOnly$1(["es6.array.copy-within"]),
      endsWith: globalOnly$1(["es6.string.ends-with"]),
      entries: globalOnly$1(ArrayNatureIterators$3),
      every: globalOnly$1(["es6.array.every"]),
      fill: globalOnly$1(["es6.array.fill"]),
      filter: globalOnly$1(["es6.array.filter"]),
      "finally": globalOnly$1(["es7.promise.finally"].concat(PromiseDependencies$3)),
      find: globalOnly$1(["es6.array.find"]),
      findIndex: globalOnly$1(["es6.array.find-index"]),
      fixed: globalOnly$1(["es6.string.fixed"]),
      flags: globalOnly$1(["es6.regexp.flags"]),
      flatMap: globalOnly$1(["es7.array.flat-map"]),
      fontcolor: globalOnly$1(["es6.string.fontcolor"]),
      fontsize: globalOnly$1(["es6.string.fontsize"]),
      forEach: globalOnly$1(["es6.array.for-each"]),
      includes: globalOnly$1(["es6.string.includes", "es7.array.includes"]),
      indexOf: globalOnly$1(["es6.array.index-of"]),
      italics: globalOnly$1(["es6.string.italics"]),
      keys: globalOnly$1(ArrayNatureIterators$3),
      lastIndexOf: globalOnly$1(["es6.array.last-index-of"]),
      link: globalOnly$1(["es6.string.link"]),
      map: globalOnly$1(["es6.array.map"]),
      match: globalOnly$1(["es6.regexp.match"]),
      name: globalOnly$1(["es6.function.name"]),
      padStart: globalOnly$1(["es7.string.pad-start"]),
      padEnd: globalOnly$1(["es7.string.pad-end"]),
      reduce: globalOnly$1(["es6.array.reduce"]),
      reduceRight: globalOnly$1(["es6.array.reduce-right"]),
      repeat: globalOnly$1(["es6.string.repeat"]),
      replace: globalOnly$1(["es6.regexp.replace"]),
      search: globalOnly$1(["es6.regexp.search"]),
      small: globalOnly$1(["es6.string.small"]),
      some: globalOnly$1(["es6.array.some"]),
      sort: globalOnly$1(["es6.array.sort"]),
      split: globalOnly$1(["es6.regexp.split"]),
      startsWith: globalOnly$1(["es6.string.starts-with"]),
      strike: globalOnly$1(["es6.string.strike"]),
      sub: globalOnly$1(["es6.string.sub"]),
      sup: globalOnly$1(["es6.string.sup"]),
      toISOString: globalOnly$1(["es6.date.to-iso-string"]),
      toJSON: globalOnly$1(["es6.date.to-json"]),
      toString: globalOnly$1(["es6.object.to-string", "es6.date.to-string", "es6.regexp.to-string"]),
      trim: globalOnly$1(["es6.string.trim"]),
      trimEnd: globalOnly$1(["es7.string.trim-right"]),
      trimLeft: globalOnly$1(["es7.string.trim-left"]),
      trimRight: globalOnly$1(["es7.string.trim-right"]),
      trimStart: globalOnly$1(["es7.string.trim-left"]),
      values: globalOnly$1(ArrayNatureIterators$3)
    };
    if ("es6.array.slice" in corejs2BuiltIns) {
      InstanceProperties$3.slice = globalOnly$1(["es6.array.slice"]);
    }
    var StaticProperties$3 = {
      Array: {
        from: pureAndGlobal$1("array/from", ["es6.symbol", "es6.array.from"].concat(_toConsumableArray(CommonIterators$3))),
        isArray: pureAndGlobal$1("array/is-array", ["es6.array.is-array"]),
        of: pureAndGlobal$1("array/of", ["es6.array.of"])
      },
      Date: {
        now: pureAndGlobal$1("date/now", ["es6.date.now"])
      },
      JSON: {
        stringify: pureOnly$1("json/stringify", "es6.symbol")
      },
      Math: {
        acosh: pureAndGlobal$1("math/acosh", ["es6.math.acosh"], "7.0.1"),
        asinh: pureAndGlobal$1("math/asinh", ["es6.math.asinh"], "7.0.1"),
        atanh: pureAndGlobal$1("math/atanh", ["es6.math.atanh"], "7.0.1"),
        cbrt: pureAndGlobal$1("math/cbrt", ["es6.math.cbrt"], "7.0.1"),
        clz32: pureAndGlobal$1("math/clz32", ["es6.math.clz32"], "7.0.1"),
        cosh: pureAndGlobal$1("math/cosh", ["es6.math.cosh"], "7.0.1"),
        expm1: pureAndGlobal$1("math/expm1", ["es6.math.expm1"], "7.0.1"),
        fround: pureAndGlobal$1("math/fround", ["es6.math.fround"], "7.0.1"),
        hypot: pureAndGlobal$1("math/hypot", ["es6.math.hypot"], "7.0.1"),
        imul: pureAndGlobal$1("math/imul", ["es6.math.imul"], "7.0.1"),
        log1p: pureAndGlobal$1("math/log1p", ["es6.math.log1p"], "7.0.1"),
        log10: pureAndGlobal$1("math/log10", ["es6.math.log10"], "7.0.1"),
        log2: pureAndGlobal$1("math/log2", ["es6.math.log2"], "7.0.1"),
        sign: pureAndGlobal$1("math/sign", ["es6.math.sign"], "7.0.1"),
        sinh: pureAndGlobal$1("math/sinh", ["es6.math.sinh"], "7.0.1"),
        tanh: pureAndGlobal$1("math/tanh", ["es6.math.tanh"], "7.0.1"),
        trunc: pureAndGlobal$1("math/trunc", ["es6.math.trunc"], "7.0.1")
      },
      Number: {
        EPSILON: pureAndGlobal$1("number/epsilon", ["es6.number.epsilon"]),
        MIN_SAFE_INTEGER: pureAndGlobal$1("number/min-safe-integer", ["es6.number.min-safe-integer"]),
        MAX_SAFE_INTEGER: pureAndGlobal$1("number/max-safe-integer", ["es6.number.max-safe-integer"]),
        isFinite: pureAndGlobal$1("number/is-finite", ["es6.number.is-finite"]),
        isInteger: pureAndGlobal$1("number/is-integer", ["es6.number.is-integer"]),
        isSafeInteger: pureAndGlobal$1("number/is-safe-integer", ["es6.number.is-safe-integer"]),
        isNaN: pureAndGlobal$1("number/is-nan", ["es6.number.is-nan"]),
        parseFloat: pureAndGlobal$1("number/parse-float", ["es6.number.parse-float"]),
        parseInt: pureAndGlobal$1("number/parse-int", ["es6.number.parse-int"])
      },
      Object: {
        assign: pureAndGlobal$1("object/assign", ["es6.object.assign"]),
        create: pureAndGlobal$1("object/create", ["es6.object.create"]),
        defineProperties: pureAndGlobal$1("object/define-properties", ["es6.object.define-properties"]),
        defineProperty: pureAndGlobal$1("object/define-property", ["es6.object.define-property"]),
        entries: pureAndGlobal$1("object/entries", ["es7.object.entries"]),
        freeze: pureAndGlobal$1("object/freeze", ["es6.object.freeze"]),
        getOwnPropertyDescriptor: pureAndGlobal$1("object/get-own-property-descriptor", ["es6.object.get-own-property-descriptor"]),
        getOwnPropertyDescriptors: pureAndGlobal$1("object/get-own-property-descriptors", ["es7.object.get-own-property-descriptors"]),
        getOwnPropertyNames: pureAndGlobal$1("object/get-own-property-names", ["es6.object.get-own-property-names"]),
        getOwnPropertySymbols: pureAndGlobal$1("object/get-own-property-symbols", ["es6.symbol"]),
        getPrototypeOf: pureAndGlobal$1("object/get-prototype-of", ["es6.object.get-prototype-of"]),
        is: pureAndGlobal$1("object/is", ["es6.object.is"]),
        isExtensible: pureAndGlobal$1("object/is-extensible", ["es6.object.is-extensible"]),
        isFrozen: pureAndGlobal$1("object/is-frozen", ["es6.object.is-frozen"]),
        isSealed: pureAndGlobal$1("object/is-sealed", ["es6.object.is-sealed"]),
        keys: pureAndGlobal$1("object/keys", ["es6.object.keys"]),
        preventExtensions: pureAndGlobal$1("object/prevent-extensions", ["es6.object.prevent-extensions"]),
        seal: pureAndGlobal$1("object/seal", ["es6.object.seal"]),
        setPrototypeOf: pureAndGlobal$1("object/set-prototype-of", ["es6.object.set-prototype-of"]),
        values: pureAndGlobal$1("object/values", ["es7.object.values"])
      },
      Promise: {
        all: globalOnly$1(CommonIterators$3),
        race: globalOnly$1(CommonIterators$3)
      },
      Reflect: {
        apply: pureAndGlobal$1("reflect/apply", ["es6.reflect.apply"]),
        construct: pureAndGlobal$1("reflect/construct", ["es6.reflect.construct"]),
        defineProperty: pureAndGlobal$1("reflect/define-property", ["es6.reflect.define-property"]),
        deleteProperty: pureAndGlobal$1("reflect/delete-property", ["es6.reflect.delete-property"]),
        get: pureAndGlobal$1("reflect/get", ["es6.reflect.get"]),
        getOwnPropertyDescriptor: pureAndGlobal$1("reflect/get-own-property-descriptor", ["es6.reflect.get-own-property-descriptor"]),
        getPrototypeOf: pureAndGlobal$1("reflect/get-prototype-of", ["es6.reflect.get-prototype-of"]),
        has: pureAndGlobal$1("reflect/has", ["es6.reflect.has"]),
        isExtensible: pureAndGlobal$1("reflect/is-extensible", ["es6.reflect.is-extensible"]),
        ownKeys: pureAndGlobal$1("reflect/own-keys", ["es6.reflect.own-keys"]),
        preventExtensions: pureAndGlobal$1("reflect/prevent-extensions", ["es6.reflect.prevent-extensions"]),
        set: pureAndGlobal$1("reflect/set", ["es6.reflect.set"]),
        setPrototypeOf: pureAndGlobal$1("reflect/set-prototype-of", ["es6.reflect.set-prototype-of"])
      },
      String: {
        at: pureOnly$1("string/at", "es7.string.at"),
        fromCodePoint: pureAndGlobal$1("string/from-code-point", ["es6.string.from-code-point"]),
        raw: pureAndGlobal$1("string/raw", ["es6.string.raw"])
      },
      Symbol: {
        asyncIterator: globalOnly$1(["es6.symbol", "es7.symbol.async-iterator"]),
        "for": pureOnly$1("symbol/for", "es6.symbol"),
        hasInstance: pureOnly$1("symbol/has-instance", "es6.symbol"),
        isConcatSpreadable: pureOnly$1("symbol/is-concat-spreadable", "es6.symbol"),
        iterator: define$3("es6.symbol", "symbol/iterator", CommonIterators$3),
        keyFor: pureOnly$1("symbol/key-for", "es6.symbol"),
        match: pureAndGlobal$1("symbol/match", ["es6.regexp.match"]),
        replace: pureOnly$1("symbol/replace", "es6.symbol"),
        search: pureOnly$1("symbol/search", "es6.symbol"),
        species: pureOnly$1("symbol/species", "es6.symbol"),
        split: pureOnly$1("symbol/split", "es6.symbol"),
        toPrimitive: pureOnly$1("symbol/to-primitive", "es6.symbol"),
        toStringTag: pureOnly$1("symbol/to-string-tag", "es6.symbol"),
        unscopables: pureOnly$1("symbol/unscopables", "es6.symbol")
      }
    };
    var webPolyfills$1 = {
      "web.timers": {},
      "web.immediate": {},
      "web.dom.iterable": {}
    };
    var purePolyfills$1 = {
      "es6.parse-float": {},
      "es6.parse-int": {},
      "es7.string.at": {}
    };
    function addPlatformSpecificPolyfills$1(targets, method, polyfills) {
      var targetNames = Object.keys(targets);
      var isAnyTarget = !targetNames.length;
      var isWebTarget = targetNames.some(function (name) {
        return name !== "node";
      });
      return Object.assign(Object.assign(Object.assign({}, polyfills), method === "usage-pure" ? purePolyfills$1 : null), isAnyTarget || isWebTarget ? webPolyfills$1 : null);
    }
    function hasMinVersion$1(minVersion, runtimeVersion) {
      if (!runtimeVersion || !minVersion) return true;
      if (semver$5.valid(runtimeVersion)) runtimeVersion = "^" + runtimeVersion;
      return !semver$5.intersects("<" + minVersion, runtimeVersion) && !semver$5.intersects(">=8.0.0", runtimeVersion);
    }
    var _ref$4 = undefined || _babel,
      t$6 = _ref$4.types;
    var presetEnvCompat$1 = "#__secret_key__@babel/preset-env__compatibility";
    var runtimeCompat$5 = "#__secret_key__@babel/runtime__compatibility";
    var has$5 = Function.call.bind(Object.hasOwnProperty);
    var index$5 = definePolyfillProvider$1(function (api, _ref2) {
      var _ref2$presetEnvCompat = _ref2[presetEnvCompat$1],
        _ref2$presetEnvCompat2 = _ref2$presetEnvCompat === void 0 ? {
          entryInjectRegenerator: false
        } : _ref2$presetEnvCompat,
        entryInjectRegenerator = _ref2$presetEnvCompat2.entryInjectRegenerator,
        _ref2$runtimeCompat = _ref2[runtimeCompat$5],
        _ref2$runtimeCompat2 = _ref2$runtimeCompat === void 0 ? {
          useBabelRuntime: "",
          runtimeVersion: ""
        } : _ref2$runtimeCompat,
        useBabelRuntime = _ref2$runtimeCompat2.useBabelRuntime,
        runtimeVersion = _ref2$runtimeCompat2.runtimeVersion,
        _ref2$runtimeCompat2$ = _ref2$runtimeCompat2.ext,
        ext = _ref2$runtimeCompat2$ === void 0 ? ".js" : _ref2$runtimeCompat2$;
      var resolve = api.createMetaResolver({
        global: BuiltIns$3,
        "static": StaticProperties$3,
        instance: InstanceProperties$3
      });
      var debug = api.debug,
        shouldInjectPolyfill = api.shouldInjectPolyfill,
        method = api.method;
      var polyfills = addPlatformSpecificPolyfills$1(api.targets, method, corejs2BuiltIns);
      var coreJSBase = useBabelRuntime ? useBabelRuntime + "/core-js" : method === "usage-pure" ? "core-js/library/fn" : "core-js/modules";
      function inject(name, utils) {
        if (typeof name === "string") {
          if (has$5(polyfills, name) && shouldInjectPolyfill(name)) {
            debug(name);
            utils.injectGlobalImport(coreJSBase + "/" + name + ".js");
          }
          return;
        }
        name.forEach(function (name) {
          return inject(name, utils);
        });
      }
      function maybeInjectPure(desc, hint, utils) {
        var pure = desc.pure,
          meta = desc.meta,
          name = desc.name;
        if (!pure || !shouldInjectPolyfill(name)) return;
        if (runtimeVersion && meta && meta.minRuntimeVersion && !hasMinVersion$1(meta && meta.minRuntimeVersion, runtimeVersion)) {
          return;
        }
        return utils.injectDefaultImport(coreJSBase + "/" + pure + ext, hint);
      }
      return {
        name: "corejs2",
        polyfills: polyfills,
        entryGlobal: function entryGlobal(meta, utils, path) {
          if (meta.kind === "import" && meta.source === "core-js") {
            debug(null);
            inject(Object.keys(polyfills), utils);
            if (entryInjectRegenerator) {
              utils.injectGlobalImport("regenerator-runtime/runtime.js");
            }
            path.remove();
          }
        },
        usageGlobal: function usageGlobal(meta, utils) {
          var resolved = resolve(meta);
          if (!resolved) return;
          var deps = resolved.desc.global;
          if (resolved.kind !== "global" && "object" in meta && meta.object && meta.placement === "prototype") {
            var low = meta.object.toLowerCase();
            deps = deps.filter(function (m) {
              return m.includes(low);
            });
          }
          inject(deps, utils);
        },
        usagePure: function usagePure(meta, utils, path) {
          if (meta.kind === "in") {
            if (meta.key === "Symbol.iterator") {
              path.replaceWith(t$6.callExpression(utils.injectDefaultImport(coreJSBase + "/is-iterable" + ext, "isIterable"), [path.node.right]));
            }
            return;
          }
          if (path.parentPath.isUnaryExpression({
            operator: "delete"
          })) return;
          if (meta.kind === "property") {
            if (!path.isMemberExpression()) return;
            if (!path.isReferenced()) return;
            if (meta.key === "Symbol.iterator" && shouldInjectPolyfill("es6.symbol") && path.parentPath.isCallExpression({
              callee: path.node
            }) && path.parentPath.node.arguments.length === 0) {
              path.parentPath.replaceWith(t$6.callExpression(utils.injectDefaultImport(coreJSBase + "/get-iterator" + ext, "getIterator"), [path.node.object]));
              path.skip();
              return;
            }
          }
          var resolved = resolve(meta);
          if (!resolved) return;
          var id = maybeInjectPure(resolved.desc, resolved.name, utils);
          if (id) path.replaceWith(id);
        },
        visitor: method === "usage-global" && {
          YieldExpression: function YieldExpression(path) {
            if (path.node.delegate) {
              inject("web.dom.iterable", api.getUtils(path));
            }
          },
          "ForOfStatement|ArrayPattern": function ForOfStatementArrayPattern(path) {
            CommonIterators$3.forEach(function (name) {
              return inject(name, api.getUtils(path));
            });
          }
        }
      };
    });
  
    var require$$0$3 = {
        "es.symbol": {
        android: "49",
        bun: "0.1.1",
        chrome: "49",
        "chrome-android": "49",
        deno: "1.0",
        edge: "15",
        electron: "0.37",
        firefox: "51",
        "firefox-android": "51",
        hermes: "0.1",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "36",
        "opera-android": "36",
        opera_mobile: "36",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.symbol.description": {
        android: "70",
        bun: "0.1.1",
        chrome: "70",
        "chrome-android": "70",
        deno: "1.0",
        edge: "79",
        electron: "5.0",
        firefox: "63",
        "firefox-android": "63",
        ios: "12.2",
        node: "11.0",
        oculus: "6.0",
        opera: "57",
        "opera-android": "49",
        opera_mobile: "49",
        quest: "6.0",
        safari: "12.1",
        samsung: "10.0"
    },
        "es.symbol.async-iterator": {
        android: "63",
        bun: "0.1.1",
        chrome: "63",
        "chrome-android": "63",
        deno: "1.0",
        edge: "79",
        electron: "3.0",
        firefox: "55",
        "firefox-android": "55",
        ios: "12.0",
        node: "10.0",
        oculus: "5.0",
        opera: "50",
        "opera-android": "46",
        opera_mobile: "46",
        quest: "5.0",
        safari: "12.0",
        samsung: "8.0"
    },
        "es.symbol.has-instance": {
        android: "50",
        bun: "0.1.1",
        chrome: "50",
        "chrome-android": "50",
        deno: "1.0",
        edge: "15",
        electron: "1.1",
        firefox: "49",
        "firefox-android": "49",
        hermes: "0.1",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "37",
        "opera-android": "37",
        opera_mobile: "37",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.symbol.is-concat-spreadable": {
        android: "48",
        bun: "0.1.1",
        chrome: "48",
        "chrome-android": "48",
        deno: "1.0",
        edge: "15",
        electron: "0.37",
        firefox: "48",
        "firefox-android": "48",
        hermes: "0.1",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "35",
        "opera-android": "35",
        opera_mobile: "35",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.symbol.iterator": {
        android: "41",
        bun: "0.1.1",
        chrome: "41",
        "chrome-android": "41",
        deno: "1.0",
        edge: "13",
        electron: "0.21",
        firefox: "36",
        "firefox-android": "36",
        hermes: "0.1",
        ios: "9.0",
        node: "1.0",
        oculus: "3.0",
        opera: "28",
        "opera-android": "28",
        opera_mobile: "28",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "3.4"
    },
        "es.symbol.match": {
        android: "50",
        bun: "0.1.1",
        chrome: "50",
        "chrome-android": "50",
        deno: "1.0",
        edge: "79",
        electron: "1.1",
        firefox: "40",
        "firefox-android": "40",
        hermes: "0.1",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "37",
        "opera-android": "37",
        opera_mobile: "37",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.symbol.match-all": {
        android: "73",
        bun: "0.1.1",
        chrome: "73",
        "chrome-android": "73",
        deno: "1.0",
        edge: "79",
        electron: "5.0",
        firefox: "67",
        "firefox-android": "67",
        hermes: "0.6",
        ios: "13.0",
        node: "12.0",
        oculus: "6.0",
        opera: "60",
        "opera-android": "52",
        opera_mobile: "52",
        quest: "6.0",
        "react-native": "0.69",
        safari: "13",
        samsung: "11.0"
    },
        "es.symbol.replace": {
        android: "50",
        bun: "0.1.1",
        chrome: "50",
        "chrome-android": "50",
        deno: "1.0",
        edge: "79",
        electron: "1.1",
        firefox: "49",
        "firefox-android": "49",
        hermes: "0.1",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "37",
        "opera-android": "37",
        opera_mobile: "37",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.symbol.search": {
        android: "50",
        bun: "0.1.1",
        chrome: "50",
        "chrome-android": "50",
        deno: "1.0",
        edge: "79",
        electron: "1.1",
        firefox: "49",
        "firefox-android": "49",
        hermes: "0.1",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "37",
        "opera-android": "37",
        opera_mobile: "37",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.symbol.species": {
        android: "51",
        bun: "0.1.1",
        chrome: "51",
        "chrome-android": "51",
        deno: "1.0",
        edge: "13",
        electron: "1.2",
        firefox: "41",
        "firefox-android": "41",
        ios: "10.0",
        node: "6.5",
        oculus: "3.0",
        opera: "38",
        "opera-android": "38",
        opera_mobile: "38",
        quest: "3.0",
        rhino: "1.7.13",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.symbol.split": {
        android: "50",
        bun: "0.1.1",
        chrome: "50",
        "chrome-android": "50",
        deno: "1.0",
        edge: "79",
        electron: "1.1",
        firefox: "49",
        "firefox-android": "49",
        hermes: "0.1",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "37",
        "opera-android": "37",
        opera_mobile: "37",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.symbol.to-primitive": {
        android: "47",
        bun: "0.1.1",
        chrome: "47",
        "chrome-android": "47",
        deno: "1.0",
        edge: "15",
        electron: "0.36",
        firefox: "44",
        "firefox-android": "44",
        hermes: "0.1",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "34",
        "opera-android": "34",
        opera_mobile: "34",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.symbol.to-string-tag": {
        android: "49",
        bun: "0.1.1",
        chrome: "49",
        "chrome-android": "49",
        deno: "1.0",
        edge: "15",
        electron: "0.37",
        firefox: "51",
        "firefox-android": "51",
        hermes: "0.1",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "36",
        "opera-android": "36",
        opera_mobile: "36",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.symbol.unscopables": {
        android: "41",
        bun: "0.1.1",
        chrome: "41",
        "chrome-android": "41",
        deno: "1.0",
        edge: "13",
        electron: "0.21",
        firefox: "48",
        "firefox-android": "48",
        ios: "9.0",
        node: "1.0",
        oculus: "3.0",
        opera: "28",
        "opera-android": "28",
        opera_mobile: "28",
        quest: "3.0",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "3.4"
    },
        "es.error.cause": {
        android: "94",
        bun: "0.1.1",
        chrome: "94",
        "chrome-android": "94",
        deno: "1.14",
        edge: "94",
        electron: "15.0",
        firefox: "91",
        "firefox-android": "91",
        hermes: "0.8",
        ios: "15.0",
        node: "16.11",
        oculus: "18.0",
        opera: "80",
        "opera-android": "66",
        opera_mobile: "66",
        quest: "18.0",
        "react-native": "0.69",
        safari: "15.0",
        samsung: "17.0"
    },
        "es.error.to-string": {
        android: "4.4.3",
        bun: "0.1.1",
        chrome: "33",
        "chrome-android": "33",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "11",
        "firefox-android": "11",
        hermes: "0.1",
        ie: "9",
        ios: "9.0",
        node: "0.11.13",
        oculus: "3.0",
        opera: "20",
        "opera-android": "20",
        opera_mobile: "20",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.14",
        safari: "8.0",
        samsung: "2.0"
    },
        "es.aggregate-error": {
        android: "85",
        bun: "0.1.1",
        chrome: "85",
        "chrome-android": "85",
        deno: "1.2",
        edge: "85",
        electron: "10.0",
        firefox: "79",
        "firefox-android": "79",
        ios: "14.0",
        node: "15.0",
        oculus: "12.0",
        opera: "71",
        "opera-android": "60",
        opera_mobile: "60",
        quest: "12.0",
        safari: "14.0",
        samsung: "14.0"
    },
        "es.aggregate-error.cause": {
        android: "94",
        bun: "0.1.1",
        chrome: "94",
        "chrome-android": "94",
        deno: "1.14",
        edge: "94",
        electron: "15.0",
        firefox: "91",
        "firefox-android": "91",
        ios: "15.0",
        node: "16.11",
        oculus: "18.0",
        opera: "80",
        "opera-android": "66",
        opera_mobile: "66",
        quest: "18.0",
        safari: "15.0",
        samsung: "17.0"
    },
        "es.array.at": {
        android: "92",
        bun: "0.1.1",
        chrome: "92",
        "chrome-android": "92",
        deno: "1.12",
        edge: "92",
        electron: "14.0",
        firefox: "90",
        "firefox-android": "90",
        ios: "15.4",
        node: "16.6",
        oculus: "17.0",
        opera: "78",
        "opera-android": "65",
        opera_mobile: "65",
        quest: "17.0",
        "react-native": "0.71",
        safari: "15.4",
        samsung: "16.0"
    },
        "es.array.concat": {
        android: "51",
        bun: "0.1.1",
        chrome: "51",
        "chrome-android": "51",
        deno: "1.0",
        edge: "15",
        electron: "1.2",
        firefox: "48",
        "firefox-android": "48",
        ios: "10.0",
        node: "6.5",
        oculus: "3.0",
        opera: "38",
        "opera-android": "38",
        opera_mobile: "38",
        quest: "3.0",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.array.copy-within": {
        android: "45",
        bun: "0.1.1",
        chrome: "45",
        "chrome-android": "45",
        deno: "1.0",
        edge: "12",
        electron: "0.31",
        firefox: "48",
        "firefox-android": "48",
        ios: "9.0",
        node: "4.0",
        oculus: "3.0",
        opera: "32",
        "opera-android": "32",
        opera_mobile: "32",
        quest: "3.0",
        safari: "9.0",
        samsung: "5.0"
    },
        "es.array.every": {
        android: "4.4",
        bun: "0.1.1",
        chrome: "26",
        "chrome-android": "26",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "4",
        "firefox-android": "4",
        hermes: "0.1",
        ie: "9",
        ios: "8.0",
        node: "0.11.0",
        oculus: "3.0",
        opera: "15",
        "opera-android": "15",
        opera_mobile: "15",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "1.5"
    },
        "es.array.fill": {
        android: "45",
        bun: "0.1.1",
        chrome: "45",
        "chrome-android": "45",
        deno: "1.0",
        edge: "12",
        electron: "0.31",
        firefox: "48",
        "firefox-android": "48",
        ios: "9.0",
        node: "4.0",
        oculus: "3.0",
        opera: "32",
        "opera-android": "32",
        opera_mobile: "32",
        quest: "3.0",
        safari: "9.0",
        samsung: "5.0"
    },
        "es.array.filter": {
        android: "51",
        bun: "0.1.1",
        chrome: "51",
        "chrome-android": "51",
        deno: "1.0",
        edge: "15",
        electron: "1.2",
        firefox: "48",
        "firefox-android": "48",
        ios: "10.0",
        node: "6.5",
        oculus: "3.0",
        opera: "38",
        "opera-android": "38",
        opera_mobile: "38",
        quest: "3.0",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.array.find": {
        android: "45",
        bun: "0.1.1",
        chrome: "45",
        "chrome-android": "45",
        deno: "1.0",
        edge: "13",
        electron: "0.31",
        firefox: "48",
        "firefox-android": "48",
        ios: "9.0",
        node: "4.0",
        oculus: "3.0",
        opera: "32",
        "opera-android": "32",
        opera_mobile: "32",
        quest: "3.0",
        safari: "9.0",
        samsung: "5.0"
    },
        "es.array.find-index": {
        android: "45",
        bun: "0.1.1",
        chrome: "45",
        "chrome-android": "45",
        deno: "1.0",
        edge: "13",
        electron: "0.31",
        firefox: "48",
        "firefox-android": "48",
        ios: "9.0",
        node: "4.0",
        oculus: "3.0",
        opera: "32",
        "opera-android": "32",
        opera_mobile: "32",
        quest: "3.0",
        safari: "9.0",
        samsung: "5.0"
    },
        "es.array.find-last": {
        android: "97",
        bun: "0.1.1",
        chrome: "97",
        "chrome-android": "97",
        deno: "1.16",
        edge: "97",
        electron: "17.0",
        firefox: "104",
        "firefox-android": "104",
        hermes: "0.11",
        ios: "15.4",
        node: "18.0",
        oculus: "20.0",
        opera: "83",
        "opera-android": "68",
        opera_mobile: "68",
        quest: "20.0",
        "react-native": "0.69",
        safari: "15.4",
        samsung: "18.0"
    },
        "es.array.find-last-index": {
        android: "97",
        bun: "0.1.1",
        chrome: "97",
        "chrome-android": "97",
        deno: "1.16",
        edge: "97",
        electron: "17.0",
        firefox: "104",
        "firefox-android": "104",
        hermes: "0.11",
        ios: "15.4",
        node: "18.0",
        oculus: "20.0",
        opera: "83",
        "opera-android": "68",
        opera_mobile: "68",
        quest: "20.0",
        "react-native": "0.69",
        safari: "15.4",
        samsung: "18.0"
    },
        "es.array.flat": {
        android: "69",
        bun: "0.1.1",
        chrome: "69",
        "chrome-android": "69",
        deno: "1.0",
        edge: "79",
        electron: "4.0",
        firefox: "62",
        "firefox-android": "62",
        hermes: "0.4",
        ios: "12.0",
        node: "11.0",
        oculus: "6.0",
        opera: "56",
        "opera-android": "48",
        opera_mobile: "48",
        quest: "6.0",
        "react-native": "0.69",
        safari: "12.0",
        samsung: "10.0"
    },
        "es.array.flat-map": {
        android: "69",
        bun: "0.1.1",
        chrome: "69",
        "chrome-android": "69",
        deno: "1.0",
        edge: "79",
        electron: "4.0",
        firefox: "62",
        "firefox-android": "62",
        hermes: "0.4",
        ios: "12.0",
        node: "11.0",
        oculus: "6.0",
        opera: "56",
        "opera-android": "48",
        opera_mobile: "48",
        quest: "6.0",
        "react-native": "0.69",
        safari: "12.0",
        samsung: "10.0"
    },
        "es.array.for-each": {
        android: "4.4",
        bun: "0.1.1",
        chrome: "26",
        "chrome-android": "26",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "4",
        "firefox-android": "4",
        hermes: "0.1",
        ie: "9",
        ios: "8.0",
        node: "0.11.0",
        oculus: "3.0",
        opera: "15",
        "opera-android": "15",
        opera_mobile: "15",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "1.5"
    },
        "es.array.from": {
        android: "51",
        bun: "0.1.1",
        chrome: "51",
        "chrome-android": "51",
        deno: "1.0",
        edge: "15",
        electron: "1.2",
        firefox: "53",
        "firefox-android": "53",
        ios: "9.0",
        node: "6.5",
        oculus: "3.0",
        opera: "38",
        "opera-android": "38",
        opera_mobile: "38",
        quest: "3.0",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "5.0"
    },
        "es.array.includes": {
        android: "53",
        bun: "0.1.1",
        chrome: "53",
        "chrome-android": "53",
        deno: "1.0",
        edge: "14",
        electron: "1.4",
        firefox: "102",
        "firefox-android": "102",
        ios: "10.0",
        node: "7.0",
        oculus: "3.0",
        opera: "40",
        "opera-android": "40",
        opera_mobile: "40",
        quest: "3.0",
        safari: "10.0",
        samsung: "6.0"
    },
        "es.array.index-of": {
        android: "51",
        bun: "0.1.1",
        chrome: "51",
        "chrome-android": "51",
        deno: "1.0",
        edge: "12",
        electron: "1.2",
        firefox: "47",
        "firefox-android": "47",
        hermes: "0.1",
        ie: "9",
        ios: "8.0",
        node: "6.5",
        oculus: "3.0",
        opera: "38",
        "opera-android": "38",
        opera_mobile: "38",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "5.0"
    },
        "es.array.is-array": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "5",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "4",
        "firefox-android": "4",
        hermes: "0.1",
        ie: "9",
        ios: "3.0",
        node: "0.1.27",
        oculus: "3.0",
        opera: "10.50",
        "opera-android": "10.50",
        opera_mobile: "10.50",
        phantom: "1.9",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "4.0",
        samsung: "1.0"
    },
        "es.array.iterator": {
        android: "66",
        bun: "0.1.1",
        chrome: "66",
        "chrome-android": "66",
        deno: "1.0",
        edge: "15",
        electron: "3.0",
        firefox: "60",
        "firefox-android": "60",
        ios: "10.0",
        node: "10.0",
        oculus: "5.0",
        opera: "53",
        "opera-android": "47",
        opera_mobile: "47",
        quest: "5.0",
        safari: "10.0",
        samsung: "9.0"
    },
        "es.array.join": {
        android: "4.4",
        bun: "0.1.1",
        chrome: "26",
        "chrome-android": "26",
        deno: "1.0",
        edge: "13",
        electron: "0.20",
        firefox: "4",
        "firefox-android": "4",
        hermes: "0.1",
        ios: "8.0",
        node: "0.11.0",
        oculus: "3.0",
        opera: "15",
        "opera-android": "15",
        opera_mobile: "15",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "1.5"
    },
        "es.array.last-index-of": {
        android: "51",
        bun: "0.1.1",
        chrome: "51",
        "chrome-android": "51",
        deno: "1.0",
        edge: "12",
        electron: "1.2",
        firefox: "47",
        "firefox-android": "47",
        hermes: "0.1",
        ie: "9",
        ios: "8.0",
        node: "6.5",
        oculus: "3.0",
        opera: "38",
        "opera-android": "38",
        opera_mobile: "38",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "5.0"
    },
        "es.array.map": {
        android: "51",
        bun: "0.1.1",
        chrome: "51",
        "chrome-android": "51",
        deno: "1.0",
        edge: "13",
        electron: "1.2",
        firefox: "50",
        "firefox-android": "50",
        ios: "10.0",
        node: "6.5",
        oculus: "3.0",
        opera: "38",
        "opera-android": "38",
        opera_mobile: "38",
        quest: "3.0",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.array.of": {
        android: "45",
        bun: "0.1.1",
        chrome: "45",
        "chrome-android": "45",
        deno: "1.0",
        edge: "13",
        electron: "0.31",
        firefox: "25",
        "firefox-android": "25",
        hermes: "0.1",
        ios: "9.0",
        node: "4.0",
        oculus: "3.0",
        opera: "32",
        "opera-android": "32",
        opera_mobile: "32",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "5.0"
    },
        "es.array.push": {
        bun: "0.1.1",
        firefox: "55",
        "firefox-android": "55",
        hermes: "0.2",
        ios: "16.0",
        "react-native": "0.69",
        safari: "16.0"
    },
        "es.array.reduce": {
        android: "83",
        bun: "0.1.1",
        chrome: "83",
        "chrome-android": "83",
        deno: "1.0",
        edge: "12",
        electron: "9.0",
        firefox: "4",
        "firefox-android": "4",
        hermes: "0.1",
        ie: "9",
        ios: "8.0",
        node: "6.0",
        oculus: "10.0",
        opera: "69",
        "opera-android": "59",
        opera_mobile: "59",
        quest: "10.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "13.0"
    },
        "es.array.reduce-right": {
        android: "83",
        bun: "0.1.1",
        chrome: "83",
        "chrome-android": "83",
        deno: "1.0",
        edge: "12",
        electron: "9.0",
        firefox: "4",
        "firefox-android": "4",
        hermes: "0.1",
        ie: "9",
        ios: "8.0",
        node: "6.0",
        oculus: "10.0",
        opera: "69",
        "opera-android": "59",
        opera_mobile: "59",
        quest: "10.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "13.0"
    },
        "es.array.reverse": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "1",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "1",
        "firefox-android": "4",
        hermes: "0.1",
        ie: "5.5",
        ios: "12.2",
        node: "0.0.3",
        oculus: "3.0",
        opera: "10.50",
        "opera-android": "10.50",
        opera_mobile: "10.50",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "12.0.2",
        samsung: "1.0"
    },
        "es.array.slice": {
        android: "51",
        bun: "0.1.1",
        chrome: "51",
        "chrome-android": "51",
        deno: "1.0",
        edge: "13",
        electron: "1.2",
        firefox: "48",
        "firefox-android": "48",
        ios: "10.0",
        node: "6.5",
        oculus: "3.0",
        opera: "38",
        "opera-android": "38",
        opera_mobile: "38",
        quest: "3.0",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.array.some": {
        android: "4.4",
        bun: "0.1.1",
        chrome: "26",
        "chrome-android": "26",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "4",
        "firefox-android": "4",
        hermes: "0.1",
        ie: "9",
        ios: "8.0",
        node: "0.11.0",
        oculus: "3.0",
        opera: "15",
        "opera-android": "15",
        opera_mobile: "15",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "1.5"
    },
        "es.array.sort": {
        android: "70",
        bun: "0.1.1",
        chrome: "70",
        "chrome-android": "70",
        deno: "1.0",
        edge: "79",
        electron: "5.0",
        firefox: "4",
        "firefox-android": "4",
        hermes: "0.10",
        ios: "12.0",
        node: "11.0",
        oculus: "6.0",
        opera: "57",
        "opera-android": "49",
        opera_mobile: "49",
        quest: "6.0",
        "react-native": "0.69",
        safari: "12.0",
        samsung: "10.0"
    },
        "es.array.species": {
        android: "51",
        bun: "0.1.1",
        chrome: "51",
        "chrome-android": "51",
        deno: "1.0",
        edge: "13",
        electron: "1.2",
        firefox: "48",
        "firefox-android": "48",
        ios: "10.0",
        node: "6.5",
        oculus: "3.0",
        opera: "38",
        "opera-android": "38",
        opera_mobile: "38",
        quest: "3.0",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.array.splice": {
        android: "51",
        bun: "0.1.1",
        chrome: "51",
        "chrome-android": "51",
        deno: "1.0",
        edge: "13",
        electron: "1.2",
        firefox: "49",
        "firefox-android": "49",
        ios: "10.0",
        node: "6.5",
        oculus: "3.0",
        opera: "38",
        "opera-android": "38",
        opera_mobile: "38",
        quest: "3.0",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.array.to-reversed": {
        android: "110",
        bun: "0.1.1",
        chrome: "110",
        "chrome-android": "110",
        deno: "1.27",
        edge: "110",
        electron: "23.0",
        ios: "16.0",
        opera: "96",
        safari: "16.0"
    },
        "es.array.to-sorted": {
        android: "110",
        bun: "0.1.1",
        chrome: "110",
        "chrome-android": "110",
        deno: "1.27",
        edge: "110",
        electron: "23.0",
        ios: "16.0",
        opera: "96",
        safari: "16.0"
    },
        "es.array.to-spliced": {
        android: "110",
        bun: "0.1.1",
        chrome: "110",
        "chrome-android": "110",
        deno: "1.27",
        edge: "110",
        electron: "23.0",
        ios: "16.0",
        opera: "96",
        safari: "16.0"
    },
        "es.array.unscopables.flat": {
        android: "73",
        bun: "0.1.1",
        chrome: "73",
        "chrome-android": "73",
        deno: "1.0",
        edge: "79",
        electron: "5.0",
        firefox: "67",
        "firefox-android": "67",
        ios: "13.0",
        node: "12.0",
        oculus: "6.0",
        opera: "60",
        "opera-android": "52",
        opera_mobile: "52",
        quest: "6.0",
        safari: "13",
        samsung: "11.0"
    },
        "es.array.unscopables.flat-map": {
        android: "73",
        bun: "0.1.1",
        chrome: "73",
        "chrome-android": "73",
        deno: "1.0",
        edge: "79",
        electron: "5.0",
        firefox: "67",
        "firefox-android": "67",
        ios: "13.0",
        node: "12.0",
        oculus: "6.0",
        opera: "60",
        "opera-android": "52",
        opera_mobile: "52",
        quest: "6.0",
        safari: "13",
        samsung: "11.0"
    },
        "es.array.unshift": {
        android: "71",
        bun: "0.1.1",
        chrome: "71",
        "chrome-android": "71",
        deno: "1.0",
        edge: "12",
        electron: "5.0",
        firefox: "23",
        "firefox-android": "23",
        hermes: "0.1",
        ie: "9",
        ios: "16.0",
        node: "12.0",
        oculus: "6.0",
        opera: "58",
        "opera-android": "50",
        opera_mobile: "50",
        quest: "6.0",
        "react-native": "0.69",
        safari: "16.0",
        samsung: "10.0"
    },
        "es.array.with": {
        android: "110",
        bun: "0.1.1",
        chrome: "110",
        "chrome-android": "110",
        deno: "1.27",
        edge: "110",
        electron: "23.0",
        ios: "16.0",
        opera: "96",
        safari: "16.0"
    },
        "es.array-buffer.constructor": {
        android: "4.4",
        bun: "0.1.1",
        chrome: "28",
        "chrome-android": "28",
        deno: "1.0",
        edge: "14",
        electron: "0.20",
        firefox: "44",
        "firefox-android": "44",
        hermes: "0.1",
        ios: "12.0",
        node: "0.11.1",
        oculus: "3.0",
        opera: "15",
        "opera-android": "15",
        opera_mobile: "15",
        quest: "3.0",
        "react-native": "0.69",
        safari: "12.0",
        samsung: "1.5"
    },
        "es.array-buffer.is-view": {
        android: "4.4.3",
        bun: "0.1.1",
        chrome: "32",
        "chrome-android": "32",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "29",
        "firefox-android": "29",
        hermes: "0.1",
        ie: "11",
        ios: "8.0",
        node: "0.11.9",
        oculus: "3.0",
        opera: "19",
        "opera-android": "19",
        opera_mobile: "19",
        quest: "3.0",
        "react-native": "0.69",
        safari: "7.1",
        samsung: "2.0"
    },
        "es.array-buffer.slice": {
        android: "4.4.3",
        bun: "0.1.1",
        chrome: "31",
        "chrome-android": "31",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "46",
        "firefox-android": "46",
        hermes: "0.1",
        ie: "11",
        ios: "12.2",
        node: "0.11.8",
        oculus: "3.0",
        opera: "18",
        "opera-android": "18",
        opera_mobile: "18",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "12.1",
        samsung: "2.0"
    },
        "es.data-view": {
        android: "4.4",
        bun: "0.1.1",
        chrome: "26",
        "chrome-android": "26",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "15",
        "firefox-android": "15",
        hermes: "0.1",
        ie: "10",
        ios: "8.0",
        node: "0.11.0",
        oculus: "3.0",
        opera: "15",
        "opera-android": "15",
        opera_mobile: "15",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "1.5"
    },
        "es.date.get-year": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "1",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "1",
        "firefox-android": "4",
        hermes: "0.1",
        ie: "9",
        ios: "1.0",
        node: "0.0.3",
        oculus: "3.0",
        opera: "3",
        "opera-android": "3",
        opera_mobile: "3",
        phantom: "1.9",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "1",
        samsung: "1.0"
    },
        "es.date.now": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "5",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "2",
        "firefox-android": "4",
        hermes: "0.1",
        ie: "9",
        ios: "3.0",
        node: "0.1.27",
        oculus: "3.0",
        opera: "10.50",
        "opera-android": "10.50",
        opera_mobile: "10.50",
        phantom: "1.9",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "4.0",
        samsung: "1.0"
    },
        "es.date.set-year": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "1",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "1",
        "firefox-android": "4",
        hermes: "0.1",
        ie: "3",
        ios: "1.0",
        node: "0.0.3",
        oculus: "3.0",
        opera: "3",
        "opera-android": "3",
        opera_mobile: "3",
        phantom: "1.9",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "1",
        samsung: "1.0"
    },
        "es.date.to-gmt-string": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "1",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "1",
        "firefox-android": "4",
        hermes: "0.1",
        ie: "3",
        ios: "1.0",
        node: "0.0.3",
        oculus: "3.0",
        opera: "3",
        "opera-android": "3",
        opera_mobile: "3",
        phantom: "1.9",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "1",
        samsung: "1.0"
    },
        "es.date.to-iso-string": {
        android: "4.4",
        bun: "0.1.1",
        chrome: "26",
        "chrome-android": "26",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "7",
        "firefox-android": "7",
        hermes: "0.1",
        ie: "9",
        ios: "8.0",
        node: "0.11.0",
        oculus: "3.0",
        opera: "15",
        "opera-android": "15",
        opera_mobile: "15",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "1.5"
    },
        "es.date.to-json": {
        android: "4.4",
        bun: "0.1.1",
        chrome: "26",
        "chrome-android": "26",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "4",
        "firefox-android": "4",
        hermes: "0.1",
        ie: "9",
        ios: "10.0",
        node: "0.11.0",
        oculus: "3.0",
        opera: "15",
        "opera-android": "15",
        opera_mobile: "15",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "10.0",
        samsung: "1.5"
    },
        "es.date.to-primitive": {
        android: "47",
        bun: "0.1.1",
        chrome: "47",
        "chrome-android": "47",
        deno: "1.0",
        edge: "15",
        electron: "0.36",
        firefox: "44",
        "firefox-android": "44",
        hermes: "0.1",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "34",
        "opera-android": "34",
        opera_mobile: "34",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.date.to-string": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "5",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "2",
        "firefox-android": "4",
        hermes: "0.1",
        ie: "9",
        ios: "2.0",
        node: "0.1.27",
        oculus: "3.0",
        opera: "10.50",
        "opera-android": "10.50",
        opera_mobile: "10.50",
        phantom: "1.9",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "3.1",
        samsung: "1.0"
    },
        "es.escape": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "1",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "1",
        "firefox-android": "4",
        hermes: "0.1",
        ie: "3",
        ios: "1.0",
        node: "0.0.3",
        oculus: "3.0",
        opera: "3",
        "opera-android": "3",
        opera_mobile: "3",
        phantom: "1.9",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "1",
        samsung: "1.0"
    },
        "es.function.bind": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "7",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "4",
        "firefox-android": "4",
        hermes: "0.1",
        ie: "9",
        ios: "5.0",
        node: "0.1.101",
        oculus: "3.0",
        opera: "12",
        "opera-android": "12",
        opera_mobile: "12",
        phantom: "2.0",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "5.1",
        samsung: "1.0"
    },
        "es.function.has-instance": {
        android: "51",
        bun: "0.1.1",
        chrome: "51",
        "chrome-android": "51",
        deno: "1.0",
        edge: "15",
        electron: "1.2",
        firefox: "50",
        "firefox-android": "50",
        hermes: "0.1",
        ios: "10.0",
        node: "6.5",
        oculus: "3.0",
        opera: "38",
        "opera-android": "38",
        opera_mobile: "38",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.function.name": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "5",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "2",
        "firefox-android": "4",
        hermes: "0.1",
        ios: "3.0",
        node: "0.1.27",
        oculus: "3.0",
        opera: "10.50",
        "opera-android": "10.50",
        opera_mobile: "10.50",
        phantom: "1.9",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "4.0",
        samsung: "1.0"
    },
        "es.global-this": {
        android: "71",
        bun: "0.1.1",
        chrome: "71",
        "chrome-android": "71",
        deno: "1.0",
        edge: "79",
        electron: "5.0",
        firefox: "65",
        "firefox-android": "65",
        hermes: "0.2",
        ios: "12.2",
        node: "12.0",
        oculus: "6.0",
        opera: "58",
        "opera-android": "50",
        opera_mobile: "50",
        quest: "6.0",
        "react-native": "0.69",
        rhino: "1.7.14",
        safari: "12.1",
        samsung: "10.0"
    },
        "es.json.stringify": {
        android: "72",
        bun: "0.1.1",
        chrome: "72",
        "chrome-android": "72",
        deno: "1.0",
        edge: "79",
        electron: "5.0",
        firefox: "64",
        "firefox-android": "64",
        ios: "12.2",
        node: "12.0",
        oculus: "6.0",
        opera: "59",
        "opera-android": "51",
        opera_mobile: "51",
        quest: "6.0",
        safari: "12.1",
        samsung: "11.0"
    },
        "es.json.to-string-tag": {
        android: "50",
        bun: "0.1.1",
        chrome: "50",
        "chrome-android": "50",
        deno: "1.0",
        edge: "15",
        electron: "1.1",
        firefox: "51",
        "firefox-android": "51",
        hermes: "0.1",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "37",
        "opera-android": "37",
        opera_mobile: "37",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.map": {
        android: "51",
        bun: "0.1.1",
        chrome: "51",
        "chrome-android": "51",
        deno: "1.0",
        edge: "15",
        electron: "1.2",
        firefox: "53",
        "firefox-android": "53",
        ios: "10.0",
        node: "6.5",
        oculus: "3.0",
        opera: "38",
        "opera-android": "38",
        opera_mobile: "38",
        quest: "3.0",
        rhino: "1.7.13",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.math.acosh": {
        android: "54",
        bun: "0.1.1",
        chrome: "54",
        "chrome-android": "54",
        deno: "1.0",
        edge: "13",
        electron: "1.4",
        firefox: "25",
        "firefox-android": "25",
        hermes: "0.1",
        ios: "8.0",
        node: "7.0",
        oculus: "3.0",
        opera: "41",
        "opera-android": "41",
        opera_mobile: "41",
        quest: "3.0",
        "react-native": "0.69",
        safari: "7.1",
        samsung: "6.0"
    },
        "es.math.asinh": {
        android: "38",
        bun: "0.1.1",
        chrome: "38",
        "chrome-android": "38",
        deno: "1.0",
        edge: "13",
        electron: "0.20",
        firefox: "25",
        "firefox-android": "25",
        hermes: "0.1",
        ios: "8.0",
        node: "0.11.15",
        oculus: "3.0",
        opera: "25",
        "opera-android": "25",
        opera_mobile: "25",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "3.0"
    },
        "es.math.atanh": {
        android: "38",
        bun: "0.1.1",
        chrome: "38",
        "chrome-android": "38",
        deno: "1.0",
        edge: "13",
        electron: "0.20",
        firefox: "25",
        "firefox-android": "25",
        hermes: "0.1",
        ios: "8.0",
        node: "0.11.15",
        oculus: "3.0",
        opera: "25",
        "opera-android": "25",
        opera_mobile: "25",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "3.0"
    },
        "es.math.cbrt": {
        android: "38",
        bun: "0.1.1",
        chrome: "38",
        "chrome-android": "38",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "25",
        "firefox-android": "25",
        hermes: "0.1",
        ios: "8.0",
        node: "0.11.15",
        oculus: "3.0",
        opera: "25",
        "opera-android": "25",
        opera_mobile: "25",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "3.0"
    },
        "es.math.clz32": {
        android: "38",
        bun: "0.1.1",
        chrome: "38",
        "chrome-android": "38",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "31",
        "firefox-android": "31",
        hermes: "0.1",
        ios: "9.0",
        node: "0.11.15",
        oculus: "3.0",
        opera: "25",
        "opera-android": "25",
        opera_mobile: "25",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "3.0"
    },
        "es.math.cosh": {
        android: "39",
        bun: "0.1.1",
        chrome: "39",
        "chrome-android": "39",
        deno: "1.0",
        edge: "13",
        electron: "0.20",
        firefox: "25",
        "firefox-android": "25",
        hermes: "0.1",
        ios: "8.0",
        node: "1.0",
        oculus: "3.0",
        opera: "26",
        "opera-android": "26",
        opera_mobile: "26",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "3.4"
    },
        "es.math.expm1": {
        android: "39",
        bun: "0.1.1",
        chrome: "39",
        "chrome-android": "39",
        deno: "1.0",
        edge: "13",
        electron: "0.20",
        firefox: "46",
        "firefox-android": "46",
        hermes: "0.1",
        ios: "8.0",
        node: "1.0",
        oculus: "3.0",
        opera: "26",
        "opera-android": "26",
        opera_mobile: "26",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "3.4"
    },
        "es.math.fround": {
        android: "38",
        bun: "0.1.1",
        chrome: "38",
        "chrome-android": "38",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "26",
        "firefox-android": "26",
        hermes: "0.1",
        ios: "8.0",
        node: "0.11.15",
        oculus: "3.0",
        opera: "25",
        "opera-android": "25",
        opera_mobile: "25",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "3.0"
    },
        "es.math.hypot": {
        android: "78",
        bun: "0.1.1",
        chrome: "78",
        "chrome-android": "78",
        deno: "1.0",
        edge: "12",
        electron: "7.0",
        firefox: "27",
        "firefox-android": "27",
        hermes: "0.1",
        ios: "8.0",
        node: "13.0",
        oculus: "8.0",
        opera: "65",
        "opera-android": "56",
        opera_mobile: "56",
        quest: "8.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "12.0"
    },
        "es.math.imul": {
        android: "4.4",
        bun: "0.1.1",
        chrome: "28",
        "chrome-android": "28",
        deno: "1.0",
        edge: "13",
        electron: "0.20",
        firefox: "20",
        "firefox-android": "20",
        hermes: "0.1",
        ios: "9.0",
        node: "0.11.1",
        oculus: "3.0",
        opera: "15",
        "opera-android": "15",
        opera_mobile: "15",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "1.5"
    },
        "es.math.log10": {
        android: "38",
        bun: "0.1.1",
        chrome: "38",
        "chrome-android": "38",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "25",
        "firefox-android": "25",
        hermes: "0.1",
        ios: "8.0",
        node: "0.11.15",
        oculus: "3.0",
        opera: "25",
        "opera-android": "25",
        opera_mobile: "25",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "3.0"
    },
        "es.math.log1p": {
        android: "38",
        bun: "0.1.1",
        chrome: "38",
        "chrome-android": "38",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "25",
        "firefox-android": "25",
        hermes: "0.1",
        ios: "8.0",
        node: "0.11.15",
        oculus: "3.0",
        opera: "25",
        "opera-android": "25",
        opera_mobile: "25",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "3.0"
    },
        "es.math.log2": {
        android: "38",
        bun: "0.1.1",
        chrome: "38",
        "chrome-android": "38",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "25",
        "firefox-android": "25",
        hermes: "0.1",
        ios: "8.0",
        node: "0.11.15",
        oculus: "3.0",
        opera: "25",
        "opera-android": "25",
        opera_mobile: "25",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "3.0"
    },
        "es.math.sign": {
        android: "38",
        bun: "0.1.1",
        chrome: "38",
        "chrome-android": "38",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "25",
        "firefox-android": "25",
        hermes: "0.1",
        ios: "9.0",
        node: "0.11.15",
        oculus: "3.0",
        opera: "25",
        "opera-android": "25",
        opera_mobile: "25",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "3.0"
    },
        "es.math.sinh": {
        android: "39",
        bun: "0.1.1",
        chrome: "39",
        "chrome-android": "39",
        deno: "1.0",
        edge: "13",
        electron: "0.20",
        firefox: "25",
        "firefox-android": "25",
        hermes: "0.1",
        ios: "8.0",
        node: "1.0",
        oculus: "3.0",
        opera: "26",
        "opera-android": "26",
        opera_mobile: "26",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "3.4"
    },
        "es.math.tanh": {
        android: "38",
        bun: "0.1.1",
        chrome: "38",
        "chrome-android": "38",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "25",
        "firefox-android": "25",
        hermes: "0.1",
        ios: "8.0",
        node: "0.11.15",
        oculus: "3.0",
        opera: "25",
        "opera-android": "25",
        opera_mobile: "25",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "3.0"
    },
        "es.math.to-string-tag": {
        android: "50",
        bun: "0.1.1",
        chrome: "50",
        "chrome-android": "50",
        deno: "1.0",
        edge: "15",
        electron: "1.1",
        firefox: "51",
        "firefox-android": "51",
        hermes: "0.1",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "37",
        "opera-android": "37",
        opera_mobile: "37",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.math.trunc": {
        android: "38",
        bun: "0.1.1",
        chrome: "38",
        "chrome-android": "38",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "25",
        "firefox-android": "25",
        hermes: "0.1",
        ios: "8.0",
        node: "0.11.15",
        oculus: "3.0",
        opera: "25",
        "opera-android": "25",
        opera_mobile: "25",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "3.0"
    },
        "es.number.constructor": {
        android: "41",
        bun: "0.1.1",
        chrome: "41",
        "chrome-android": "41",
        deno: "1.0",
        edge: "13",
        electron: "0.21",
        firefox: "46",
        "firefox-android": "46",
        hermes: "0.5",
        ios: "9.0",
        node: "1.0",
        oculus: "3.0",
        opera: "28",
        "opera-android": "28",
        opera_mobile: "28",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "3.4"
    },
        "es.number.epsilon": {
        android: "37",
        bun: "0.1.1",
        chrome: "34",
        "chrome-android": "34",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "25",
        "firefox-android": "25",
        hermes: "0.1",
        ios: "9.0",
        node: "0.11.13",
        oculus: "3.0",
        opera: "21",
        "opera-android": "21",
        opera_mobile: "21",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.14",
        safari: "9.0",
        samsung: "2.0"
    },
        "es.number.is-finite": {
        android: "4.1",
        bun: "0.1.1",
        chrome: "19",
        "chrome-android": "25",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "16",
        "firefox-android": "16",
        hermes: "0.1",
        ios: "9.0",
        node: "0.7.3",
        oculus: "3.0",
        opera: "15",
        "opera-android": "15",
        opera_mobile: "15",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "1.5"
    },
        "es.number.is-integer": {
        android: "37",
        bun: "0.1.1",
        chrome: "34",
        "chrome-android": "34",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "16",
        "firefox-android": "16",
        hermes: "0.1",
        ios: "9.0",
        node: "0.11.13",
        oculus: "3.0",
        opera: "21",
        "opera-android": "21",
        opera_mobile: "21",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "2.0"
    },
        "es.number.is-nan": {
        android: "4.1",
        bun: "0.1.1",
        chrome: "19",
        "chrome-android": "25",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "15",
        "firefox-android": "15",
        hermes: "0.1",
        ios: "9.0",
        node: "0.7.3",
        oculus: "3.0",
        opera: "15",
        "opera-android": "15",
        opera_mobile: "15",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "1.5"
    },
        "es.number.is-safe-integer": {
        android: "37",
        bun: "0.1.1",
        chrome: "34",
        "chrome-android": "34",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "32",
        "firefox-android": "32",
        hermes: "0.1",
        ios: "9.0",
        node: "0.11.13",
        oculus: "3.0",
        opera: "21",
        "opera-android": "21",
        opera_mobile: "21",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "2.0"
    },
        "es.number.max-safe-integer": {
        android: "37",
        bun: "0.1.1",
        chrome: "34",
        "chrome-android": "34",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "31",
        "firefox-android": "31",
        hermes: "0.1",
        ios: "9.0",
        node: "0.11.13",
        oculus: "3.0",
        opera: "21",
        "opera-android": "21",
        opera_mobile: "21",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "2.0"
    },
        "es.number.min-safe-integer": {
        android: "37",
        bun: "0.1.1",
        chrome: "34",
        "chrome-android": "34",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "31",
        "firefox-android": "31",
        hermes: "0.1",
        ios: "9.0",
        node: "0.11.13",
        oculus: "3.0",
        opera: "21",
        "opera-android": "21",
        opera_mobile: "21",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "2.0"
    },
        "es.number.parse-float": {
        android: "37",
        bun: "0.1.1",
        chrome: "35",
        "chrome-android": "35",
        deno: "1.0",
        edge: "79",
        electron: "0.20",
        firefox: "39",
        "firefox-android": "39",
        hermes: "0.1",
        ios: "11.0",
        node: "0.11.13",
        oculus: "3.0",
        opera: "22",
        "opera-android": "22",
        opera_mobile: "22",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.14",
        safari: "11.0",
        samsung: "3.0"
    },
        "es.number.parse-int": {
        android: "37",
        bun: "0.1.1",
        chrome: "35",
        "chrome-android": "35",
        deno: "1.0",
        edge: "79",
        electron: "0.20",
        firefox: "39",
        "firefox-android": "39",
        hermes: "0.1",
        ios: "9.0",
        node: "0.11.13",
        oculus: "3.0",
        opera: "22",
        "opera-android": "22",
        opera_mobile: "22",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.14",
        safari: "9.0",
        samsung: "3.0"
    },
        "es.number.to-exponential": {
        android: "51",
        bun: "0.1.1",
        chrome: "51",
        "chrome-android": "51",
        deno: "1.0",
        edge: "18",
        electron: "1.2",
        firefox: "87",
        "firefox-android": "87",
        hermes: "0.1",
        ios: "11.0",
        node: "6.5",
        oculus: "3.0",
        opera: "38",
        "opera-android": "38",
        opera_mobile: "38",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.14",
        safari: "11",
        samsung: "5.0"
    },
        "es.number.to-fixed": {
        android: "4.4",
        bun: "0.1.1",
        chrome: "26",
        "chrome-android": "26",
        deno: "1.0",
        edge: "79",
        electron: "0.20",
        firefox: "4",
        "firefox-android": "4",
        hermes: "0.1",
        ios: "8.0",
        node: "0.11.0",
        oculus: "3.0",
        opera: "15",
        "opera-android": "15",
        opera_mobile: "15",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "1.5"
    },
        "es.number.to-precision": {
        android: "4.4",
        bun: "0.1.1",
        chrome: "26",
        "chrome-android": "26",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "4",
        "firefox-android": "4",
        hermes: "0.1",
        ie: "8",
        ios: "8.0",
        node: "0.11.0",
        oculus: "3.0",
        opera: "15",
        "opera-android": "15",
        opera_mobile: "15",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "1.5"
    },
        "es.object.assign": {
        android: "49",
        bun: "0.1.1",
        chrome: "49",
        "chrome-android": "49",
        deno: "1.0",
        edge: "79",
        electron: "0.37",
        firefox: "36",
        "firefox-android": "36",
        hermes: "0.4",
        ios: "9.0",
        node: "6.0",
        oculus: "3.0",
        opera: "36",
        "opera-android": "36",
        opera_mobile: "36",
        quest: "3.0",
        "react-native": "0.69",
        safari: "9.0",
        samsung: "5.0"
    },
        "es.object.create": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "5",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "4",
        "firefox-android": "4",
        hermes: "0.1",
        ie: "9",
        ios: "3.0",
        node: "0.1.27",
        oculus: "3.0",
        opera: "12",
        "opera-android": "12",
        opera_mobile: "12",
        phantom: "1.9",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "4.0",
        samsung: "1.0"
    },
        "es.object.define-getter": {
        android: "62",
        bun: "0.1.1",
        chrome: "62",
        "chrome-android": "62",
        deno: "1.0",
        edge: "16",
        electron: "3.0",
        firefox: "48",
        "firefox-android": "48",
        hermes: "0.1",
        ios: "8.0",
        node: "8.10",
        oculus: "5.0",
        opera: "49",
        "opera-android": "46",
        opera_mobile: "46",
        quest: "5.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "8.0"
    },
        "es.object.define-properties": {
        android: "37",
        bun: "0.1.1",
        chrome: "37",
        "chrome-android": "37",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "4",
        "firefox-android": "4",
        hermes: "0.1",
        ie: "9",
        ios: "5.0",
        node: "0.11.15",
        oculus: "3.0",
        opera: "12",
        "opera-android": "12",
        opera_mobile: "12",
        phantom: "2.0",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "5.1",
        samsung: "3.0"
    },
        "es.object.define-property": {
        android: "37",
        bun: "0.1.1",
        chrome: "37",
        "chrome-android": "37",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "4",
        "firefox-android": "4",
        hermes: "0.1",
        ie: "9",
        ios: "5.0",
        node: "0.11.15",
        oculus: "3.0",
        opera: "12",
        "opera-android": "12",
        opera_mobile: "12",
        phantom: "2.0",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "5.1",
        samsung: "3.0"
    },
        "es.object.define-setter": {
        android: "62",
        bun: "0.1.1",
        chrome: "62",
        "chrome-android": "62",
        deno: "1.0",
        edge: "16",
        electron: "3.0",
        firefox: "48",
        "firefox-android": "48",
        hermes: "0.1",
        ios: "8.0",
        node: "8.10",
        oculus: "5.0",
        opera: "49",
        "opera-android": "46",
        opera_mobile: "46",
        quest: "5.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "8.0"
    },
        "es.object.entries": {
        android: "54",
        bun: "0.1.1",
        chrome: "54",
        "chrome-android": "54",
        deno: "1.0",
        edge: "14",
        electron: "1.4",
        firefox: "47",
        "firefox-android": "47",
        hermes: "0.1",
        ios: "10.3",
        node: "7.0",
        oculus: "3.0",
        opera: "41",
        "opera-android": "41",
        opera_mobile: "41",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.14",
        safari: "10.1",
        samsung: "6.0"
    },
        "es.object.freeze": {
        android: "44",
        bun: "0.1.1",
        chrome: "44",
        "chrome-android": "44",
        deno: "1.0",
        edge: "13",
        electron: "0.30",
        firefox: "35",
        "firefox-android": "35",
        hermes: "0.1",
        ios: "9.0",
        node: "3.0",
        oculus: "3.0",
        opera: "31",
        "opera-android": "31",
        opera_mobile: "31",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "4.0"
    },
        "es.object.from-entries": {
        android: "73",
        bun: "0.1.1",
        chrome: "73",
        "chrome-android": "73",
        deno: "1.0",
        edge: "79",
        electron: "5.0",
        firefox: "63",
        "firefox-android": "63",
        hermes: "0.4",
        ios: "12.2",
        node: "12.0",
        oculus: "6.0",
        opera: "60",
        "opera-android": "52",
        opera_mobile: "52",
        quest: "6.0",
        "react-native": "0.69",
        rhino: "1.7.14",
        safari: "12.1",
        samsung: "11.0"
    },
        "es.object.get-own-property-descriptor": {
        android: "44",
        bun: "0.1.1",
        chrome: "44",
        "chrome-android": "44",
        deno: "1.0",
        edge: "13",
        electron: "0.30",
        firefox: "35",
        "firefox-android": "35",
        hermes: "0.1",
        ios: "9.0",
        node: "3.0",
        oculus: "3.0",
        opera: "31",
        "opera-android": "31",
        opera_mobile: "31",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "4.0"
    },
        "es.object.get-own-property-descriptors": {
        android: "54",
        bun: "0.1.1",
        chrome: "54",
        "chrome-android": "54",
        deno: "1.0",
        edge: "15",
        electron: "1.4",
        firefox: "50",
        "firefox-android": "50",
        hermes: "0.6",
        ios: "10.0",
        node: "7.0",
        oculus: "3.0",
        opera: "41",
        "opera-android": "41",
        opera_mobile: "41",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "6.0"
    },
        "es.object.get-own-property-names": {
        android: "40",
        bun: "0.1.1",
        chrome: "40",
        "chrome-android": "40",
        deno: "1.0",
        edge: "13",
        electron: "0.21",
        firefox: "34",
        "firefox-android": "34",
        hermes: "0.1",
        ios: "9.0",
        node: "1.0",
        oculus: "3.0",
        opera: "27",
        "opera-android": "27",
        opera_mobile: "27",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "3.4"
    },
        "es.object.get-prototype-of": {
        android: "44",
        bun: "0.1.1",
        chrome: "44",
        "chrome-android": "44",
        deno: "1.0",
        edge: "13",
        electron: "0.30",
        firefox: "35",
        "firefox-android": "35",
        hermes: "0.1",
        ios: "9.0",
        node: "3.0",
        oculus: "3.0",
        opera: "31",
        "opera-android": "31",
        opera_mobile: "31",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "4.0"
    },
        "es.object.has-own": {
        android: "93",
        bun: "0.1.1",
        chrome: "93",
        "chrome-android": "93",
        deno: "1.13",
        edge: "93",
        electron: "14.0",
        firefox: "92",
        "firefox-android": "92",
        hermes: "0.10",
        ios: "15.4",
        node: "16.9",
        oculus: "17.0",
        opera: "79",
        "opera-android": "66",
        opera_mobile: "66",
        quest: "17.0",
        "react-native": "0.69",
        safari: "15.4",
        samsung: "17.0"
    },
        "es.object.is": {
        android: "4.1",
        bun: "0.1.1",
        chrome: "19",
        "chrome-android": "25",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "22",
        "firefox-android": "22",
        hermes: "0.1",
        ios: "9.0",
        node: "0.7.3",
        oculus: "3.0",
        opera: "15",
        "opera-android": "15",
        opera_mobile: "15",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "1.5"
    },
        "es.object.is-extensible": {
        android: "44",
        bun: "0.1.1",
        chrome: "44",
        "chrome-android": "44",
        deno: "1.0",
        edge: "13",
        electron: "0.30",
        firefox: "35",
        "firefox-android": "35",
        hermes: "0.1",
        ios: "9.0",
        node: "3.0",
        oculus: "3.0",
        opera: "31",
        "opera-android": "31",
        opera_mobile: "31",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "4.0"
    },
        "es.object.is-frozen": {
        android: "44",
        bun: "0.1.1",
        chrome: "44",
        "chrome-android": "44",
        deno: "1.0",
        edge: "13",
        electron: "0.30",
        firefox: "35",
        "firefox-android": "35",
        hermes: "0.1",
        ios: "9.0",
        node: "3.0",
        oculus: "3.0",
        opera: "31",
        "opera-android": "31",
        opera_mobile: "31",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "4.0"
    },
        "es.object.is-sealed": {
        android: "44",
        bun: "0.1.1",
        chrome: "44",
        "chrome-android": "44",
        deno: "1.0",
        edge: "13",
        electron: "0.30",
        firefox: "35",
        "firefox-android": "35",
        hermes: "0.1",
        ios: "9.0",
        node: "3.0",
        oculus: "3.0",
        opera: "31",
        "opera-android": "31",
        opera_mobile: "31",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "4.0"
    },
        "es.object.keys": {
        android: "40",
        bun: "0.1.1",
        chrome: "40",
        "chrome-android": "40",
        deno: "1.0",
        edge: "13",
        electron: "0.21",
        firefox: "35",
        "firefox-android": "35",
        hermes: "0.1",
        ios: "9.0",
        node: "1.0",
        oculus: "3.0",
        opera: "27",
        "opera-android": "27",
        opera_mobile: "27",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "3.4"
    },
        "es.object.lookup-getter": {
        android: "62",
        bun: "0.1.1",
        chrome: "62",
        "chrome-android": "62",
        deno: "1.0",
        edge: "16",
        electron: "3.0",
        firefox: "48",
        "firefox-android": "48",
        hermes: "0.1",
        ios: "8.0",
        node: "8.10",
        oculus: "5.0",
        opera: "49",
        "opera-android": "46",
        opera_mobile: "46",
        quest: "5.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "8.0"
    },
        "es.object.lookup-setter": {
        android: "62",
        bun: "0.1.1",
        chrome: "62",
        "chrome-android": "62",
        deno: "1.0",
        edge: "16",
        electron: "3.0",
        firefox: "48",
        "firefox-android": "48",
        hermes: "0.1",
        ios: "8.0",
        node: "8.10",
        oculus: "5.0",
        opera: "49",
        "opera-android": "46",
        opera_mobile: "46",
        quest: "5.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "8.0"
    },
        "es.object.prevent-extensions": {
        android: "44",
        bun: "0.1.1",
        chrome: "44",
        "chrome-android": "44",
        deno: "1.0",
        edge: "13",
        electron: "0.30",
        firefox: "35",
        "firefox-android": "35",
        hermes: "0.1",
        ios: "9.0",
        node: "3.0",
        oculus: "3.0",
        opera: "31",
        "opera-android": "31",
        opera_mobile: "31",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "4.0"
    },
        "es.object.proto": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "5",
        "chrome-android": "18",
        edge: "12",
        electron: "0.20",
        firefox: "2",
        "firefox-android": "4",
        hermes: "0.1",
        ie: "11",
        ios: "2.0",
        node: "0.1.27",
        oculus: "3.0",
        opera: "10.50",
        "opera-android": "10.50",
        opera_mobile: "10.50",
        phantom: "1.9",
        quest: "3.0",
        "react-native": "0.69",
        safari: "3.1",
        samsung: "1.0"
    },
        "es.object.seal": {
        android: "44",
        bun: "0.1.1",
        chrome: "44",
        "chrome-android": "44",
        deno: "1.0",
        edge: "13",
        electron: "0.30",
        firefox: "35",
        "firefox-android": "35",
        hermes: "0.1",
        ios: "9.0",
        node: "3.0",
        oculus: "3.0",
        opera: "31",
        "opera-android": "31",
        opera_mobile: "31",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "4.0"
    },
        "es.object.set-prototype-of": {
        android: "37",
        bun: "0.1.1",
        chrome: "34",
        "chrome-android": "34",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "31",
        "firefox-android": "31",
        hermes: "0.1",
        ie: "11",
        ios: "9.0",
        node: "0.11.13",
        oculus: "3.0",
        opera: "21",
        "opera-android": "21",
        opera_mobile: "21",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "2.0"
    },
        "es.object.to-string": {
        android: "49",
        bun: "0.1.1",
        chrome: "49",
        "chrome-android": "49",
        deno: "1.0",
        edge: "15",
        electron: "0.37",
        firefox: "51",
        "firefox-android": "51",
        hermes: "0.1",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "36",
        "opera-android": "36",
        opera_mobile: "36",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.object.values": {
        android: "54",
        bun: "0.1.1",
        chrome: "54",
        "chrome-android": "54",
        deno: "1.0",
        edge: "14",
        electron: "1.4",
        firefox: "47",
        "firefox-android": "47",
        hermes: "0.1",
        ios: "10.3",
        node: "7.0",
        oculus: "3.0",
        opera: "41",
        "opera-android": "41",
        opera_mobile: "41",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.14",
        safari: "10.1",
        samsung: "6.0"
    },
        "es.parse-float": {
        android: "37",
        bun: "0.1.1",
        chrome: "35",
        "chrome-android": "35",
        deno: "1.0",
        edge: "74",
        electron: "0.20",
        firefox: "8",
        "firefox-android": "8",
        hermes: "0.1",
        ie: "8",
        ios: "8.0",
        node: "0.11.13",
        oculus: "3.0",
        opera: "22",
        "opera-android": "22",
        opera_mobile: "22",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "3.0"
    },
        "es.parse-int": {
        android: "37",
        bun: "0.1.1",
        chrome: "35",
        "chrome-android": "35",
        deno: "1.0",
        edge: "74",
        electron: "0.20",
        firefox: "21",
        "firefox-android": "21",
        hermes: "0.1",
        ie: "9",
        ios: "8.0",
        node: "0.11.13",
        oculus: "3.0",
        opera: "22",
        "opera-android": "22",
        opera_mobile: "22",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "7.1",
        samsung: "3.0"
    },
        "es.promise": {
        android: "67",
        bun: "0.1.1",
        chrome: "67",
        "chrome-android": "67",
        deno: "1.24",
        edge: "79",
        electron: "4.0",
        firefox: "69",
        "firefox-android": "69",
        ios: "11.0",
        node: "10.4",
        oculus: "6.0",
        opera: "54",
        "opera-android": "48",
        opera_mobile: "48",
        quest: "6.0",
        rhino: "1.7.14",
        safari: "11.0",
        samsung: "9.0"
    },
        "es.promise.all-settled": {
        android: "76",
        bun: "0.1.1",
        chrome: "76",
        "chrome-android": "76",
        deno: "1.24",
        edge: "79",
        electron: "6.0",
        firefox: "71",
        "firefox-android": "71",
        ios: "13.0",
        node: "12.9",
        oculus: "7.0",
        opera: "63",
        "opera-android": "54",
        opera_mobile: "54",
        quest: "7.0",
        safari: "13",
        samsung: "12.0"
    },
        "es.promise.any": {
        android: "85",
        bun: "0.1.1",
        chrome: "85",
        "chrome-android": "85",
        deno: "1.24",
        edge: "85",
        electron: "10.0",
        firefox: "79",
        "firefox-android": "79",
        ios: "14.0",
        node: "15.0",
        oculus: "12.0",
        opera: "71",
        "opera-android": "60",
        opera_mobile: "60",
        quest: "12.0",
        safari: "14.0",
        samsung: "14.0"
    },
        "es.promise.finally": {
        android: "67",
        bun: "0.1.1",
        chrome: "67",
        "chrome-android": "67",
        deno: "1.24",
        edge: "79",
        electron: "4.0",
        firefox: "69",
        "firefox-android": "69",
        ios: "13.2.3",
        node: "10.4",
        oculus: "6.0",
        opera: "54",
        "opera-android": "48",
        opera_mobile: "48",
        quest: "6.0",
        rhino: "1.7.14",
        safari: "13.0.3",
        samsung: "9.0"
    },
        "es.reflect.apply": {
        android: "49",
        bun: "0.1.1",
        chrome: "49",
        "chrome-android": "49",
        deno: "1.0",
        edge: "15",
        electron: "0.37",
        firefox: "42",
        "firefox-android": "42",
        hermes: "0.7",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "36",
        "opera-android": "36",
        opera_mobile: "36",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.reflect.construct": {
        android: "49",
        bun: "0.1.1",
        chrome: "49",
        "chrome-android": "49",
        deno: "1.0",
        edge: "15",
        electron: "0.37",
        firefox: "44",
        "firefox-android": "44",
        hermes: "0.7",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "36",
        "opera-android": "36",
        opera_mobile: "36",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.reflect.define-property": {
        android: "49",
        bun: "0.1.1",
        chrome: "49",
        "chrome-android": "49",
        deno: "1.0",
        edge: "13",
        electron: "0.37",
        firefox: "42",
        "firefox-android": "42",
        hermes: "0.7",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "36",
        "opera-android": "36",
        opera_mobile: "36",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.reflect.delete-property": {
        android: "49",
        bun: "0.1.1",
        chrome: "49",
        "chrome-android": "49",
        deno: "1.0",
        edge: "12",
        electron: "0.37",
        firefox: "42",
        "firefox-android": "42",
        hermes: "0.7",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "36",
        "opera-android": "36",
        opera_mobile: "36",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.reflect.get": {
        android: "49",
        bun: "0.1.1",
        chrome: "49",
        "chrome-android": "49",
        deno: "1.0",
        edge: "12",
        electron: "0.37",
        firefox: "42",
        "firefox-android": "42",
        hermes: "0.7",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "36",
        "opera-android": "36",
        opera_mobile: "36",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.reflect.get-own-property-descriptor": {
        android: "49",
        bun: "0.1.1",
        chrome: "49",
        "chrome-android": "49",
        deno: "1.0",
        edge: "12",
        electron: "0.37",
        firefox: "42",
        "firefox-android": "42",
        hermes: "0.7",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "36",
        "opera-android": "36",
        opera_mobile: "36",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.reflect.get-prototype-of": {
        android: "49",
        bun: "0.1.1",
        chrome: "49",
        "chrome-android": "49",
        deno: "1.0",
        edge: "12",
        electron: "0.37",
        firefox: "42",
        "firefox-android": "42",
        hermes: "0.7",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "36",
        "opera-android": "36",
        opera_mobile: "36",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.reflect.has": {
        android: "49",
        bun: "0.1.1",
        chrome: "49",
        "chrome-android": "49",
        deno: "1.0",
        edge: "12",
        electron: "0.37",
        firefox: "42",
        "firefox-android": "42",
        hermes: "0.7",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "36",
        "opera-android": "36",
        opera_mobile: "36",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.reflect.is-extensible": {
        android: "49",
        bun: "0.1.1",
        chrome: "49",
        "chrome-android": "49",
        deno: "1.0",
        edge: "12",
        electron: "0.37",
        firefox: "42",
        "firefox-android": "42",
        hermes: "0.7",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "36",
        "opera-android": "36",
        opera_mobile: "36",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.reflect.own-keys": {
        android: "49",
        bun: "0.1.1",
        chrome: "49",
        "chrome-android": "49",
        deno: "1.0",
        edge: "12",
        electron: "0.37",
        firefox: "42",
        "firefox-android": "42",
        hermes: "0.7",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "36",
        "opera-android": "36",
        opera_mobile: "36",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.reflect.prevent-extensions": {
        android: "49",
        bun: "0.1.1",
        chrome: "49",
        "chrome-android": "49",
        deno: "1.0",
        edge: "12",
        electron: "0.37",
        firefox: "42",
        "firefox-android": "42",
        hermes: "0.7",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "36",
        "opera-android": "36",
        opera_mobile: "36",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.reflect.set": {
        android: "49",
        bun: "0.1.1",
        chrome: "49",
        "chrome-android": "49",
        deno: "1.0",
        edge: "79",
        electron: "0.37",
        firefox: "42",
        "firefox-android": "42",
        hermes: "0.7",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "36",
        "opera-android": "36",
        opera_mobile: "36",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.reflect.set-prototype-of": {
        android: "49",
        bun: "0.1.1",
        chrome: "49",
        "chrome-android": "49",
        deno: "1.0",
        edge: "12",
        electron: "0.37",
        firefox: "42",
        "firefox-android": "42",
        hermes: "0.7",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "36",
        "opera-android": "36",
        opera_mobile: "36",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.reflect.to-string-tag": {
        android: "86",
        bun: "0.1.1",
        chrome: "86",
        "chrome-android": "86",
        deno: "1.3",
        edge: "86",
        electron: "11.0",
        firefox: "82",
        "firefox-android": "82",
        hermes: "0.7",
        ios: "14.0",
        node: "15.0",
        oculus: "12.0",
        opera: "72",
        "opera-android": "61",
        opera_mobile: "61",
        quest: "12.0",
        "react-native": "0.69",
        safari: "14.0",
        samsung: "14.0"
    },
        "es.regexp.constructor": {
        android: "64",
        bun: "0.1.1",
        chrome: "64",
        "chrome-android": "64",
        deno: "1.0",
        edge: "79",
        electron: "3.0",
        firefox: "78",
        "firefox-android": "78",
        ios: "11.3",
        node: "10.0",
        oculus: "5.0",
        opera: "51",
        "opera-android": "47",
        opera_mobile: "47",
        quest: "5.0",
        safari: "11.1",
        samsung: "9.0"
    },
        "es.regexp.dot-all": {
        android: "62",
        bun: "0.1.1",
        chrome: "62",
        "chrome-android": "62",
        deno: "1.0",
        edge: "79",
        electron: "3.0",
        firefox: "78",
        "firefox-android": "78",
        hermes: "0.4",
        ios: "11.3",
        node: "8.10",
        oculus: "5.0",
        opera: "49",
        "opera-android": "46",
        opera_mobile: "46",
        quest: "5.0",
        "react-native": "0.69",
        safari: "11.1",
        samsung: "8.0"
    },
        "es.regexp.exec": {
        android: "64",
        bun: "0.1.1",
        chrome: "64",
        "chrome-android": "64",
        deno: "1.0",
        edge: "79",
        electron: "3.0",
        firefox: "78",
        "firefox-android": "78",
        ios: "11.3",
        node: "10.0",
        oculus: "5.0",
        opera: "51",
        "opera-android": "47",
        opera_mobile: "47",
        quest: "5.0",
        "react-native": "0.71",
        safari: "11.1",
        samsung: "9.0"
    },
        "es.regexp.flags": {
        android: "111",
        bun: "0.1.1",
        chrome: "111",
        "chrome-android": "111",
        edge: "111",
        electron: "24.0",
        firefox: "78",
        "firefox-android": "78",
        hermes: "0.4",
        ios: "11.3",
        opera: "97",
        "react-native": "0.69",
        safari: "11.1"
    },
        "es.regexp.sticky": {
        android: "49",
        bun: "0.1.1",
        chrome: "49",
        "chrome-android": "49",
        deno: "1.0",
        edge: "13",
        electron: "0.37",
        firefox: "3",
        "firefox-android": "4",
        hermes: "0.3",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "36",
        "opera-android": "36",
        opera_mobile: "36",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.regexp.test": {
        android: "51",
        bun: "0.1.1",
        chrome: "51",
        "chrome-android": "51",
        deno: "1.0",
        edge: "79",
        electron: "1.2",
        firefox: "46",
        "firefox-android": "46",
        ios: "10.0",
        node: "6.5",
        oculus: "3.0",
        opera: "38",
        "opera-android": "38",
        opera_mobile: "38",
        quest: "3.0",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.regexp.to-string": {
        android: "50",
        bun: "0.1.1",
        chrome: "50",
        "chrome-android": "50",
        deno: "1.0",
        edge: "79",
        electron: "1.1",
        firefox: "46",
        "firefox-android": "46",
        hermes: "0.1",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "37",
        "opera-android": "37",
        opera_mobile: "37",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.set": {
        android: "51",
        bun: "0.1.1",
        chrome: "51",
        "chrome-android": "51",
        deno: "1.0",
        edge: "15",
        electron: "1.2",
        firefox: "53",
        "firefox-android": "53",
        ios: "10.0",
        node: "6.5",
        oculus: "3.0",
        opera: "38",
        "opera-android": "38",
        opera_mobile: "38",
        quest: "3.0",
        rhino: "1.7.13",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.string.at-alternative": {
        android: "92",
        bun: "0.1.1",
        chrome: "92",
        "chrome-android": "92",
        deno: "1.12",
        edge: "92",
        electron: "14.0",
        firefox: "90",
        "firefox-android": "90",
        ios: "15.4",
        node: "16.6",
        oculus: "17.0",
        opera: "78",
        "opera-android": "65",
        opera_mobile: "65",
        quest: "17.0",
        "react-native": "0.71",
        safari: "15.4",
        samsung: "16.0"
    },
        "es.string.code-point-at": {
        android: "41",
        bun: "0.1.1",
        chrome: "41",
        "chrome-android": "41",
        deno: "1.0",
        edge: "13",
        electron: "0.21",
        firefox: "29",
        "firefox-android": "29",
        hermes: "0.1",
        ios: "9.0",
        node: "1.0",
        oculus: "3.0",
        opera: "28",
        "opera-android": "28",
        opera_mobile: "28",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "3.4"
    },
        "es.string.ends-with": {
        android: "51",
        bun: "0.1.1",
        chrome: "51",
        "chrome-android": "51",
        deno: "1.0",
        edge: "79",
        electron: "1.2",
        firefox: "40",
        "firefox-android": "40",
        hermes: "0.1",
        ios: "10.0",
        node: "6.5",
        oculus: "3.0",
        opera: "38",
        "opera-android": "38",
        opera_mobile: "38",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.string.from-code-point": {
        android: "41",
        bun: "0.1.1",
        chrome: "41",
        "chrome-android": "41",
        deno: "1.0",
        edge: "13",
        electron: "0.21",
        firefox: "29",
        "firefox-android": "29",
        hermes: "0.1",
        ios: "9.0",
        node: "1.0",
        oculus: "3.0",
        opera: "28",
        "opera-android": "28",
        opera_mobile: "28",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "3.4"
    },
        "es.string.includes": {
        android: "51",
        bun: "0.1.1",
        chrome: "51",
        "chrome-android": "51",
        deno: "1.0",
        edge: "79",
        electron: "1.2",
        firefox: "40",
        "firefox-android": "40",
        hermes: "0.1",
        ios: "10.0",
        node: "6.5",
        oculus: "3.0",
        opera: "38",
        "opera-android": "38",
        opera_mobile: "38",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.string.iterator": {
        android: "41",
        bun: "0.1.1",
        chrome: "41",
        "chrome-android": "41",
        deno: "1.0",
        edge: "13",
        electron: "0.21",
        firefox: "36",
        "firefox-android": "36",
        hermes: "0.1",
        ios: "9.0",
        node: "1.0",
        oculus: "3.0",
        opera: "28",
        "opera-android": "28",
        opera_mobile: "28",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "3.4"
    },
        "es.string.match": {
        android: "51",
        bun: "0.1.1",
        chrome: "51",
        "chrome-android": "51",
        deno: "1.0",
        edge: "79",
        electron: "1.2",
        firefox: "49",
        "firefox-android": "49",
        hermes: "0.1",
        ios: "10.0",
        node: "6.5",
        oculus: "3.0",
        opera: "38",
        "opera-android": "38",
        opera_mobile: "38",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.string.match-all": {
        android: "80",
        bun: "0.1.1",
        chrome: "80",
        "chrome-android": "80",
        deno: "1.0",
        edge: "80",
        electron: "8.0",
        firefox: "73",
        "firefox-android": "73",
        hermes: "0.6",
        ios: "13.4",
        node: "14.0",
        oculus: "9.0",
        opera: "67",
        "opera-android": "57",
        opera_mobile: "57",
        quest: "9.0",
        "react-native": "0.69",
        safari: "13.1",
        samsung: "13.0"
    },
        "es.string.pad-end": {
        android: "57",
        bun: "0.1.1",
        chrome: "57",
        "chrome-android": "57",
        deno: "1.0",
        edge: "15",
        electron: "1.7",
        firefox: "48",
        "firefox-android": "48",
        hermes: "0.1",
        ios: "11.0",
        node: "8.0",
        oculus: "3.0",
        opera: "44",
        "opera-android": "43",
        opera_mobile: "43",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "11.0",
        samsung: "7.0"
    },
        "es.string.pad-start": {
        android: "57",
        bun: "0.1.1",
        chrome: "57",
        "chrome-android": "57",
        deno: "1.0",
        edge: "15",
        electron: "1.7",
        firefox: "48",
        "firefox-android": "48",
        hermes: "0.1",
        ios: "11.0",
        node: "8.0",
        oculus: "3.0",
        opera: "44",
        "opera-android": "43",
        opera_mobile: "43",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "11.0",
        samsung: "7.0"
    },
        "es.string.raw": {
        android: "41",
        bun: "0.1.1",
        chrome: "41",
        "chrome-android": "41",
        deno: "1.0",
        edge: "13",
        electron: "0.21",
        firefox: "34",
        "firefox-android": "34",
        hermes: "0.1",
        ios: "9.0",
        node: "1.0",
        oculus: "3.0",
        opera: "28",
        "opera-android": "28",
        opera_mobile: "28",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.14",
        safari: "9.0",
        samsung: "3.4"
    },
        "es.string.repeat": {
        android: "41",
        bun: "0.1.1",
        chrome: "41",
        "chrome-android": "41",
        deno: "1.0",
        edge: "13",
        electron: "0.21",
        firefox: "24",
        "firefox-android": "24",
        hermes: "0.1",
        ios: "9.0",
        node: "1.0",
        oculus: "3.0",
        opera: "28",
        "opera-android": "28",
        opera_mobile: "28",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "9.0",
        samsung: "3.4"
    },
        "es.string.replace": {
        android: "64",
        bun: "0.1.1",
        chrome: "64",
        "chrome-android": "64",
        deno: "1.0",
        edge: "79",
        electron: "3.0",
        firefox: "78",
        "firefox-android": "78",
        ios: "14.0",
        node: "10.0",
        oculus: "5.0",
        opera: "51",
        "opera-android": "47",
        opera_mobile: "47",
        quest: "5.0",
        "react-native": "0.71",
        safari: "14.0",
        samsung: "9.0"
    },
        "es.string.replace-all": {
        android: "85",
        bun: "0.1.1",
        chrome: "85",
        "chrome-android": "85",
        deno: "1.2",
        edge: "85",
        electron: "10.0",
        firefox: "77",
        "firefox-android": "77",
        hermes: "0.7",
        ios: "13.4",
        node: "15.0",
        oculus: "12.0",
        opera: "71",
        "opera-android": "60",
        opera_mobile: "60",
        quest: "12.0",
        "react-native": "0.69",
        safari: "13.1",
        samsung: "14.0"
    },
        "es.string.search": {
        android: "51",
        bun: "0.1.1",
        chrome: "51",
        "chrome-android": "51",
        deno: "1.0",
        edge: "79",
        electron: "1.2",
        firefox: "49",
        "firefox-android": "49",
        hermes: "0.1",
        ios: "10.0",
        node: "6.5",
        oculus: "3.0",
        opera: "38",
        "opera-android": "38",
        opera_mobile: "38",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.string.split": {
        android: "54",
        bun: "0.1.1",
        chrome: "54",
        "chrome-android": "54",
        deno: "1.0",
        edge: "79",
        electron: "1.4",
        firefox: "49",
        "firefox-android": "49",
        ios: "10.0",
        node: "7.0",
        oculus: "3.0",
        opera: "41",
        "opera-android": "41",
        opera_mobile: "41",
        quest: "3.0",
        safari: "10.0",
        samsung: "6.0"
    },
        "es.string.starts-with": {
        android: "51",
        bun: "0.1.1",
        chrome: "51",
        "chrome-android": "51",
        deno: "1.0",
        edge: "79",
        electron: "1.2",
        firefox: "40",
        "firefox-android": "40",
        hermes: "0.1",
        ios: "10.0",
        node: "6.5",
        oculus: "3.0",
        opera: "38",
        "opera-android": "38",
        opera_mobile: "38",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.string.substr": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "1",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "1",
        "firefox-android": "4",
        hermes: "0.1",
        ie: "9",
        ios: "1.0",
        node: "0.0.3",
        oculus: "3.0",
        opera: "4",
        "opera-android": "4",
        opera_mobile: "4",
        phantom: "1.9",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "1",
        samsung: "1.0"
    },
        "es.string.trim": {
        android: "59",
        bun: "0.1.1",
        chrome: "59",
        "chrome-android": "59",
        deno: "1.0",
        edge: "15",
        electron: "1.8",
        firefox: "52",
        "firefox-android": "52",
        hermes: "0.1",
        ios: "12.2",
        node: "8.3",
        oculus: "4.0",
        opera: "46",
        "opera-android": "43",
        opera_mobile: "43",
        quest: "4.0",
        "react-native": "0.69",
        safari: "12.1",
        samsung: "7.0"
    },
        "es.string.trim-end": {
        android: "66",
        bun: "0.1.1",
        chrome: "66",
        "chrome-android": "66",
        deno: "1.0",
        edge: "79",
        electron: "3.0",
        firefox: "61",
        "firefox-android": "61",
        hermes: "0.3",
        ios: "12.2",
        node: "10.0",
        oculus: "5.0",
        opera: "53",
        "opera-android": "47",
        opera_mobile: "47",
        quest: "5.0",
        "react-native": "0.69",
        safari: "12.1",
        samsung: "9.0"
    },
        "es.string.trim-start": {
        android: "66",
        bun: "0.1.1",
        chrome: "66",
        "chrome-android": "66",
        deno: "1.0",
        edge: "79",
        electron: "3.0",
        firefox: "61",
        "firefox-android": "61",
        hermes: "0.3",
        ios: "12.0",
        node: "10.0",
        oculus: "5.0",
        opera: "53",
        "opera-android": "47",
        opera_mobile: "47",
        quest: "5.0",
        "react-native": "0.69",
        safari: "12.0",
        samsung: "9.0"
    },
        "es.string.anchor": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "5",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "17",
        "firefox-android": "17",
        ios: "6.0",
        node: "0.1.27",
        oculus: "3.0",
        opera: "15",
        "opera-android": "15",
        opera_mobile: "15",
        phantom: "2.0",
        quest: "3.0",
        rhino: "1.7.14",
        safari: "6.0",
        samsung: "1.0"
    },
        "es.string.big": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "5",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "2",
        "firefox-android": "4",
        ios: "2.0",
        node: "0.1.27",
        oculus: "3.0",
        opera: "10.50",
        "opera-android": "10.50",
        opera_mobile: "10.50",
        phantom: "1.9",
        quest: "3.0",
        rhino: "1.7.13",
        safari: "3.1",
        samsung: "1.0"
    },
        "es.string.blink": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "5",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "2",
        "firefox-android": "4",
        ios: "2.0",
        node: "0.1.27",
        oculus: "3.0",
        opera: "10.50",
        "opera-android": "10.50",
        opera_mobile: "10.50",
        phantom: "1.9",
        quest: "3.0",
        rhino: "1.7.13",
        safari: "3.1",
        samsung: "1.0"
    },
        "es.string.bold": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "5",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "2",
        "firefox-android": "4",
        ios: "2.0",
        node: "0.1.27",
        oculus: "3.0",
        opera: "10.50",
        "opera-android": "10.50",
        opera_mobile: "10.50",
        phantom: "1.9",
        quest: "3.0",
        rhino: "1.7.13",
        safari: "3.1",
        samsung: "1.0"
    },
        "es.string.fixed": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "5",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "2",
        "firefox-android": "4",
        ios: "2.0",
        node: "0.1.27",
        oculus: "3.0",
        opera: "10.50",
        "opera-android": "10.50",
        opera_mobile: "10.50",
        phantom: "1.9",
        quest: "3.0",
        rhino: "1.7.13",
        safari: "3.1",
        samsung: "1.0"
    },
        "es.string.fontcolor": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "5",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "17",
        "firefox-android": "17",
        ios: "6.0",
        node: "0.1.27",
        oculus: "3.0",
        opera: "15",
        "opera-android": "15",
        opera_mobile: "15",
        phantom: "2.0",
        quest: "3.0",
        rhino: "1.7.14",
        safari: "6.0",
        samsung: "1.0"
    },
        "es.string.fontsize": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "5",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "17",
        "firefox-android": "17",
        ios: "6.0",
        node: "0.1.27",
        oculus: "3.0",
        opera: "15",
        "opera-android": "15",
        opera_mobile: "15",
        phantom: "2.0",
        quest: "3.0",
        rhino: "1.7.14",
        safari: "6.0",
        samsung: "1.0"
    },
        "es.string.italics": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "5",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "2",
        "firefox-android": "4",
        ios: "2.0",
        node: "0.1.27",
        oculus: "3.0",
        opera: "10.50",
        "opera-android": "10.50",
        opera_mobile: "10.50",
        phantom: "1.9",
        quest: "3.0",
        rhino: "1.7.13",
        safari: "3.1",
        samsung: "1.0"
    },
        "es.string.link": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "5",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "17",
        "firefox-android": "17",
        ios: "6.0",
        node: "0.1.27",
        oculus: "3.0",
        opera: "15",
        "opera-android": "15",
        opera_mobile: "15",
        phantom: "2.0",
        quest: "3.0",
        rhino: "1.7.14",
        safari: "6.0",
        samsung: "1.0"
    },
        "es.string.small": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "5",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "2",
        "firefox-android": "4",
        ios: "2.0",
        node: "0.1.27",
        oculus: "3.0",
        opera: "10.50",
        "opera-android": "10.50",
        opera_mobile: "10.50",
        phantom: "1.9",
        quest: "3.0",
        rhino: "1.7.13",
        safari: "3.1",
        samsung: "1.0"
    },
        "es.string.strike": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "5",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "2",
        "firefox-android": "4",
        ios: "2.0",
        node: "0.1.27",
        oculus: "3.0",
        opera: "10.50",
        "opera-android": "10.50",
        opera_mobile: "10.50",
        phantom: "1.9",
        quest: "3.0",
        rhino: "1.7.13",
        safari: "3.1",
        samsung: "1.0"
    },
        "es.string.sub": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "5",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "2",
        "firefox-android": "4",
        ios: "2.0",
        node: "0.1.27",
        oculus: "3.0",
        opera: "10.50",
        "opera-android": "10.50",
        opera_mobile: "10.50",
        phantom: "1.9",
        quest: "3.0",
        rhino: "1.7.13",
        safari: "3.1",
        samsung: "1.0"
    },
        "es.string.sup": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "5",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "2",
        "firefox-android": "4",
        ios: "2.0",
        node: "0.1.27",
        oculus: "3.0",
        opera: "10.50",
        "opera-android": "10.50",
        opera_mobile: "10.50",
        phantom: "1.9",
        quest: "3.0",
        rhino: "1.7.13",
        safari: "3.1",
        samsung: "1.0"
    },
        "es.typed-array.float32-array": {
        android: "54",
        bun: "0.1.1",
        chrome: "54",
        "chrome-android": "54",
        deno: "1.0",
        edge: "15",
        electron: "1.4",
        firefox: "55",
        "firefox-android": "55",
        ios: "14.0",
        node: "7.0",
        oculus: "3.0",
        opera: "41",
        "opera-android": "41",
        opera_mobile: "41",
        quest: "3.0",
        safari: "14.0",
        samsung: "6.0"
    },
        "es.typed-array.float64-array": {
        android: "54",
        bun: "0.1.1",
        chrome: "54",
        "chrome-android": "54",
        deno: "1.0",
        edge: "15",
        electron: "1.4",
        firefox: "55",
        "firefox-android": "55",
        ios: "14.0",
        node: "7.0",
        oculus: "3.0",
        opera: "41",
        "opera-android": "41",
        opera_mobile: "41",
        quest: "3.0",
        safari: "14.0",
        samsung: "6.0"
    },
        "es.typed-array.int8-array": {
        android: "54",
        bun: "0.1.1",
        chrome: "54",
        "chrome-android": "54",
        deno: "1.0",
        edge: "15",
        electron: "1.4",
        firefox: "55",
        "firefox-android": "55",
        ios: "14.0",
        node: "7.0",
        oculus: "3.0",
        opera: "41",
        "opera-android": "41",
        opera_mobile: "41",
        quest: "3.0",
        safari: "14.0",
        samsung: "6.0"
    },
        "es.typed-array.int16-array": {
        android: "54",
        bun: "0.1.1",
        chrome: "54",
        "chrome-android": "54",
        deno: "1.0",
        edge: "15",
        electron: "1.4",
        firefox: "55",
        "firefox-android": "55",
        ios: "14.0",
        node: "7.0",
        oculus: "3.0",
        opera: "41",
        "opera-android": "41",
        opera_mobile: "41",
        quest: "3.0",
        safari: "14.0",
        samsung: "6.0"
    },
        "es.typed-array.int32-array": {
        android: "54",
        bun: "0.1.1",
        chrome: "54",
        "chrome-android": "54",
        deno: "1.0",
        edge: "15",
        electron: "1.4",
        firefox: "55",
        "firefox-android": "55",
        ios: "14.0",
        node: "7.0",
        oculus: "3.0",
        opera: "41",
        "opera-android": "41",
        opera_mobile: "41",
        quest: "3.0",
        safari: "14.0",
        samsung: "6.0"
    },
        "es.typed-array.uint8-array": {
        android: "54",
        bun: "0.1.1",
        chrome: "54",
        "chrome-android": "54",
        deno: "1.0",
        edge: "15",
        electron: "1.4",
        firefox: "55",
        "firefox-android": "55",
        ios: "14.0",
        node: "7.0",
        oculus: "3.0",
        opera: "41",
        "opera-android": "41",
        opera_mobile: "41",
        quest: "3.0",
        safari: "14.0",
        samsung: "6.0"
    },
        "es.typed-array.uint8-clamped-array": {
        android: "54",
        bun: "0.1.1",
        chrome: "54",
        "chrome-android": "54",
        deno: "1.0",
        edge: "15",
        electron: "1.4",
        firefox: "55",
        "firefox-android": "55",
        ios: "14.0",
        node: "7.0",
        oculus: "3.0",
        opera: "41",
        "opera-android": "41",
        opera_mobile: "41",
        quest: "3.0",
        safari: "14.0",
        samsung: "6.0"
    },
        "es.typed-array.uint16-array": {
        android: "54",
        bun: "0.1.1",
        chrome: "54",
        "chrome-android": "54",
        deno: "1.0",
        edge: "15",
        electron: "1.4",
        firefox: "55",
        "firefox-android": "55",
        ios: "14.0",
        node: "7.0",
        oculus: "3.0",
        opera: "41",
        "opera-android": "41",
        opera_mobile: "41",
        quest: "3.0",
        safari: "14.0",
        samsung: "6.0"
    },
        "es.typed-array.uint32-array": {
        android: "54",
        bun: "0.1.1",
        chrome: "54",
        "chrome-android": "54",
        deno: "1.0",
        edge: "15",
        electron: "1.4",
        firefox: "55",
        "firefox-android": "55",
        ios: "14.0",
        node: "7.0",
        oculus: "3.0",
        opera: "41",
        "opera-android": "41",
        opera_mobile: "41",
        quest: "3.0",
        safari: "14.0",
        samsung: "6.0"
    },
        "es.typed-array.at": {
        android: "92",
        bun: "0.1.1",
        chrome: "92",
        "chrome-android": "92",
        deno: "1.12",
        edge: "92",
        electron: "14.0",
        firefox: "90",
        "firefox-android": "90",
        ios: "15.4",
        node: "16.6",
        oculus: "17.0",
        opera: "78",
        "opera-android": "65",
        opera_mobile: "65",
        quest: "17.0",
        "react-native": "0.71",
        safari: "15.4",
        samsung: "16.0"
    },
        "es.typed-array.copy-within": {
        android: "45",
        bun: "0.1.1",
        chrome: "45",
        "chrome-android": "45",
        deno: "1.0",
        edge: "13",
        electron: "0.31",
        firefox: "34",
        "firefox-android": "34",
        hermes: "0.1",
        ios: "10.0",
        node: "4.0",
        oculus: "3.0",
        opera: "32",
        "opera-android": "32",
        opera_mobile: "32",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.typed-array.every": {
        android: "45",
        bun: "0.1.1",
        chrome: "45",
        "chrome-android": "45",
        deno: "1.0",
        edge: "13",
        electron: "0.31",
        firefox: "37",
        "firefox-android": "37",
        hermes: "0.1",
        ios: "10.0",
        node: "4.0",
        oculus: "3.0",
        opera: "32",
        "opera-android": "32",
        opera_mobile: "32",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.typed-array.fill": {
        android: "58",
        bun: "0.1.1",
        chrome: "58",
        "chrome-android": "58",
        deno: "1.0",
        edge: "79",
        electron: "1.7",
        firefox: "55",
        "firefox-android": "55",
        hermes: "0.1",
        ios: "14.5",
        node: "8.0",
        oculus: "4.0",
        opera: "45",
        "opera-android": "43",
        opera_mobile: "43",
        quest: "4.0",
        "react-native": "0.69",
        safari: "14.1",
        samsung: "7.0"
    },
        "es.typed-array.filter": {
        android: "45",
        bun: "0.1.1",
        chrome: "45",
        "chrome-android": "45",
        deno: "1.0",
        edge: "13",
        electron: "0.31",
        firefox: "38",
        "firefox-android": "38",
        hermes: "0.1",
        ios: "10.0",
        node: "4.0",
        oculus: "3.0",
        opera: "32",
        "opera-android": "32",
        opera_mobile: "32",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.typed-array.find": {
        android: "45",
        bun: "0.1.1",
        chrome: "45",
        "chrome-android": "45",
        deno: "1.0",
        edge: "13",
        electron: "0.31",
        firefox: "37",
        "firefox-android": "37",
        hermes: "0.1",
        ios: "10.0",
        node: "4.0",
        oculus: "3.0",
        opera: "32",
        "opera-android": "32",
        opera_mobile: "32",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.typed-array.find-index": {
        android: "45",
        bun: "0.1.1",
        chrome: "45",
        "chrome-android": "45",
        deno: "1.0",
        edge: "13",
        electron: "0.31",
        firefox: "37",
        "firefox-android": "37",
        hermes: "0.1",
        ios: "10.0",
        node: "4.0",
        oculus: "3.0",
        opera: "32",
        "opera-android": "32",
        opera_mobile: "32",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.typed-array.find-last": {
        android: "97",
        bun: "0.1.1",
        chrome: "97",
        "chrome-android": "97",
        deno: "1.16",
        edge: "97",
        electron: "17.0",
        firefox: "104",
        "firefox-android": "104",
        hermes: "0.11",
        ios: "15.4",
        node: "18.0",
        oculus: "20.0",
        opera: "83",
        "opera-android": "68",
        opera_mobile: "68",
        quest: "20.0",
        "react-native": "0.69",
        safari: "15.4",
        samsung: "18.0"
    },
        "es.typed-array.find-last-index": {
        android: "97",
        bun: "0.1.1",
        chrome: "97",
        "chrome-android": "97",
        deno: "1.16",
        edge: "97",
        electron: "17.0",
        firefox: "104",
        "firefox-android": "104",
        hermes: "0.11",
        ios: "15.4",
        node: "18.0",
        oculus: "20.0",
        opera: "83",
        "opera-android": "68",
        opera_mobile: "68",
        quest: "20.0",
        "react-native": "0.69",
        safari: "15.4",
        samsung: "18.0"
    },
        "es.typed-array.for-each": {
        android: "45",
        bun: "0.1.1",
        chrome: "45",
        "chrome-android": "45",
        deno: "1.0",
        edge: "13",
        electron: "0.31",
        firefox: "38",
        "firefox-android": "38",
        hermes: "0.1",
        ios: "10.0",
        node: "4.0",
        oculus: "3.0",
        opera: "32",
        "opera-android": "32",
        opera_mobile: "32",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.typed-array.from": {
        android: "54",
        bun: "0.1.1",
        chrome: "54",
        "chrome-android": "54",
        deno: "1.0",
        edge: "15",
        electron: "1.4",
        firefox: "55",
        "firefox-android": "55",
        ios: "14.0",
        node: "7.0",
        oculus: "3.0",
        opera: "41",
        "opera-android": "41",
        opera_mobile: "41",
        quest: "3.0",
        safari: "14.0",
        samsung: "6.0"
    },
        "es.typed-array.includes": {
        android: "49",
        bun: "0.1.1",
        chrome: "49",
        "chrome-android": "49",
        deno: "1.0",
        edge: "14",
        electron: "0.37",
        firefox: "43",
        "firefox-android": "43",
        hermes: "0.1",
        ios: "10.0",
        node: "6.0",
        oculus: "3.0",
        opera: "36",
        "opera-android": "36",
        opera_mobile: "36",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.typed-array.index-of": {
        android: "45",
        bun: "0.1.1",
        chrome: "45",
        "chrome-android": "45",
        deno: "1.0",
        edge: "13",
        electron: "0.31",
        firefox: "37",
        "firefox-android": "37",
        hermes: "0.1",
        ios: "10.0",
        node: "4.0",
        oculus: "3.0",
        opera: "32",
        "opera-android": "32",
        opera_mobile: "32",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.typed-array.iterator": {
        android: "51",
        bun: "0.1.1",
        chrome: "51",
        "chrome-android": "51",
        deno: "1.0",
        edge: "13",
        electron: "1.2",
        firefox: "37",
        "firefox-android": "37",
        hermes: "0.1",
        ios: "10.0",
        node: "6.5",
        oculus: "3.0",
        opera: "38",
        "opera-android": "38",
        opera_mobile: "38",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.typed-array.join": {
        android: "45",
        bun: "0.1.1",
        chrome: "45",
        "chrome-android": "45",
        deno: "1.0",
        edge: "13",
        electron: "0.31",
        firefox: "37",
        "firefox-android": "37",
        hermes: "0.1",
        ios: "10.0",
        node: "4.0",
        oculus: "3.0",
        opera: "32",
        "opera-android": "32",
        opera_mobile: "32",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.typed-array.last-index-of": {
        android: "45",
        bun: "0.1.1",
        chrome: "45",
        "chrome-android": "45",
        deno: "1.0",
        edge: "13",
        electron: "0.31",
        firefox: "37",
        "firefox-android": "37",
        hermes: "0.1",
        ios: "10.0",
        node: "4.0",
        oculus: "3.0",
        opera: "32",
        "opera-android": "32",
        opera_mobile: "32",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.typed-array.map": {
        android: "45",
        bun: "0.1.1",
        chrome: "45",
        "chrome-android": "45",
        deno: "1.0",
        edge: "13",
        electron: "0.31",
        firefox: "38",
        "firefox-android": "38",
        hermes: "0.1",
        ios: "10.0",
        node: "4.0",
        oculus: "3.0",
        opera: "32",
        "opera-android": "32",
        opera_mobile: "32",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.typed-array.of": {
        android: "54",
        bun: "0.1.1",
        chrome: "54",
        "chrome-android": "54",
        deno: "1.0",
        edge: "15",
        electron: "1.4",
        firefox: "55",
        "firefox-android": "55",
        ios: "14.0",
        node: "7.0",
        oculus: "3.0",
        opera: "41",
        "opera-android": "41",
        opera_mobile: "41",
        quest: "3.0",
        safari: "14.0",
        samsung: "6.0"
    },
        "es.typed-array.reduce": {
        android: "45",
        bun: "0.1.1",
        chrome: "45",
        "chrome-android": "45",
        deno: "1.0",
        edge: "13",
        electron: "0.31",
        firefox: "37",
        "firefox-android": "37",
        hermes: "0.1",
        ios: "10.0",
        node: "4.0",
        oculus: "3.0",
        opera: "32",
        "opera-android": "32",
        opera_mobile: "32",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.typed-array.reduce-right": {
        android: "45",
        bun: "0.1.1",
        chrome: "45",
        "chrome-android": "45",
        deno: "1.0",
        edge: "13",
        electron: "0.31",
        firefox: "37",
        "firefox-android": "37",
        hermes: "0.1",
        ios: "10.0",
        node: "4.0",
        oculus: "3.0",
        opera: "32",
        "opera-android": "32",
        opera_mobile: "32",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.typed-array.reverse": {
        android: "45",
        bun: "0.1.1",
        chrome: "45",
        "chrome-android": "45",
        deno: "1.0",
        edge: "13",
        electron: "0.31",
        firefox: "37",
        "firefox-android": "37",
        hermes: "0.1",
        ios: "10.0",
        node: "4.0",
        oculus: "3.0",
        opera: "32",
        "opera-android": "32",
        opera_mobile: "32",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.typed-array.set": {
        android: "95",
        bun: "0.1.1",
        chrome: "95",
        "chrome-android": "95",
        deno: "1.15",
        edge: "95",
        electron: "16.0",
        firefox: "54",
        "firefox-android": "54",
        hermes: "0.1",
        ios: "14.5",
        node: "17.0",
        oculus: "18.0",
        opera: "81",
        "opera-android": "67",
        opera_mobile: "67",
        quest: "18.0",
        "react-native": "0.69",
        safari: "14.1",
        samsung: "17.0"
    },
        "es.typed-array.slice": {
        android: "45",
        bun: "0.1.1",
        chrome: "45",
        "chrome-android": "45",
        deno: "1.0",
        edge: "13",
        electron: "0.31",
        firefox: "38",
        "firefox-android": "38",
        hermes: "0.1",
        ios: "10.0",
        node: "4.0",
        oculus: "3.0",
        opera: "32",
        "opera-android": "32",
        opera_mobile: "32",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.typed-array.some": {
        android: "45",
        bun: "0.1.1",
        chrome: "45",
        "chrome-android": "45",
        deno: "1.0",
        edge: "13",
        electron: "0.31",
        firefox: "37",
        "firefox-android": "37",
        hermes: "0.1",
        ios: "10.0",
        node: "4.0",
        oculus: "3.0",
        opera: "32",
        "opera-android": "32",
        opera_mobile: "32",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.typed-array.sort": {
        android: "74",
        bun: "0.1.1",
        chrome: "74",
        "chrome-android": "74",
        deno: "1.0",
        edge: "79",
        electron: "6.0",
        firefox: "67",
        "firefox-android": "67",
        hermes: "0.10",
        ios: "14.5",
        node: "12.0",
        oculus: "6.0",
        opera: "61",
        "opera-android": "53",
        opera_mobile: "53",
        quest: "6.0",
        "react-native": "0.69",
        safari: "14.1",
        samsung: "11.0"
    },
        "es.typed-array.subarray": {
        android: "4.4",
        bun: "0.1.1",
        chrome: "26",
        "chrome-android": "26",
        deno: "1.0",
        edge: "13",
        electron: "0.20",
        firefox: "15",
        "firefox-android": "15",
        hermes: "0.1",
        ios: "8.0",
        node: "0.11.0",
        oculus: "3.0",
        opera: "15",
        "opera-android": "15",
        opera_mobile: "15",
        quest: "3.0",
        "react-native": "0.69",
        safari: "7.1",
        samsung: "1.5"
    },
        "es.typed-array.to-locale-string": {
        android: "45",
        bun: "0.1.1",
        chrome: "45",
        "chrome-android": "45",
        deno: "1.0",
        edge: "79",
        electron: "0.31",
        firefox: "51",
        "firefox-android": "51",
        hermes: "0.1",
        ios: "10.0",
        node: "4.0",
        oculus: "3.0",
        opera: "32",
        "opera-android": "32",
        opera_mobile: "32",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.typed-array.to-reversed": {
        android: "110",
        bun: "0.1.1",
        chrome: "110",
        "chrome-android": "110",
        deno: "1.27",
        edge: "110",
        electron: "23.0",
        ios: "16.0",
        opera: "96",
        safari: "16.0"
    },
        "es.typed-array.to-sorted": {
        android: "110",
        bun: "0.1.1",
        chrome: "110",
        "chrome-android": "110",
        deno: "1.27",
        edge: "110",
        electron: "23.0",
        ios: "16.0",
        opera: "96",
        safari: "16.0"
    },
        "es.typed-array.to-string": {
        android: "51",
        bun: "0.1.1",
        chrome: "51",
        "chrome-android": "51",
        deno: "1.0",
        edge: "13",
        electron: "1.2",
        firefox: "51",
        "firefox-android": "51",
        hermes: "0.1",
        ios: "10.0",
        node: "6.5",
        oculus: "3.0",
        opera: "38",
        "opera-android": "38",
        opera_mobile: "38",
        quest: "3.0",
        "react-native": "0.69",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.typed-array.with": {
        android: "110",
        bun: "0.1.9",
        chrome: "110",
        "chrome-android": "110",
        deno: "1.27",
        edge: "110",
        electron: "23.0",
        opera: "96"
    },
        "es.unescape": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "1",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "1",
        "firefox-android": "4",
        hermes: "0.1",
        ie: "3",
        ios: "1.0",
        node: "0.0.3",
        oculus: "3.0",
        opera: "3",
        "opera-android": "3",
        opera_mobile: "3",
        phantom: "1.9",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "1",
        samsung: "1.0"
    },
        "es.weak-map": {
        android: "51",
        bun: "0.1.1",
        chrome: "51",
        "chrome-android": "51",
        deno: "1.0",
        edge: "79",
        electron: "1.2",
        firefox: "53",
        "firefox-android": "53",
        ios: "10.0",
        node: "6.5",
        oculus: "3.0",
        opera: "38",
        "opera-android": "38",
        opera_mobile: "38",
        quest: "3.0",
        rhino: "1.7.13",
        safari: "10.0",
        samsung: "5.0"
    },
        "es.weak-set": {
        android: "51",
        bun: "0.1.1",
        chrome: "51",
        "chrome-android": "51",
        deno: "1.0",
        edge: "15",
        electron: "1.2",
        firefox: "53",
        "firefox-android": "53",
        ios: "10.0",
        node: "6.5",
        oculus: "3.0",
        opera: "38",
        "opera-android": "38",
        opera_mobile: "38",
        quest: "3.0",
        rhino: "1.7.13",
        safari: "10.0",
        samsung: "5.0"
    },
        "esnext.aggregate-error": {
        android: "85",
        bun: "0.1.1",
        chrome: "85",
        "chrome-android": "85",
        deno: "1.2",
        edge: "85",
        electron: "10.0",
        firefox: "79",
        "firefox-android": "79",
        ios: "14.0",
        node: "15.0",
        oculus: "12.0",
        opera: "71",
        "opera-android": "60",
        opera_mobile: "60",
        quest: "12.0",
        safari: "14.0",
        samsung: "14.0"
    },
        "esnext.suppressed-error.constructor": {
    },
        "esnext.array.from-async": {
        bun: "0.3.0"
    },
        "esnext.array.at": {
        android: "92",
        bun: "0.1.1",
        chrome: "92",
        "chrome-android": "92",
        deno: "1.12",
        edge: "92",
        electron: "14.0",
        firefox: "90",
        "firefox-android": "90",
        ios: "15.4",
        node: "16.6",
        oculus: "17.0",
        opera: "78",
        "opera-android": "65",
        opera_mobile: "65",
        quest: "17.0",
        "react-native": "0.71",
        safari: "15.4",
        samsung: "16.0"
    },
        "esnext.array.filter-out": {
    },
        "esnext.array.filter-reject": {
    },
        "esnext.array.find-last": {
        android: "97",
        bun: "0.1.1",
        chrome: "97",
        "chrome-android": "97",
        deno: "1.16",
        edge: "97",
        electron: "17.0",
        firefox: "104",
        "firefox-android": "104",
        hermes: "0.11",
        ios: "15.4",
        node: "18.0",
        oculus: "20.0",
        opera: "83",
        "opera-android": "68",
        opera_mobile: "68",
        quest: "20.0",
        "react-native": "0.69",
        safari: "15.4",
        samsung: "18.0"
    },
        "esnext.array.find-last-index": {
        android: "97",
        bun: "0.1.1",
        chrome: "97",
        "chrome-android": "97",
        deno: "1.16",
        edge: "97",
        electron: "17.0",
        firefox: "104",
        "firefox-android": "104",
        hermes: "0.11",
        ios: "15.4",
        node: "18.0",
        oculus: "20.0",
        opera: "83",
        "opera-android": "68",
        opera_mobile: "68",
        quest: "20.0",
        "react-native": "0.69",
        safari: "15.4",
        samsung: "18.0"
    },
        "esnext.array.group": {
        bun: "0.1.9"
    },
        "esnext.array.group-by": {
    },
        "esnext.array.group-by-to-map": {
    },
        "esnext.array.group-to-map": {
        bun: "0.1.9"
    },
        "esnext.array.is-template-object": {
    },
        "esnext.array.last-index": {
    },
        "esnext.array.last-item": {
    },
        "esnext.array.to-reversed": {
        android: "110",
        bun: "0.1.1",
        chrome: "110",
        "chrome-android": "110",
        deno: "1.27",
        edge: "110",
        electron: "23.0",
        ios: "16.0",
        opera: "96",
        safari: "16.0"
    },
        "esnext.array.to-sorted": {
        android: "110",
        bun: "0.1.1",
        chrome: "110",
        "chrome-android": "110",
        deno: "1.27",
        edge: "110",
        electron: "23.0",
        ios: "16.0",
        opera: "96",
        safari: "16.0"
    },
        "esnext.array.to-spliced": {
        android: "110",
        bun: "0.1.1",
        chrome: "110",
        "chrome-android": "110",
        deno: "1.27",
        edge: "110",
        electron: "23.0",
        ios: "16.0",
        opera: "96",
        safari: "16.0"
    },
        "esnext.array.unique-by": {
    },
        "esnext.array.with": {
        android: "110",
        bun: "0.1.1",
        chrome: "110",
        "chrome-android": "110",
        deno: "1.27",
        edge: "110",
        electron: "23.0",
        ios: "16.0",
        opera: "96",
        safari: "16.0"
    },
        "esnext.array-buffer.detached": {
    },
        "esnext.array-buffer.transfer": {
    },
        "esnext.array-buffer.transfer-to-fixed-length": {
    },
        "esnext.async-disposable-stack.constructor": {
    },
        "esnext.async-iterator.constructor": {
    },
        "esnext.async-iterator.as-indexed-pairs": {
    },
        "esnext.async-iterator.async-dispose": {
    },
        "esnext.async-iterator.drop": {
    },
        "esnext.async-iterator.every": {
    },
        "esnext.async-iterator.filter": {
    },
        "esnext.async-iterator.find": {
    },
        "esnext.async-iterator.flat-map": {
    },
        "esnext.async-iterator.for-each": {
    },
        "esnext.async-iterator.from": {
    },
        "esnext.async-iterator.indexed": {
    },
        "esnext.async-iterator.map": {
    },
        "esnext.async-iterator.reduce": {
    },
        "esnext.async-iterator.some": {
    },
        "esnext.async-iterator.take": {
    },
        "esnext.async-iterator.to-array": {
    },
        "esnext.bigint.range": {
    },
        "esnext.composite-key": {
    },
        "esnext.composite-symbol": {
    },
        "esnext.disposable-stack.constructor": {
    },
        "esnext.function.demethodize": {
    },
        "esnext.function.is-callable": {
    },
        "esnext.function.is-constructor": {
    },
        "esnext.function.un-this": {
    },
        "esnext.global-this": {
        android: "71",
        bun: "0.1.1",
        chrome: "71",
        "chrome-android": "71",
        deno: "1.0",
        edge: "79",
        electron: "5.0",
        firefox: "65",
        "firefox-android": "65",
        hermes: "0.2",
        ios: "12.2",
        node: "12.0",
        oculus: "6.0",
        opera: "58",
        "opera-android": "50",
        opera_mobile: "50",
        quest: "6.0",
        "react-native": "0.69",
        rhino: "1.7.14",
        safari: "12.1",
        samsung: "10.0"
    },
        "esnext.iterator.constructor": {
    },
        "esnext.iterator.as-indexed-pairs": {
    },
        "esnext.iterator.dispose": {
    },
        "esnext.iterator.drop": {
    },
        "esnext.iterator.every": {
    },
        "esnext.iterator.filter": {
    },
        "esnext.iterator.find": {
    },
        "esnext.iterator.flat-map": {
    },
        "esnext.iterator.for-each": {
    },
        "esnext.iterator.from": {
    },
        "esnext.iterator.indexed": {
    },
        "esnext.iterator.map": {
    },
        "esnext.iterator.range": {
    },
        "esnext.iterator.reduce": {
    },
        "esnext.iterator.some": {
    },
        "esnext.iterator.take": {
    },
        "esnext.iterator.to-array": {
    },
        "esnext.iterator.to-async": {
    },
        "esnext.json.is-raw-json": {
    },
        "esnext.json.parse": {
    },
        "esnext.json.raw-json": {
    },
        "esnext.map.delete-all": {
    },
        "esnext.map.emplace": {
    },
        "esnext.map.every": {
    },
        "esnext.map.filter": {
    },
        "esnext.map.find": {
    },
        "esnext.map.find-key": {
    },
        "esnext.map.from": {
    },
        "esnext.map.group-by": {
    },
        "esnext.map.includes": {
    },
        "esnext.map.key-by": {
    },
        "esnext.map.key-of": {
    },
        "esnext.map.map-keys": {
    },
        "esnext.map.map-values": {
    },
        "esnext.map.merge": {
    },
        "esnext.map.of": {
    },
        "esnext.map.reduce": {
    },
        "esnext.map.some": {
    },
        "esnext.map.update": {
    },
        "esnext.map.update-or-insert": {
    },
        "esnext.map.upsert": {
    },
        "esnext.math.clamp": {
    },
        "esnext.math.deg-per-rad": {
    },
        "esnext.math.degrees": {
    },
        "esnext.math.fscale": {
    },
        "esnext.math.iaddh": {
    },
        "esnext.math.imulh": {
    },
        "esnext.math.isubh": {
    },
        "esnext.math.rad-per-deg": {
    },
        "esnext.math.radians": {
    },
        "esnext.math.scale": {
    },
        "esnext.math.seeded-prng": {
    },
        "esnext.math.signbit": {
    },
        "esnext.math.umulh": {
    },
        "esnext.number.from-string": {
    },
        "esnext.number.range": {
    },
        "esnext.object.has-own": {
        android: "93",
        bun: "0.1.1",
        chrome: "93",
        "chrome-android": "93",
        deno: "1.13",
        edge: "93",
        electron: "14.0",
        firefox: "92",
        "firefox-android": "92",
        hermes: "0.10",
        ios: "15.4",
        node: "16.9",
        oculus: "17.0",
        opera: "79",
        "opera-android": "66",
        opera_mobile: "66",
        quest: "17.0",
        "react-native": "0.69",
        safari: "15.4",
        samsung: "17.0"
    },
        "esnext.object.iterate-entries": {
    },
        "esnext.object.iterate-keys": {
    },
        "esnext.object.iterate-values": {
    },
        "esnext.observable": {
    },
        "esnext.promise.all-settled": {
        android: "76",
        bun: "0.1.1",
        chrome: "76",
        "chrome-android": "76",
        deno: "1.24",
        edge: "79",
        electron: "6.0",
        firefox: "71",
        "firefox-android": "71",
        ios: "13.0",
        node: "12.9",
        oculus: "7.0",
        opera: "63",
        "opera-android": "54",
        opera_mobile: "54",
        quest: "7.0",
        safari: "13",
        samsung: "12.0"
    },
        "esnext.promise.any": {
        android: "85",
        bun: "0.1.1",
        chrome: "85",
        "chrome-android": "85",
        deno: "1.24",
        edge: "85",
        electron: "10.0",
        firefox: "79",
        "firefox-android": "79",
        ios: "14.0",
        node: "15.0",
        oculus: "12.0",
        opera: "71",
        "opera-android": "60",
        opera_mobile: "60",
        quest: "12.0",
        safari: "14.0",
        samsung: "14.0"
    },
        "esnext.promise.try": {
    },
        "esnext.reflect.define-metadata": {
    },
        "esnext.reflect.delete-metadata": {
    },
        "esnext.reflect.get-metadata": {
    },
        "esnext.reflect.get-metadata-keys": {
    },
        "esnext.reflect.get-own-metadata": {
    },
        "esnext.reflect.get-own-metadata-keys": {
    },
        "esnext.reflect.has-metadata": {
    },
        "esnext.reflect.has-own-metadata": {
    },
        "esnext.reflect.metadata": {
    },
        "esnext.set.add-all": {
    },
        "esnext.set.delete-all": {
    },
        "esnext.set.difference.v2": {
    },
        "esnext.set.difference": {
    },
        "esnext.set.every": {
    },
        "esnext.set.filter": {
    },
        "esnext.set.find": {
    },
        "esnext.set.from": {
    },
        "esnext.set.intersection.v2": {
        bun: "0.5.7"
    },
        "esnext.set.intersection": {
    },
        "esnext.set.is-disjoint-from.v2": {
        bun: "0.5.7"
    },
        "esnext.set.is-disjoint-from": {
    },
        "esnext.set.is-subset-of.v2": {
        bun: "0.5.7"
    },
        "esnext.set.is-subset-of": {
    },
        "esnext.set.is-superset-of.v2": {
        bun: "0.5.7"
    },
        "esnext.set.is-superset-of": {
    },
        "esnext.set.join": {
    },
        "esnext.set.map": {
    },
        "esnext.set.of": {
    },
        "esnext.set.reduce": {
    },
        "esnext.set.some": {
    },
        "esnext.set.symmetric-difference.v2": {
        bun: "0.5.7"
    },
        "esnext.set.symmetric-difference": {
    },
        "esnext.set.union.v2": {
        bun: "0.5.7"
    },
        "esnext.set.union": {
    },
        "esnext.string.at": {
    },
        "esnext.string.cooked": {
    },
        "esnext.string.code-points": {
    },
        "esnext.string.dedent": {
    },
        "esnext.string.is-well-formed": {
        bun: "0.4.0"
    },
        "esnext.string.match-all": {
        android: "80",
        bun: "0.1.1",
        chrome: "80",
        "chrome-android": "80",
        deno: "1.0",
        edge: "80",
        electron: "8.0",
        firefox: "73",
        "firefox-android": "73",
        hermes: "0.6",
        ios: "13.4",
        node: "14.0",
        oculus: "9.0",
        opera: "67",
        "opera-android": "57",
        opera_mobile: "57",
        quest: "9.0",
        "react-native": "0.69",
        safari: "13.1",
        samsung: "13.0"
    },
        "esnext.string.replace-all": {
        android: "85",
        bun: "0.1.1",
        chrome: "85",
        "chrome-android": "85",
        deno: "1.2",
        edge: "85",
        electron: "10.0",
        firefox: "77",
        "firefox-android": "77",
        hermes: "0.7",
        ios: "13.4",
        node: "15.0",
        oculus: "12.0",
        opera: "71",
        "opera-android": "60",
        opera_mobile: "60",
        quest: "12.0",
        "react-native": "0.69",
        safari: "13.1",
        samsung: "14.0"
    },
        "esnext.string.to-well-formed": {
        bun: "0.5.7"
    },
        "esnext.symbol.async-dispose": {
    },
        "esnext.symbol.dispose": {
    },
        "esnext.symbol.is-registered": {
    },
        "esnext.symbol.is-well-known": {
    },
        "esnext.symbol.matcher": {
    },
        "esnext.symbol.metadata": {
    },
        "esnext.symbol.metadata-key": {
    },
        "esnext.symbol.observable": {
    },
        "esnext.symbol.pattern-match": {
    },
        "esnext.symbol.replace-all": {
    },
        "esnext.typed-array.from-async": {
    },
        "esnext.typed-array.at": {
        android: "92",
        bun: "0.1.1",
        chrome: "92",
        "chrome-android": "92",
        deno: "1.12",
        edge: "92",
        electron: "14.0",
        firefox: "90",
        "firefox-android": "90",
        ios: "15.4",
        node: "16.6",
        oculus: "17.0",
        opera: "78",
        "opera-android": "65",
        opera_mobile: "65",
        quest: "17.0",
        "react-native": "0.71",
        safari: "15.4",
        samsung: "16.0"
    },
        "esnext.typed-array.filter-out": {
    },
        "esnext.typed-array.filter-reject": {
    },
        "esnext.typed-array.find-last": {
        android: "97",
        bun: "0.1.1",
        chrome: "97",
        "chrome-android": "97",
        deno: "1.16",
        edge: "97",
        electron: "17.0",
        firefox: "104",
        "firefox-android": "104",
        hermes: "0.11",
        ios: "15.4",
        node: "18.0",
        oculus: "20.0",
        opera: "83",
        "opera-android": "68",
        opera_mobile: "68",
        quest: "20.0",
        "react-native": "0.69",
        safari: "15.4",
        samsung: "18.0"
    },
        "esnext.typed-array.find-last-index": {
        android: "97",
        bun: "0.1.1",
        chrome: "97",
        "chrome-android": "97",
        deno: "1.16",
        edge: "97",
        electron: "17.0",
        firefox: "104",
        "firefox-android": "104",
        hermes: "0.11",
        ios: "15.4",
        node: "18.0",
        oculus: "20.0",
        opera: "83",
        "opera-android": "68",
        opera_mobile: "68",
        quest: "20.0",
        "react-native": "0.69",
        safari: "15.4",
        samsung: "18.0"
    },
        "esnext.typed-array.group-by": {
    },
        "esnext.typed-array.to-reversed": {
        android: "110",
        bun: "0.1.1",
        chrome: "110",
        "chrome-android": "110",
        deno: "1.27",
        edge: "110",
        electron: "23.0",
        ios: "16.0",
        opera: "96",
        safari: "16.0"
    },
        "esnext.typed-array.to-sorted": {
        android: "110",
        bun: "0.1.1",
        chrome: "110",
        "chrome-android": "110",
        deno: "1.27",
        edge: "110",
        electron: "23.0",
        ios: "16.0",
        opera: "96",
        safari: "16.0"
    },
        "esnext.typed-array.to-spliced": {
    },
        "esnext.typed-array.unique-by": {
    },
        "esnext.typed-array.with": {
        android: "110",
        bun: "0.1.9",
        chrome: "110",
        "chrome-android": "110",
        deno: "1.27",
        edge: "110",
        electron: "23.0",
        opera: "96"
    },
        "esnext.weak-map.delete-all": {
    },
        "esnext.weak-map.from": {
    },
        "esnext.weak-map.of": {
    },
        "esnext.weak-map.emplace": {
    },
        "esnext.weak-map.upsert": {
    },
        "esnext.weak-set.add-all": {
    },
        "esnext.weak-set.delete-all": {
    },
        "esnext.weak-set.from": {
    },
        "esnext.weak-set.of": {
    },
        "web.atob": {
        android: "37",
        bun: "0.1.1",
        chrome: "34",
        "chrome-android": "34",
        deno: "1.0",
        edge: "16",
        electron: "0.20",
        firefox: "27",
        "firefox-android": "27",
        ios: "10.3",
        node: "18.0",
        oculus: "3.0",
        opera: "10.5",
        "opera-android": "10.5",
        opera_mobile: "10.5",
        quest: "3.0",
        safari: "10.1",
        samsung: "2.0"
    },
        "web.btoa": {
        android: "3.0",
        bun: "0.1.1",
        chrome: "4",
        "chrome-android": "18",
        deno: "1.0",
        edge: "16",
        electron: "0.20",
        firefox: "27",
        "firefox-android": "27",
        ios: "1.0",
        node: "17.5",
        oculus: "3.0",
        opera: "10.5",
        "opera-android": "10.5",
        opera_mobile: "10.5",
        phantom: "1.9",
        quest: "3.0",
        safari: "3.0",
        samsung: "1.0"
    },
        "web.dom-collections.for-each": {
        android: "58",
        bun: "0.1.1",
        chrome: "58",
        "chrome-android": "58",
        deno: "1.0",
        edge: "16",
        electron: "1.7",
        firefox: "50",
        "firefox-android": "50",
        hermes: "0.1",
        ios: "10.0",
        node: "0.0.1",
        oculus: "4.0",
        opera: "45",
        "opera-android": "43",
        opera_mobile: "43",
        quest: "4.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "10.0",
        samsung: "7.0"
    },
        "web.dom-collections.iterator": {
        android: "66",
        bun: "0.1.1",
        chrome: "66",
        "chrome-android": "66",
        deno: "1.0",
        edge: "79",
        electron: "3.0",
        firefox: "60",
        "firefox-android": "60",
        hermes: "0.1",
        ios: "13.4",
        node: "0.0.1",
        oculus: "5.0",
        opera: "53",
        "opera-android": "47",
        opera_mobile: "47",
        quest: "5.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "13.1",
        samsung: "9.0"
    },
        "web.dom-exception.constructor": {
        android: "46",
        bun: "0.1.1",
        chrome: "46",
        "chrome-android": "46",
        deno: "1.7",
        edge: "79",
        electron: "0.36",
        firefox: "37",
        "firefox-android": "37",
        ios: "11.3",
        node: "17.0",
        oculus: "3.0",
        opera: "33",
        "opera-android": "33",
        opera_mobile: "33",
        quest: "3.0",
        safari: "11.1",
        samsung: "5.0"
    },
        "web.dom-exception.stack": {
        deno: "1.15",
        firefox: "37",
        "firefox-android": "37",
        node: "17.0"
    },
        "web.dom-exception.to-string-tag": {
        android: "49",
        bun: "0.1.1",
        chrome: "49",
        "chrome-android": "49",
        deno: "1.7",
        edge: "79",
        electron: "0.37",
        firefox: "51",
        "firefox-android": "51",
        ios: "11.3",
        node: "17.0",
        oculus: "3.0",
        opera: "36",
        "opera-android": "36",
        opera_mobile: "36",
        quest: "3.0",
        safari: "11.1",
        samsung: "5.0"
    },
        "web.immediate": {
        bun: "0.4.0",
        ie: "10",
        node: "0.9.1"
    },
        "web.queue-microtask": {
        android: "71",
        bun: "0.1.1",
        chrome: "71",
        "chrome-android": "71",
        deno: "1.0",
        edge: "79",
        electron: "5.0",
        firefox: "69",
        "firefox-android": "69",
        ios: "12.2",
        node: "12.0",
        oculus: "6.0",
        opera: "58",
        "opera-android": "50",
        opera_mobile: "50",
        quest: "6.0",
        safari: "12.1",
        samsung: "10.0"
    },
        "web.self": {
        android: "86",
        chrome: "86",
        "chrome-android": "86",
        deno: "1.29.3",
        edge: "86",
        electron: "11.0",
        firefox: "31",
        "firefox-android": "31",
        ios: "10.0",
        oculus: "12.0",
        opera: "72",
        "opera-android": "61",
        opera_mobile: "61",
        quest: "12.0",
        safari: "10",
        samsung: "14.0"
    },
        "web.structured-clone": {
    },
        "web.timers": {
        android: "1.5",
        bun: "0.4.0",
        chrome: "1",
        "chrome-android": "18",
        deno: "1.0",
        edge: "12",
        electron: "0.20",
        firefox: "1",
        "firefox-android": "4",
        hermes: "0.1",
        ie: "10",
        ios: "1.0",
        node: "0.0.1",
        oculus: "3.0",
        opera: "7",
        "opera-android": "7",
        opera_mobile: "7",
        phantom: "1.9",
        quest: "3.0",
        "react-native": "0.69",
        rhino: "1.7.13",
        safari: "1.0",
        samsung: "1.0"
    },
        "web.url": {
        android: "67",
        bun: "0.1.1",
        chrome: "67",
        "chrome-android": "67",
        deno: "1.0",
        edge: "79",
        electron: "4.0",
        firefox: "57",
        "firefox-android": "57",
        ios: "14.0",
        node: "10.0",
        oculus: "6.0",
        opera: "54",
        "opera-android": "48",
        opera_mobile: "48",
        quest: "6.0",
        safari: "14.0",
        samsung: "9.0"
    },
        "web.url.to-json": {
        android: "71",
        bun: "0.1.1",
        chrome: "71",
        "chrome-android": "71",
        deno: "1.0",
        edge: "79",
        electron: "5.0",
        firefox: "57",
        "firefox-android": "57",
        ios: "14.0",
        node: "10.0",
        oculus: "6.0",
        opera: "58",
        "opera-android": "50",
        opera_mobile: "50",
        quest: "6.0",
        safari: "14.0",
        samsung: "10.0"
    },
        "web.url-search-params": {
        android: "67",
        bun: "0.1.1",
        chrome: "67",
        "chrome-android": "67",
        deno: "1.0",
        edge: "79",
        electron: "4.0",
        firefox: "57",
        "firefox-android": "57",
        ios: "14.0",
        node: "10.0",
        oculus: "6.0",
        opera: "54",
        "opera-android": "48",
        opera_mobile: "48",
        quest: "6.0",
        safari: "14.0",
        samsung: "9.0"
    },
        "web.url-search-params.size": {
    }
    };
  
    var data$1 = require$$0$3;
  
    var has$4 = Object.hasOwn || Function.call.bind({}.hasOwnProperty);
    function semver$4(input) {
      if (input instanceof semver$4) return input;
      if (!(this instanceof semver$4)) return new semver$4(input);
      var match = /(\d+)(?:\.(\d+))?(?:\.(\d+))?/.exec(input);
      if (!match) throw TypeError("Invalid version: " + input);
      var _match = _slicedToArray(match, 4),
        $major = _match[1],
        $minor = _match[2],
        $patch = _match[3];
      this.major = +$major;
      this.minor = $minor ? +$minor : 0;
      this.patch = $patch ? +$patch : 0;
    }
    semver$4.prototype.toString = function () {
      return this.major + "." + this.minor + "." + this.patch;
    };
    function compare$1($a, operator, $b) {
      var a = semver$4($a);
      var b = semver$4($b);
      for (var _i = 0, _arr = ['major', 'minor', 'patch']; _i < _arr.length; _i++) {
        var component = _arr[_i];
        if (a[component] < b[component]) return operator === '<' || operator === '<=' || operator === '!=';
        if (a[component] > b[component]) return operator === '>' || operator === '>=' || operator === '!=';
      }
      return operator === '==' || operator === '<=' || operator === '>=';
    }
    function filterOutStabilizedProposals(modules) {
      var modulesSet = new Set(modules);
      for (var _iterator = _createForOfIteratorHelperLoose(modulesSet), _step; !(_step = _iterator()).done;) {
        var $module = _step.value;
        if ($module.startsWith('esnext.') && modulesSet.has($module.replace(/^esnext\./, 'es.'))) {
          modulesSet["delete"]($module);
        }
      }
      return _toConsumableArray(modulesSet);
    }
    function intersection$2(list, order) {
      var set = list instanceof Set ? list : new Set(list);
      return order.filter(function (name) {
        return set.has(name);
      });
    }
    function sortObjectByKey(object, fn) {
      return Object.keys(object).sort(fn).reduce(function (memo, key) {
        memo[key] = object[key];
        return memo;
      }, {});
    }
    var helpers = {
      compare: compare$1,
      filterOutStabilizedProposals: filterOutStabilizedProposals,
      has: has$4,
      intersection: intersection$2,
      semver: semver$4,
      sortObjectByKey: sortObjectByKey
    };
  
    var require$$1 = {
        "3.0": [
        "es.symbol",
        "es.symbol.description",
        "es.symbol.async-iterator",
        "es.symbol.has-instance",
        "es.symbol.is-concat-spreadable",
        "es.symbol.iterator",
        "es.symbol.match",
        "es.symbol.replace",
        "es.symbol.search",
        "es.symbol.species",
        "es.symbol.split",
        "es.symbol.to-primitive",
        "es.symbol.to-string-tag",
        "es.symbol.unscopables",
        "es.array.concat",
        "es.array.copy-within",
        "es.array.every",
        "es.array.fill",
        "es.array.filter",
        "es.array.find",
        "es.array.find-index",
        "es.array.flat",
        "es.array.flat-map",
        "es.array.for-each",
        "es.array.from",
        "es.array.includes",
        "es.array.index-of",
        "es.array.is-array",
        "es.array.iterator",
        "es.array.join",
        "es.array.last-index-of",
        "es.array.map",
        "es.array.of",
        "es.array.reduce",
        "es.array.reduce-right",
        "es.array.reverse",
        "es.array.slice",
        "es.array.some",
        "es.array.sort",
        "es.array.species",
        "es.array.splice",
        "es.array.unscopables.flat",
        "es.array.unscopables.flat-map",
        "es.array-buffer.constructor",
        "es.array-buffer.is-view",
        "es.array-buffer.slice",
        "es.data-view",
        "es.date.now",
        "es.date.to-iso-string",
        "es.date.to-json",
        "es.date.to-primitive",
        "es.date.to-string",
        "es.function.bind",
        "es.function.has-instance",
        "es.function.name",
        "es.json.to-string-tag",
        "es.map",
        "es.math.acosh",
        "es.math.asinh",
        "es.math.atanh",
        "es.math.cbrt",
        "es.math.clz32",
        "es.math.cosh",
        "es.math.expm1",
        "es.math.fround",
        "es.math.hypot",
        "es.math.imul",
        "es.math.log10",
        "es.math.log1p",
        "es.math.log2",
        "es.math.sign",
        "es.math.sinh",
        "es.math.tanh",
        "es.math.to-string-tag",
        "es.math.trunc",
        "es.number.constructor",
        "es.number.epsilon",
        "es.number.is-finite",
        "es.number.is-integer",
        "es.number.is-nan",
        "es.number.is-safe-integer",
        "es.number.max-safe-integer",
        "es.number.min-safe-integer",
        "es.number.parse-float",
        "es.number.parse-int",
        "es.number.to-fixed",
        "es.number.to-precision",
        "es.object.assign",
        "es.object.create",
        "es.object.define-getter",
        "es.object.define-properties",
        "es.object.define-property",
        "es.object.define-setter",
        "es.object.entries",
        "es.object.freeze",
        "es.object.from-entries",
        "es.object.get-own-property-descriptor",
        "es.object.get-own-property-descriptors",
        "es.object.get-own-property-names",
        "es.object.get-prototype-of",
        "es.object.is",
        "es.object.is-extensible",
        "es.object.is-frozen",
        "es.object.is-sealed",
        "es.object.keys",
        "es.object.lookup-getter",
        "es.object.lookup-setter",
        "es.object.prevent-extensions",
        "es.object.seal",
        "es.object.set-prototype-of",
        "es.object.to-string",
        "es.object.values",
        "es.parse-float",
        "es.parse-int",
        "es.promise",
        "es.promise.finally",
        "es.reflect.apply",
        "es.reflect.construct",
        "es.reflect.define-property",
        "es.reflect.delete-property",
        "es.reflect.get",
        "es.reflect.get-own-property-descriptor",
        "es.reflect.get-prototype-of",
        "es.reflect.has",
        "es.reflect.is-extensible",
        "es.reflect.own-keys",
        "es.reflect.prevent-extensions",
        "es.reflect.set",
        "es.reflect.set-prototype-of",
        "es.regexp.constructor",
        "es.regexp.exec",
        "es.regexp.flags",
        "es.regexp.to-string",
        "es.set",
        "es.string.code-point-at",
        "es.string.ends-with",
        "es.string.from-code-point",
        "es.string.includes",
        "es.string.iterator",
        "es.string.match",
        "es.string.pad-end",
        "es.string.pad-start",
        "es.string.raw",
        "es.string.repeat",
        "es.string.replace",
        "es.string.search",
        "es.string.split",
        "es.string.starts-with",
        "es.string.trim",
        "es.string.trim-end",
        "es.string.trim-start",
        "es.string.anchor",
        "es.string.big",
        "es.string.blink",
        "es.string.bold",
        "es.string.fixed",
        "es.string.fontcolor",
        "es.string.fontsize",
        "es.string.italics",
        "es.string.link",
        "es.string.small",
        "es.string.strike",
        "es.string.sub",
        "es.string.sup",
        "es.typed-array.float32-array",
        "es.typed-array.float64-array",
        "es.typed-array.int8-array",
        "es.typed-array.int16-array",
        "es.typed-array.int32-array",
        "es.typed-array.uint8-array",
        "es.typed-array.uint8-clamped-array",
        "es.typed-array.uint16-array",
        "es.typed-array.uint32-array",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-string",
        "es.weak-map",
        "es.weak-set",
        "esnext.aggregate-error",
        "esnext.array.last-index",
        "esnext.array.last-item",
        "esnext.composite-key",
        "esnext.composite-symbol",
        "esnext.global-this",
        "esnext.map.delete-all",
        "esnext.map.every",
        "esnext.map.filter",
        "esnext.map.find",
        "esnext.map.find-key",
        "esnext.map.from",
        "esnext.map.group-by",
        "esnext.map.includes",
        "esnext.map.key-by",
        "esnext.map.key-of",
        "esnext.map.map-keys",
        "esnext.map.map-values",
        "esnext.map.merge",
        "esnext.map.of",
        "esnext.map.reduce",
        "esnext.map.some",
        "esnext.map.update",
        "esnext.math.clamp",
        "esnext.math.deg-per-rad",
        "esnext.math.degrees",
        "esnext.math.fscale",
        "esnext.math.iaddh",
        "esnext.math.imulh",
        "esnext.math.isubh",
        "esnext.math.rad-per-deg",
        "esnext.math.radians",
        "esnext.math.scale",
        "esnext.math.seeded-prng",
        "esnext.math.signbit",
        "esnext.math.umulh",
        "esnext.number.from-string",
        "esnext.observable",
        "esnext.promise.all-settled",
        "esnext.promise.any",
        "esnext.promise.try",
        "esnext.reflect.define-metadata",
        "esnext.reflect.delete-metadata",
        "esnext.reflect.get-metadata",
        "esnext.reflect.get-metadata-keys",
        "esnext.reflect.get-own-metadata",
        "esnext.reflect.get-own-metadata-keys",
        "esnext.reflect.has-metadata",
        "esnext.reflect.has-own-metadata",
        "esnext.reflect.metadata",
        "esnext.set.add-all",
        "esnext.set.delete-all",
        "esnext.set.difference",
        "esnext.set.every",
        "esnext.set.filter",
        "esnext.set.find",
        "esnext.set.from",
        "esnext.set.intersection",
        "esnext.set.is-disjoint-from",
        "esnext.set.is-subset-of",
        "esnext.set.is-superset-of",
        "esnext.set.join",
        "esnext.set.map",
        "esnext.set.of",
        "esnext.set.reduce",
        "esnext.set.some",
        "esnext.set.symmetric-difference",
        "esnext.set.union",
        "esnext.string.at",
        "esnext.string.code-points",
        "esnext.string.match-all",
        "esnext.string.replace-all",
        "esnext.symbol.dispose",
        "esnext.symbol.observable",
        "esnext.symbol.pattern-match",
        "esnext.weak-map.delete-all",
        "esnext.weak-map.from",
        "esnext.weak-map.of",
        "esnext.weak-set.add-all",
        "esnext.weak-set.delete-all",
        "esnext.weak-set.from",
        "esnext.weak-set.of",
        "web.dom-collections.for-each",
        "web.dom-collections.iterator",
        "web.immediate",
        "web.queue-microtask",
        "web.timers",
        "web.url",
        "web.url.to-json",
        "web.url-search-params"
    ],
        "3.1": [
        "es.string.match-all",
        "es.symbol.match-all",
        "esnext.symbol.replace-all"
    ],
        "3.2": [
        "es.promise.all-settled",
        "esnext.array.is-template-object",
        "esnext.map.update-or-insert",
        "esnext.symbol.async-dispose"
    ],
        "3.3": [
        "es.global-this",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.as-indexed-pairs",
        "esnext.async-iterator.drop",
        "esnext.async-iterator.every",
        "esnext.async-iterator.filter",
        "esnext.async-iterator.find",
        "esnext.async-iterator.flat-map",
        "esnext.async-iterator.for-each",
        "esnext.async-iterator.from",
        "esnext.async-iterator.map",
        "esnext.async-iterator.reduce",
        "esnext.async-iterator.some",
        "esnext.async-iterator.take",
        "esnext.async-iterator.to-array",
        "esnext.iterator.constructor",
        "esnext.iterator.as-indexed-pairs",
        "esnext.iterator.drop",
        "esnext.iterator.every",
        "esnext.iterator.filter",
        "esnext.iterator.find",
        "esnext.iterator.flat-map",
        "esnext.iterator.for-each",
        "esnext.iterator.from",
        "esnext.iterator.map",
        "esnext.iterator.reduce",
        "esnext.iterator.some",
        "esnext.iterator.take",
        "esnext.iterator.to-array",
        "esnext.map.upsert",
        "esnext.weak-map.upsert"
    ],
        "3.4": [
        "es.json.stringify"
    ],
        "3.5": [
        "esnext.object.iterate-entries",
        "esnext.object.iterate-keys",
        "esnext.object.iterate-values"
    ],
        "3.6": [
        "es.regexp.sticky",
        "es.regexp.test"
    ],
        "3.7": [
        "es.aggregate-error",
        "es.promise.any",
        "es.reflect.to-string-tag",
        "es.string.replace-all",
        "esnext.map.emplace",
        "esnext.weak-map.emplace"
    ],
        "3.8": [
        "esnext.array.at",
        "esnext.array.filter-out",
        "esnext.array.unique-by",
        "esnext.bigint.range",
        "esnext.number.range",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out"
    ],
        "3.9": [
        "esnext.array.find-last",
        "esnext.array.find-last-index",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.unique-by"
    ],
        "3.11": [
        "esnext.object.has-own"
    ],
        "3.12": [
        "esnext.symbol.matcher",
        "esnext.symbol.metadata"
    ],
        "3.15": [
        "es.date.get-year",
        "es.date.set-year",
        "es.date.to-gmt-string",
        "es.escape",
        "es.regexp.dot-all",
        "es.string.substr",
        "es.unescape"
    ],
        "3.16": [
        "esnext.array.filter-reject",
        "esnext.array.group-by",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.group-by"
    ],
        "3.17": [
        "es.array.at",
        "es.object.has-own",
        "es.string.at-alternative",
        "es.typed-array.at"
    ],
        "3.18": [
        "esnext.array.from-async",
        "esnext.typed-array.from-async"
    ],
        "3.20": [
        "es.error.cause",
        "es.error.to-string",
        "es.aggregate-error.cause",
        "es.number.to-exponential",
        "esnext.array.group-by-to-map",
        "esnext.array.to-reversed",
        "esnext.array.to-sorted",
        "esnext.array.to-spliced",
        "esnext.array.with",
        "esnext.function.is-callable",
        "esnext.function.is-constructor",
        "esnext.function.un-this",
        "esnext.iterator.to-async",
        "esnext.string.cooked",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.with",
        "web.dom-exception.constructor",
        "web.dom-exception.stack",
        "web.dom-exception.to-string-tag",
        "web.structured-clone"
    ],
        "3.21": [
        "web.atob",
        "web.btoa"
    ],
        "3.23": [
        "es.array.find-last",
        "es.array.find-last-index",
        "es.array.push",
        "es.array.unshift",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "esnext.array.group",
        "esnext.array.group-to-map",
        "esnext.symbol.metadata-key"
    ],
        "3.24": [
        "esnext.async-iterator.indexed",
        "esnext.iterator.indexed"
    ],
        "3.25": [
        "es.object.proto"
    ],
        "3.26": [
        "esnext.string.is-well-formed",
        "esnext.string.to-well-formed",
        "web.self"
    ],
        "3.27": [
        "esnext.suppressed-error.constructor",
        "esnext.async-disposable-stack.constructor",
        "esnext.async-iterator.async-dispose",
        "esnext.disposable-stack.constructor",
        "esnext.iterator.dispose",
        "esnext.set.difference.v2",
        "esnext.set.intersection.v2",
        "esnext.set.is-disjoint-from.v2",
        "esnext.set.is-subset-of.v2",
        "esnext.set.is-superset-of.v2",
        "esnext.set.symmetric-difference.v2",
        "esnext.set.union.v2",
        "esnext.string.dedent"
    ],
        "3.28": [
        "es.array.to-reversed",
        "es.array.to-sorted",
        "es.array.to-spliced",
        "es.array.with",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.with",
        "esnext.array-buffer.detached",
        "esnext.array-buffer.transfer",
        "esnext.array-buffer.transfer-to-fixed-length",
        "esnext.function.demethodize",
        "esnext.iterator.range",
        "esnext.json.is-raw-json",
        "esnext.json.parse",
        "esnext.json.raw-json",
        "esnext.symbol.is-registered",
        "esnext.symbol.is-well-known"
    ],
        "3.29": [
        "web.url-search-params.size"
    ]
    };
  
    var require$$2 = [
        "es.symbol",
        "es.symbol.description",
        "es.symbol.async-iterator",
        "es.symbol.has-instance",
        "es.symbol.is-concat-spreadable",
        "es.symbol.iterator",
        "es.symbol.match",
        "es.symbol.match-all",
        "es.symbol.replace",
        "es.symbol.search",
        "es.symbol.species",
        "es.symbol.split",
        "es.symbol.to-primitive",
        "es.symbol.to-string-tag",
        "es.symbol.unscopables",
        "es.error.cause",
        "es.error.to-string",
        "es.aggregate-error",
        "es.aggregate-error.cause",
        "es.array.at",
        "es.array.concat",
        "es.array.copy-within",
        "es.array.every",
        "es.array.fill",
        "es.array.filter",
        "es.array.find",
        "es.array.find-index",
        "es.array.find-last",
        "es.array.find-last-index",
        "es.array.flat",
        "es.array.flat-map",
        "es.array.for-each",
        "es.array.from",
        "es.array.includes",
        "es.array.index-of",
        "es.array.is-array",
        "es.array.iterator",
        "es.array.join",
        "es.array.last-index-of",
        "es.array.map",
        "es.array.of",
        "es.array.push",
        "es.array.reduce",
        "es.array.reduce-right",
        "es.array.reverse",
        "es.array.slice",
        "es.array.some",
        "es.array.sort",
        "es.array.species",
        "es.array.splice",
        "es.array.to-reversed",
        "es.array.to-sorted",
        "es.array.to-spliced",
        "es.array.unscopables.flat",
        "es.array.unscopables.flat-map",
        "es.array.unshift",
        "es.array.with",
        "es.array-buffer.constructor",
        "es.array-buffer.is-view",
        "es.array-buffer.slice",
        "es.data-view",
        "es.date.get-year",
        "es.date.now",
        "es.date.set-year",
        "es.date.to-gmt-string",
        "es.date.to-iso-string",
        "es.date.to-json",
        "es.date.to-primitive",
        "es.date.to-string",
        "es.escape",
        "es.function.bind",
        "es.function.has-instance",
        "es.function.name",
        "es.global-this",
        "es.json.stringify",
        "es.json.to-string-tag",
        "es.map",
        "es.math.acosh",
        "es.math.asinh",
        "es.math.atanh",
        "es.math.cbrt",
        "es.math.clz32",
        "es.math.cosh",
        "es.math.expm1",
        "es.math.fround",
        "es.math.hypot",
        "es.math.imul",
        "es.math.log10",
        "es.math.log1p",
        "es.math.log2",
        "es.math.sign",
        "es.math.sinh",
        "es.math.tanh",
        "es.math.to-string-tag",
        "es.math.trunc",
        "es.number.constructor",
        "es.number.epsilon",
        "es.number.is-finite",
        "es.number.is-integer",
        "es.number.is-nan",
        "es.number.is-safe-integer",
        "es.number.max-safe-integer",
        "es.number.min-safe-integer",
        "es.number.parse-float",
        "es.number.parse-int",
        "es.number.to-exponential",
        "es.number.to-fixed",
        "es.number.to-precision",
        "es.object.assign",
        "es.object.create",
        "es.object.define-getter",
        "es.object.define-properties",
        "es.object.define-property",
        "es.object.define-setter",
        "es.object.entries",
        "es.object.freeze",
        "es.object.from-entries",
        "es.object.get-own-property-descriptor",
        "es.object.get-own-property-descriptors",
        "es.object.get-own-property-names",
        "es.object.get-prototype-of",
        "es.object.has-own",
        "es.object.is",
        "es.object.is-extensible",
        "es.object.is-frozen",
        "es.object.is-sealed",
        "es.object.keys",
        "es.object.lookup-getter",
        "es.object.lookup-setter",
        "es.object.prevent-extensions",
        "es.object.proto",
        "es.object.seal",
        "es.object.set-prototype-of",
        "es.object.to-string",
        "es.object.values",
        "es.parse-float",
        "es.parse-int",
        "es.promise",
        "es.promise.all-settled",
        "es.promise.any",
        "es.promise.finally",
        "es.reflect.apply",
        "es.reflect.construct",
        "es.reflect.define-property",
        "es.reflect.delete-property",
        "es.reflect.get",
        "es.reflect.get-own-property-descriptor",
        "es.reflect.get-prototype-of",
        "es.reflect.has",
        "es.reflect.is-extensible",
        "es.reflect.own-keys",
        "es.reflect.prevent-extensions",
        "es.reflect.set",
        "es.reflect.set-prototype-of",
        "es.reflect.to-string-tag",
        "es.regexp.constructor",
        "es.regexp.dot-all",
        "es.regexp.exec",
        "es.regexp.flags",
        "es.regexp.sticky",
        "es.regexp.test",
        "es.regexp.to-string",
        "es.set",
        "es.string.at-alternative",
        "es.string.code-point-at",
        "es.string.ends-with",
        "es.string.from-code-point",
        "es.string.includes",
        "es.string.iterator",
        "es.string.match",
        "es.string.match-all",
        "es.string.pad-end",
        "es.string.pad-start",
        "es.string.raw",
        "es.string.repeat",
        "es.string.replace",
        "es.string.replace-all",
        "es.string.search",
        "es.string.split",
        "es.string.starts-with",
        "es.string.substr",
        "es.string.trim",
        "es.string.trim-end",
        "es.string.trim-start",
        "es.string.anchor",
        "es.string.big",
        "es.string.blink",
        "es.string.bold",
        "es.string.fixed",
        "es.string.fontcolor",
        "es.string.fontsize",
        "es.string.italics",
        "es.string.link",
        "es.string.small",
        "es.string.strike",
        "es.string.sub",
        "es.string.sup",
        "es.typed-array.float32-array",
        "es.typed-array.float64-array",
        "es.typed-array.int8-array",
        "es.typed-array.int16-array",
        "es.typed-array.int32-array",
        "es.typed-array.uint8-array",
        "es.typed-array.uint8-clamped-array",
        "es.typed-array.uint16-array",
        "es.typed-array.uint32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "es.unescape",
        "es.weak-map",
        "es.weak-set",
        "esnext.aggregate-error",
        "esnext.suppressed-error.constructor",
        "esnext.array.from-async",
        "esnext.array.at",
        "esnext.array.filter-out",
        "esnext.array.filter-reject",
        "esnext.array.find-last",
        "esnext.array.find-last-index",
        "esnext.array.group",
        "esnext.array.group-by",
        "esnext.array.group-by-to-map",
        "esnext.array.group-to-map",
        "esnext.array.is-template-object",
        "esnext.array.last-index",
        "esnext.array.last-item",
        "esnext.array.to-reversed",
        "esnext.array.to-sorted",
        "esnext.array.to-spliced",
        "esnext.array.unique-by",
        "esnext.array.with",
        "esnext.array-buffer.detached",
        "esnext.array-buffer.transfer",
        "esnext.array-buffer.transfer-to-fixed-length",
        "esnext.async-disposable-stack.constructor",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.as-indexed-pairs",
        "esnext.async-iterator.async-dispose",
        "esnext.async-iterator.drop",
        "esnext.async-iterator.every",
        "esnext.async-iterator.filter",
        "esnext.async-iterator.find",
        "esnext.async-iterator.flat-map",
        "esnext.async-iterator.for-each",
        "esnext.async-iterator.from",
        "esnext.async-iterator.indexed",
        "esnext.async-iterator.map",
        "esnext.async-iterator.reduce",
        "esnext.async-iterator.some",
        "esnext.async-iterator.take",
        "esnext.async-iterator.to-array",
        "esnext.bigint.range",
        "esnext.composite-key",
        "esnext.composite-symbol",
        "esnext.disposable-stack.constructor",
        "esnext.function.demethodize",
        "esnext.function.is-callable",
        "esnext.function.is-constructor",
        "esnext.function.un-this",
        "esnext.global-this",
        "esnext.iterator.constructor",
        "esnext.iterator.as-indexed-pairs",
        "esnext.iterator.dispose",
        "esnext.iterator.drop",
        "esnext.iterator.every",
        "esnext.iterator.filter",
        "esnext.iterator.find",
        "esnext.iterator.flat-map",
        "esnext.iterator.for-each",
        "esnext.iterator.from",
        "esnext.iterator.indexed",
        "esnext.iterator.map",
        "esnext.iterator.range",
        "esnext.iterator.reduce",
        "esnext.iterator.some",
        "esnext.iterator.take",
        "esnext.iterator.to-array",
        "esnext.iterator.to-async",
        "esnext.json.is-raw-json",
        "esnext.json.parse",
        "esnext.json.raw-json",
        "esnext.map.delete-all",
        "esnext.map.emplace",
        "esnext.map.every",
        "esnext.map.filter",
        "esnext.map.find",
        "esnext.map.find-key",
        "esnext.map.from",
        "esnext.map.group-by",
        "esnext.map.includes",
        "esnext.map.key-by",
        "esnext.map.key-of",
        "esnext.map.map-keys",
        "esnext.map.map-values",
        "esnext.map.merge",
        "esnext.map.of",
        "esnext.map.reduce",
        "esnext.map.some",
        "esnext.map.update",
        "esnext.map.update-or-insert",
        "esnext.map.upsert",
        "esnext.math.clamp",
        "esnext.math.deg-per-rad",
        "esnext.math.degrees",
        "esnext.math.fscale",
        "esnext.math.iaddh",
        "esnext.math.imulh",
        "esnext.math.isubh",
        "esnext.math.rad-per-deg",
        "esnext.math.radians",
        "esnext.math.scale",
        "esnext.math.seeded-prng",
        "esnext.math.signbit",
        "esnext.math.umulh",
        "esnext.number.from-string",
        "esnext.number.range",
        "esnext.object.has-own",
        "esnext.object.iterate-entries",
        "esnext.object.iterate-keys",
        "esnext.object.iterate-values",
        "esnext.observable",
        "esnext.promise.all-settled",
        "esnext.promise.any",
        "esnext.promise.try",
        "esnext.reflect.define-metadata",
        "esnext.reflect.delete-metadata",
        "esnext.reflect.get-metadata",
        "esnext.reflect.get-metadata-keys",
        "esnext.reflect.get-own-metadata",
        "esnext.reflect.get-own-metadata-keys",
        "esnext.reflect.has-metadata",
        "esnext.reflect.has-own-metadata",
        "esnext.reflect.metadata",
        "esnext.set.add-all",
        "esnext.set.delete-all",
        "esnext.set.difference.v2",
        "esnext.set.difference",
        "esnext.set.every",
        "esnext.set.filter",
        "esnext.set.find",
        "esnext.set.from",
        "esnext.set.intersection.v2",
        "esnext.set.intersection",
        "esnext.set.is-disjoint-from.v2",
        "esnext.set.is-disjoint-from",
        "esnext.set.is-subset-of.v2",
        "esnext.set.is-subset-of",
        "esnext.set.is-superset-of.v2",
        "esnext.set.is-superset-of",
        "esnext.set.join",
        "esnext.set.map",
        "esnext.set.of",
        "esnext.set.reduce",
        "esnext.set.some",
        "esnext.set.symmetric-difference.v2",
        "esnext.set.symmetric-difference",
        "esnext.set.union.v2",
        "esnext.set.union",
        "esnext.string.at",
        "esnext.string.cooked",
        "esnext.string.code-points",
        "esnext.string.dedent",
        "esnext.string.is-well-formed",
        "esnext.string.match-all",
        "esnext.string.replace-all",
        "esnext.string.to-well-formed",
        "esnext.symbol.async-dispose",
        "esnext.symbol.dispose",
        "esnext.symbol.is-registered",
        "esnext.symbol.is-well-known",
        "esnext.symbol.matcher",
        "esnext.symbol.metadata",
        "esnext.symbol.metadata-key",
        "esnext.symbol.observable",
        "esnext.symbol.pattern-match",
        "esnext.symbol.replace-all",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with",
        "esnext.weak-map.delete-all",
        "esnext.weak-map.from",
        "esnext.weak-map.of",
        "esnext.weak-map.emplace",
        "esnext.weak-map.upsert",
        "esnext.weak-set.add-all",
        "esnext.weak-set.delete-all",
        "esnext.weak-set.from",
        "esnext.weak-set.of",
        "web.atob",
        "web.btoa",
        "web.dom-collections.for-each",
        "web.dom-collections.iterator",
        "web.dom-exception.constructor",
        "web.dom-exception.stack",
        "web.dom-exception.to-string-tag",
        "web.immediate",
        "web.queue-microtask",
        "web.self",
        "web.structured-clone",
        "web.timers",
        "web.url",
        "web.url.to-json",
        "web.url-search-params",
        "web.url-search-params.size"
    ];
  
    var compare = helpers.compare,
      intersection$1 = helpers.intersection,
      semver$3 = helpers.semver;
    var modulesByVersions = require$$1;
    var modules = require$$2;
    var getModulesListForTargetVersion$2 = function getModulesListForTargetVersion(raw) {
      var corejs = semver$3(raw);
      if (corejs.major !== 3) {
        throw RangeError('This version of `core-js-compat` works only with `core-js@3`.');
      }
      var result = [];
      for (var _i = 0, _Object$keys = Object.keys(modulesByVersions); _i < _Object$keys.length; _i++) {
        var version = _Object$keys[_i];
        if (compare(version, '<=', corejs)) {
          result.push.apply(result, _toConsumableArray(modulesByVersions[version]));
        }
      }
      return intersection$1(result, modules);
    };
  
    var getModulesListForTargetVersion$1 = getModulesListForTargetVersion$2;
  
    var require$$0$2 = {
        "core-js": [
        "es.symbol",
        "es.symbol.description",
        "es.symbol.async-iterator",
        "es.symbol.has-instance",
        "es.symbol.is-concat-spreadable",
        "es.symbol.iterator",
        "es.symbol.match",
        "es.symbol.match-all",
        "es.symbol.replace",
        "es.symbol.search",
        "es.symbol.species",
        "es.symbol.split",
        "es.symbol.to-primitive",
        "es.symbol.to-string-tag",
        "es.symbol.unscopables",
        "es.error.cause",
        "es.error.to-string",
        "es.aggregate-error",
        "es.aggregate-error.cause",
        "es.array.at",
        "es.array.concat",
        "es.array.copy-within",
        "es.array.every",
        "es.array.fill",
        "es.array.filter",
        "es.array.find",
        "es.array.find-index",
        "es.array.find-last",
        "es.array.find-last-index",
        "es.array.flat",
        "es.array.flat-map",
        "es.array.for-each",
        "es.array.from",
        "es.array.includes",
        "es.array.index-of",
        "es.array.is-array",
        "es.array.iterator",
        "es.array.join",
        "es.array.last-index-of",
        "es.array.map",
        "es.array.of",
        "es.array.push",
        "es.array.reduce",
        "es.array.reduce-right",
        "es.array.reverse",
        "es.array.slice",
        "es.array.some",
        "es.array.sort",
        "es.array.species",
        "es.array.splice",
        "es.array.to-reversed",
        "es.array.to-sorted",
        "es.array.to-spliced",
        "es.array.unscopables.flat",
        "es.array.unscopables.flat-map",
        "es.array.unshift",
        "es.array.with",
        "es.array-buffer.constructor",
        "es.array-buffer.is-view",
        "es.array-buffer.slice",
        "es.data-view",
        "es.date.get-year",
        "es.date.now",
        "es.date.set-year",
        "es.date.to-gmt-string",
        "es.date.to-iso-string",
        "es.date.to-json",
        "es.date.to-primitive",
        "es.date.to-string",
        "es.escape",
        "es.function.bind",
        "es.function.has-instance",
        "es.function.name",
        "es.global-this",
        "es.json.stringify",
        "es.json.to-string-tag",
        "es.map",
        "es.math.acosh",
        "es.math.asinh",
        "es.math.atanh",
        "es.math.cbrt",
        "es.math.clz32",
        "es.math.cosh",
        "es.math.expm1",
        "es.math.fround",
        "es.math.hypot",
        "es.math.imul",
        "es.math.log10",
        "es.math.log1p",
        "es.math.log2",
        "es.math.sign",
        "es.math.sinh",
        "es.math.tanh",
        "es.math.to-string-tag",
        "es.math.trunc",
        "es.number.constructor",
        "es.number.epsilon",
        "es.number.is-finite",
        "es.number.is-integer",
        "es.number.is-nan",
        "es.number.is-safe-integer",
        "es.number.max-safe-integer",
        "es.number.min-safe-integer",
        "es.number.parse-float",
        "es.number.parse-int",
        "es.number.to-exponential",
        "es.number.to-fixed",
        "es.number.to-precision",
        "es.object.assign",
        "es.object.create",
        "es.object.define-getter",
        "es.object.define-properties",
        "es.object.define-property",
        "es.object.define-setter",
        "es.object.entries",
        "es.object.freeze",
        "es.object.from-entries",
        "es.object.get-own-property-descriptor",
        "es.object.get-own-property-descriptors",
        "es.object.get-own-property-names",
        "es.object.get-prototype-of",
        "es.object.has-own",
        "es.object.is",
        "es.object.is-extensible",
        "es.object.is-frozen",
        "es.object.is-sealed",
        "es.object.keys",
        "es.object.lookup-getter",
        "es.object.lookup-setter",
        "es.object.prevent-extensions",
        "es.object.proto",
        "es.object.seal",
        "es.object.set-prototype-of",
        "es.object.to-string",
        "es.object.values",
        "es.parse-float",
        "es.parse-int",
        "es.promise",
        "es.promise.all-settled",
        "es.promise.any",
        "es.promise.finally",
        "es.reflect.apply",
        "es.reflect.construct",
        "es.reflect.define-property",
        "es.reflect.delete-property",
        "es.reflect.get",
        "es.reflect.get-own-property-descriptor",
        "es.reflect.get-prototype-of",
        "es.reflect.has",
        "es.reflect.is-extensible",
        "es.reflect.own-keys",
        "es.reflect.prevent-extensions",
        "es.reflect.set",
        "es.reflect.set-prototype-of",
        "es.reflect.to-string-tag",
        "es.regexp.constructor",
        "es.regexp.dot-all",
        "es.regexp.exec",
        "es.regexp.flags",
        "es.regexp.sticky",
        "es.regexp.test",
        "es.regexp.to-string",
        "es.set",
        "es.string.at-alternative",
        "es.string.code-point-at",
        "es.string.ends-with",
        "es.string.from-code-point",
        "es.string.includes",
        "es.string.iterator",
        "es.string.match",
        "es.string.match-all",
        "es.string.pad-end",
        "es.string.pad-start",
        "es.string.raw",
        "es.string.repeat",
        "es.string.replace",
        "es.string.replace-all",
        "es.string.search",
        "es.string.split",
        "es.string.starts-with",
        "es.string.substr",
        "es.string.trim",
        "es.string.trim-end",
        "es.string.trim-start",
        "es.string.anchor",
        "es.string.big",
        "es.string.blink",
        "es.string.bold",
        "es.string.fixed",
        "es.string.fontcolor",
        "es.string.fontsize",
        "es.string.italics",
        "es.string.link",
        "es.string.small",
        "es.string.strike",
        "es.string.sub",
        "es.string.sup",
        "es.typed-array.float32-array",
        "es.typed-array.float64-array",
        "es.typed-array.int8-array",
        "es.typed-array.int16-array",
        "es.typed-array.int32-array",
        "es.typed-array.uint8-array",
        "es.typed-array.uint8-clamped-array",
        "es.typed-array.uint16-array",
        "es.typed-array.uint32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "es.unescape",
        "es.weak-map",
        "es.weak-set",
        "esnext.aggregate-error",
        "esnext.suppressed-error.constructor",
        "esnext.array.from-async",
        "esnext.array.at",
        "esnext.array.filter-out",
        "esnext.array.filter-reject",
        "esnext.array.find-last",
        "esnext.array.find-last-index",
        "esnext.array.group",
        "esnext.array.group-by",
        "esnext.array.group-by-to-map",
        "esnext.array.group-to-map",
        "esnext.array.is-template-object",
        "esnext.array.last-index",
        "esnext.array.last-item",
        "esnext.array.to-reversed",
        "esnext.array.to-sorted",
        "esnext.array.to-spliced",
        "esnext.array.unique-by",
        "esnext.array.with",
        "esnext.array-buffer.detached",
        "esnext.array-buffer.transfer",
        "esnext.array-buffer.transfer-to-fixed-length",
        "esnext.async-disposable-stack.constructor",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.as-indexed-pairs",
        "esnext.async-iterator.async-dispose",
        "esnext.async-iterator.drop",
        "esnext.async-iterator.every",
        "esnext.async-iterator.filter",
        "esnext.async-iterator.find",
        "esnext.async-iterator.flat-map",
        "esnext.async-iterator.for-each",
        "esnext.async-iterator.from",
        "esnext.async-iterator.indexed",
        "esnext.async-iterator.map",
        "esnext.async-iterator.reduce",
        "esnext.async-iterator.some",
        "esnext.async-iterator.take",
        "esnext.async-iterator.to-array",
        "esnext.bigint.range",
        "esnext.composite-key",
        "esnext.composite-symbol",
        "esnext.disposable-stack.constructor",
        "esnext.function.demethodize",
        "esnext.function.is-callable",
        "esnext.function.is-constructor",
        "esnext.function.un-this",
        "esnext.global-this",
        "esnext.iterator.constructor",
        "esnext.iterator.as-indexed-pairs",
        "esnext.iterator.dispose",
        "esnext.iterator.drop",
        "esnext.iterator.every",
        "esnext.iterator.filter",
        "esnext.iterator.find",
        "esnext.iterator.flat-map",
        "esnext.iterator.for-each",
        "esnext.iterator.from",
        "esnext.iterator.indexed",
        "esnext.iterator.map",
        "esnext.iterator.range",
        "esnext.iterator.reduce",
        "esnext.iterator.some",
        "esnext.iterator.take",
        "esnext.iterator.to-array",
        "esnext.iterator.to-async",
        "esnext.json.is-raw-json",
        "esnext.json.parse",
        "esnext.json.raw-json",
        "esnext.map.delete-all",
        "esnext.map.emplace",
        "esnext.map.every",
        "esnext.map.filter",
        "esnext.map.find",
        "esnext.map.find-key",
        "esnext.map.from",
        "esnext.map.group-by",
        "esnext.map.includes",
        "esnext.map.key-by",
        "esnext.map.key-of",
        "esnext.map.map-keys",
        "esnext.map.map-values",
        "esnext.map.merge",
        "esnext.map.of",
        "esnext.map.reduce",
        "esnext.map.some",
        "esnext.map.update",
        "esnext.map.update-or-insert",
        "esnext.map.upsert",
        "esnext.math.clamp",
        "esnext.math.deg-per-rad",
        "esnext.math.degrees",
        "esnext.math.fscale",
        "esnext.math.iaddh",
        "esnext.math.imulh",
        "esnext.math.isubh",
        "esnext.math.rad-per-deg",
        "esnext.math.radians",
        "esnext.math.scale",
        "esnext.math.seeded-prng",
        "esnext.math.signbit",
        "esnext.math.umulh",
        "esnext.number.from-string",
        "esnext.number.range",
        "esnext.object.has-own",
        "esnext.object.iterate-entries",
        "esnext.object.iterate-keys",
        "esnext.object.iterate-values",
        "esnext.observable",
        "esnext.promise.all-settled",
        "esnext.promise.any",
        "esnext.promise.try",
        "esnext.reflect.define-metadata",
        "esnext.reflect.delete-metadata",
        "esnext.reflect.get-metadata",
        "esnext.reflect.get-metadata-keys",
        "esnext.reflect.get-own-metadata",
        "esnext.reflect.get-own-metadata-keys",
        "esnext.reflect.has-metadata",
        "esnext.reflect.has-own-metadata",
        "esnext.reflect.metadata",
        "esnext.set.add-all",
        "esnext.set.delete-all",
        "esnext.set.difference.v2",
        "esnext.set.difference",
        "esnext.set.every",
        "esnext.set.filter",
        "esnext.set.find",
        "esnext.set.from",
        "esnext.set.intersection.v2",
        "esnext.set.intersection",
        "esnext.set.is-disjoint-from.v2",
        "esnext.set.is-disjoint-from",
        "esnext.set.is-subset-of.v2",
        "esnext.set.is-subset-of",
        "esnext.set.is-superset-of.v2",
        "esnext.set.is-superset-of",
        "esnext.set.join",
        "esnext.set.map",
        "esnext.set.of",
        "esnext.set.reduce",
        "esnext.set.some",
        "esnext.set.symmetric-difference.v2",
        "esnext.set.symmetric-difference",
        "esnext.set.union.v2",
        "esnext.set.union",
        "esnext.string.at",
        "esnext.string.cooked",
        "esnext.string.code-points",
        "esnext.string.dedent",
        "esnext.string.is-well-formed",
        "esnext.string.match-all",
        "esnext.string.replace-all",
        "esnext.string.to-well-formed",
        "esnext.symbol.async-dispose",
        "esnext.symbol.dispose",
        "esnext.symbol.is-registered",
        "esnext.symbol.is-well-known",
        "esnext.symbol.matcher",
        "esnext.symbol.metadata",
        "esnext.symbol.metadata-key",
        "esnext.symbol.observable",
        "esnext.symbol.pattern-match",
        "esnext.symbol.replace-all",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with",
        "esnext.weak-map.delete-all",
        "esnext.weak-map.from",
        "esnext.weak-map.of",
        "esnext.weak-map.emplace",
        "esnext.weak-map.upsert",
        "esnext.weak-set.add-all",
        "esnext.weak-set.delete-all",
        "esnext.weak-set.from",
        "esnext.weak-set.of",
        "web.atob",
        "web.btoa",
        "web.dom-collections.for-each",
        "web.dom-collections.iterator",
        "web.dom-exception.constructor",
        "web.dom-exception.stack",
        "web.dom-exception.to-string-tag",
        "web.immediate",
        "web.queue-microtask",
        "web.self",
        "web.structured-clone",
        "web.timers",
        "web.url",
        "web.url.to-json",
        "web.url-search-params",
        "web.url-search-params.size"
    ],
        "core-js/actual": [
        "es.symbol",
        "es.symbol.description",
        "es.symbol.async-iterator",
        "es.symbol.has-instance",
        "es.symbol.is-concat-spreadable",
        "es.symbol.iterator",
        "es.symbol.match",
        "es.symbol.match-all",
        "es.symbol.replace",
        "es.symbol.search",
        "es.symbol.species",
        "es.symbol.split",
        "es.symbol.to-primitive",
        "es.symbol.to-string-tag",
        "es.symbol.unscopables",
        "es.error.cause",
        "es.error.to-string",
        "es.aggregate-error",
        "es.aggregate-error.cause",
        "es.array.at",
        "es.array.concat",
        "es.array.copy-within",
        "es.array.every",
        "es.array.fill",
        "es.array.filter",
        "es.array.find",
        "es.array.find-index",
        "es.array.find-last",
        "es.array.find-last-index",
        "es.array.flat",
        "es.array.flat-map",
        "es.array.for-each",
        "es.array.from",
        "es.array.includes",
        "es.array.index-of",
        "es.array.is-array",
        "es.array.iterator",
        "es.array.join",
        "es.array.last-index-of",
        "es.array.map",
        "es.array.of",
        "es.array.push",
        "es.array.reduce",
        "es.array.reduce-right",
        "es.array.reverse",
        "es.array.slice",
        "es.array.some",
        "es.array.sort",
        "es.array.species",
        "es.array.splice",
        "es.array.to-reversed",
        "es.array.to-sorted",
        "es.array.to-spliced",
        "es.array.unscopables.flat",
        "es.array.unscopables.flat-map",
        "es.array.unshift",
        "es.array.with",
        "es.array-buffer.constructor",
        "es.array-buffer.is-view",
        "es.array-buffer.slice",
        "es.data-view",
        "es.date.get-year",
        "es.date.now",
        "es.date.set-year",
        "es.date.to-gmt-string",
        "es.date.to-iso-string",
        "es.date.to-json",
        "es.date.to-primitive",
        "es.date.to-string",
        "es.escape",
        "es.function.bind",
        "es.function.has-instance",
        "es.function.name",
        "es.global-this",
        "es.json.stringify",
        "es.json.to-string-tag",
        "es.map",
        "es.math.acosh",
        "es.math.asinh",
        "es.math.atanh",
        "es.math.cbrt",
        "es.math.clz32",
        "es.math.cosh",
        "es.math.expm1",
        "es.math.fround",
        "es.math.hypot",
        "es.math.imul",
        "es.math.log10",
        "es.math.log1p",
        "es.math.log2",
        "es.math.sign",
        "es.math.sinh",
        "es.math.tanh",
        "es.math.to-string-tag",
        "es.math.trunc",
        "es.number.constructor",
        "es.number.epsilon",
        "es.number.is-finite",
        "es.number.is-integer",
        "es.number.is-nan",
        "es.number.is-safe-integer",
        "es.number.max-safe-integer",
        "es.number.min-safe-integer",
        "es.number.parse-float",
        "es.number.parse-int",
        "es.number.to-exponential",
        "es.number.to-fixed",
        "es.number.to-precision",
        "es.object.assign",
        "es.object.create",
        "es.object.define-getter",
        "es.object.define-properties",
        "es.object.define-property",
        "es.object.define-setter",
        "es.object.entries",
        "es.object.freeze",
        "es.object.from-entries",
        "es.object.get-own-property-descriptor",
        "es.object.get-own-property-descriptors",
        "es.object.get-own-property-names",
        "es.object.get-prototype-of",
        "es.object.has-own",
        "es.object.is",
        "es.object.is-extensible",
        "es.object.is-frozen",
        "es.object.is-sealed",
        "es.object.keys",
        "es.object.lookup-getter",
        "es.object.lookup-setter",
        "es.object.prevent-extensions",
        "es.object.proto",
        "es.object.seal",
        "es.object.set-prototype-of",
        "es.object.to-string",
        "es.object.values",
        "es.parse-float",
        "es.parse-int",
        "es.promise",
        "es.promise.all-settled",
        "es.promise.any",
        "es.promise.finally",
        "es.reflect.apply",
        "es.reflect.construct",
        "es.reflect.define-property",
        "es.reflect.delete-property",
        "es.reflect.get",
        "es.reflect.get-own-property-descriptor",
        "es.reflect.get-prototype-of",
        "es.reflect.has",
        "es.reflect.is-extensible",
        "es.reflect.own-keys",
        "es.reflect.prevent-extensions",
        "es.reflect.set",
        "es.reflect.set-prototype-of",
        "es.reflect.to-string-tag",
        "es.regexp.constructor",
        "es.regexp.dot-all",
        "es.regexp.exec",
        "es.regexp.flags",
        "es.regexp.sticky",
        "es.regexp.test",
        "es.regexp.to-string",
        "es.set",
        "es.string.at-alternative",
        "es.string.code-point-at",
        "es.string.ends-with",
        "es.string.from-code-point",
        "es.string.includes",
        "es.string.iterator",
        "es.string.match",
        "es.string.match-all",
        "es.string.pad-end",
        "es.string.pad-start",
        "es.string.raw",
        "es.string.repeat",
        "es.string.replace",
        "es.string.replace-all",
        "es.string.search",
        "es.string.split",
        "es.string.starts-with",
        "es.string.substr",
        "es.string.trim",
        "es.string.trim-end",
        "es.string.trim-start",
        "es.string.anchor",
        "es.string.big",
        "es.string.blink",
        "es.string.bold",
        "es.string.fixed",
        "es.string.fontcolor",
        "es.string.fontsize",
        "es.string.italics",
        "es.string.link",
        "es.string.small",
        "es.string.strike",
        "es.string.sub",
        "es.string.sup",
        "es.typed-array.float32-array",
        "es.typed-array.float64-array",
        "es.typed-array.int8-array",
        "es.typed-array.int16-array",
        "es.typed-array.int32-array",
        "es.typed-array.uint8-array",
        "es.typed-array.uint8-clamped-array",
        "es.typed-array.uint16-array",
        "es.typed-array.uint32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "es.unescape",
        "es.weak-map",
        "es.weak-set",
        "esnext.aggregate-error",
        "esnext.suppressed-error.constructor",
        "esnext.array.from-async",
        "esnext.array.at",
        "esnext.array.find-last",
        "esnext.array.find-last-index",
        "esnext.array.group",
        "esnext.array.group-by",
        "esnext.array.group-by-to-map",
        "esnext.array.group-to-map",
        "esnext.array.to-reversed",
        "esnext.array.to-sorted",
        "esnext.array.to-spliced",
        "esnext.array.with",
        "esnext.array-buffer.detached",
        "esnext.array-buffer.transfer",
        "esnext.array-buffer.transfer-to-fixed-length",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.drop",
        "esnext.async-iterator.every",
        "esnext.async-iterator.filter",
        "esnext.async-iterator.find",
        "esnext.async-iterator.flat-map",
        "esnext.async-iterator.for-each",
        "esnext.async-iterator.from",
        "esnext.async-iterator.map",
        "esnext.async-iterator.reduce",
        "esnext.async-iterator.some",
        "esnext.async-iterator.take",
        "esnext.async-iterator.to-array",
        "esnext.disposable-stack.constructor",
        "esnext.global-this",
        "esnext.iterator.constructor",
        "esnext.iterator.dispose",
        "esnext.iterator.drop",
        "esnext.iterator.every",
        "esnext.iterator.filter",
        "esnext.iterator.find",
        "esnext.iterator.flat-map",
        "esnext.iterator.for-each",
        "esnext.iterator.from",
        "esnext.iterator.map",
        "esnext.iterator.reduce",
        "esnext.iterator.some",
        "esnext.iterator.take",
        "esnext.iterator.to-array",
        "esnext.iterator.to-async",
        "esnext.json.is-raw-json",
        "esnext.json.parse",
        "esnext.json.raw-json",
        "esnext.object.has-own",
        "esnext.promise.all-settled",
        "esnext.promise.any",
        "esnext.set.difference.v2",
        "esnext.set.intersection.v2",
        "esnext.set.is-disjoint-from.v2",
        "esnext.set.is-subset-of.v2",
        "esnext.set.is-superset-of.v2",
        "esnext.set.symmetric-difference.v2",
        "esnext.set.union.v2",
        "esnext.string.is-well-formed",
        "esnext.string.match-all",
        "esnext.string.replace-all",
        "esnext.string.to-well-formed",
        "esnext.symbol.dispose",
        "esnext.typed-array.at",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.with",
        "web.atob",
        "web.btoa",
        "web.dom-collections.for-each",
        "web.dom-collections.iterator",
        "web.dom-exception.constructor",
        "web.dom-exception.stack",
        "web.dom-exception.to-string-tag",
        "web.immediate",
        "web.queue-microtask",
        "web.self",
        "web.structured-clone",
        "web.timers",
        "web.url",
        "web.url.to-json",
        "web.url-search-params",
        "web.url-search-params.size"
    ],
        "core-js/actual/aggregate-error": [
        "es.error.cause",
        "es.aggregate-error",
        "es.aggregate-error.cause",
        "es.array.iterator",
        "es.string.iterator",
        "esnext.aggregate-error",
        "web.dom-collections.iterator"
    ],
        "core-js/actual/array": [
        "es.array.at",
        "es.array.concat",
        "es.array.copy-within",
        "es.array.every",
        "es.array.fill",
        "es.array.filter",
        "es.array.find",
        "es.array.find-index",
        "es.array.find-last",
        "es.array.find-last-index",
        "es.array.flat",
        "es.array.flat-map",
        "es.array.for-each",
        "es.array.from",
        "es.array.includes",
        "es.array.index-of",
        "es.array.is-array",
        "es.array.iterator",
        "es.array.join",
        "es.array.last-index-of",
        "es.array.map",
        "es.array.of",
        "es.array.push",
        "es.array.reduce",
        "es.array.reduce-right",
        "es.array.reverse",
        "es.array.slice",
        "es.array.some",
        "es.array.sort",
        "es.array.species",
        "es.array.splice",
        "es.array.to-reversed",
        "es.array.to-sorted",
        "es.array.to-spliced",
        "es.array.unscopables.flat",
        "es.array.unscopables.flat-map",
        "es.array.unshift",
        "es.array.with",
        "es.map",
        "es.object.to-string",
        "es.string.iterator",
        "esnext.array.from-async",
        "esnext.array.find-last",
        "esnext.array.find-last-index",
        "esnext.array.group",
        "esnext.array.group-by",
        "esnext.array.group-by-to-map",
        "esnext.array.group-to-map",
        "esnext.array.to-reversed",
        "esnext.array.to-sorted",
        "esnext.array.to-spliced",
        "esnext.array.with"
    ],
        "core-js/actual/array-buffer": [
        "es.array-buffer.constructor",
        "es.array-buffer.is-view",
        "es.array-buffer.slice",
        "es.object.to-string",
        "esnext.array-buffer.detached",
        "esnext.array-buffer.transfer",
        "esnext.array-buffer.transfer-to-fixed-length"
    ],
        "core-js/actual/array-buffer/constructor": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "esnext.array-buffer.detached",
        "esnext.array-buffer.transfer",
        "esnext.array-buffer.transfer-to-fixed-length"
    ],
        "core-js/actual/array-buffer/detached": [
        "es.array-buffer.constructor",
        "es.array-buffer.is-view",
        "es.array-buffer.slice",
        "es.object.to-string",
        "esnext.array-buffer.detached"
    ],
        "core-js/actual/array-buffer/is-view": [
        "es.array-buffer.is-view"
    ],
        "core-js/actual/array-buffer/slice": [
        "es.array-buffer.slice"
    ],
        "core-js/actual/array-buffer/transfer": [
        "es.array-buffer.constructor",
        "es.array-buffer.is-view",
        "es.array-buffer.slice",
        "es.object.to-string",
        "esnext.array-buffer.transfer"
    ],
        "core-js/actual/array-buffer/transfer-to-fixed-length": [
        "es.array-buffer.constructor",
        "es.array-buffer.is-view",
        "es.array-buffer.slice",
        "es.object.to-string",
        "esnext.array-buffer.transfer-to-fixed-length"
    ],
        "core-js/actual/array/at": [
        "es.array.at"
    ],
        "core-js/actual/array/concat": [
        "es.array.concat"
    ],
        "core-js/actual/array/copy-within": [
        "es.array.copy-within"
    ],
        "core-js/actual/array/entries": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/actual/array/every": [
        "es.array.every"
    ],
        "core-js/actual/array/fill": [
        "es.array.fill"
    ],
        "core-js/actual/array/filter": [
        "es.array.filter"
    ],
        "core-js/actual/array/find": [
        "es.array.find"
    ],
        "core-js/actual/array/find-index": [
        "es.array.find-index"
    ],
        "core-js/actual/array/find-last": [
        "es.array.find-last",
        "esnext.array.find-last"
    ],
        "core-js/actual/array/find-last-index": [
        "es.array.find-last-index",
        "esnext.array.find-last-index"
    ],
        "core-js/actual/array/flat": [
        "es.array.flat",
        "es.array.unscopables.flat"
    ],
        "core-js/actual/array/flat-map": [
        "es.array.flat-map",
        "es.array.unscopables.flat-map"
    ],
        "core-js/actual/array/for-each": [
        "es.array.for-each"
    ],
        "core-js/actual/array/from": [
        "es.array.from",
        "es.string.iterator"
    ],
        "core-js/actual/array/from-async": [
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "esnext.array.from-async"
    ],
        "core-js/actual/array/group": [
        "esnext.array.group"
    ],
        "core-js/actual/array/group-by": [
        "esnext.array.group-by"
    ],
        "core-js/actual/array/group-by-to-map": [
        "es.map",
        "es.object.to-string",
        "esnext.array.group-by-to-map"
    ],
        "core-js/actual/array/group-to-map": [
        "es.map",
        "es.object.to-string",
        "esnext.array.group-to-map"
    ],
        "core-js/actual/array/includes": [
        "es.array.includes"
    ],
        "core-js/actual/array/index-of": [
        "es.array.index-of"
    ],
        "core-js/actual/array/is-array": [
        "es.array.is-array"
    ],
        "core-js/actual/array/iterator": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/actual/array/join": [
        "es.array.join"
    ],
        "core-js/actual/array/keys": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/actual/array/last-index-of": [
        "es.array.last-index-of"
    ],
        "core-js/actual/array/map": [
        "es.array.map"
    ],
        "core-js/actual/array/of": [
        "es.array.of"
    ],
        "core-js/actual/array/push": [
        "es.array.push"
    ],
        "core-js/actual/array/reduce": [
        "es.array.reduce"
    ],
        "core-js/actual/array/reduce-right": [
        "es.array.reduce-right"
    ],
        "core-js/actual/array/reverse": [
        "es.array.reverse"
    ],
        "core-js/actual/array/slice": [
        "es.array.slice"
    ],
        "core-js/actual/array/some": [
        "es.array.some"
    ],
        "core-js/actual/array/sort": [
        "es.array.sort"
    ],
        "core-js/actual/array/splice": [
        "es.array.splice"
    ],
        "core-js/actual/array/to-reversed": [
        "es.array.to-reversed",
        "esnext.array.to-reversed"
    ],
        "core-js/actual/array/to-sorted": [
        "es.array.sort",
        "es.array.to-sorted",
        "esnext.array.to-sorted"
    ],
        "core-js/actual/array/to-spliced": [
        "es.array.to-spliced",
        "esnext.array.to-spliced"
    ],
        "core-js/actual/array/unshift": [
        "es.array.unshift"
    ],
        "core-js/actual/array/values": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/actual/array/virtual": [
        "es.array.at",
        "es.array.concat",
        "es.array.copy-within",
        "es.array.every",
        "es.array.fill",
        "es.array.filter",
        "es.array.find",
        "es.array.find-index",
        "es.array.find-last",
        "es.array.find-last-index",
        "es.array.flat",
        "es.array.flat-map",
        "es.array.for-each",
        "es.array.includes",
        "es.array.index-of",
        "es.array.iterator",
        "es.array.join",
        "es.array.last-index-of",
        "es.array.map",
        "es.array.push",
        "es.array.reduce",
        "es.array.reduce-right",
        "es.array.reverse",
        "es.array.slice",
        "es.array.some",
        "es.array.sort",
        "es.array.species",
        "es.array.splice",
        "es.array.to-reversed",
        "es.array.to-sorted",
        "es.array.to-spliced",
        "es.array.unscopables.flat",
        "es.array.unscopables.flat-map",
        "es.array.unshift",
        "es.array.with",
        "es.map",
        "es.object.to-string",
        "esnext.array.find-last",
        "esnext.array.find-last-index",
        "esnext.array.group",
        "esnext.array.group-by",
        "esnext.array.group-by-to-map",
        "esnext.array.group-to-map",
        "esnext.array.to-reversed",
        "esnext.array.to-sorted",
        "esnext.array.to-spliced",
        "esnext.array.with"
    ],
        "core-js/actual/array/virtual/at": [
        "es.array.at"
    ],
        "core-js/actual/array/virtual/concat": [
        "es.array.concat"
    ],
        "core-js/actual/array/virtual/copy-within": [
        "es.array.copy-within"
    ],
        "core-js/actual/array/virtual/entries": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/actual/array/virtual/every": [
        "es.array.every"
    ],
        "core-js/actual/array/virtual/fill": [
        "es.array.fill"
    ],
        "core-js/actual/array/virtual/filter": [
        "es.array.filter"
    ],
        "core-js/actual/array/virtual/find": [
        "es.array.find"
    ],
        "core-js/actual/array/virtual/find-index": [
        "es.array.find-index"
    ],
        "core-js/actual/array/virtual/find-last": [
        "es.array.find-last",
        "esnext.array.find-last"
    ],
        "core-js/actual/array/virtual/find-last-index": [
        "es.array.find-last-index",
        "esnext.array.find-last-index"
    ],
        "core-js/actual/array/virtual/flat": [
        "es.array.flat",
        "es.array.unscopables.flat"
    ],
        "core-js/actual/array/virtual/flat-map": [
        "es.array.flat-map",
        "es.array.unscopables.flat-map"
    ],
        "core-js/actual/array/virtual/for-each": [
        "es.array.for-each"
    ],
        "core-js/actual/array/virtual/group": [
        "esnext.array.group"
    ],
        "core-js/actual/array/virtual/group-by": [
        "esnext.array.group-by"
    ],
        "core-js/actual/array/virtual/group-by-to-map": [
        "es.map",
        "es.object.to-string",
        "esnext.array.group-by-to-map"
    ],
        "core-js/actual/array/virtual/group-to-map": [
        "es.map",
        "es.object.to-string",
        "esnext.array.group-to-map"
    ],
        "core-js/actual/array/virtual/includes": [
        "es.array.includes"
    ],
        "core-js/actual/array/virtual/index-of": [
        "es.array.index-of"
    ],
        "core-js/actual/array/virtual/iterator": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/actual/array/virtual/join": [
        "es.array.join"
    ],
        "core-js/actual/array/virtual/keys": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/actual/array/virtual/last-index-of": [
        "es.array.last-index-of"
    ],
        "core-js/actual/array/virtual/map": [
        "es.array.map"
    ],
        "core-js/actual/array/virtual/push": [
        "es.array.push"
    ],
        "core-js/actual/array/virtual/reduce": [
        "es.array.reduce"
    ],
        "core-js/actual/array/virtual/reduce-right": [
        "es.array.reduce-right"
    ],
        "core-js/actual/array/virtual/reverse": [
        "es.array.reverse"
    ],
        "core-js/actual/array/virtual/slice": [
        "es.array.slice"
    ],
        "core-js/actual/array/virtual/some": [
        "es.array.some"
    ],
        "core-js/actual/array/virtual/sort": [
        "es.array.sort"
    ],
        "core-js/actual/array/virtual/splice": [
        "es.array.splice"
    ],
        "core-js/actual/array/virtual/to-reversed": [
        "es.array.to-reversed",
        "esnext.array.to-reversed"
    ],
        "core-js/actual/array/virtual/to-sorted": [
        "es.array.sort",
        "es.array.to-sorted",
        "esnext.array.to-sorted"
    ],
        "core-js/actual/array/virtual/to-spliced": [
        "es.array.to-spliced",
        "esnext.array.to-spliced"
    ],
        "core-js/actual/array/virtual/unshift": [
        "es.array.unshift"
    ],
        "core-js/actual/array/virtual/values": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/actual/array/virtual/with": [
        "es.array.with",
        "esnext.array.with"
    ],
        "core-js/actual/array/with": [
        "es.array.with",
        "esnext.array.with"
    ],
        "core-js/actual/async-iterator": [
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.drop",
        "esnext.async-iterator.every",
        "esnext.async-iterator.filter",
        "esnext.async-iterator.find",
        "esnext.async-iterator.flat-map",
        "esnext.async-iterator.for-each",
        "esnext.async-iterator.from",
        "esnext.async-iterator.map",
        "esnext.async-iterator.reduce",
        "esnext.async-iterator.some",
        "esnext.async-iterator.take",
        "esnext.async-iterator.to-array",
        "web.dom-collections.iterator"
    ],
        "core-js/actual/async-iterator/drop": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.drop"
    ],
        "core-js/actual/async-iterator/every": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.every"
    ],
        "core-js/actual/async-iterator/filter": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.filter"
    ],
        "core-js/actual/async-iterator/find": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.find"
    ],
        "core-js/actual/async-iterator/flat-map": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.flat-map"
    ],
        "core-js/actual/async-iterator/for-each": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.for-each"
    ],
        "core-js/actual/async-iterator/from": [
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.drop",
        "esnext.async-iterator.every",
        "esnext.async-iterator.filter",
        "esnext.async-iterator.find",
        "esnext.async-iterator.flat-map",
        "esnext.async-iterator.for-each",
        "esnext.async-iterator.from",
        "esnext.async-iterator.map",
        "esnext.async-iterator.reduce",
        "esnext.async-iterator.some",
        "esnext.async-iterator.take",
        "esnext.async-iterator.to-array",
        "web.dom-collections.iterator"
    ],
        "core-js/actual/async-iterator/map": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.map"
    ],
        "core-js/actual/async-iterator/reduce": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.reduce"
    ],
        "core-js/actual/async-iterator/some": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.some"
    ],
        "core-js/actual/async-iterator/take": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.take"
    ],
        "core-js/actual/async-iterator/to-array": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.to-array"
    ],
        "core-js/actual/atob": [
        "es.error.to-string",
        "es.object.to-string",
        "web.atob",
        "web.dom-exception.constructor",
        "web.dom-exception.stack",
        "web.dom-exception.to-string-tag"
    ],
        "core-js/actual/btoa": [
        "es.error.to-string",
        "es.object.to-string",
        "web.btoa",
        "web.dom-exception.constructor",
        "web.dom-exception.stack",
        "web.dom-exception.to-string-tag"
    ],
        "core-js/actual/clear-immediate": [
        "web.immediate"
    ],
        "core-js/actual/data-view": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.data-view",
        "es.object.to-string"
    ],
        "core-js/actual/date": [
        "es.date.get-year",
        "es.date.now",
        "es.date.set-year",
        "es.date.to-gmt-string",
        "es.date.to-iso-string",
        "es.date.to-json",
        "es.date.to-primitive",
        "es.date.to-string"
    ],
        "core-js/actual/date/get-year": [
        "es.date.get-year"
    ],
        "core-js/actual/date/now": [
        "es.date.now"
    ],
        "core-js/actual/date/set-year": [
        "es.date.set-year"
    ],
        "core-js/actual/date/to-gmt-string": [
        "es.date.to-gmt-string"
    ],
        "core-js/actual/date/to-iso-string": [
        "es.date.to-iso-string",
        "es.date.to-json"
    ],
        "core-js/actual/date/to-json": [
        "es.date.to-json"
    ],
        "core-js/actual/date/to-primitive": [
        "es.date.to-primitive"
    ],
        "core-js/actual/date/to-string": [
        "es.date.to-string"
    ],
        "core-js/actual/disposable-stack": [
        "es.error.cause",
        "es.error.to-string",
        "es.object.to-string",
        "esnext.suppressed-error.constructor",
        "esnext.disposable-stack.constructor",
        "esnext.iterator.dispose"
    ],
        "core-js/actual/disposable-stack/constructor": [
        "es.error.cause",
        "es.error.to-string",
        "es.object.to-string",
        "esnext.suppressed-error.constructor",
        "esnext.disposable-stack.constructor",
        "esnext.iterator.dispose"
    ],
        "core-js/actual/dom-collections": [
        "es.array.iterator",
        "es.object.to-string",
        "web.dom-collections.for-each",
        "web.dom-collections.iterator"
    ],
        "core-js/actual/dom-collections/for-each": [
        "web.dom-collections.for-each"
    ],
        "core-js/actual/dom-collections/iterator": [
        "es.object.to-string",
        "web.dom-collections.iterator"
    ],
        "core-js/actual/dom-exception": [
        "es.error.to-string",
        "web.dom-exception.constructor",
        "web.dom-exception.stack",
        "web.dom-exception.to-string-tag"
    ],
        "core-js/actual/dom-exception/constructor": [
        "es.error.to-string",
        "web.dom-exception.constructor",
        "web.dom-exception.stack"
    ],
        "core-js/actual/dom-exception/to-string-tag": [
        "web.dom-exception.to-string-tag"
    ],
        "core-js/actual/error": [
        "es.error.cause",
        "es.error.to-string"
    ],
        "core-js/actual/error/constructor": [
        "es.error.cause"
    ],
        "core-js/actual/error/to-string": [
        "es.error.to-string"
    ],
        "core-js/actual/escape": [
        "es.escape"
    ],
        "core-js/actual/function": [
        "es.function.bind",
        "es.function.has-instance",
        "es.function.name"
    ],
        "core-js/actual/function/bind": [
        "es.function.bind"
    ],
        "core-js/actual/function/has-instance": [
        "es.function.has-instance"
    ],
        "core-js/actual/function/name": [
        "es.function.name"
    ],
        "core-js/actual/function/virtual": [
        "es.function.bind"
    ],
        "core-js/actual/function/virtual/bind": [
        "es.function.bind"
    ],
        "core-js/actual/get-iterator": [
        "es.array.iterator",
        "es.string.iterator",
        "web.dom-collections.iterator"
    ],
        "core-js/actual/get-iterator-method": [
        "es.array.iterator",
        "es.string.iterator",
        "web.dom-collections.iterator"
    ],
        "core-js/actual/global-this": [
        "es.global-this"
    ],
        "core-js/actual/instance/at": [
        "es.array.at",
        "es.string.at-alternative"
    ],
        "core-js/actual/instance/bind": [
        "es.function.bind"
    ],
        "core-js/actual/instance/code-point-at": [
        "es.string.code-point-at"
    ],
        "core-js/actual/instance/concat": [
        "es.array.concat"
    ],
        "core-js/actual/instance/copy-within": [
        "es.array.copy-within"
    ],
        "core-js/actual/instance/ends-with": [
        "es.string.ends-with"
    ],
        "core-js/actual/instance/entries": [
        "es.array.iterator",
        "es.object.to-string",
        "web.dom-collections.iterator"
    ],
        "core-js/actual/instance/every": [
        "es.array.every"
    ],
        "core-js/actual/instance/fill": [
        "es.array.fill"
    ],
        "core-js/actual/instance/filter": [
        "es.array.filter"
    ],
        "core-js/actual/instance/find": [
        "es.array.find"
    ],
        "core-js/actual/instance/find-index": [
        "es.array.find-index"
    ],
        "core-js/actual/instance/find-last": [
        "es.array.find-last",
        "esnext.array.find-last"
    ],
        "core-js/actual/instance/find-last-index": [
        "es.array.find-last-index",
        "esnext.array.find-last-index"
    ],
        "core-js/actual/instance/flags": [
        "es.regexp.flags"
    ],
        "core-js/actual/instance/flat": [
        "es.array.flat",
        "es.array.unscopables.flat"
    ],
        "core-js/actual/instance/flat-map": [
        "es.array.flat-map",
        "es.array.unscopables.flat-map"
    ],
        "core-js/actual/instance/for-each": [
        "es.array.for-each",
        "web.dom-collections.iterator"
    ],
        "core-js/actual/instance/group": [
        "esnext.array.group"
    ],
        "core-js/actual/instance/group-by": [
        "esnext.array.group-by"
    ],
        "core-js/actual/instance/group-by-to-map": [
        "es.map",
        "es.object.to-string",
        "esnext.array.group-by-to-map"
    ],
        "core-js/actual/instance/group-to-map": [
        "es.map",
        "es.object.to-string",
        "esnext.array.group-to-map"
    ],
        "core-js/actual/instance/includes": [
        "es.array.includes",
        "es.string.includes"
    ],
        "core-js/actual/instance/index-of": [
        "es.array.index-of"
    ],
        "core-js/actual/instance/is-well-formed": [
        "esnext.string.is-well-formed"
    ],
        "core-js/actual/instance/keys": [
        "es.array.iterator",
        "es.object.to-string",
        "web.dom-collections.iterator"
    ],
        "core-js/actual/instance/last-index-of": [
        "es.array.last-index-of"
    ],
        "core-js/actual/instance/map": [
        "es.array.map"
    ],
        "core-js/actual/instance/match-all": [
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.match-all"
    ],
        "core-js/actual/instance/pad-end": [
        "es.string.pad-end"
    ],
        "core-js/actual/instance/pad-start": [
        "es.string.pad-start"
    ],
        "core-js/actual/instance/push": [
        "es.array.push"
    ],
        "core-js/actual/instance/reduce": [
        "es.array.reduce"
    ],
        "core-js/actual/instance/reduce-right": [
        "es.array.reduce-right"
    ],
        "core-js/actual/instance/repeat": [
        "es.string.repeat"
    ],
        "core-js/actual/instance/replace-all": [
        "es.regexp.exec",
        "es.string.replace",
        "es.string.replace-all"
    ],
        "core-js/actual/instance/reverse": [
        "es.array.reverse"
    ],
        "core-js/actual/instance/slice": [
        "es.array.slice"
    ],
        "core-js/actual/instance/some": [
        "es.array.some"
    ],
        "core-js/actual/instance/sort": [
        "es.array.sort"
    ],
        "core-js/actual/instance/splice": [
        "es.array.splice"
    ],
        "core-js/actual/instance/starts-with": [
        "es.string.starts-with"
    ],
        "core-js/actual/instance/to-reversed": [
        "es.array.to-reversed",
        "esnext.array.to-reversed"
    ],
        "core-js/actual/instance/to-sorted": [
        "es.array.sort",
        "es.array.to-sorted",
        "esnext.array.to-sorted"
    ],
        "core-js/actual/instance/to-spliced": [
        "es.array.to-spliced",
        "esnext.array.to-spliced"
    ],
        "core-js/actual/instance/to-well-formed": [
        "esnext.string.to-well-formed"
    ],
        "core-js/actual/instance/trim": [
        "es.string.trim"
    ],
        "core-js/actual/instance/trim-end": [
        "es.string.trim-end"
    ],
        "core-js/actual/instance/trim-left": [
        "es.string.trim-start"
    ],
        "core-js/actual/instance/trim-right": [
        "es.string.trim-end"
    ],
        "core-js/actual/instance/trim-start": [
        "es.string.trim-start"
    ],
        "core-js/actual/instance/unshift": [
        "es.array.unshift"
    ],
        "core-js/actual/instance/values": [
        "es.array.iterator",
        "es.object.to-string",
        "web.dom-collections.iterator"
    ],
        "core-js/actual/instance/with": [
        "es.array.with",
        "esnext.array.with"
    ],
        "core-js/actual/is-iterable": [
        "es.array.iterator",
        "es.string.iterator",
        "web.dom-collections.iterator"
    ],
        "core-js/actual/iterator": [
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "esnext.iterator.constructor",
        "esnext.iterator.dispose",
        "esnext.iterator.drop",
        "esnext.iterator.every",
        "esnext.iterator.filter",
        "esnext.iterator.find",
        "esnext.iterator.flat-map",
        "esnext.iterator.for-each",
        "esnext.iterator.from",
        "esnext.iterator.map",
        "esnext.iterator.reduce",
        "esnext.iterator.some",
        "esnext.iterator.take",
        "esnext.iterator.to-array",
        "esnext.iterator.to-async",
        "web.dom-collections.iterator"
    ],
        "core-js/actual/iterator/dispose": [
        "esnext.iterator.dispose"
    ],
        "core-js/actual/iterator/drop": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.drop"
    ],
        "core-js/actual/iterator/every": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.every"
    ],
        "core-js/actual/iterator/filter": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.filter"
    ],
        "core-js/actual/iterator/find": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.find"
    ],
        "core-js/actual/iterator/flat-map": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.flat-map"
    ],
        "core-js/actual/iterator/for-each": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.for-each"
    ],
        "core-js/actual/iterator/from": [
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "esnext.iterator.constructor",
        "esnext.iterator.dispose",
        "esnext.iterator.drop",
        "esnext.iterator.every",
        "esnext.iterator.filter",
        "esnext.iterator.find",
        "esnext.iterator.flat-map",
        "esnext.iterator.for-each",
        "esnext.iterator.from",
        "esnext.iterator.map",
        "esnext.iterator.reduce",
        "esnext.iterator.some",
        "esnext.iterator.take",
        "esnext.iterator.to-array",
        "esnext.iterator.to-async",
        "web.dom-collections.iterator"
    ],
        "core-js/actual/iterator/map": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.map"
    ],
        "core-js/actual/iterator/reduce": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.reduce"
    ],
        "core-js/actual/iterator/some": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.some"
    ],
        "core-js/actual/iterator/take": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.take"
    ],
        "core-js/actual/iterator/to-array": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.to-array"
    ],
        "core-js/actual/iterator/to-async": [
        "es.object.to-string",
        "es.promise",
        "esnext.iterator.constructor",
        "esnext.iterator.to-async"
    ],
        "core-js/actual/json": [
        "es.json.stringify",
        "es.json.to-string-tag",
        "es.object.create",
        "es.object.freeze",
        "es.object.keys",
        "esnext.json.is-raw-json",
        "esnext.json.parse",
        "esnext.json.raw-json"
    ],
        "core-js/actual/json/is-raw-json": [
        "esnext.json.is-raw-json"
    ],
        "core-js/actual/json/parse": [
        "es.object.keys",
        "esnext.json.parse"
    ],
        "core-js/actual/json/raw-json": [
        "es.object.create",
        "es.object.freeze",
        "esnext.json.raw-json"
    ],
        "core-js/actual/json/stringify": [
        "es.json.stringify"
    ],
        "core-js/actual/json/to-string-tag": [
        "es.json.to-string-tag"
    ],
        "core-js/actual/map": [
        "es.array.iterator",
        "es.map",
        "es.object.to-string",
        "es.string.iterator",
        "web.dom-collections.iterator"
    ],
        "core-js/actual/math": [
        "es.math.acosh",
        "es.math.asinh",
        "es.math.atanh",
        "es.math.cbrt",
        "es.math.clz32",
        "es.math.cosh",
        "es.math.expm1",
        "es.math.fround",
        "es.math.hypot",
        "es.math.imul",
        "es.math.log10",
        "es.math.log1p",
        "es.math.log2",
        "es.math.sign",
        "es.math.sinh",
        "es.math.tanh",
        "es.math.to-string-tag",
        "es.math.trunc"
    ],
        "core-js/actual/math/acosh": [
        "es.math.acosh"
    ],
        "core-js/actual/math/asinh": [
        "es.math.asinh"
    ],
        "core-js/actual/math/atanh": [
        "es.math.atanh"
    ],
        "core-js/actual/math/cbrt": [
        "es.math.cbrt"
    ],
        "core-js/actual/math/clz32": [
        "es.math.clz32"
    ],
        "core-js/actual/math/cosh": [
        "es.math.cosh"
    ],
        "core-js/actual/math/expm1": [
        "es.math.expm1"
    ],
        "core-js/actual/math/fround": [
        "es.math.fround"
    ],
        "core-js/actual/math/hypot": [
        "es.math.hypot"
    ],
        "core-js/actual/math/imul": [
        "es.math.imul"
    ],
        "core-js/actual/math/log10": [
        "es.math.log10"
    ],
        "core-js/actual/math/log1p": [
        "es.math.log1p"
    ],
        "core-js/actual/math/log2": [
        "es.math.log2"
    ],
        "core-js/actual/math/sign": [
        "es.math.sign"
    ],
        "core-js/actual/math/sinh": [
        "es.math.sinh"
    ],
        "core-js/actual/math/tanh": [
        "es.math.tanh"
    ],
        "core-js/actual/math/to-string-tag": [
        "es.math.to-string-tag"
    ],
        "core-js/actual/math/trunc": [
        "es.math.trunc"
    ],
        "core-js/actual/number": [
        "es.number.constructor",
        "es.number.epsilon",
        "es.number.is-finite",
        "es.number.is-integer",
        "es.number.is-nan",
        "es.number.is-safe-integer",
        "es.number.max-safe-integer",
        "es.number.min-safe-integer",
        "es.number.parse-float",
        "es.number.parse-int",
        "es.number.to-exponential",
        "es.number.to-fixed",
        "es.number.to-precision"
    ],
        "core-js/actual/number/constructor": [
        "es.number.constructor"
    ],
        "core-js/actual/number/epsilon": [
        "es.number.epsilon"
    ],
        "core-js/actual/number/is-finite": [
        "es.number.is-finite"
    ],
        "core-js/actual/number/is-integer": [
        "es.number.is-integer"
    ],
        "core-js/actual/number/is-nan": [
        "es.number.is-nan"
    ],
        "core-js/actual/number/is-safe-integer": [
        "es.number.is-safe-integer"
    ],
        "core-js/actual/number/max-safe-integer": [
        "es.number.max-safe-integer"
    ],
        "core-js/actual/number/min-safe-integer": [
        "es.number.min-safe-integer"
    ],
        "core-js/actual/number/parse-float": [
        "es.number.parse-float"
    ],
        "core-js/actual/number/parse-int": [
        "es.number.parse-int"
    ],
        "core-js/actual/number/to-exponential": [
        "es.number.to-exponential"
    ],
        "core-js/actual/number/to-fixed": [
        "es.number.to-fixed"
    ],
        "core-js/actual/number/to-precision": [
        "es.number.to-precision"
    ],
        "core-js/actual/number/virtual": [
        "es.number.to-exponential",
        "es.number.to-fixed",
        "es.number.to-precision"
    ],
        "core-js/actual/number/virtual/to-exponential": [
        "es.number.to-exponential"
    ],
        "core-js/actual/number/virtual/to-fixed": [
        "es.number.to-fixed"
    ],
        "core-js/actual/number/virtual/to-precision": [
        "es.number.to-precision"
    ],
        "core-js/actual/object": [
        "es.symbol",
        "es.json.to-string-tag",
        "es.math.to-string-tag",
        "es.object.assign",
        "es.object.create",
        "es.object.define-getter",
        "es.object.define-properties",
        "es.object.define-property",
        "es.object.define-setter",
        "es.object.entries",
        "es.object.freeze",
        "es.object.from-entries",
        "es.object.get-own-property-descriptor",
        "es.object.get-own-property-descriptors",
        "es.object.get-own-property-names",
        "es.object.get-prototype-of",
        "es.object.has-own",
        "es.object.is",
        "es.object.is-extensible",
        "es.object.is-frozen",
        "es.object.is-sealed",
        "es.object.keys",
        "es.object.lookup-getter",
        "es.object.lookup-setter",
        "es.object.prevent-extensions",
        "es.object.proto",
        "es.object.seal",
        "es.object.set-prototype-of",
        "es.object.to-string",
        "es.object.values",
        "es.reflect.to-string-tag",
        "web.dom-collections.iterator"
    ],
        "core-js/actual/object/assign": [
        "es.object.assign"
    ],
        "core-js/actual/object/create": [
        "es.object.create"
    ],
        "core-js/actual/object/define-getter": [
        "es.object.define-getter"
    ],
        "core-js/actual/object/define-properties": [
        "es.object.define-properties"
    ],
        "core-js/actual/object/define-property": [
        "es.object.define-property"
    ],
        "core-js/actual/object/define-setter": [
        "es.object.define-setter"
    ],
        "core-js/actual/object/entries": [
        "es.object.entries"
    ],
        "core-js/actual/object/freeze": [
        "es.object.freeze"
    ],
        "core-js/actual/object/from-entries": [
        "es.array.iterator",
        "es.object.from-entries",
        "web.dom-collections.iterator"
    ],
        "core-js/actual/object/get-own-property-descriptor": [
        "es.object.get-own-property-descriptor"
    ],
        "core-js/actual/object/get-own-property-descriptors": [
        "es.object.get-own-property-descriptors"
    ],
        "core-js/actual/object/get-own-property-names": [
        "es.object.get-own-property-names"
    ],
        "core-js/actual/object/get-own-property-symbols": [
        "es.symbol"
    ],
        "core-js/actual/object/get-prototype-of": [
        "es.object.get-prototype-of"
    ],
        "core-js/actual/object/has-own": [
        "es.object.has-own"
    ],
        "core-js/actual/object/is": [
        "es.object.is"
    ],
        "core-js/actual/object/is-extensible": [
        "es.object.is-extensible"
    ],
        "core-js/actual/object/is-frozen": [
        "es.object.is-frozen"
    ],
        "core-js/actual/object/is-sealed": [
        "es.object.is-sealed"
    ],
        "core-js/actual/object/keys": [
        "es.object.keys"
    ],
        "core-js/actual/object/lookup-getter": [
        "es.object.lookup-getter"
    ],
        "core-js/actual/object/lookup-setter": [
        "es.object.lookup-setter"
    ],
        "core-js/actual/object/prevent-extensions": [
        "es.object.prevent-extensions"
    ],
        "core-js/actual/object/proto": [
        "es.object.proto"
    ],
        "core-js/actual/object/seal": [
        "es.object.seal"
    ],
        "core-js/actual/object/set-prototype-of": [
        "es.object.set-prototype-of"
    ],
        "core-js/actual/object/to-string": [
        "es.json.to-string-tag",
        "es.math.to-string-tag",
        "es.object.to-string",
        "es.reflect.to-string-tag"
    ],
        "core-js/actual/object/values": [
        "es.object.values"
    ],
        "core-js/actual/parse-float": [
        "es.parse-float"
    ],
        "core-js/actual/parse-int": [
        "es.parse-int"
    ],
        "core-js/actual/promise": [
        "es.aggregate-error",
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.promise.all-settled",
        "es.promise.any",
        "es.promise.finally",
        "es.string.iterator",
        "web.dom-collections.iterator"
    ],
        "core-js/actual/promise/all-settled": [
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.promise.all-settled",
        "es.string.iterator",
        "web.dom-collections.iterator"
    ],
        "core-js/actual/promise/any": [
        "es.aggregate-error",
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.promise.any",
        "es.string.iterator",
        "web.dom-collections.iterator"
    ],
        "core-js/actual/promise/finally": [
        "es.object.to-string",
        "es.promise",
        "es.promise.finally"
    ],
        "core-js/actual/queue-microtask": [
        "web.queue-microtask"
    ],
        "core-js/actual/reflect": [
        "es.object.to-string",
        "es.reflect.apply",
        "es.reflect.construct",
        "es.reflect.define-property",
        "es.reflect.delete-property",
        "es.reflect.get",
        "es.reflect.get-own-property-descriptor",
        "es.reflect.get-prototype-of",
        "es.reflect.has",
        "es.reflect.is-extensible",
        "es.reflect.own-keys",
        "es.reflect.prevent-extensions",
        "es.reflect.set",
        "es.reflect.set-prototype-of",
        "es.reflect.to-string-tag"
    ],
        "core-js/actual/reflect/apply": [
        "es.reflect.apply"
    ],
        "core-js/actual/reflect/construct": [
        "es.reflect.construct"
    ],
        "core-js/actual/reflect/define-property": [
        "es.reflect.define-property"
    ],
        "core-js/actual/reflect/delete-property": [
        "es.reflect.delete-property"
    ],
        "core-js/actual/reflect/get": [
        "es.reflect.get"
    ],
        "core-js/actual/reflect/get-own-property-descriptor": [
        "es.reflect.get-own-property-descriptor"
    ],
        "core-js/actual/reflect/get-prototype-of": [
        "es.reflect.get-prototype-of"
    ],
        "core-js/actual/reflect/has": [
        "es.reflect.has"
    ],
        "core-js/actual/reflect/is-extensible": [
        "es.reflect.is-extensible"
    ],
        "core-js/actual/reflect/own-keys": [
        "es.reflect.own-keys"
    ],
        "core-js/actual/reflect/prevent-extensions": [
        "es.reflect.prevent-extensions"
    ],
        "core-js/actual/reflect/set": [
        "es.reflect.set"
    ],
        "core-js/actual/reflect/set-prototype-of": [
        "es.reflect.set-prototype-of"
    ],
        "core-js/actual/reflect/to-string-tag": [
        "es.reflect.to-string-tag"
    ],
        "core-js/actual/regexp": [
        "es.regexp.constructor",
        "es.regexp.dot-all",
        "es.regexp.exec",
        "es.regexp.flags",
        "es.regexp.sticky",
        "es.regexp.test",
        "es.regexp.to-string",
        "es.string.match",
        "es.string.replace",
        "es.string.search",
        "es.string.split"
    ],
        "core-js/actual/regexp/constructor": [
        "es.regexp.constructor",
        "es.regexp.dot-all",
        "es.regexp.exec",
        "es.regexp.sticky"
    ],
        "core-js/actual/regexp/dot-all": [
        "es.regexp.constructor",
        "es.regexp.dot-all",
        "es.regexp.exec"
    ],
        "core-js/actual/regexp/flags": [
        "es.regexp.flags"
    ],
        "core-js/actual/regexp/match": [
        "es.regexp.exec",
        "es.string.match"
    ],
        "core-js/actual/regexp/replace": [
        "es.regexp.exec",
        "es.string.replace"
    ],
        "core-js/actual/regexp/search": [
        "es.regexp.exec",
        "es.string.search"
    ],
        "core-js/actual/regexp/split": [
        "es.regexp.exec",
        "es.string.split"
    ],
        "core-js/actual/regexp/sticky": [
        "es.regexp.constructor",
        "es.regexp.exec",
        "es.regexp.sticky"
    ],
        "core-js/actual/regexp/test": [
        "es.regexp.exec",
        "es.regexp.test"
    ],
        "core-js/actual/regexp/to-string": [
        "es.regexp.to-string"
    ],
        "core-js/actual/self": [
        "web.self"
    ],
        "core-js/actual/set": [
        "es.array.iterator",
        "es.object.to-string",
        "es.set",
        "es.string.iterator",
        "esnext.set.difference.v2",
        "esnext.set.intersection.v2",
        "esnext.set.is-disjoint-from.v2",
        "esnext.set.is-subset-of.v2",
        "esnext.set.is-superset-of.v2",
        "esnext.set.symmetric-difference.v2",
        "esnext.set.union.v2",
        "web.dom-collections.iterator"
    ],
        "core-js/actual/set-immediate": [
        "web.immediate"
    ],
        "core-js/actual/set-interval": [
        "web.timers"
    ],
        "core-js/actual/set-timeout": [
        "web.timers"
    ],
        "core-js/actual/set/difference": [
        "es.set",
        "esnext.set.difference.v2"
    ],
        "core-js/actual/set/intersection": [
        "es.set",
        "esnext.set.intersection.v2"
    ],
        "core-js/actual/set/is-disjoint-from": [
        "es.set",
        "esnext.set.is-disjoint-from.v2"
    ],
        "core-js/actual/set/is-subset-of": [
        "es.set",
        "esnext.set.is-subset-of.v2"
    ],
        "core-js/actual/set/is-superset-of": [
        "es.set",
        "esnext.set.is-superset-of.v2"
    ],
        "core-js/actual/set/symmetric-difference": [
        "es.set",
        "esnext.set.symmetric-difference.v2"
    ],
        "core-js/actual/set/union": [
        "es.set",
        "esnext.set.union.v2"
    ],
        "core-js/actual/string": [
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.at-alternative",
        "es.string.code-point-at",
        "es.string.ends-with",
        "es.string.from-code-point",
        "es.string.includes",
        "es.string.iterator",
        "es.string.match",
        "es.string.match-all",
        "es.string.pad-end",
        "es.string.pad-start",
        "es.string.raw",
        "es.string.repeat",
        "es.string.replace",
        "es.string.replace-all",
        "es.string.search",
        "es.string.split",
        "es.string.starts-with",
        "es.string.substr",
        "es.string.trim",
        "es.string.trim-end",
        "es.string.trim-start",
        "es.string.anchor",
        "es.string.big",
        "es.string.blink",
        "es.string.bold",
        "es.string.fixed",
        "es.string.fontcolor",
        "es.string.fontsize",
        "es.string.italics",
        "es.string.link",
        "es.string.small",
        "es.string.strike",
        "es.string.sub",
        "es.string.sup",
        "esnext.string.is-well-formed",
        "esnext.string.to-well-formed"
    ],
        "core-js/actual/string/anchor": [
        "es.string.anchor"
    ],
        "core-js/actual/string/at": [
        "es.string.at-alternative"
    ],
        "core-js/actual/string/big": [
        "es.string.big"
    ],
        "core-js/actual/string/blink": [
        "es.string.blink"
    ],
        "core-js/actual/string/bold": [
        "es.string.bold"
    ],
        "core-js/actual/string/code-point-at": [
        "es.string.code-point-at"
    ],
        "core-js/actual/string/ends-with": [
        "es.string.ends-with"
    ],
        "core-js/actual/string/fixed": [
        "es.string.fixed"
    ],
        "core-js/actual/string/fontcolor": [
        "es.string.fontcolor"
    ],
        "core-js/actual/string/fontsize": [
        "es.string.fontsize"
    ],
        "core-js/actual/string/from-code-point": [
        "es.string.from-code-point"
    ],
        "core-js/actual/string/includes": [
        "es.string.includes"
    ],
        "core-js/actual/string/is-well-formed": [
        "esnext.string.is-well-formed"
    ],
        "core-js/actual/string/italics": [
        "es.string.italics"
    ],
        "core-js/actual/string/iterator": [
        "es.object.to-string",
        "es.string.iterator"
    ],
        "core-js/actual/string/link": [
        "es.string.link"
    ],
        "core-js/actual/string/match": [
        "es.regexp.exec",
        "es.string.match"
    ],
        "core-js/actual/string/match-all": [
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.match-all"
    ],
        "core-js/actual/string/pad-end": [
        "es.string.pad-end"
    ],
        "core-js/actual/string/pad-start": [
        "es.string.pad-start"
    ],
        "core-js/actual/string/raw": [
        "es.string.raw"
    ],
        "core-js/actual/string/repeat": [
        "es.string.repeat"
    ],
        "core-js/actual/string/replace": [
        "es.regexp.exec",
        "es.string.replace"
    ],
        "core-js/actual/string/replace-all": [
        "es.regexp.exec",
        "es.string.replace",
        "es.string.replace-all"
    ],
        "core-js/actual/string/search": [
        "es.regexp.exec",
        "es.string.search"
    ],
        "core-js/actual/string/small": [
        "es.string.small"
    ],
        "core-js/actual/string/split": [
        "es.regexp.exec",
        "es.string.split"
    ],
        "core-js/actual/string/starts-with": [
        "es.string.starts-with"
    ],
        "core-js/actual/string/strike": [
        "es.string.strike"
    ],
        "core-js/actual/string/sub": [
        "es.string.sub"
    ],
        "core-js/actual/string/substr": [
        "es.string.substr"
    ],
        "core-js/actual/string/sup": [
        "es.string.sup"
    ],
        "core-js/actual/string/to-well-formed": [
        "esnext.string.to-well-formed"
    ],
        "core-js/actual/string/trim": [
        "es.string.trim"
    ],
        "core-js/actual/string/trim-end": [
        "es.string.trim-end"
    ],
        "core-js/actual/string/trim-left": [
        "es.string.trim-start"
    ],
        "core-js/actual/string/trim-right": [
        "es.string.trim-end"
    ],
        "core-js/actual/string/trim-start": [
        "es.string.trim-start"
    ],
        "core-js/actual/string/virtual": [
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.at-alternative",
        "es.string.code-point-at",
        "es.string.ends-with",
        "es.string.includes",
        "es.string.iterator",
        "es.string.match",
        "es.string.match-all",
        "es.string.pad-end",
        "es.string.pad-start",
        "es.string.repeat",
        "es.string.replace",
        "es.string.replace-all",
        "es.string.search",
        "es.string.split",
        "es.string.starts-with",
        "es.string.substr",
        "es.string.trim",
        "es.string.trim-end",
        "es.string.trim-start",
        "es.string.anchor",
        "es.string.big",
        "es.string.blink",
        "es.string.bold",
        "es.string.fixed",
        "es.string.fontcolor",
        "es.string.fontsize",
        "es.string.italics",
        "es.string.link",
        "es.string.small",
        "es.string.strike",
        "es.string.sub",
        "es.string.sup",
        "esnext.string.is-well-formed",
        "esnext.string.to-well-formed"
    ],
        "core-js/actual/string/virtual/anchor": [
        "es.string.anchor"
    ],
        "core-js/actual/string/virtual/at": [
        "es.string.at-alternative"
    ],
        "core-js/actual/string/virtual/big": [
        "es.string.big"
    ],
        "core-js/actual/string/virtual/blink": [
        "es.string.blink"
    ],
        "core-js/actual/string/virtual/bold": [
        "es.string.bold"
    ],
        "core-js/actual/string/virtual/code-point-at": [
        "es.string.code-point-at"
    ],
        "core-js/actual/string/virtual/ends-with": [
        "es.string.ends-with"
    ],
        "core-js/actual/string/virtual/fixed": [
        "es.string.fixed"
    ],
        "core-js/actual/string/virtual/fontcolor": [
        "es.string.fontcolor"
    ],
        "core-js/actual/string/virtual/fontsize": [
        "es.string.fontsize"
    ],
        "core-js/actual/string/virtual/includes": [
        "es.string.includes"
    ],
        "core-js/actual/string/virtual/is-well-formed": [
        "esnext.string.is-well-formed"
    ],
        "core-js/actual/string/virtual/italics": [
        "es.string.italics"
    ],
        "core-js/actual/string/virtual/iterator": [
        "es.object.to-string",
        "es.string.iterator"
    ],
        "core-js/actual/string/virtual/link": [
        "es.string.link"
    ],
        "core-js/actual/string/virtual/match-all": [
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.match-all"
    ],
        "core-js/actual/string/virtual/pad-end": [
        "es.string.pad-end"
    ],
        "core-js/actual/string/virtual/pad-start": [
        "es.string.pad-start"
    ],
        "core-js/actual/string/virtual/repeat": [
        "es.string.repeat"
    ],
        "core-js/actual/string/virtual/replace-all": [
        "es.regexp.exec",
        "es.string.replace",
        "es.string.replace-all"
    ],
        "core-js/actual/string/virtual/small": [
        "es.string.small"
    ],
        "core-js/actual/string/virtual/starts-with": [
        "es.string.starts-with"
    ],
        "core-js/actual/string/virtual/strike": [
        "es.string.strike"
    ],
        "core-js/actual/string/virtual/sub": [
        "es.string.sub"
    ],
        "core-js/actual/string/virtual/substr": [
        "es.string.substr"
    ],
        "core-js/actual/string/virtual/sup": [
        "es.string.sup"
    ],
        "core-js/actual/string/virtual/to-well-formed": [
        "esnext.string.to-well-formed"
    ],
        "core-js/actual/string/virtual/trim": [
        "es.string.trim"
    ],
        "core-js/actual/string/virtual/trim-end": [
        "es.string.trim-end"
    ],
        "core-js/actual/string/virtual/trim-left": [
        "es.string.trim-start"
    ],
        "core-js/actual/string/virtual/trim-right": [
        "es.string.trim-end"
    ],
        "core-js/actual/string/virtual/trim-start": [
        "es.string.trim-start"
    ],
        "core-js/actual/structured-clone": [
        "es.error.to-string",
        "es.array.iterator",
        "es.map",
        "es.object.keys",
        "es.object.to-string",
        "es.set",
        "web.dom-exception.constructor",
        "web.dom-exception.stack",
        "web.dom-exception.to-string-tag",
        "web.structured-clone"
    ],
        "core-js/actual/suppressed-error": [
        "es.error.cause",
        "es.error.to-string",
        "esnext.suppressed-error.constructor"
    ],
        "core-js/actual/symbol": [
        "es.symbol",
        "es.symbol.description",
        "es.symbol.async-iterator",
        "es.symbol.has-instance",
        "es.symbol.is-concat-spreadable",
        "es.symbol.iterator",
        "es.symbol.match",
        "es.symbol.match-all",
        "es.symbol.replace",
        "es.symbol.search",
        "es.symbol.species",
        "es.symbol.split",
        "es.symbol.to-primitive",
        "es.symbol.to-string-tag",
        "es.symbol.unscopables",
        "es.array.concat",
        "es.json.to-string-tag",
        "es.math.to-string-tag",
        "es.object.to-string",
        "es.reflect.to-string-tag",
        "esnext.symbol.dispose",
        "web.dom-collections.iterator"
    ],
        "core-js/actual/symbol/async-iterator": [
        "es.symbol.async-iterator"
    ],
        "core-js/actual/symbol/description": [
        "es.symbol.description"
    ],
        "core-js/actual/symbol/dispose": [
        "esnext.symbol.dispose"
    ],
        "core-js/actual/symbol/for": [
        "es.symbol"
    ],
        "core-js/actual/symbol/has-instance": [
        "es.symbol.has-instance",
        "es.function.has-instance"
    ],
        "core-js/actual/symbol/is-concat-spreadable": [
        "es.symbol.is-concat-spreadable",
        "es.array.concat"
    ],
        "core-js/actual/symbol/iterator": [
        "es.symbol.iterator",
        "es.array.iterator",
        "es.object.to-string",
        "es.string.iterator",
        "web.dom-collections.iterator"
    ],
        "core-js/actual/symbol/key-for": [
        "es.symbol"
    ],
        "core-js/actual/symbol/match": [
        "es.symbol.match",
        "es.regexp.exec",
        "es.string.match"
    ],
        "core-js/actual/symbol/match-all": [
        "es.symbol.match-all",
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.match-all"
    ],
        "core-js/actual/symbol/replace": [
        "es.symbol.replace",
        "es.regexp.exec",
        "es.string.replace"
    ],
        "core-js/actual/symbol/search": [
        "es.symbol.search",
        "es.regexp.exec",
        "es.string.search"
    ],
        "core-js/actual/symbol/species": [
        "es.symbol.species"
    ],
        "core-js/actual/symbol/split": [
        "es.symbol.split",
        "es.regexp.exec",
        "es.string.split"
    ],
        "core-js/actual/symbol/to-primitive": [
        "es.symbol.to-primitive",
        "es.date.to-primitive"
    ],
        "core-js/actual/symbol/to-string-tag": [
        "es.symbol.to-string-tag",
        "es.json.to-string-tag",
        "es.math.to-string-tag",
        "es.object.to-string",
        "es.reflect.to-string-tag"
    ],
        "core-js/actual/symbol/unscopables": [
        "es.symbol.unscopables"
    ],
        "core-js/actual/typed-array": [
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.float32-array",
        "es.typed-array.float64-array",
        "es.typed-array.int8-array",
        "es.typed-array.int16-array",
        "es.typed-array.int32-array",
        "es.typed-array.uint8-array",
        "es.typed-array.uint8-clamped-array",
        "es.typed-array.uint16-array",
        "es.typed-array.uint32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.with"
    ],
        "core-js/actual/typed-array/at": [
        "es.typed-array.at"
    ],
        "core-js/actual/typed-array/copy-within": [
        "es.typed-array.copy-within"
    ],
        "core-js/actual/typed-array/entries": [
        "es.object.to-string",
        "es.typed-array.iterator"
    ],
        "core-js/actual/typed-array/every": [
        "es.typed-array.every"
    ],
        "core-js/actual/typed-array/fill": [
        "es.typed-array.fill"
    ],
        "core-js/actual/typed-array/filter": [
        "es.typed-array.filter"
    ],
        "core-js/actual/typed-array/find": [
        "es.typed-array.find"
    ],
        "core-js/actual/typed-array/find-index": [
        "es.typed-array.find-index"
    ],
        "core-js/actual/typed-array/find-last": [
        "es.typed-array.find-last",
        "esnext.typed-array.find-last"
    ],
        "core-js/actual/typed-array/find-last-index": [
        "es.typed-array.find-last-index",
        "esnext.typed-array.find-last-index"
    ],
        "core-js/actual/typed-array/float32-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.float32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.with"
    ],
        "core-js/actual/typed-array/float64-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.float64-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.with"
    ],
        "core-js/actual/typed-array/for-each": [
        "es.typed-array.for-each"
    ],
        "core-js/actual/typed-array/from": [
        "es.typed-array.from"
    ],
        "core-js/actual/typed-array/includes": [
        "es.typed-array.includes"
    ],
        "core-js/actual/typed-array/index-of": [
        "es.typed-array.index-of"
    ],
        "core-js/actual/typed-array/int16-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.int16-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.with"
    ],
        "core-js/actual/typed-array/int32-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.int32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.with"
    ],
        "core-js/actual/typed-array/int8-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.int8-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.with"
    ],
        "core-js/actual/typed-array/iterator": [
        "es.object.to-string",
        "es.typed-array.iterator"
    ],
        "core-js/actual/typed-array/join": [
        "es.typed-array.join"
    ],
        "core-js/actual/typed-array/keys": [
        "es.object.to-string",
        "es.typed-array.iterator"
    ],
        "core-js/actual/typed-array/last-index-of": [
        "es.typed-array.last-index-of"
    ],
        "core-js/actual/typed-array/map": [
        "es.typed-array.map"
    ],
        "core-js/actual/typed-array/methods": [
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.with"
    ],
        "core-js/actual/typed-array/of": [
        "es.typed-array.of"
    ],
        "core-js/actual/typed-array/reduce": [
        "es.typed-array.reduce"
    ],
        "core-js/actual/typed-array/reduce-right": [
        "es.typed-array.reduce-right"
    ],
        "core-js/actual/typed-array/reverse": [
        "es.typed-array.reverse"
    ],
        "core-js/actual/typed-array/set": [
        "es.typed-array.set"
    ],
        "core-js/actual/typed-array/slice": [
        "es.typed-array.slice"
    ],
        "core-js/actual/typed-array/some": [
        "es.typed-array.some"
    ],
        "core-js/actual/typed-array/sort": [
        "es.typed-array.sort"
    ],
        "core-js/actual/typed-array/subarray": [
        "es.typed-array.subarray"
    ],
        "core-js/actual/typed-array/to-locale-string": [
        "es.typed-array.to-locale-string"
    ],
        "core-js/actual/typed-array/to-reversed": [
        "esnext.typed-array.to-reversed"
    ],
        "core-js/actual/typed-array/to-sorted": [
        "es.typed-array.sort",
        "es.typed-array.to-sorted",
        "esnext.typed-array.to-sorted"
    ],
        "core-js/actual/typed-array/to-spliced": [
        "esnext.typed-array.to-spliced"
    ],
        "core-js/actual/typed-array/to-string": [
        "es.typed-array.to-string"
    ],
        "core-js/actual/typed-array/uint16-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.uint16-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.with"
    ],
        "core-js/actual/typed-array/uint32-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.uint32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.with"
    ],
        "core-js/actual/typed-array/uint8-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.uint8-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.with"
    ],
        "core-js/actual/typed-array/uint8-clamped-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.uint8-clamped-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.with"
    ],
        "core-js/actual/typed-array/values": [
        "es.object.to-string",
        "es.typed-array.iterator"
    ],
        "core-js/actual/typed-array/with": [
        "esnext.typed-array.with"
    ],
        "core-js/actual/unescape": [
        "es.unescape"
    ],
        "core-js/actual/url": [
        "web.url",
        "web.url.to-json",
        "web.url-search-params",
        "web.url-search-params.size"
    ],
        "core-js/actual/url-search-params": [
        "web.dom-collections.iterator",
        "web.url-search-params",
        "web.url-search-params.size"
    ],
        "core-js/actual/url/to-json": [
        "web.url.to-json"
    ],
        "core-js/actual/weak-map": [
        "es.array.iterator",
        "es.object.to-string",
        "es.weak-map",
        "web.dom-collections.iterator"
    ],
        "core-js/actual/weak-set": [
        "es.array.iterator",
        "es.object.to-string",
        "es.weak-set",
        "web.dom-collections.iterator"
    ],
        "core-js/es": [
        "es.symbol",
        "es.symbol.description",
        "es.symbol.async-iterator",
        "es.symbol.has-instance",
        "es.symbol.is-concat-spreadable",
        "es.symbol.iterator",
        "es.symbol.match",
        "es.symbol.match-all",
        "es.symbol.replace",
        "es.symbol.search",
        "es.symbol.species",
        "es.symbol.split",
        "es.symbol.to-primitive",
        "es.symbol.to-string-tag",
        "es.symbol.unscopables",
        "es.error.cause",
        "es.error.to-string",
        "es.aggregate-error",
        "es.aggregate-error.cause",
        "es.array.at",
        "es.array.concat",
        "es.array.copy-within",
        "es.array.every",
        "es.array.fill",
        "es.array.filter",
        "es.array.find",
        "es.array.find-index",
        "es.array.find-last",
        "es.array.find-last-index",
        "es.array.flat",
        "es.array.flat-map",
        "es.array.for-each",
        "es.array.from",
        "es.array.includes",
        "es.array.index-of",
        "es.array.is-array",
        "es.array.iterator",
        "es.array.join",
        "es.array.last-index-of",
        "es.array.map",
        "es.array.of",
        "es.array.push",
        "es.array.reduce",
        "es.array.reduce-right",
        "es.array.reverse",
        "es.array.slice",
        "es.array.some",
        "es.array.sort",
        "es.array.species",
        "es.array.splice",
        "es.array.to-reversed",
        "es.array.to-sorted",
        "es.array.to-spliced",
        "es.array.unscopables.flat",
        "es.array.unscopables.flat-map",
        "es.array.unshift",
        "es.array.with",
        "es.array-buffer.constructor",
        "es.array-buffer.is-view",
        "es.array-buffer.slice",
        "es.data-view",
        "es.date.get-year",
        "es.date.now",
        "es.date.set-year",
        "es.date.to-gmt-string",
        "es.date.to-iso-string",
        "es.date.to-json",
        "es.date.to-primitive",
        "es.date.to-string",
        "es.escape",
        "es.function.bind",
        "es.function.has-instance",
        "es.function.name",
        "es.global-this",
        "es.json.stringify",
        "es.json.to-string-tag",
        "es.map",
        "es.math.acosh",
        "es.math.asinh",
        "es.math.atanh",
        "es.math.cbrt",
        "es.math.clz32",
        "es.math.cosh",
        "es.math.expm1",
        "es.math.fround",
        "es.math.hypot",
        "es.math.imul",
        "es.math.log10",
        "es.math.log1p",
        "es.math.log2",
        "es.math.sign",
        "es.math.sinh",
        "es.math.tanh",
        "es.math.to-string-tag",
        "es.math.trunc",
        "es.number.constructor",
        "es.number.epsilon",
        "es.number.is-finite",
        "es.number.is-integer",
        "es.number.is-nan",
        "es.number.is-safe-integer",
        "es.number.max-safe-integer",
        "es.number.min-safe-integer",
        "es.number.parse-float",
        "es.number.parse-int",
        "es.number.to-exponential",
        "es.number.to-fixed",
        "es.number.to-precision",
        "es.object.assign",
        "es.object.create",
        "es.object.define-getter",
        "es.object.define-properties",
        "es.object.define-property",
        "es.object.define-setter",
        "es.object.entries",
        "es.object.freeze",
        "es.object.from-entries",
        "es.object.get-own-property-descriptor",
        "es.object.get-own-property-descriptors",
        "es.object.get-own-property-names",
        "es.object.get-prototype-of",
        "es.object.has-own",
        "es.object.is",
        "es.object.is-extensible",
        "es.object.is-frozen",
        "es.object.is-sealed",
        "es.object.keys",
        "es.object.lookup-getter",
        "es.object.lookup-setter",
        "es.object.prevent-extensions",
        "es.object.proto",
        "es.object.seal",
        "es.object.set-prototype-of",
        "es.object.to-string",
        "es.object.values",
        "es.parse-float",
        "es.parse-int",
        "es.promise",
        "es.promise.all-settled",
        "es.promise.any",
        "es.promise.finally",
        "es.reflect.apply",
        "es.reflect.construct",
        "es.reflect.define-property",
        "es.reflect.delete-property",
        "es.reflect.get",
        "es.reflect.get-own-property-descriptor",
        "es.reflect.get-prototype-of",
        "es.reflect.has",
        "es.reflect.is-extensible",
        "es.reflect.own-keys",
        "es.reflect.prevent-extensions",
        "es.reflect.set",
        "es.reflect.set-prototype-of",
        "es.reflect.to-string-tag",
        "es.regexp.constructor",
        "es.regexp.dot-all",
        "es.regexp.exec",
        "es.regexp.flags",
        "es.regexp.sticky",
        "es.regexp.test",
        "es.regexp.to-string",
        "es.set",
        "es.string.at-alternative",
        "es.string.code-point-at",
        "es.string.ends-with",
        "es.string.from-code-point",
        "es.string.includes",
        "es.string.iterator",
        "es.string.match",
        "es.string.match-all",
        "es.string.pad-end",
        "es.string.pad-start",
        "es.string.raw",
        "es.string.repeat",
        "es.string.replace",
        "es.string.replace-all",
        "es.string.search",
        "es.string.split",
        "es.string.starts-with",
        "es.string.substr",
        "es.string.trim",
        "es.string.trim-end",
        "es.string.trim-start",
        "es.string.anchor",
        "es.string.big",
        "es.string.blink",
        "es.string.bold",
        "es.string.fixed",
        "es.string.fontcolor",
        "es.string.fontsize",
        "es.string.italics",
        "es.string.link",
        "es.string.small",
        "es.string.strike",
        "es.string.sub",
        "es.string.sup",
        "es.typed-array.float32-array",
        "es.typed-array.float64-array",
        "es.typed-array.int8-array",
        "es.typed-array.int16-array",
        "es.typed-array.int32-array",
        "es.typed-array.uint8-array",
        "es.typed-array.uint8-clamped-array",
        "es.typed-array.uint16-array",
        "es.typed-array.uint32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "es.unescape",
        "es.weak-map",
        "es.weak-set"
    ],
        "core-js/es/aggregate-error": [
        "es.error.cause",
        "es.aggregate-error",
        "es.aggregate-error.cause",
        "es.array.iterator",
        "es.string.iterator"
    ],
        "core-js/es/array": [
        "es.array.at",
        "es.array.concat",
        "es.array.copy-within",
        "es.array.every",
        "es.array.fill",
        "es.array.filter",
        "es.array.find",
        "es.array.find-index",
        "es.array.find-last",
        "es.array.find-last-index",
        "es.array.flat",
        "es.array.flat-map",
        "es.array.for-each",
        "es.array.from",
        "es.array.includes",
        "es.array.index-of",
        "es.array.is-array",
        "es.array.iterator",
        "es.array.join",
        "es.array.last-index-of",
        "es.array.map",
        "es.array.of",
        "es.array.push",
        "es.array.reduce",
        "es.array.reduce-right",
        "es.array.reverse",
        "es.array.slice",
        "es.array.some",
        "es.array.sort",
        "es.array.species",
        "es.array.splice",
        "es.array.to-reversed",
        "es.array.to-sorted",
        "es.array.to-spliced",
        "es.array.unscopables.flat",
        "es.array.unscopables.flat-map",
        "es.array.unshift",
        "es.array.with",
        "es.object.to-string",
        "es.string.iterator"
    ],
        "core-js/es/array-buffer": [
        "es.array-buffer.constructor",
        "es.array-buffer.is-view",
        "es.array-buffer.slice",
        "es.object.to-string"
    ],
        "core-js/es/array-buffer/constructor": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string"
    ],
        "core-js/es/array-buffer/is-view": [
        "es.array-buffer.is-view"
    ],
        "core-js/es/array-buffer/slice": [
        "es.array-buffer.slice"
    ],
        "core-js/es/array/at": [
        "es.array.at"
    ],
        "core-js/es/array/concat": [
        "es.array.concat"
    ],
        "core-js/es/array/copy-within": [
        "es.array.copy-within"
    ],
        "core-js/es/array/entries": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/es/array/every": [
        "es.array.every"
    ],
        "core-js/es/array/fill": [
        "es.array.fill"
    ],
        "core-js/es/array/filter": [
        "es.array.filter"
    ],
        "core-js/es/array/find": [
        "es.array.find"
    ],
        "core-js/es/array/find-index": [
        "es.array.find-index"
    ],
        "core-js/es/array/find-last": [
        "es.array.find-last"
    ],
        "core-js/es/array/find-last-index": [
        "es.array.find-last-index"
    ],
        "core-js/es/array/flat": [
        "es.array.flat",
        "es.array.unscopables.flat"
    ],
        "core-js/es/array/flat-map": [
        "es.array.flat-map",
        "es.array.unscopables.flat-map"
    ],
        "core-js/es/array/for-each": [
        "es.array.for-each"
    ],
        "core-js/es/array/from": [
        "es.array.from",
        "es.string.iterator"
    ],
        "core-js/es/array/includes": [
        "es.array.includes"
    ],
        "core-js/es/array/index-of": [
        "es.array.index-of"
    ],
        "core-js/es/array/is-array": [
        "es.array.is-array"
    ],
        "core-js/es/array/iterator": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/es/array/join": [
        "es.array.join"
    ],
        "core-js/es/array/keys": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/es/array/last-index-of": [
        "es.array.last-index-of"
    ],
        "core-js/es/array/map": [
        "es.array.map"
    ],
        "core-js/es/array/of": [
        "es.array.of"
    ],
        "core-js/es/array/push": [
        "es.array.push"
    ],
        "core-js/es/array/reduce": [
        "es.array.reduce"
    ],
        "core-js/es/array/reduce-right": [
        "es.array.reduce-right"
    ],
        "core-js/es/array/reverse": [
        "es.array.reverse"
    ],
        "core-js/es/array/slice": [
        "es.array.slice"
    ],
        "core-js/es/array/some": [
        "es.array.some"
    ],
        "core-js/es/array/sort": [
        "es.array.sort"
    ],
        "core-js/es/array/splice": [
        "es.array.splice"
    ],
        "core-js/es/array/to-reversed": [
        "es.array.to-reversed"
    ],
        "core-js/es/array/to-sorted": [
        "es.array.sort",
        "es.array.to-sorted"
    ],
        "core-js/es/array/to-spliced": [
        "es.array.to-spliced"
    ],
        "core-js/es/array/unshift": [
        "es.array.unshift"
    ],
        "core-js/es/array/values": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/es/array/virtual": [
        "es.array.at",
        "es.array.concat",
        "es.array.copy-within",
        "es.array.every",
        "es.array.fill",
        "es.array.filter",
        "es.array.find",
        "es.array.find-index",
        "es.array.find-last",
        "es.array.find-last-index",
        "es.array.flat",
        "es.array.flat-map",
        "es.array.for-each",
        "es.array.includes",
        "es.array.index-of",
        "es.array.iterator",
        "es.array.join",
        "es.array.last-index-of",
        "es.array.map",
        "es.array.push",
        "es.array.reduce",
        "es.array.reduce-right",
        "es.array.reverse",
        "es.array.slice",
        "es.array.some",
        "es.array.sort",
        "es.array.species",
        "es.array.splice",
        "es.array.to-reversed",
        "es.array.to-sorted",
        "es.array.to-spliced",
        "es.array.unscopables.flat",
        "es.array.unscopables.flat-map",
        "es.array.unshift",
        "es.array.with",
        "es.object.to-string"
    ],
        "core-js/es/array/virtual/at": [
        "es.array.at"
    ],
        "core-js/es/array/virtual/concat": [
        "es.array.concat"
    ],
        "core-js/es/array/virtual/copy-within": [
        "es.array.copy-within"
    ],
        "core-js/es/array/virtual/entries": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/es/array/virtual/every": [
        "es.array.every"
    ],
        "core-js/es/array/virtual/fill": [
        "es.array.fill"
    ],
        "core-js/es/array/virtual/filter": [
        "es.array.filter"
    ],
        "core-js/es/array/virtual/find": [
        "es.array.find"
    ],
        "core-js/es/array/virtual/find-index": [
        "es.array.find-index"
    ],
        "core-js/es/array/virtual/find-last": [
        "es.array.find-last"
    ],
        "core-js/es/array/virtual/find-last-index": [
        "es.array.find-last-index"
    ],
        "core-js/es/array/virtual/flat": [
        "es.array.flat",
        "es.array.unscopables.flat"
    ],
        "core-js/es/array/virtual/flat-map": [
        "es.array.flat-map",
        "es.array.unscopables.flat-map"
    ],
        "core-js/es/array/virtual/for-each": [
        "es.array.for-each"
    ],
        "core-js/es/array/virtual/includes": [
        "es.array.includes"
    ],
        "core-js/es/array/virtual/index-of": [
        "es.array.index-of"
    ],
        "core-js/es/array/virtual/iterator": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/es/array/virtual/join": [
        "es.array.join"
    ],
        "core-js/es/array/virtual/keys": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/es/array/virtual/last-index-of": [
        "es.array.last-index-of"
    ],
        "core-js/es/array/virtual/map": [
        "es.array.map"
    ],
        "core-js/es/array/virtual/push": [
        "es.array.push"
    ],
        "core-js/es/array/virtual/reduce": [
        "es.array.reduce"
    ],
        "core-js/es/array/virtual/reduce-right": [
        "es.array.reduce-right"
    ],
        "core-js/es/array/virtual/reverse": [
        "es.array.reverse"
    ],
        "core-js/es/array/virtual/slice": [
        "es.array.slice"
    ],
        "core-js/es/array/virtual/some": [
        "es.array.some"
    ],
        "core-js/es/array/virtual/sort": [
        "es.array.sort"
    ],
        "core-js/es/array/virtual/splice": [
        "es.array.splice"
    ],
        "core-js/es/array/virtual/to-reversed": [
        "es.array.to-reversed"
    ],
        "core-js/es/array/virtual/to-sorted": [
        "es.array.sort",
        "es.array.to-sorted"
    ],
        "core-js/es/array/virtual/to-spliced": [
        "es.array.to-spliced"
    ],
        "core-js/es/array/virtual/unshift": [
        "es.array.unshift"
    ],
        "core-js/es/array/virtual/values": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/es/array/virtual/with": [
        "es.array.with"
    ],
        "core-js/es/array/with": [
        "es.array.with"
    ],
        "core-js/es/data-view": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.data-view",
        "es.object.to-string"
    ],
        "core-js/es/date": [
        "es.date.get-year",
        "es.date.now",
        "es.date.set-year",
        "es.date.to-gmt-string",
        "es.date.to-iso-string",
        "es.date.to-json",
        "es.date.to-primitive",
        "es.date.to-string"
    ],
        "core-js/es/date/get-year": [
        "es.date.get-year"
    ],
        "core-js/es/date/now": [
        "es.date.now"
    ],
        "core-js/es/date/set-year": [
        "es.date.set-year"
    ],
        "core-js/es/date/to-gmt-string": [
        "es.date.to-gmt-string"
    ],
        "core-js/es/date/to-iso-string": [
        "es.date.to-iso-string",
        "es.date.to-json"
    ],
        "core-js/es/date/to-json": [
        "es.date.to-json"
    ],
        "core-js/es/date/to-primitive": [
        "es.date.to-primitive"
    ],
        "core-js/es/date/to-string": [
        "es.date.to-string"
    ],
        "core-js/es/error": [
        "es.error.cause",
        "es.error.to-string"
    ],
        "core-js/es/error/constructor": [
        "es.error.cause"
    ],
        "core-js/es/error/to-string": [
        "es.error.to-string"
    ],
        "core-js/es/escape": [
        "es.escape"
    ],
        "core-js/es/function": [
        "es.function.bind",
        "es.function.has-instance",
        "es.function.name"
    ],
        "core-js/es/function/bind": [
        "es.function.bind"
    ],
        "core-js/es/function/has-instance": [
        "es.function.has-instance"
    ],
        "core-js/es/function/name": [
        "es.function.name"
    ],
        "core-js/es/function/virtual": [
        "es.function.bind"
    ],
        "core-js/es/function/virtual/bind": [
        "es.function.bind"
    ],
        "core-js/es/get-iterator": [
        "es.array.iterator",
        "es.string.iterator"
    ],
        "core-js/es/get-iterator-method": [
        "es.array.iterator",
        "es.string.iterator"
    ],
        "core-js/es/global-this": [
        "es.global-this"
    ],
        "core-js/es/instance/at": [
        "es.array.at",
        "es.string.at-alternative"
    ],
        "core-js/es/instance/bind": [
        "es.function.bind"
    ],
        "core-js/es/instance/code-point-at": [
        "es.string.code-point-at"
    ],
        "core-js/es/instance/concat": [
        "es.array.concat"
    ],
        "core-js/es/instance/copy-within": [
        "es.array.copy-within"
    ],
        "core-js/es/instance/ends-with": [
        "es.string.ends-with"
    ],
        "core-js/es/instance/entries": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/es/instance/every": [
        "es.array.every"
    ],
        "core-js/es/instance/fill": [
        "es.array.fill"
    ],
        "core-js/es/instance/filter": [
        "es.array.filter"
    ],
        "core-js/es/instance/find": [
        "es.array.find"
    ],
        "core-js/es/instance/find-index": [
        "es.array.find-index"
    ],
        "core-js/es/instance/find-last": [
        "es.array.find-last"
    ],
        "core-js/es/instance/find-last-index": [
        "es.array.find-last-index"
    ],
        "core-js/es/instance/flags": [
        "es.regexp.flags"
    ],
        "core-js/es/instance/flat": [
        "es.array.flat",
        "es.array.unscopables.flat"
    ],
        "core-js/es/instance/flat-map": [
        "es.array.flat-map",
        "es.array.unscopables.flat-map"
    ],
        "core-js/es/instance/for-each": [
        "es.array.for-each"
    ],
        "core-js/es/instance/includes": [
        "es.array.includes",
        "es.string.includes"
    ],
        "core-js/es/instance/index-of": [
        "es.array.index-of"
    ],
        "core-js/es/instance/keys": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/es/instance/last-index-of": [
        "es.array.last-index-of"
    ],
        "core-js/es/instance/map": [
        "es.array.map"
    ],
        "core-js/es/instance/match-all": [
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.match-all"
    ],
        "core-js/es/instance/pad-end": [
        "es.string.pad-end"
    ],
        "core-js/es/instance/pad-start": [
        "es.string.pad-start"
    ],
        "core-js/es/instance/push": [
        "es.array.push"
    ],
        "core-js/es/instance/reduce": [
        "es.array.reduce"
    ],
        "core-js/es/instance/reduce-right": [
        "es.array.reduce-right"
    ],
        "core-js/es/instance/repeat": [
        "es.string.repeat"
    ],
        "core-js/es/instance/replace-all": [
        "es.regexp.exec",
        "es.string.replace",
        "es.string.replace-all"
    ],
        "core-js/es/instance/reverse": [
        "es.array.reverse"
    ],
        "core-js/es/instance/slice": [
        "es.array.slice"
    ],
        "core-js/es/instance/some": [
        "es.array.some"
    ],
        "core-js/es/instance/sort": [
        "es.array.sort"
    ],
        "core-js/es/instance/splice": [
        "es.array.splice"
    ],
        "core-js/es/instance/starts-with": [
        "es.string.starts-with"
    ],
        "core-js/es/instance/to-reversed": [
        "es.array.to-reversed"
    ],
        "core-js/es/instance/to-sorted": [
        "es.array.sort",
        "es.array.to-sorted"
    ],
        "core-js/es/instance/to-spliced": [
        "es.array.to-spliced"
    ],
        "core-js/es/instance/trim": [
        "es.string.trim"
    ],
        "core-js/es/instance/trim-end": [
        "es.string.trim-end"
    ],
        "core-js/es/instance/trim-left": [
        "es.string.trim-start"
    ],
        "core-js/es/instance/trim-right": [
        "es.string.trim-end"
    ],
        "core-js/es/instance/trim-start": [
        "es.string.trim-start"
    ],
        "core-js/es/instance/unshift": [
        "es.array.unshift"
    ],
        "core-js/es/instance/values": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/es/instance/with": [
        "es.array.with"
    ],
        "core-js/es/is-iterable": [
        "es.array.iterator",
        "es.string.iterator"
    ],
        "core-js/es/json": [
        "es.json.stringify",
        "es.json.to-string-tag"
    ],
        "core-js/es/json/stringify": [
        "es.json.stringify"
    ],
        "core-js/es/json/to-string-tag": [
        "es.json.to-string-tag"
    ],
        "core-js/es/map": [
        "es.array.iterator",
        "es.map",
        "es.object.to-string",
        "es.string.iterator"
    ],
        "core-js/es/math": [
        "es.math.acosh",
        "es.math.asinh",
        "es.math.atanh",
        "es.math.cbrt",
        "es.math.clz32",
        "es.math.cosh",
        "es.math.expm1",
        "es.math.fround",
        "es.math.hypot",
        "es.math.imul",
        "es.math.log10",
        "es.math.log1p",
        "es.math.log2",
        "es.math.sign",
        "es.math.sinh",
        "es.math.tanh",
        "es.math.to-string-tag",
        "es.math.trunc"
    ],
        "core-js/es/math/acosh": [
        "es.math.acosh"
    ],
        "core-js/es/math/asinh": [
        "es.math.asinh"
    ],
        "core-js/es/math/atanh": [
        "es.math.atanh"
    ],
        "core-js/es/math/cbrt": [
        "es.math.cbrt"
    ],
        "core-js/es/math/clz32": [
        "es.math.clz32"
    ],
        "core-js/es/math/cosh": [
        "es.math.cosh"
    ],
        "core-js/es/math/expm1": [
        "es.math.expm1"
    ],
        "core-js/es/math/fround": [
        "es.math.fround"
    ],
        "core-js/es/math/hypot": [
        "es.math.hypot"
    ],
        "core-js/es/math/imul": [
        "es.math.imul"
    ],
        "core-js/es/math/log10": [
        "es.math.log10"
    ],
        "core-js/es/math/log1p": [
        "es.math.log1p"
    ],
        "core-js/es/math/log2": [
        "es.math.log2"
    ],
        "core-js/es/math/sign": [
        "es.math.sign"
    ],
        "core-js/es/math/sinh": [
        "es.math.sinh"
    ],
        "core-js/es/math/tanh": [
        "es.math.tanh"
    ],
        "core-js/es/math/to-string-tag": [
        "es.math.to-string-tag"
    ],
        "core-js/es/math/trunc": [
        "es.math.trunc"
    ],
        "core-js/es/number": [
        "es.number.constructor",
        "es.number.epsilon",
        "es.number.is-finite",
        "es.number.is-integer",
        "es.number.is-nan",
        "es.number.is-safe-integer",
        "es.number.max-safe-integer",
        "es.number.min-safe-integer",
        "es.number.parse-float",
        "es.number.parse-int",
        "es.number.to-exponential",
        "es.number.to-fixed",
        "es.number.to-precision"
    ],
        "core-js/es/number/constructor": [
        "es.number.constructor"
    ],
        "core-js/es/number/epsilon": [
        "es.number.epsilon"
    ],
        "core-js/es/number/is-finite": [
        "es.number.is-finite"
    ],
        "core-js/es/number/is-integer": [
        "es.number.is-integer"
    ],
        "core-js/es/number/is-nan": [
        "es.number.is-nan"
    ],
        "core-js/es/number/is-safe-integer": [
        "es.number.is-safe-integer"
    ],
        "core-js/es/number/max-safe-integer": [
        "es.number.max-safe-integer"
    ],
        "core-js/es/number/min-safe-integer": [
        "es.number.min-safe-integer"
    ],
        "core-js/es/number/parse-float": [
        "es.number.parse-float"
    ],
        "core-js/es/number/parse-int": [
        "es.number.parse-int"
    ],
        "core-js/es/number/to-exponential": [
        "es.number.to-exponential"
    ],
        "core-js/es/number/to-fixed": [
        "es.number.to-fixed"
    ],
        "core-js/es/number/to-precision": [
        "es.number.to-precision"
    ],
        "core-js/es/number/virtual": [
        "es.number.to-exponential",
        "es.number.to-fixed",
        "es.number.to-precision"
    ],
        "core-js/es/number/virtual/to-exponential": [
        "es.number.to-exponential"
    ],
        "core-js/es/number/virtual/to-fixed": [
        "es.number.to-fixed"
    ],
        "core-js/es/number/virtual/to-precision": [
        "es.number.to-precision"
    ],
        "core-js/es/object": [
        "es.symbol",
        "es.json.to-string-tag",
        "es.math.to-string-tag",
        "es.object.assign",
        "es.object.create",
        "es.object.define-getter",
        "es.object.define-properties",
        "es.object.define-property",
        "es.object.define-setter",
        "es.object.entries",
        "es.object.freeze",
        "es.object.from-entries",
        "es.object.get-own-property-descriptor",
        "es.object.get-own-property-descriptors",
        "es.object.get-own-property-names",
        "es.object.get-prototype-of",
        "es.object.has-own",
        "es.object.is",
        "es.object.is-extensible",
        "es.object.is-frozen",
        "es.object.is-sealed",
        "es.object.keys",
        "es.object.lookup-getter",
        "es.object.lookup-setter",
        "es.object.prevent-extensions",
        "es.object.proto",
        "es.object.seal",
        "es.object.set-prototype-of",
        "es.object.to-string",
        "es.object.values",
        "es.reflect.to-string-tag"
    ],
        "core-js/es/object/assign": [
        "es.object.assign"
    ],
        "core-js/es/object/create": [
        "es.object.create"
    ],
        "core-js/es/object/define-getter": [
        "es.object.define-getter"
    ],
        "core-js/es/object/define-properties": [
        "es.object.define-properties"
    ],
        "core-js/es/object/define-property": [
        "es.object.define-property"
    ],
        "core-js/es/object/define-setter": [
        "es.object.define-setter"
    ],
        "core-js/es/object/entries": [
        "es.object.entries"
    ],
        "core-js/es/object/freeze": [
        "es.object.freeze"
    ],
        "core-js/es/object/from-entries": [
        "es.array.iterator",
        "es.object.from-entries"
    ],
        "core-js/es/object/get-own-property-descriptor": [
        "es.object.get-own-property-descriptor"
    ],
        "core-js/es/object/get-own-property-descriptors": [
        "es.object.get-own-property-descriptors"
    ],
        "core-js/es/object/get-own-property-names": [
        "es.object.get-own-property-names"
    ],
        "core-js/es/object/get-own-property-symbols": [
        "es.symbol"
    ],
        "core-js/es/object/get-prototype-of": [
        "es.object.get-prototype-of"
    ],
        "core-js/es/object/has-own": [
        "es.object.has-own"
    ],
        "core-js/es/object/is": [
        "es.object.is"
    ],
        "core-js/es/object/is-extensible": [
        "es.object.is-extensible"
    ],
        "core-js/es/object/is-frozen": [
        "es.object.is-frozen"
    ],
        "core-js/es/object/is-sealed": [
        "es.object.is-sealed"
    ],
        "core-js/es/object/keys": [
        "es.object.keys"
    ],
        "core-js/es/object/lookup-getter": [
        "es.object.lookup-getter"
    ],
        "core-js/es/object/lookup-setter": [
        "es.object.lookup-setter"
    ],
        "core-js/es/object/prevent-extensions": [
        "es.object.prevent-extensions"
    ],
        "core-js/es/object/proto": [
        "es.object.proto"
    ],
        "core-js/es/object/seal": [
        "es.object.seal"
    ],
        "core-js/es/object/set-prototype-of": [
        "es.object.set-prototype-of"
    ],
        "core-js/es/object/to-string": [
        "es.json.to-string-tag",
        "es.math.to-string-tag",
        "es.object.to-string",
        "es.reflect.to-string-tag"
    ],
        "core-js/es/object/values": [
        "es.object.values"
    ],
        "core-js/es/parse-float": [
        "es.parse-float"
    ],
        "core-js/es/parse-int": [
        "es.parse-int"
    ],
        "core-js/es/promise": [
        "es.aggregate-error",
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.promise.all-settled",
        "es.promise.any",
        "es.promise.finally",
        "es.string.iterator"
    ],
        "core-js/es/promise/all-settled": [
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.promise.all-settled",
        "es.string.iterator"
    ],
        "core-js/es/promise/any": [
        "es.aggregate-error",
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.promise.any",
        "es.string.iterator"
    ],
        "core-js/es/promise/finally": [
        "es.object.to-string",
        "es.promise",
        "es.promise.finally"
    ],
        "core-js/es/reflect": [
        "es.object.to-string",
        "es.reflect.apply",
        "es.reflect.construct",
        "es.reflect.define-property",
        "es.reflect.delete-property",
        "es.reflect.get",
        "es.reflect.get-own-property-descriptor",
        "es.reflect.get-prototype-of",
        "es.reflect.has",
        "es.reflect.is-extensible",
        "es.reflect.own-keys",
        "es.reflect.prevent-extensions",
        "es.reflect.set",
        "es.reflect.set-prototype-of",
        "es.reflect.to-string-tag"
    ],
        "core-js/es/reflect/apply": [
        "es.reflect.apply"
    ],
        "core-js/es/reflect/construct": [
        "es.reflect.construct"
    ],
        "core-js/es/reflect/define-property": [
        "es.reflect.define-property"
    ],
        "core-js/es/reflect/delete-property": [
        "es.reflect.delete-property"
    ],
        "core-js/es/reflect/get": [
        "es.reflect.get"
    ],
        "core-js/es/reflect/get-own-property-descriptor": [
        "es.reflect.get-own-property-descriptor"
    ],
        "core-js/es/reflect/get-prototype-of": [
        "es.reflect.get-prototype-of"
    ],
        "core-js/es/reflect/has": [
        "es.reflect.has"
    ],
        "core-js/es/reflect/is-extensible": [
        "es.reflect.is-extensible"
    ],
        "core-js/es/reflect/own-keys": [
        "es.reflect.own-keys"
    ],
        "core-js/es/reflect/prevent-extensions": [
        "es.reflect.prevent-extensions"
    ],
        "core-js/es/reflect/set": [
        "es.reflect.set"
    ],
        "core-js/es/reflect/set-prototype-of": [
        "es.reflect.set-prototype-of"
    ],
        "core-js/es/reflect/to-string-tag": [
        "es.object.to-string",
        "es.reflect.to-string-tag"
    ],
        "core-js/es/regexp": [
        "es.regexp.constructor",
        "es.regexp.dot-all",
        "es.regexp.exec",
        "es.regexp.flags",
        "es.regexp.sticky",
        "es.regexp.test",
        "es.regexp.to-string",
        "es.string.match",
        "es.string.replace",
        "es.string.search",
        "es.string.split"
    ],
        "core-js/es/regexp/constructor": [
        "es.regexp.constructor",
        "es.regexp.dot-all",
        "es.regexp.exec",
        "es.regexp.sticky"
    ],
        "core-js/es/regexp/dot-all": [
        "es.regexp.constructor",
        "es.regexp.dot-all",
        "es.regexp.exec"
    ],
        "core-js/es/regexp/flags": [
        "es.regexp.flags"
    ],
        "core-js/es/regexp/match": [
        "es.regexp.exec",
        "es.string.match"
    ],
        "core-js/es/regexp/replace": [
        "es.regexp.exec",
        "es.string.replace"
    ],
        "core-js/es/regexp/search": [
        "es.regexp.exec",
        "es.string.search"
    ],
        "core-js/es/regexp/split": [
        "es.regexp.exec",
        "es.string.split"
    ],
        "core-js/es/regexp/sticky": [
        "es.regexp.constructor",
        "es.regexp.exec",
        "es.regexp.sticky"
    ],
        "core-js/es/regexp/test": [
        "es.regexp.exec",
        "es.regexp.test"
    ],
        "core-js/es/regexp/to-string": [
        "es.regexp.to-string"
    ],
        "core-js/es/set": [
        "es.array.iterator",
        "es.object.to-string",
        "es.set",
        "es.string.iterator"
    ],
        "core-js/es/string": [
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.at-alternative",
        "es.string.code-point-at",
        "es.string.ends-with",
        "es.string.from-code-point",
        "es.string.includes",
        "es.string.iterator",
        "es.string.match",
        "es.string.match-all",
        "es.string.pad-end",
        "es.string.pad-start",
        "es.string.raw",
        "es.string.repeat",
        "es.string.replace",
        "es.string.replace-all",
        "es.string.search",
        "es.string.split",
        "es.string.starts-with",
        "es.string.substr",
        "es.string.trim",
        "es.string.trim-end",
        "es.string.trim-start",
        "es.string.anchor",
        "es.string.big",
        "es.string.blink",
        "es.string.bold",
        "es.string.fixed",
        "es.string.fontcolor",
        "es.string.fontsize",
        "es.string.italics",
        "es.string.link",
        "es.string.small",
        "es.string.strike",
        "es.string.sub",
        "es.string.sup"
    ],
        "core-js/es/string/anchor": [
        "es.string.anchor"
    ],
        "core-js/es/string/at": [
        "es.string.at-alternative"
    ],
        "core-js/es/string/big": [
        "es.string.big"
    ],
        "core-js/es/string/blink": [
        "es.string.blink"
    ],
        "core-js/es/string/bold": [
        "es.string.bold"
    ],
        "core-js/es/string/code-point-at": [
        "es.string.code-point-at"
    ],
        "core-js/es/string/ends-with": [
        "es.string.ends-with"
    ],
        "core-js/es/string/fixed": [
        "es.string.fixed"
    ],
        "core-js/es/string/fontcolor": [
        "es.string.fontcolor"
    ],
        "core-js/es/string/fontsize": [
        "es.string.fontsize"
    ],
        "core-js/es/string/from-code-point": [
        "es.string.from-code-point"
    ],
        "core-js/es/string/includes": [
        "es.string.includes"
    ],
        "core-js/es/string/italics": [
        "es.string.italics"
    ],
        "core-js/es/string/iterator": [
        "es.object.to-string",
        "es.string.iterator"
    ],
        "core-js/es/string/link": [
        "es.string.link"
    ],
        "core-js/es/string/match": [
        "es.regexp.exec",
        "es.string.match"
    ],
        "core-js/es/string/match-all": [
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.match-all"
    ],
        "core-js/es/string/pad-end": [
        "es.string.pad-end"
    ],
        "core-js/es/string/pad-start": [
        "es.string.pad-start"
    ],
        "core-js/es/string/raw": [
        "es.string.raw"
    ],
        "core-js/es/string/repeat": [
        "es.string.repeat"
    ],
        "core-js/es/string/replace": [
        "es.regexp.exec",
        "es.string.replace"
    ],
        "core-js/es/string/replace-all": [
        "es.regexp.exec",
        "es.string.replace",
        "es.string.replace-all"
    ],
        "core-js/es/string/search": [
        "es.regexp.exec",
        "es.string.search"
    ],
        "core-js/es/string/small": [
        "es.string.small"
    ],
        "core-js/es/string/split": [
        "es.regexp.exec",
        "es.string.split"
    ],
        "core-js/es/string/starts-with": [
        "es.string.starts-with"
    ],
        "core-js/es/string/strike": [
        "es.string.strike"
    ],
        "core-js/es/string/sub": [
        "es.string.sub"
    ],
        "core-js/es/string/substr": [
        "es.string.substr"
    ],
        "core-js/es/string/sup": [
        "es.string.sup"
    ],
        "core-js/es/string/trim": [
        "es.string.trim"
    ],
        "core-js/es/string/trim-end": [
        "es.string.trim-end"
    ],
        "core-js/es/string/trim-left": [
        "es.string.trim-start"
    ],
        "core-js/es/string/trim-right": [
        "es.string.trim-end"
    ],
        "core-js/es/string/trim-start": [
        "es.string.trim-start"
    ],
        "core-js/es/string/virtual": [
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.at-alternative",
        "es.string.code-point-at",
        "es.string.ends-with",
        "es.string.includes",
        "es.string.iterator",
        "es.string.match",
        "es.string.match-all",
        "es.string.pad-end",
        "es.string.pad-start",
        "es.string.repeat",
        "es.string.replace",
        "es.string.replace-all",
        "es.string.search",
        "es.string.split",
        "es.string.starts-with",
        "es.string.substr",
        "es.string.trim",
        "es.string.trim-end",
        "es.string.trim-start",
        "es.string.anchor",
        "es.string.big",
        "es.string.blink",
        "es.string.bold",
        "es.string.fixed",
        "es.string.fontcolor",
        "es.string.fontsize",
        "es.string.italics",
        "es.string.link",
        "es.string.small",
        "es.string.strike",
        "es.string.sub",
        "es.string.sup"
    ],
        "core-js/es/string/virtual/anchor": [
        "es.string.anchor"
    ],
        "core-js/es/string/virtual/at": [
        "es.string.at-alternative"
    ],
        "core-js/es/string/virtual/big": [
        "es.string.big"
    ],
        "core-js/es/string/virtual/blink": [
        "es.string.blink"
    ],
        "core-js/es/string/virtual/bold": [
        "es.string.bold"
    ],
        "core-js/es/string/virtual/code-point-at": [
        "es.string.code-point-at"
    ],
        "core-js/es/string/virtual/ends-with": [
        "es.string.ends-with"
    ],
        "core-js/es/string/virtual/fixed": [
        "es.string.fixed"
    ],
        "core-js/es/string/virtual/fontcolor": [
        "es.string.fontcolor"
    ],
        "core-js/es/string/virtual/fontsize": [
        "es.string.fontsize"
    ],
        "core-js/es/string/virtual/includes": [
        "es.string.includes"
    ],
        "core-js/es/string/virtual/italics": [
        "es.string.italics"
    ],
        "core-js/es/string/virtual/iterator": [
        "es.object.to-string",
        "es.string.iterator"
    ],
        "core-js/es/string/virtual/link": [
        "es.string.link"
    ],
        "core-js/es/string/virtual/match-all": [
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.match-all"
    ],
        "core-js/es/string/virtual/pad-end": [
        "es.string.pad-end"
    ],
        "core-js/es/string/virtual/pad-start": [
        "es.string.pad-start"
    ],
        "core-js/es/string/virtual/repeat": [
        "es.string.repeat"
    ],
        "core-js/es/string/virtual/replace-all": [
        "es.regexp.exec",
        "es.string.replace",
        "es.string.replace-all"
    ],
        "core-js/es/string/virtual/small": [
        "es.string.small"
    ],
        "core-js/es/string/virtual/starts-with": [
        "es.string.starts-with"
    ],
        "core-js/es/string/virtual/strike": [
        "es.string.strike"
    ],
        "core-js/es/string/virtual/sub": [
        "es.string.sub"
    ],
        "core-js/es/string/virtual/substr": [
        "es.string.substr"
    ],
        "core-js/es/string/virtual/sup": [
        "es.string.sup"
    ],
        "core-js/es/string/virtual/trim": [
        "es.string.trim"
    ],
        "core-js/es/string/virtual/trim-end": [
        "es.string.trim-end"
    ],
        "core-js/es/string/virtual/trim-left": [
        "es.string.trim-start"
    ],
        "core-js/es/string/virtual/trim-right": [
        "es.string.trim-end"
    ],
        "core-js/es/string/virtual/trim-start": [
        "es.string.trim-start"
    ],
        "core-js/es/symbol": [
        "es.symbol",
        "es.symbol.description",
        "es.symbol.async-iterator",
        "es.symbol.has-instance",
        "es.symbol.is-concat-spreadable",
        "es.symbol.iterator",
        "es.symbol.match",
        "es.symbol.match-all",
        "es.symbol.replace",
        "es.symbol.search",
        "es.symbol.species",
        "es.symbol.split",
        "es.symbol.to-primitive",
        "es.symbol.to-string-tag",
        "es.symbol.unscopables",
        "es.array.concat",
        "es.json.to-string-tag",
        "es.math.to-string-tag",
        "es.object.to-string",
        "es.reflect.to-string-tag"
    ],
        "core-js/es/symbol/async-iterator": [
        "es.symbol.async-iterator"
    ],
        "core-js/es/symbol/description": [
        "es.symbol.description"
    ],
        "core-js/es/symbol/for": [
        "es.symbol"
    ],
        "core-js/es/symbol/has-instance": [
        "es.symbol.has-instance",
        "es.function.has-instance"
    ],
        "core-js/es/symbol/is-concat-spreadable": [
        "es.symbol.is-concat-spreadable",
        "es.array.concat"
    ],
        "core-js/es/symbol/iterator": [
        "es.symbol.iterator",
        "es.array.iterator",
        "es.object.to-string",
        "es.string.iterator"
    ],
        "core-js/es/symbol/key-for": [
        "es.symbol"
    ],
        "core-js/es/symbol/match": [
        "es.symbol.match",
        "es.regexp.exec",
        "es.string.match"
    ],
        "core-js/es/symbol/match-all": [
        "es.symbol.match-all",
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.match-all"
    ],
        "core-js/es/symbol/replace": [
        "es.symbol.replace",
        "es.regexp.exec",
        "es.string.replace"
    ],
        "core-js/es/symbol/search": [
        "es.symbol.search",
        "es.regexp.exec",
        "es.string.search"
    ],
        "core-js/es/symbol/species": [
        "es.symbol.species"
    ],
        "core-js/es/symbol/split": [
        "es.symbol.split",
        "es.regexp.exec",
        "es.string.split"
    ],
        "core-js/es/symbol/to-primitive": [
        "es.symbol.to-primitive",
        "es.date.to-primitive"
    ],
        "core-js/es/symbol/to-string-tag": [
        "es.symbol.to-string-tag",
        "es.json.to-string-tag",
        "es.math.to-string-tag",
        "es.object.to-string",
        "es.reflect.to-string-tag"
    ],
        "core-js/es/symbol/unscopables": [
        "es.symbol.unscopables"
    ],
        "core-js/es/typed-array": [
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.float32-array",
        "es.typed-array.float64-array",
        "es.typed-array.int8-array",
        "es.typed-array.int16-array",
        "es.typed-array.int32-array",
        "es.typed-array.uint8-array",
        "es.typed-array.uint8-clamped-array",
        "es.typed-array.uint16-array",
        "es.typed-array.uint32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with"
    ],
        "core-js/es/typed-array/at": [
        "es.typed-array.at"
    ],
        "core-js/es/typed-array/copy-within": [
        "es.typed-array.copy-within"
    ],
        "core-js/es/typed-array/entries": [
        "es.object.to-string",
        "es.typed-array.iterator"
    ],
        "core-js/es/typed-array/every": [
        "es.typed-array.every"
    ],
        "core-js/es/typed-array/fill": [
        "es.typed-array.fill"
    ],
        "core-js/es/typed-array/filter": [
        "es.typed-array.filter"
    ],
        "core-js/es/typed-array/find": [
        "es.typed-array.find"
    ],
        "core-js/es/typed-array/find-index": [
        "es.typed-array.find-index"
    ],
        "core-js/es/typed-array/find-last": [
        "es.typed-array.find-last"
    ],
        "core-js/es/typed-array/find-last-index": [
        "es.typed-array.find-last-index"
    ],
        "core-js/es/typed-array/float32-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.float32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with"
    ],
        "core-js/es/typed-array/float64-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.float64-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with"
    ],
        "core-js/es/typed-array/for-each": [
        "es.typed-array.for-each"
    ],
        "core-js/es/typed-array/from": [
        "es.typed-array.from"
    ],
        "core-js/es/typed-array/includes": [
        "es.typed-array.includes"
    ],
        "core-js/es/typed-array/index-of": [
        "es.typed-array.index-of"
    ],
        "core-js/es/typed-array/int16-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.int16-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with"
    ],
        "core-js/es/typed-array/int32-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.int32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with"
    ],
        "core-js/es/typed-array/int8-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.int8-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with"
    ],
        "core-js/es/typed-array/iterator": [
        "es.object.to-string",
        "es.typed-array.iterator"
    ],
        "core-js/es/typed-array/join": [
        "es.typed-array.join"
    ],
        "core-js/es/typed-array/keys": [
        "es.object.to-string",
        "es.typed-array.iterator"
    ],
        "core-js/es/typed-array/last-index-of": [
        "es.typed-array.last-index-of"
    ],
        "core-js/es/typed-array/map": [
        "es.typed-array.map"
    ],
        "core-js/es/typed-array/methods": [
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with"
    ],
        "core-js/es/typed-array/of": [
        "es.typed-array.of"
    ],
        "core-js/es/typed-array/reduce": [
        "es.typed-array.reduce"
    ],
        "core-js/es/typed-array/reduce-right": [
        "es.typed-array.reduce-right"
    ],
        "core-js/es/typed-array/reverse": [
        "es.typed-array.reverse"
    ],
        "core-js/es/typed-array/set": [
        "es.typed-array.set"
    ],
        "core-js/es/typed-array/slice": [
        "es.typed-array.slice"
    ],
        "core-js/es/typed-array/some": [
        "es.typed-array.some"
    ],
        "core-js/es/typed-array/sort": [
        "es.typed-array.sort"
    ],
        "core-js/es/typed-array/subarray": [
        "es.typed-array.subarray"
    ],
        "core-js/es/typed-array/to-locale-string": [
        "es.typed-array.to-locale-string"
    ],
        "core-js/es/typed-array/to-reversed": [
        "esnext.typed-array.to-reversed"
    ],
        "core-js/es/typed-array/to-sorted": [
        "es.typed-array.sort",
        "es.typed-array.to-sorted"
    ],
        "core-js/es/typed-array/to-string": [
        "es.typed-array.to-string"
    ],
        "core-js/es/typed-array/uint16-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.uint16-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with"
    ],
        "core-js/es/typed-array/uint32-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.uint32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with"
    ],
        "core-js/es/typed-array/uint8-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.uint8-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with"
    ],
        "core-js/es/typed-array/uint8-clamped-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.uint8-clamped-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with"
    ],
        "core-js/es/typed-array/values": [
        "es.object.to-string",
        "es.typed-array.iterator"
    ],
        "core-js/es/typed-array/with": [
        "esnext.typed-array.with"
    ],
        "core-js/es/unescape": [
        "es.unescape"
    ],
        "core-js/es/weak-map": [
        "es.array.iterator",
        "es.object.to-string",
        "es.weak-map"
    ],
        "core-js/es/weak-set": [
        "es.array.iterator",
        "es.object.to-string",
        "es.weak-set"
    ],
        "core-js/features": [
        "es.symbol",
        "es.symbol.description",
        "es.symbol.async-iterator",
        "es.symbol.has-instance",
        "es.symbol.is-concat-spreadable",
        "es.symbol.iterator",
        "es.symbol.match",
        "es.symbol.match-all",
        "es.symbol.replace",
        "es.symbol.search",
        "es.symbol.species",
        "es.symbol.split",
        "es.symbol.to-primitive",
        "es.symbol.to-string-tag",
        "es.symbol.unscopables",
        "es.error.cause",
        "es.error.to-string",
        "es.aggregate-error",
        "es.aggregate-error.cause",
        "es.array.at",
        "es.array.concat",
        "es.array.copy-within",
        "es.array.every",
        "es.array.fill",
        "es.array.filter",
        "es.array.find",
        "es.array.find-index",
        "es.array.find-last",
        "es.array.find-last-index",
        "es.array.flat",
        "es.array.flat-map",
        "es.array.for-each",
        "es.array.from",
        "es.array.includes",
        "es.array.index-of",
        "es.array.is-array",
        "es.array.iterator",
        "es.array.join",
        "es.array.last-index-of",
        "es.array.map",
        "es.array.of",
        "es.array.push",
        "es.array.reduce",
        "es.array.reduce-right",
        "es.array.reverse",
        "es.array.slice",
        "es.array.some",
        "es.array.sort",
        "es.array.species",
        "es.array.splice",
        "es.array.to-reversed",
        "es.array.to-sorted",
        "es.array.to-spliced",
        "es.array.unscopables.flat",
        "es.array.unscopables.flat-map",
        "es.array.unshift",
        "es.array.with",
        "es.array-buffer.constructor",
        "es.array-buffer.is-view",
        "es.array-buffer.slice",
        "es.data-view",
        "es.date.get-year",
        "es.date.now",
        "es.date.set-year",
        "es.date.to-gmt-string",
        "es.date.to-iso-string",
        "es.date.to-json",
        "es.date.to-primitive",
        "es.date.to-string",
        "es.escape",
        "es.function.bind",
        "es.function.has-instance",
        "es.function.name",
        "es.global-this",
        "es.json.stringify",
        "es.json.to-string-tag",
        "es.map",
        "es.math.acosh",
        "es.math.asinh",
        "es.math.atanh",
        "es.math.cbrt",
        "es.math.clz32",
        "es.math.cosh",
        "es.math.expm1",
        "es.math.fround",
        "es.math.hypot",
        "es.math.imul",
        "es.math.log10",
        "es.math.log1p",
        "es.math.log2",
        "es.math.sign",
        "es.math.sinh",
        "es.math.tanh",
        "es.math.to-string-tag",
        "es.math.trunc",
        "es.number.constructor",
        "es.number.epsilon",
        "es.number.is-finite",
        "es.number.is-integer",
        "es.number.is-nan",
        "es.number.is-safe-integer",
        "es.number.max-safe-integer",
        "es.number.min-safe-integer",
        "es.number.parse-float",
        "es.number.parse-int",
        "es.number.to-exponential",
        "es.number.to-fixed",
        "es.number.to-precision",
        "es.object.assign",
        "es.object.create",
        "es.object.define-getter",
        "es.object.define-properties",
        "es.object.define-property",
        "es.object.define-setter",
        "es.object.entries",
        "es.object.freeze",
        "es.object.from-entries",
        "es.object.get-own-property-descriptor",
        "es.object.get-own-property-descriptors",
        "es.object.get-own-property-names",
        "es.object.get-prototype-of",
        "es.object.has-own",
        "es.object.is",
        "es.object.is-extensible",
        "es.object.is-frozen",
        "es.object.is-sealed",
        "es.object.keys",
        "es.object.lookup-getter",
        "es.object.lookup-setter",
        "es.object.prevent-extensions",
        "es.object.proto",
        "es.object.seal",
        "es.object.set-prototype-of",
        "es.object.to-string",
        "es.object.values",
        "es.parse-float",
        "es.parse-int",
        "es.promise",
        "es.promise.all-settled",
        "es.promise.any",
        "es.promise.finally",
        "es.reflect.apply",
        "es.reflect.construct",
        "es.reflect.define-property",
        "es.reflect.delete-property",
        "es.reflect.get",
        "es.reflect.get-own-property-descriptor",
        "es.reflect.get-prototype-of",
        "es.reflect.has",
        "es.reflect.is-extensible",
        "es.reflect.own-keys",
        "es.reflect.prevent-extensions",
        "es.reflect.set",
        "es.reflect.set-prototype-of",
        "es.reflect.to-string-tag",
        "es.regexp.constructor",
        "es.regexp.dot-all",
        "es.regexp.exec",
        "es.regexp.flags",
        "es.regexp.sticky",
        "es.regexp.test",
        "es.regexp.to-string",
        "es.set",
        "es.string.at-alternative",
        "es.string.code-point-at",
        "es.string.ends-with",
        "es.string.from-code-point",
        "es.string.includes",
        "es.string.iterator",
        "es.string.match",
        "es.string.match-all",
        "es.string.pad-end",
        "es.string.pad-start",
        "es.string.raw",
        "es.string.repeat",
        "es.string.replace",
        "es.string.replace-all",
        "es.string.search",
        "es.string.split",
        "es.string.starts-with",
        "es.string.substr",
        "es.string.trim",
        "es.string.trim-end",
        "es.string.trim-start",
        "es.string.anchor",
        "es.string.big",
        "es.string.blink",
        "es.string.bold",
        "es.string.fixed",
        "es.string.fontcolor",
        "es.string.fontsize",
        "es.string.italics",
        "es.string.link",
        "es.string.small",
        "es.string.strike",
        "es.string.sub",
        "es.string.sup",
        "es.typed-array.float32-array",
        "es.typed-array.float64-array",
        "es.typed-array.int8-array",
        "es.typed-array.int16-array",
        "es.typed-array.int32-array",
        "es.typed-array.uint8-array",
        "es.typed-array.uint8-clamped-array",
        "es.typed-array.uint16-array",
        "es.typed-array.uint32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "es.unescape",
        "es.weak-map",
        "es.weak-set",
        "esnext.aggregate-error",
        "esnext.suppressed-error.constructor",
        "esnext.array.from-async",
        "esnext.array.at",
        "esnext.array.filter-out",
        "esnext.array.filter-reject",
        "esnext.array.find-last",
        "esnext.array.find-last-index",
        "esnext.array.group",
        "esnext.array.group-by",
        "esnext.array.group-by-to-map",
        "esnext.array.group-to-map",
        "esnext.array.is-template-object",
        "esnext.array.last-index",
        "esnext.array.last-item",
        "esnext.array.to-reversed",
        "esnext.array.to-sorted",
        "esnext.array.to-spliced",
        "esnext.array.unique-by",
        "esnext.array.with",
        "esnext.array-buffer.detached",
        "esnext.array-buffer.transfer",
        "esnext.array-buffer.transfer-to-fixed-length",
        "esnext.async-disposable-stack.constructor",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.as-indexed-pairs",
        "esnext.async-iterator.async-dispose",
        "esnext.async-iterator.drop",
        "esnext.async-iterator.every",
        "esnext.async-iterator.filter",
        "esnext.async-iterator.find",
        "esnext.async-iterator.flat-map",
        "esnext.async-iterator.for-each",
        "esnext.async-iterator.from",
        "esnext.async-iterator.indexed",
        "esnext.async-iterator.map",
        "esnext.async-iterator.reduce",
        "esnext.async-iterator.some",
        "esnext.async-iterator.take",
        "esnext.async-iterator.to-array",
        "esnext.bigint.range",
        "esnext.composite-key",
        "esnext.composite-symbol",
        "esnext.disposable-stack.constructor",
        "esnext.function.demethodize",
        "esnext.function.is-callable",
        "esnext.function.is-constructor",
        "esnext.function.un-this",
        "esnext.global-this",
        "esnext.iterator.constructor",
        "esnext.iterator.as-indexed-pairs",
        "esnext.iterator.dispose",
        "esnext.iterator.drop",
        "esnext.iterator.every",
        "esnext.iterator.filter",
        "esnext.iterator.find",
        "esnext.iterator.flat-map",
        "esnext.iterator.for-each",
        "esnext.iterator.from",
        "esnext.iterator.indexed",
        "esnext.iterator.map",
        "esnext.iterator.range",
        "esnext.iterator.reduce",
        "esnext.iterator.some",
        "esnext.iterator.take",
        "esnext.iterator.to-array",
        "esnext.iterator.to-async",
        "esnext.json.is-raw-json",
        "esnext.json.parse",
        "esnext.json.raw-json",
        "esnext.map.delete-all",
        "esnext.map.emplace",
        "esnext.map.every",
        "esnext.map.filter",
        "esnext.map.find",
        "esnext.map.find-key",
        "esnext.map.from",
        "esnext.map.group-by",
        "esnext.map.includes",
        "esnext.map.key-by",
        "esnext.map.key-of",
        "esnext.map.map-keys",
        "esnext.map.map-values",
        "esnext.map.merge",
        "esnext.map.of",
        "esnext.map.reduce",
        "esnext.map.some",
        "esnext.map.update",
        "esnext.map.update-or-insert",
        "esnext.map.upsert",
        "esnext.math.clamp",
        "esnext.math.deg-per-rad",
        "esnext.math.degrees",
        "esnext.math.fscale",
        "esnext.math.iaddh",
        "esnext.math.imulh",
        "esnext.math.isubh",
        "esnext.math.rad-per-deg",
        "esnext.math.radians",
        "esnext.math.scale",
        "esnext.math.seeded-prng",
        "esnext.math.signbit",
        "esnext.math.umulh",
        "esnext.number.from-string",
        "esnext.number.range",
        "esnext.object.has-own",
        "esnext.object.iterate-entries",
        "esnext.object.iterate-keys",
        "esnext.object.iterate-values",
        "esnext.observable",
        "esnext.promise.all-settled",
        "esnext.promise.any",
        "esnext.promise.try",
        "esnext.reflect.define-metadata",
        "esnext.reflect.delete-metadata",
        "esnext.reflect.get-metadata",
        "esnext.reflect.get-metadata-keys",
        "esnext.reflect.get-own-metadata",
        "esnext.reflect.get-own-metadata-keys",
        "esnext.reflect.has-metadata",
        "esnext.reflect.has-own-metadata",
        "esnext.reflect.metadata",
        "esnext.set.add-all",
        "esnext.set.delete-all",
        "esnext.set.difference.v2",
        "esnext.set.difference",
        "esnext.set.every",
        "esnext.set.filter",
        "esnext.set.find",
        "esnext.set.from",
        "esnext.set.intersection.v2",
        "esnext.set.intersection",
        "esnext.set.is-disjoint-from.v2",
        "esnext.set.is-disjoint-from",
        "esnext.set.is-subset-of.v2",
        "esnext.set.is-subset-of",
        "esnext.set.is-superset-of.v2",
        "esnext.set.is-superset-of",
        "esnext.set.join",
        "esnext.set.map",
        "esnext.set.of",
        "esnext.set.reduce",
        "esnext.set.some",
        "esnext.set.symmetric-difference.v2",
        "esnext.set.symmetric-difference",
        "esnext.set.union.v2",
        "esnext.set.union",
        "esnext.string.at",
        "esnext.string.cooked",
        "esnext.string.code-points",
        "esnext.string.dedent",
        "esnext.string.is-well-formed",
        "esnext.string.match-all",
        "esnext.string.replace-all",
        "esnext.string.to-well-formed",
        "esnext.symbol.async-dispose",
        "esnext.symbol.dispose",
        "esnext.symbol.is-registered",
        "esnext.symbol.is-well-known",
        "esnext.symbol.matcher",
        "esnext.symbol.metadata",
        "esnext.symbol.metadata-key",
        "esnext.symbol.observable",
        "esnext.symbol.pattern-match",
        "esnext.symbol.replace-all",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with",
        "esnext.weak-map.delete-all",
        "esnext.weak-map.from",
        "esnext.weak-map.of",
        "esnext.weak-map.emplace",
        "esnext.weak-map.upsert",
        "esnext.weak-set.add-all",
        "esnext.weak-set.delete-all",
        "esnext.weak-set.from",
        "esnext.weak-set.of",
        "web.atob",
        "web.btoa",
        "web.dom-collections.for-each",
        "web.dom-collections.iterator",
        "web.dom-exception.constructor",
        "web.dom-exception.stack",
        "web.dom-exception.to-string-tag",
        "web.immediate",
        "web.queue-microtask",
        "web.self",
        "web.structured-clone",
        "web.timers",
        "web.url",
        "web.url.to-json",
        "web.url-search-params",
        "web.url-search-params.size"
    ],
        "core-js/features/aggregate-error": [
        "es.error.cause",
        "es.aggregate-error",
        "es.aggregate-error.cause",
        "es.array.iterator",
        "es.string.iterator",
        "esnext.aggregate-error",
        "web.dom-collections.iterator"
    ],
        "core-js/features/array": [
        "es.array.at",
        "es.array.concat",
        "es.array.copy-within",
        "es.array.every",
        "es.array.fill",
        "es.array.filter",
        "es.array.find",
        "es.array.find-index",
        "es.array.find-last",
        "es.array.find-last-index",
        "es.array.flat",
        "es.array.flat-map",
        "es.array.for-each",
        "es.array.from",
        "es.array.includes",
        "es.array.index-of",
        "es.array.is-array",
        "es.array.iterator",
        "es.array.join",
        "es.array.last-index-of",
        "es.array.map",
        "es.array.of",
        "es.array.push",
        "es.array.reduce",
        "es.array.reduce-right",
        "es.array.reverse",
        "es.array.slice",
        "es.array.some",
        "es.array.sort",
        "es.array.species",
        "es.array.splice",
        "es.array.to-reversed",
        "es.array.to-sorted",
        "es.array.to-spliced",
        "es.array.unscopables.flat",
        "es.array.unscopables.flat-map",
        "es.array.unshift",
        "es.array.with",
        "es.map",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "esnext.array.from-async",
        "esnext.array.at",
        "esnext.array.filter-out",
        "esnext.array.filter-reject",
        "esnext.array.find-last",
        "esnext.array.find-last-index",
        "esnext.array.group",
        "esnext.array.group-by",
        "esnext.array.group-by-to-map",
        "esnext.array.group-to-map",
        "esnext.array.is-template-object",
        "esnext.array.last-index",
        "esnext.array.last-item",
        "esnext.array.to-reversed",
        "esnext.array.to-sorted",
        "esnext.array.to-spliced",
        "esnext.array.unique-by",
        "esnext.array.with"
    ],
        "core-js/features/array-buffer": [
        "es.array-buffer.constructor",
        "es.array-buffer.is-view",
        "es.array-buffer.slice",
        "es.object.to-string",
        "esnext.array-buffer.detached",
        "esnext.array-buffer.transfer",
        "esnext.array-buffer.transfer-to-fixed-length"
    ],
        "core-js/features/array-buffer/constructor": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "esnext.array-buffer.detached",
        "esnext.array-buffer.transfer",
        "esnext.array-buffer.transfer-to-fixed-length"
    ],
        "core-js/features/array-buffer/detached": [
        "es.array-buffer.constructor",
        "es.array-buffer.is-view",
        "es.array-buffer.slice",
        "es.object.to-string",
        "esnext.array-buffer.detached"
    ],
        "core-js/features/array-buffer/is-view": [
        "es.array-buffer.is-view"
    ],
        "core-js/features/array-buffer/slice": [
        "es.array-buffer.slice"
    ],
        "core-js/features/array-buffer/transfer": [
        "es.array-buffer.constructor",
        "es.array-buffer.is-view",
        "es.array-buffer.slice",
        "es.object.to-string",
        "esnext.array-buffer.transfer"
    ],
        "core-js/features/array-buffer/transfer-to-fixed-length": [
        "es.array-buffer.constructor",
        "es.array-buffer.is-view",
        "es.array-buffer.slice",
        "es.object.to-string",
        "esnext.array-buffer.transfer-to-fixed-length"
    ],
        "core-js/features/array/at": [
        "es.array.at",
        "esnext.array.at"
    ],
        "core-js/features/array/concat": [
        "es.array.concat"
    ],
        "core-js/features/array/copy-within": [
        "es.array.copy-within"
    ],
        "core-js/features/array/entries": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/features/array/every": [
        "es.array.every"
    ],
        "core-js/features/array/fill": [
        "es.array.fill"
    ],
        "core-js/features/array/filter": [
        "es.array.filter"
    ],
        "core-js/features/array/filter-out": [
        "esnext.array.filter-out"
    ],
        "core-js/features/array/filter-reject": [
        "esnext.array.filter-reject"
    ],
        "core-js/features/array/find": [
        "es.array.find"
    ],
        "core-js/features/array/find-index": [
        "es.array.find-index"
    ],
        "core-js/features/array/find-last": [
        "es.array.find-last",
        "esnext.array.find-last"
    ],
        "core-js/features/array/find-last-index": [
        "es.array.find-last-index",
        "esnext.array.find-last-index"
    ],
        "core-js/features/array/flat": [
        "es.array.flat",
        "es.array.unscopables.flat"
    ],
        "core-js/features/array/flat-map": [
        "es.array.flat-map",
        "es.array.unscopables.flat-map"
    ],
        "core-js/features/array/for-each": [
        "es.array.for-each"
    ],
        "core-js/features/array/from": [
        "es.array.from",
        "es.string.iterator"
    ],
        "core-js/features/array/from-async": [
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "esnext.array.from-async"
    ],
        "core-js/features/array/group": [
        "esnext.array.group"
    ],
        "core-js/features/array/group-by": [
        "esnext.array.group-by"
    ],
        "core-js/features/array/group-by-to-map": [
        "es.map",
        "es.object.to-string",
        "esnext.array.group-by-to-map"
    ],
        "core-js/features/array/group-to-map": [
        "es.map",
        "es.object.to-string",
        "esnext.array.group-to-map"
    ],
        "core-js/features/array/includes": [
        "es.array.includes"
    ],
        "core-js/features/array/index-of": [
        "es.array.index-of"
    ],
        "core-js/features/array/is-array": [
        "es.array.is-array"
    ],
        "core-js/features/array/is-template-object": [
        "esnext.array.is-template-object"
    ],
        "core-js/features/array/iterator": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/features/array/join": [
        "es.array.join"
    ],
        "core-js/features/array/keys": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/features/array/last-index": [
        "esnext.array.last-index"
    ],
        "core-js/features/array/last-index-of": [
        "es.array.last-index-of"
    ],
        "core-js/features/array/last-item": [
        "esnext.array.last-item"
    ],
        "core-js/features/array/map": [
        "es.array.map"
    ],
        "core-js/features/array/of": [
        "es.array.of"
    ],
        "core-js/features/array/push": [
        "es.array.push"
    ],
        "core-js/features/array/reduce": [
        "es.array.reduce"
    ],
        "core-js/features/array/reduce-right": [
        "es.array.reduce-right"
    ],
        "core-js/features/array/reverse": [
        "es.array.reverse"
    ],
        "core-js/features/array/slice": [
        "es.array.slice"
    ],
        "core-js/features/array/some": [
        "es.array.some"
    ],
        "core-js/features/array/sort": [
        "es.array.sort"
    ],
        "core-js/features/array/splice": [
        "es.array.splice"
    ],
        "core-js/features/array/to-reversed": [
        "esnext.array.to-reversed"
    ],
        "core-js/features/array/to-sorted": [
        "es.array.sort",
        "esnext.array.to-sorted"
    ],
        "core-js/features/array/to-spliced": [
        "esnext.array.to-spliced"
    ],
        "core-js/features/array/unique-by": [
        "es.map",
        "esnext.array.unique-by"
    ],
        "core-js/features/array/unshift": [
        "es.array.unshift"
    ],
        "core-js/features/array/values": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/features/array/virtual": [
        "es.array.at",
        "es.array.concat",
        "es.array.copy-within",
        "es.array.every",
        "es.array.fill",
        "es.array.filter",
        "es.array.find",
        "es.array.find-index",
        "es.array.find-last",
        "es.array.find-last-index",
        "es.array.flat",
        "es.array.flat-map",
        "es.array.for-each",
        "es.array.includes",
        "es.array.index-of",
        "es.array.iterator",
        "es.array.join",
        "es.array.last-index-of",
        "es.array.map",
        "es.array.push",
        "es.array.reduce",
        "es.array.reduce-right",
        "es.array.reverse",
        "es.array.slice",
        "es.array.some",
        "es.array.sort",
        "es.array.species",
        "es.array.splice",
        "es.array.to-reversed",
        "es.array.to-sorted",
        "es.array.to-spliced",
        "es.array.unscopables.flat",
        "es.array.unscopables.flat-map",
        "es.array.unshift",
        "es.array.with",
        "es.map",
        "es.object.to-string",
        "esnext.array.at",
        "esnext.array.filter-out",
        "esnext.array.filter-reject",
        "esnext.array.find-last",
        "esnext.array.find-last-index",
        "esnext.array.group",
        "esnext.array.group-by",
        "esnext.array.group-by-to-map",
        "esnext.array.group-to-map",
        "esnext.array.to-reversed",
        "esnext.array.to-sorted",
        "esnext.array.to-spliced",
        "esnext.array.unique-by",
        "esnext.array.with"
    ],
        "core-js/features/array/virtual/at": [
        "es.array.at",
        "esnext.array.at"
    ],
        "core-js/features/array/virtual/concat": [
        "es.array.concat"
    ],
        "core-js/features/array/virtual/copy-within": [
        "es.array.copy-within"
    ],
        "core-js/features/array/virtual/entries": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/features/array/virtual/every": [
        "es.array.every"
    ],
        "core-js/features/array/virtual/fill": [
        "es.array.fill"
    ],
        "core-js/features/array/virtual/filter": [
        "es.array.filter"
    ],
        "core-js/features/array/virtual/filter-out": [
        "esnext.array.filter-out"
    ],
        "core-js/features/array/virtual/filter-reject": [
        "esnext.array.filter-reject"
    ],
        "core-js/features/array/virtual/find": [
        "es.array.find"
    ],
        "core-js/features/array/virtual/find-index": [
        "es.array.find-index"
    ],
        "core-js/features/array/virtual/find-last": [
        "es.array.find-last",
        "esnext.array.find-last"
    ],
        "core-js/features/array/virtual/find-last-index": [
        "es.array.find-last-index",
        "esnext.array.find-last-index"
    ],
        "core-js/features/array/virtual/flat": [
        "es.array.flat",
        "es.array.unscopables.flat"
    ],
        "core-js/features/array/virtual/flat-map": [
        "es.array.flat-map",
        "es.array.unscopables.flat-map"
    ],
        "core-js/features/array/virtual/for-each": [
        "es.array.for-each"
    ],
        "core-js/features/array/virtual/group": [
        "esnext.array.group"
    ],
        "core-js/features/array/virtual/group-by": [
        "esnext.array.group-by"
    ],
        "core-js/features/array/virtual/group-by-to-map": [
        "es.map",
        "es.object.to-string",
        "esnext.array.group-by-to-map"
    ],
        "core-js/features/array/virtual/group-to-map": [
        "es.map",
        "es.object.to-string",
        "esnext.array.group-to-map"
    ],
        "core-js/features/array/virtual/includes": [
        "es.array.includes"
    ],
        "core-js/features/array/virtual/index-of": [
        "es.array.index-of"
    ],
        "core-js/features/array/virtual/iterator": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/features/array/virtual/join": [
        "es.array.join"
    ],
        "core-js/features/array/virtual/keys": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/features/array/virtual/last-index-of": [
        "es.array.last-index-of"
    ],
        "core-js/features/array/virtual/map": [
        "es.array.map"
    ],
        "core-js/features/array/virtual/push": [
        "es.array.push"
    ],
        "core-js/features/array/virtual/reduce": [
        "es.array.reduce"
    ],
        "core-js/features/array/virtual/reduce-right": [
        "es.array.reduce-right"
    ],
        "core-js/features/array/virtual/reverse": [
        "es.array.reverse"
    ],
        "core-js/features/array/virtual/slice": [
        "es.array.slice"
    ],
        "core-js/features/array/virtual/some": [
        "es.array.some"
    ],
        "core-js/features/array/virtual/sort": [
        "es.array.sort"
    ],
        "core-js/features/array/virtual/splice": [
        "es.array.splice"
    ],
        "core-js/features/array/virtual/to-reversed": [
        "es.array.to-reversed",
        "esnext.array.to-reversed"
    ],
        "core-js/features/array/virtual/to-sorted": [
        "es.array.sort",
        "es.array.to-sorted",
        "esnext.array.to-sorted"
    ],
        "core-js/features/array/virtual/to-spliced": [
        "es.array.to-spliced",
        "esnext.array.to-spliced"
    ],
        "core-js/features/array/virtual/unique-by": [
        "es.map",
        "esnext.array.unique-by"
    ],
        "core-js/features/array/virtual/unshift": [
        "es.array.unshift"
    ],
        "core-js/features/array/virtual/values": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/features/array/virtual/with": [
        "es.array.with",
        "esnext.array.with"
    ],
        "core-js/features/array/with": [
        "esnext.array.with"
    ],
        "core-js/features/async-disposable-stack": [
        "es.error.cause",
        "es.error.to-string",
        "es.object.to-string",
        "es.promise",
        "esnext.suppressed-error.constructor",
        "esnext.async-disposable-stack.constructor",
        "esnext.async-iterator.async-dispose",
        "esnext.iterator.dispose"
    ],
        "core-js/features/async-disposable-stack/constructor": [
        "es.error.cause",
        "es.error.to-string",
        "es.object.to-string",
        "es.promise",
        "esnext.suppressed-error.constructor",
        "esnext.async-disposable-stack.constructor",
        "esnext.async-iterator.async-dispose",
        "esnext.iterator.dispose"
    ],
        "core-js/features/async-iterator": [
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.as-indexed-pairs",
        "esnext.async-iterator.async-dispose",
        "esnext.async-iterator.drop",
        "esnext.async-iterator.every",
        "esnext.async-iterator.filter",
        "esnext.async-iterator.find",
        "esnext.async-iterator.flat-map",
        "esnext.async-iterator.for-each",
        "esnext.async-iterator.from",
        "esnext.async-iterator.indexed",
        "esnext.async-iterator.map",
        "esnext.async-iterator.reduce",
        "esnext.async-iterator.some",
        "esnext.async-iterator.take",
        "esnext.async-iterator.to-array",
        "web.dom-collections.iterator"
    ],
        "core-js/features/async-iterator/as-indexed-pairs": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.as-indexed-pairs"
    ],
        "core-js/features/async-iterator/async-dispose": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.async-dispose"
    ],
        "core-js/features/async-iterator/drop": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.drop"
    ],
        "core-js/features/async-iterator/every": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.every"
    ],
        "core-js/features/async-iterator/filter": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.filter"
    ],
        "core-js/features/async-iterator/find": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.find"
    ],
        "core-js/features/async-iterator/flat-map": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.flat-map"
    ],
        "core-js/features/async-iterator/for-each": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.for-each"
    ],
        "core-js/features/async-iterator/from": [
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.drop",
        "esnext.async-iterator.every",
        "esnext.async-iterator.filter",
        "esnext.async-iterator.find",
        "esnext.async-iterator.flat-map",
        "esnext.async-iterator.for-each",
        "esnext.async-iterator.from",
        "esnext.async-iterator.map",
        "esnext.async-iterator.reduce",
        "esnext.async-iterator.some",
        "esnext.async-iterator.take",
        "esnext.async-iterator.to-array",
        "web.dom-collections.iterator"
    ],
        "core-js/features/async-iterator/indexed": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.indexed"
    ],
        "core-js/features/async-iterator/map": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.map"
    ],
        "core-js/features/async-iterator/reduce": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.reduce"
    ],
        "core-js/features/async-iterator/some": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.some"
    ],
        "core-js/features/async-iterator/take": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.take"
    ],
        "core-js/features/async-iterator/to-array": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.to-array"
    ],
        "core-js/features/atob": [
        "es.error.to-string",
        "es.object.to-string",
        "web.atob",
        "web.dom-exception.constructor",
        "web.dom-exception.stack",
        "web.dom-exception.to-string-tag"
    ],
        "core-js/features/bigint": [
        "es.object.to-string",
        "esnext.bigint.range"
    ],
        "core-js/features/bigint/range": [
        "es.object.to-string",
        "esnext.bigint.range"
    ],
        "core-js/features/btoa": [
        "es.error.to-string",
        "es.object.to-string",
        "web.btoa",
        "web.dom-exception.constructor",
        "web.dom-exception.stack",
        "web.dom-exception.to-string-tag"
    ],
        "core-js/features/clear-immediate": [
        "web.immediate"
    ],
        "core-js/features/composite-key": [
        "esnext.composite-key"
    ],
        "core-js/features/composite-symbol": [
        "es.symbol",
        "esnext.composite-symbol"
    ],
        "core-js/features/data-view": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.data-view",
        "es.object.to-string"
    ],
        "core-js/features/date": [
        "es.date.get-year",
        "es.date.now",
        "es.date.set-year",
        "es.date.to-gmt-string",
        "es.date.to-iso-string",
        "es.date.to-json",
        "es.date.to-primitive",
        "es.date.to-string"
    ],
        "core-js/features/date/get-year": [
        "es.date.get-year"
    ],
        "core-js/features/date/now": [
        "es.date.now"
    ],
        "core-js/features/date/set-year": [
        "es.date.set-year"
    ],
        "core-js/features/date/to-gmt-string": [
        "es.date.to-gmt-string"
    ],
        "core-js/features/date/to-iso-string": [
        "es.date.to-iso-string",
        "es.date.to-json"
    ],
        "core-js/features/date/to-json": [
        "es.date.to-json"
    ],
        "core-js/features/date/to-primitive": [
        "es.date.to-primitive"
    ],
        "core-js/features/date/to-string": [
        "es.date.to-string"
    ],
        "core-js/features/disposable-stack": [
        "es.error.cause",
        "es.error.to-string",
        "es.object.to-string",
        "esnext.suppressed-error.constructor",
        "esnext.disposable-stack.constructor",
        "esnext.iterator.dispose"
    ],
        "core-js/features/disposable-stack/constructor": [
        "es.error.cause",
        "es.error.to-string",
        "es.object.to-string",
        "esnext.suppressed-error.constructor",
        "esnext.disposable-stack.constructor",
        "esnext.iterator.dispose"
    ],
        "core-js/features/dom-collections": [
        "es.array.iterator",
        "es.object.to-string",
        "web.dom-collections.for-each",
        "web.dom-collections.iterator"
    ],
        "core-js/features/dom-collections/for-each": [
        "web.dom-collections.for-each"
    ],
        "core-js/features/dom-collections/iterator": [
        "es.object.to-string",
        "web.dom-collections.iterator"
    ],
        "core-js/features/dom-exception": [
        "es.error.to-string",
        "web.dom-exception.constructor",
        "web.dom-exception.stack",
        "web.dom-exception.to-string-tag"
    ],
        "core-js/features/dom-exception/constructor": [
        "es.error.to-string",
        "web.dom-exception.constructor",
        "web.dom-exception.stack"
    ],
        "core-js/features/dom-exception/to-string-tag": [
        "web.dom-exception.to-string-tag"
    ],
        "core-js/features/error": [
        "es.error.cause",
        "es.error.to-string"
    ],
        "core-js/features/error/constructor": [
        "es.error.cause"
    ],
        "core-js/features/error/to-string": [
        "es.error.to-string"
    ],
        "core-js/features/escape": [
        "es.escape"
    ],
        "core-js/features/function": [
        "es.function.bind",
        "es.function.has-instance",
        "es.function.name",
        "esnext.function.demethodize",
        "esnext.function.is-callable",
        "esnext.function.is-constructor",
        "esnext.function.un-this"
    ],
        "core-js/features/function/bind": [
        "es.function.bind"
    ],
        "core-js/features/function/demethodize": [
        "esnext.function.demethodize"
    ],
        "core-js/features/function/has-instance": [
        "es.function.has-instance"
    ],
        "core-js/features/function/is-callable": [
        "esnext.function.is-callable"
    ],
        "core-js/features/function/is-constructor": [
        "esnext.function.is-constructor"
    ],
        "core-js/features/function/name": [
        "es.function.name"
    ],
        "core-js/features/function/un-this": [
        "esnext.function.un-this"
    ],
        "core-js/features/function/virtual": [
        "es.function.bind",
        "esnext.function.demethodize",
        "esnext.function.un-this"
    ],
        "core-js/features/function/virtual/bind": [
        "es.function.bind"
    ],
        "core-js/features/function/virtual/demethodize": [
        "esnext.function.demethodize"
    ],
        "core-js/features/function/virtual/un-this": [
        "esnext.function.un-this"
    ],
        "core-js/features/get-iterator": [
        "es.array.iterator",
        "es.string.iterator",
        "web.dom-collections.iterator"
    ],
        "core-js/features/get-iterator-method": [
        "es.array.iterator",
        "es.string.iterator",
        "web.dom-collections.iterator"
    ],
        "core-js/features/global-this": [
        "es.global-this",
        "esnext.global-this"
    ],
        "core-js/features/instance/at": [
        "es.array.at",
        "es.string.at-alternative",
        "esnext.array.at",
        "esnext.string.at"
    ],
        "core-js/features/instance/bind": [
        "es.function.bind"
    ],
        "core-js/features/instance/code-point-at": [
        "es.string.code-point-at"
    ],
        "core-js/features/instance/code-points": [
        "es.object.to-string",
        "esnext.string.code-points"
    ],
        "core-js/features/instance/concat": [
        "es.array.concat"
    ],
        "core-js/features/instance/copy-within": [
        "es.array.copy-within"
    ],
        "core-js/features/instance/demethodize": [
        "esnext.function.demethodize"
    ],
        "core-js/features/instance/ends-with": [
        "es.string.ends-with"
    ],
        "core-js/features/instance/entries": [
        "es.array.iterator",
        "es.object.to-string",
        "web.dom-collections.iterator"
    ],
        "core-js/features/instance/every": [
        "es.array.every"
    ],
        "core-js/features/instance/fill": [
        "es.array.fill"
    ],
        "core-js/features/instance/filter": [
        "es.array.filter"
    ],
        "core-js/features/instance/filter-out": [
        "esnext.array.filter-out"
    ],
        "core-js/features/instance/filter-reject": [
        "esnext.array.filter-reject"
    ],
        "core-js/features/instance/find": [
        "es.array.find"
    ],
        "core-js/features/instance/find-index": [
        "es.array.find-index"
    ],
        "core-js/features/instance/find-last": [
        "es.array.find-last",
        "esnext.array.find-last"
    ],
        "core-js/features/instance/find-last-index": [
        "es.array.find-last-index",
        "esnext.array.find-last-index"
    ],
        "core-js/features/instance/flags": [
        "es.regexp.flags"
    ],
        "core-js/features/instance/flat": [
        "es.array.flat",
        "es.array.unscopables.flat"
    ],
        "core-js/features/instance/flat-map": [
        "es.array.flat-map",
        "es.array.unscopables.flat-map"
    ],
        "core-js/features/instance/for-each": [
        "es.array.for-each",
        "web.dom-collections.iterator"
    ],
        "core-js/features/instance/group": [
        "esnext.array.group"
    ],
        "core-js/features/instance/group-by": [
        "esnext.array.group-by"
    ],
        "core-js/features/instance/group-by-to-map": [
        "es.map",
        "es.object.to-string",
        "esnext.array.group-by-to-map"
    ],
        "core-js/features/instance/group-to-map": [
        "es.map",
        "es.object.to-string",
        "esnext.array.group-to-map"
    ],
        "core-js/features/instance/includes": [
        "es.array.includes",
        "es.string.includes"
    ],
        "core-js/features/instance/index-of": [
        "es.array.index-of"
    ],
        "core-js/features/instance/is-well-formed": [
        "esnext.string.is-well-formed"
    ],
        "core-js/features/instance/keys": [
        "es.array.iterator",
        "es.object.to-string",
        "web.dom-collections.iterator"
    ],
        "core-js/features/instance/last-index-of": [
        "es.array.last-index-of"
    ],
        "core-js/features/instance/map": [
        "es.array.map"
    ],
        "core-js/features/instance/match-all": [
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.match-all",
        "esnext.string.match-all"
    ],
        "core-js/features/instance/pad-end": [
        "es.string.pad-end"
    ],
        "core-js/features/instance/pad-start": [
        "es.string.pad-start"
    ],
        "core-js/features/instance/push": [
        "es.array.push"
    ],
        "core-js/features/instance/reduce": [
        "es.array.reduce"
    ],
        "core-js/features/instance/reduce-right": [
        "es.array.reduce-right"
    ],
        "core-js/features/instance/repeat": [
        "es.string.repeat"
    ],
        "core-js/features/instance/replace-all": [
        "es.regexp.exec",
        "es.string.replace",
        "es.string.replace-all"
    ],
        "core-js/features/instance/reverse": [
        "es.array.reverse"
    ],
        "core-js/features/instance/slice": [
        "es.array.slice"
    ],
        "core-js/features/instance/some": [
        "es.array.some"
    ],
        "core-js/features/instance/sort": [
        "es.array.sort"
    ],
        "core-js/features/instance/splice": [
        "es.array.splice"
    ],
        "core-js/features/instance/starts-with": [
        "es.string.starts-with"
    ],
        "core-js/features/instance/to-reversed": [
        "es.array.to-reversed",
        "esnext.array.to-reversed"
    ],
        "core-js/features/instance/to-sorted": [
        "es.array.sort",
        "es.array.to-sorted",
        "esnext.array.to-sorted"
    ],
        "core-js/features/instance/to-spliced": [
        "es.array.to-spliced",
        "esnext.array.to-spliced"
    ],
        "core-js/features/instance/to-well-formed": [
        "esnext.string.to-well-formed"
    ],
        "core-js/features/instance/trim": [
        "es.string.trim"
    ],
        "core-js/features/instance/trim-end": [
        "es.string.trim-end"
    ],
        "core-js/features/instance/trim-left": [
        "es.string.trim-start"
    ],
        "core-js/features/instance/trim-right": [
        "es.string.trim-end"
    ],
        "core-js/features/instance/trim-start": [
        "es.string.trim-start"
    ],
        "core-js/features/instance/un-this": [
        "esnext.function.un-this"
    ],
        "core-js/features/instance/unique-by": [
        "es.map",
        "esnext.array.unique-by"
    ],
        "core-js/features/instance/unshift": [
        "es.array.unshift"
    ],
        "core-js/features/instance/values": [
        "es.array.iterator",
        "es.object.to-string",
        "web.dom-collections.iterator"
    ],
        "core-js/features/instance/with": [
        "es.array.with",
        "esnext.array.with"
    ],
        "core-js/features/is-iterable": [
        "es.array.iterator",
        "es.string.iterator",
        "web.dom-collections.iterator"
    ],
        "core-js/features/iterator": [
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "esnext.iterator.constructor",
        "esnext.iterator.as-indexed-pairs",
        "esnext.iterator.dispose",
        "esnext.iterator.drop",
        "esnext.iterator.every",
        "esnext.iterator.filter",
        "esnext.iterator.find",
        "esnext.iterator.flat-map",
        "esnext.iterator.for-each",
        "esnext.iterator.from",
        "esnext.iterator.indexed",
        "esnext.iterator.map",
        "esnext.iterator.range",
        "esnext.iterator.reduce",
        "esnext.iterator.some",
        "esnext.iterator.take",
        "esnext.iterator.to-array",
        "esnext.iterator.to-async",
        "web.dom-collections.iterator"
    ],
        "core-js/features/iterator/as-indexed-pairs": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.as-indexed-pairs"
    ],
        "core-js/features/iterator/dispose": [
        "esnext.iterator.dispose"
    ],
        "core-js/features/iterator/drop": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.drop"
    ],
        "core-js/features/iterator/every": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.every"
    ],
        "core-js/features/iterator/filter": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.filter"
    ],
        "core-js/features/iterator/find": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.find"
    ],
        "core-js/features/iterator/flat-map": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.flat-map"
    ],
        "core-js/features/iterator/for-each": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.for-each"
    ],
        "core-js/features/iterator/from": [
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "esnext.iterator.constructor",
        "esnext.iterator.dispose",
        "esnext.iterator.drop",
        "esnext.iterator.every",
        "esnext.iterator.filter",
        "esnext.iterator.find",
        "esnext.iterator.flat-map",
        "esnext.iterator.for-each",
        "esnext.iterator.from",
        "esnext.iterator.map",
        "esnext.iterator.reduce",
        "esnext.iterator.some",
        "esnext.iterator.take",
        "esnext.iterator.to-array",
        "esnext.iterator.to-async",
        "web.dom-collections.iterator"
    ],
        "core-js/features/iterator/indexed": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.indexed"
    ],
        "core-js/features/iterator/map": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.map"
    ],
        "core-js/features/iterator/range": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.range"
    ],
        "core-js/features/iterator/reduce": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.reduce"
    ],
        "core-js/features/iterator/some": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.some"
    ],
        "core-js/features/iterator/take": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.take"
    ],
        "core-js/features/iterator/to-array": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.to-array"
    ],
        "core-js/features/iterator/to-async": [
        "es.object.to-string",
        "es.promise",
        "esnext.iterator.constructor",
        "esnext.iterator.to-async"
    ],
        "core-js/features/json": [
        "es.json.stringify",
        "es.json.to-string-tag",
        "es.object.create",
        "es.object.freeze",
        "es.object.keys",
        "esnext.json.is-raw-json",
        "esnext.json.parse",
        "esnext.json.raw-json"
    ],
        "core-js/features/json/is-raw-json": [
        "esnext.json.is-raw-json"
    ],
        "core-js/features/json/parse": [
        "es.object.keys",
        "esnext.json.parse"
    ],
        "core-js/features/json/raw-json": [
        "es.object.create",
        "es.object.freeze",
        "esnext.json.raw-json"
    ],
        "core-js/features/json/stringify": [
        "es.json.stringify"
    ],
        "core-js/features/json/to-string-tag": [
        "es.json.to-string-tag"
    ],
        "core-js/features/map": [
        "es.array.iterator",
        "es.map",
        "es.object.to-string",
        "es.string.iterator",
        "esnext.map.delete-all",
        "esnext.map.emplace",
        "esnext.map.every",
        "esnext.map.filter",
        "esnext.map.find",
        "esnext.map.find-key",
        "esnext.map.from",
        "esnext.map.group-by",
        "esnext.map.includes",
        "esnext.map.key-by",
        "esnext.map.key-of",
        "esnext.map.map-keys",
        "esnext.map.map-values",
        "esnext.map.merge",
        "esnext.map.of",
        "esnext.map.reduce",
        "esnext.map.some",
        "esnext.map.update",
        "esnext.map.update-or-insert",
        "esnext.map.upsert",
        "web.dom-collections.iterator"
    ],
        "core-js/features/map/delete-all": [
        "es.map",
        "esnext.map.delete-all"
    ],
        "core-js/features/map/emplace": [
        "es.map",
        "esnext.map.emplace"
    ],
        "core-js/features/map/every": [
        "es.map",
        "esnext.map.every"
    ],
        "core-js/features/map/filter": [
        "es.map",
        "esnext.map.filter"
    ],
        "core-js/features/map/find": [
        "es.map",
        "esnext.map.find"
    ],
        "core-js/features/map/find-key": [
        "es.map",
        "esnext.map.find-key"
    ],
        "core-js/features/map/from": [
        "es.array.iterator",
        "es.map",
        "es.string.iterator",
        "esnext.map.from",
        "web.dom-collections.iterator"
    ],
        "core-js/features/map/group-by": [
        "es.map",
        "esnext.map.group-by"
    ],
        "core-js/features/map/includes": [
        "es.map",
        "esnext.map.includes"
    ],
        "core-js/features/map/key-by": [
        "es.map",
        "esnext.map.key-by"
    ],
        "core-js/features/map/key-of": [
        "es.map",
        "esnext.map.key-of"
    ],
        "core-js/features/map/map-keys": [
        "es.map",
        "esnext.map.map-keys"
    ],
        "core-js/features/map/map-values": [
        "es.map",
        "esnext.map.map-values"
    ],
        "core-js/features/map/merge": [
        "es.map",
        "esnext.map.merge"
    ],
        "core-js/features/map/of": [
        "es.array.iterator",
        "es.map",
        "esnext.map.of"
    ],
        "core-js/features/map/reduce": [
        "es.map",
        "esnext.map.reduce"
    ],
        "core-js/features/map/some": [
        "es.map",
        "esnext.map.some"
    ],
        "core-js/features/map/update": [
        "es.map",
        "esnext.map.update"
    ],
        "core-js/features/map/update-or-insert": [
        "es.map",
        "esnext.map.update-or-insert"
    ],
        "core-js/features/map/upsert": [
        "es.map",
        "esnext.map.upsert"
    ],
        "core-js/features/math": [
        "es.math.acosh",
        "es.math.asinh",
        "es.math.atanh",
        "es.math.cbrt",
        "es.math.clz32",
        "es.math.cosh",
        "es.math.expm1",
        "es.math.fround",
        "es.math.hypot",
        "es.math.imul",
        "es.math.log10",
        "es.math.log1p",
        "es.math.log2",
        "es.math.sign",
        "es.math.sinh",
        "es.math.tanh",
        "es.math.to-string-tag",
        "es.math.trunc",
        "esnext.math.clamp",
        "esnext.math.deg-per-rad",
        "esnext.math.degrees",
        "esnext.math.fscale",
        "esnext.math.iaddh",
        "esnext.math.imulh",
        "esnext.math.isubh",
        "esnext.math.rad-per-deg",
        "esnext.math.radians",
        "esnext.math.scale",
        "esnext.math.seeded-prng",
        "esnext.math.signbit",
        "esnext.math.umulh"
    ],
        "core-js/features/math/acosh": [
        "es.math.acosh"
    ],
        "core-js/features/math/asinh": [
        "es.math.asinh"
    ],
        "core-js/features/math/atanh": [
        "es.math.atanh"
    ],
        "core-js/features/math/cbrt": [
        "es.math.cbrt"
    ],
        "core-js/features/math/clamp": [
        "esnext.math.clamp"
    ],
        "core-js/features/math/clz32": [
        "es.math.clz32"
    ],
        "core-js/features/math/cosh": [
        "es.math.cosh"
    ],
        "core-js/features/math/deg-per-rad": [
        "esnext.math.deg-per-rad"
    ],
        "core-js/features/math/degrees": [
        "esnext.math.degrees"
    ],
        "core-js/features/math/expm1": [
        "es.math.expm1"
    ],
        "core-js/features/math/fround": [
        "es.math.fround"
    ],
        "core-js/features/math/fscale": [
        "esnext.math.fscale"
    ],
        "core-js/features/math/hypot": [
        "es.math.hypot"
    ],
        "core-js/features/math/iaddh": [
        "esnext.math.iaddh"
    ],
        "core-js/features/math/imul": [
        "es.math.imul"
    ],
        "core-js/features/math/imulh": [
        "esnext.math.imulh"
    ],
        "core-js/features/math/isubh": [
        "esnext.math.isubh"
    ],
        "core-js/features/math/log10": [
        "es.math.log10"
    ],
        "core-js/features/math/log1p": [
        "es.math.log1p"
    ],
        "core-js/features/math/log2": [
        "es.math.log2"
    ],
        "core-js/features/math/rad-per-deg": [
        "esnext.math.rad-per-deg"
    ],
        "core-js/features/math/radians": [
        "esnext.math.radians"
    ],
        "core-js/features/math/scale": [
        "esnext.math.scale"
    ],
        "core-js/features/math/seeded-prng": [
        "esnext.math.seeded-prng"
    ],
        "core-js/features/math/sign": [
        "es.math.sign"
    ],
        "core-js/features/math/signbit": [
        "esnext.math.signbit"
    ],
        "core-js/features/math/sinh": [
        "es.math.sinh"
    ],
        "core-js/features/math/tanh": [
        "es.math.tanh"
    ],
        "core-js/features/math/to-string-tag": [
        "es.math.to-string-tag"
    ],
        "core-js/features/math/trunc": [
        "es.math.trunc"
    ],
        "core-js/features/math/umulh": [
        "esnext.math.umulh"
    ],
        "core-js/features/number": [
        "es.number.constructor",
        "es.number.epsilon",
        "es.number.is-finite",
        "es.number.is-integer",
        "es.number.is-nan",
        "es.number.is-safe-integer",
        "es.number.max-safe-integer",
        "es.number.min-safe-integer",
        "es.number.parse-float",
        "es.number.parse-int",
        "es.number.to-exponential",
        "es.number.to-fixed",
        "es.number.to-precision",
        "es.object.to-string",
        "esnext.number.from-string",
        "esnext.number.range"
    ],
        "core-js/features/number/constructor": [
        "es.number.constructor"
    ],
        "core-js/features/number/epsilon": [
        "es.number.epsilon"
    ],
        "core-js/features/number/from-string": [
        "esnext.number.from-string"
    ],
        "core-js/features/number/is-finite": [
        "es.number.is-finite"
    ],
        "core-js/features/number/is-integer": [
        "es.number.is-integer"
    ],
        "core-js/features/number/is-nan": [
        "es.number.is-nan"
    ],
        "core-js/features/number/is-safe-integer": [
        "es.number.is-safe-integer"
    ],
        "core-js/features/number/max-safe-integer": [
        "es.number.max-safe-integer"
    ],
        "core-js/features/number/min-safe-integer": [
        "es.number.min-safe-integer"
    ],
        "core-js/features/number/parse-float": [
        "es.number.parse-float"
    ],
        "core-js/features/number/parse-int": [
        "es.number.parse-int"
    ],
        "core-js/features/number/range": [
        "es.object.to-string",
        "esnext.number.range"
    ],
        "core-js/features/number/to-exponential": [
        "es.number.to-exponential"
    ],
        "core-js/features/number/to-fixed": [
        "es.number.to-fixed"
    ],
        "core-js/features/number/to-precision": [
        "es.number.to-precision"
    ],
        "core-js/features/number/virtual": [
        "es.number.to-exponential",
        "es.number.to-fixed",
        "es.number.to-precision"
    ],
        "core-js/features/number/virtual/to-exponential": [
        "es.number.to-exponential"
    ],
        "core-js/features/number/virtual/to-fixed": [
        "es.number.to-fixed"
    ],
        "core-js/features/number/virtual/to-precision": [
        "es.number.to-precision"
    ],
        "core-js/features/object": [
        "es.symbol",
        "es.json.to-string-tag",
        "es.math.to-string-tag",
        "es.object.assign",
        "es.object.create",
        "es.object.define-getter",
        "es.object.define-properties",
        "es.object.define-property",
        "es.object.define-setter",
        "es.object.entries",
        "es.object.freeze",
        "es.object.from-entries",
        "es.object.get-own-property-descriptor",
        "es.object.get-own-property-descriptors",
        "es.object.get-own-property-names",
        "es.object.get-prototype-of",
        "es.object.has-own",
        "es.object.is",
        "es.object.is-extensible",
        "es.object.is-frozen",
        "es.object.is-sealed",
        "es.object.keys",
        "es.object.lookup-getter",
        "es.object.lookup-setter",
        "es.object.prevent-extensions",
        "es.object.proto",
        "es.object.seal",
        "es.object.set-prototype-of",
        "es.object.to-string",
        "es.object.values",
        "es.reflect.to-string-tag",
        "esnext.object.has-own",
        "esnext.object.iterate-entries",
        "esnext.object.iterate-keys",
        "esnext.object.iterate-values",
        "web.dom-collections.iterator"
    ],
        "core-js/features/object/assign": [
        "es.object.assign"
    ],
        "core-js/features/object/create": [
        "es.object.create"
    ],
        "core-js/features/object/define-getter": [
        "es.object.define-getter"
    ],
        "core-js/features/object/define-properties": [
        "es.object.define-properties"
    ],
        "core-js/features/object/define-property": [
        "es.object.define-property"
    ],
        "core-js/features/object/define-setter": [
        "es.object.define-setter"
    ],
        "core-js/features/object/entries": [
        "es.object.entries"
    ],
        "core-js/features/object/freeze": [
        "es.object.freeze"
    ],
        "core-js/features/object/from-entries": [
        "es.array.iterator",
        "es.object.from-entries",
        "web.dom-collections.iterator"
    ],
        "core-js/features/object/get-own-property-descriptor": [
        "es.object.get-own-property-descriptor"
    ],
        "core-js/features/object/get-own-property-descriptors": [
        "es.object.get-own-property-descriptors"
    ],
        "core-js/features/object/get-own-property-names": [
        "es.object.get-own-property-names"
    ],
        "core-js/features/object/get-own-property-symbols": [
        "es.symbol"
    ],
        "core-js/features/object/get-prototype-of": [
        "es.object.get-prototype-of"
    ],
        "core-js/features/object/has-own": [
        "es.object.has-own",
        "esnext.object.has-own"
    ],
        "core-js/features/object/is": [
        "es.object.is"
    ],
        "core-js/features/object/is-extensible": [
        "es.object.is-extensible"
    ],
        "core-js/features/object/is-frozen": [
        "es.object.is-frozen"
    ],
        "core-js/features/object/is-sealed": [
        "es.object.is-sealed"
    ],
        "core-js/features/object/iterate-entries": [
        "esnext.object.iterate-entries"
    ],
        "core-js/features/object/iterate-keys": [
        "esnext.object.iterate-keys"
    ],
        "core-js/features/object/iterate-values": [
        "esnext.object.iterate-values"
    ],
        "core-js/features/object/keys": [
        "es.object.keys"
    ],
        "core-js/features/object/lookup-getter": [
        "es.object.lookup-getter"
    ],
        "core-js/features/object/lookup-setter": [
        "es.object.lookup-setter"
    ],
        "core-js/features/object/prevent-extensions": [
        "es.object.prevent-extensions"
    ],
        "core-js/features/object/proto": [
        "es.object.proto"
    ],
        "core-js/features/object/seal": [
        "es.object.seal"
    ],
        "core-js/features/object/set-prototype-of": [
        "es.object.set-prototype-of"
    ],
        "core-js/features/object/to-string": [
        "es.json.to-string-tag",
        "es.math.to-string-tag",
        "es.object.to-string",
        "es.reflect.to-string-tag"
    ],
        "core-js/features/object/values": [
        "es.object.values"
    ],
        "core-js/features/observable": [
        "es.object.to-string",
        "es.string.iterator",
        "esnext.observable",
        "esnext.symbol.observable",
        "web.dom-collections.iterator"
    ],
        "core-js/features/parse-float": [
        "es.parse-float"
    ],
        "core-js/features/parse-int": [
        "es.parse-int"
    ],
        "core-js/features/promise": [
        "es.aggregate-error",
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.promise.all-settled",
        "es.promise.any",
        "es.promise.finally",
        "es.string.iterator",
        "esnext.aggregate-error",
        "esnext.promise.all-settled",
        "esnext.promise.any",
        "esnext.promise.try",
        "web.dom-collections.iterator"
    ],
        "core-js/features/promise/all-settled": [
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.promise.all-settled",
        "es.string.iterator",
        "esnext.promise.all-settled",
        "web.dom-collections.iterator"
    ],
        "core-js/features/promise/any": [
        "es.aggregate-error",
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.promise.any",
        "es.string.iterator",
        "esnext.aggregate-error",
        "esnext.promise.any",
        "web.dom-collections.iterator"
    ],
        "core-js/features/promise/finally": [
        "es.object.to-string",
        "es.promise",
        "es.promise.finally"
    ],
        "core-js/features/promise/try": [
        "es.promise",
        "esnext.promise.try"
    ],
        "core-js/features/queue-microtask": [
        "web.queue-microtask"
    ],
        "core-js/features/reflect": [
        "es.object.to-string",
        "es.reflect.apply",
        "es.reflect.construct",
        "es.reflect.define-property",
        "es.reflect.delete-property",
        "es.reflect.get",
        "es.reflect.get-own-property-descriptor",
        "es.reflect.get-prototype-of",
        "es.reflect.has",
        "es.reflect.is-extensible",
        "es.reflect.own-keys",
        "es.reflect.prevent-extensions",
        "es.reflect.set",
        "es.reflect.set-prototype-of",
        "es.reflect.to-string-tag",
        "esnext.reflect.define-metadata",
        "esnext.reflect.delete-metadata",
        "esnext.reflect.get-metadata",
        "esnext.reflect.get-metadata-keys",
        "esnext.reflect.get-own-metadata",
        "esnext.reflect.get-own-metadata-keys",
        "esnext.reflect.has-metadata",
        "esnext.reflect.has-own-metadata",
        "esnext.reflect.metadata"
    ],
        "core-js/features/reflect/apply": [
        "es.reflect.apply"
    ],
        "core-js/features/reflect/construct": [
        "es.reflect.construct"
    ],
        "core-js/features/reflect/define-metadata": [
        "esnext.reflect.define-metadata"
    ],
        "core-js/features/reflect/define-property": [
        "es.reflect.define-property"
    ],
        "core-js/features/reflect/delete-metadata": [
        "esnext.reflect.delete-metadata"
    ],
        "core-js/features/reflect/delete-property": [
        "es.reflect.delete-property"
    ],
        "core-js/features/reflect/get": [
        "es.reflect.get"
    ],
        "core-js/features/reflect/get-metadata": [
        "esnext.reflect.get-metadata"
    ],
        "core-js/features/reflect/get-metadata-keys": [
        "esnext.reflect.get-metadata-keys"
    ],
        "core-js/features/reflect/get-own-metadata": [
        "esnext.reflect.get-own-metadata"
    ],
        "core-js/features/reflect/get-own-metadata-keys": [
        "esnext.reflect.get-own-metadata-keys"
    ],
        "core-js/features/reflect/get-own-property-descriptor": [
        "es.reflect.get-own-property-descriptor"
    ],
        "core-js/features/reflect/get-prototype-of": [
        "es.reflect.get-prototype-of"
    ],
        "core-js/features/reflect/has": [
        "es.reflect.has"
    ],
        "core-js/features/reflect/has-metadata": [
        "esnext.reflect.has-metadata"
    ],
        "core-js/features/reflect/has-own-metadata": [
        "esnext.reflect.has-own-metadata"
    ],
        "core-js/features/reflect/is-extensible": [
        "es.reflect.is-extensible"
    ],
        "core-js/features/reflect/metadata": [
        "esnext.reflect.metadata"
    ],
        "core-js/features/reflect/own-keys": [
        "es.reflect.own-keys"
    ],
        "core-js/features/reflect/prevent-extensions": [
        "es.reflect.prevent-extensions"
    ],
        "core-js/features/reflect/set": [
        "es.reflect.set"
    ],
        "core-js/features/reflect/set-prototype-of": [
        "es.reflect.set-prototype-of"
    ],
        "core-js/features/reflect/to-string-tag": [
        "es.reflect.to-string-tag"
    ],
        "core-js/features/regexp": [
        "es.regexp.constructor",
        "es.regexp.dot-all",
        "es.regexp.exec",
        "es.regexp.flags",
        "es.regexp.sticky",
        "es.regexp.test",
        "es.regexp.to-string",
        "es.string.match",
        "es.string.replace",
        "es.string.search",
        "es.string.split"
    ],
        "core-js/features/regexp/constructor": [
        "es.regexp.constructor",
        "es.regexp.dot-all",
        "es.regexp.exec",
        "es.regexp.sticky"
    ],
        "core-js/features/regexp/dot-all": [
        "es.regexp.constructor",
        "es.regexp.dot-all",
        "es.regexp.exec"
    ],
        "core-js/features/regexp/flags": [
        "es.regexp.flags"
    ],
        "core-js/features/regexp/match": [
        "es.regexp.exec",
        "es.string.match"
    ],
        "core-js/features/regexp/replace": [
        "es.regexp.exec",
        "es.string.replace"
    ],
        "core-js/features/regexp/search": [
        "es.regexp.exec",
        "es.string.search"
    ],
        "core-js/features/regexp/split": [
        "es.regexp.exec",
        "es.string.split"
    ],
        "core-js/features/regexp/sticky": [
        "es.regexp.constructor",
        "es.regexp.exec",
        "es.regexp.sticky"
    ],
        "core-js/features/regexp/test": [
        "es.regexp.exec",
        "es.regexp.test"
    ],
        "core-js/features/regexp/to-string": [
        "es.regexp.to-string"
    ],
        "core-js/features/self": [
        "web.self"
    ],
        "core-js/features/set": [
        "es.array.iterator",
        "es.object.to-string",
        "es.set",
        "es.string.iterator",
        "esnext.set.add-all",
        "esnext.set.delete-all",
        "esnext.set.difference.v2",
        "esnext.set.difference",
        "esnext.set.every",
        "esnext.set.filter",
        "esnext.set.find",
        "esnext.set.from",
        "esnext.set.intersection.v2",
        "esnext.set.intersection",
        "esnext.set.is-disjoint-from.v2",
        "esnext.set.is-disjoint-from",
        "esnext.set.is-subset-of.v2",
        "esnext.set.is-subset-of",
        "esnext.set.is-superset-of.v2",
        "esnext.set.is-superset-of",
        "esnext.set.join",
        "esnext.set.map",
        "esnext.set.of",
        "esnext.set.reduce",
        "esnext.set.some",
        "esnext.set.symmetric-difference.v2",
        "esnext.set.symmetric-difference",
        "esnext.set.union.v2",
        "esnext.set.union",
        "web.dom-collections.iterator"
    ],
        "core-js/features/set-immediate": [
        "web.immediate"
    ],
        "core-js/features/set-interval": [
        "web.timers"
    ],
        "core-js/features/set-timeout": [
        "web.timers"
    ],
        "core-js/features/set/add-all": [
        "es.set",
        "esnext.set.add-all"
    ],
        "core-js/features/set/delete-all": [
        "es.set",
        "esnext.set.delete-all"
    ],
        "core-js/features/set/difference": [
        "es.array.iterator",
        "es.set",
        "es.string.iterator",
        "esnext.set.difference.v2",
        "esnext.set.difference",
        "web.dom-collections.iterator"
    ],
        "core-js/features/set/every": [
        "es.set",
        "esnext.set.every"
    ],
        "core-js/features/set/filter": [
        "es.set",
        "esnext.set.filter"
    ],
        "core-js/features/set/find": [
        "es.set",
        "esnext.set.find"
    ],
        "core-js/features/set/from": [
        "es.array.iterator",
        "es.set",
        "es.string.iterator",
        "esnext.set.from",
        "web.dom-collections.iterator"
    ],
        "core-js/features/set/intersection": [
        "es.array.iterator",
        "es.set",
        "es.string.iterator",
        "esnext.set.intersection.v2",
        "esnext.set.intersection",
        "web.dom-collections.iterator"
    ],
        "core-js/features/set/is-disjoint-from": [
        "es.array.iterator",
        "es.set",
        "es.string.iterator",
        "esnext.set.is-disjoint-from.v2",
        "esnext.set.is-disjoint-from",
        "web.dom-collections.iterator"
    ],
        "core-js/features/set/is-subset-of": [
        "es.array.iterator",
        "es.set",
        "es.string.iterator",
        "esnext.set.is-subset-of.v2",
        "esnext.set.is-subset-of",
        "web.dom-collections.iterator"
    ],
        "core-js/features/set/is-superset-of": [
        "es.array.iterator",
        "es.set",
        "es.string.iterator",
        "esnext.set.is-superset-of.v2",
        "esnext.set.is-superset-of",
        "web.dom-collections.iterator"
    ],
        "core-js/features/set/join": [
        "es.set",
        "esnext.set.join"
    ],
        "core-js/features/set/map": [
        "es.set",
        "esnext.set.map"
    ],
        "core-js/features/set/of": [
        "es.array.iterator",
        "es.set",
        "esnext.set.of"
    ],
        "core-js/features/set/reduce": [
        "es.set",
        "esnext.set.reduce"
    ],
        "core-js/features/set/some": [
        "es.set",
        "esnext.set.some"
    ],
        "core-js/features/set/symmetric-difference": [
        "es.array.iterator",
        "es.set",
        "es.string.iterator",
        "esnext.set.symmetric-difference.v2",
        "esnext.set.symmetric-difference",
        "web.dom-collections.iterator"
    ],
        "core-js/features/set/union": [
        "es.array.iterator",
        "es.set",
        "es.string.iterator",
        "esnext.set.union.v2",
        "esnext.set.union",
        "web.dom-collections.iterator"
    ],
        "core-js/features/string": [
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.at-alternative",
        "es.string.code-point-at",
        "es.string.ends-with",
        "es.string.from-code-point",
        "es.string.includes",
        "es.string.iterator",
        "es.string.match",
        "es.string.match-all",
        "es.string.pad-end",
        "es.string.pad-start",
        "es.string.raw",
        "es.string.repeat",
        "es.string.replace",
        "es.string.replace-all",
        "es.string.search",
        "es.string.split",
        "es.string.starts-with",
        "es.string.substr",
        "es.string.trim",
        "es.string.trim-end",
        "es.string.trim-start",
        "es.string.anchor",
        "es.string.big",
        "es.string.blink",
        "es.string.bold",
        "es.string.fixed",
        "es.string.fontcolor",
        "es.string.fontsize",
        "es.string.italics",
        "es.string.link",
        "es.string.small",
        "es.string.strike",
        "es.string.sub",
        "es.string.sup",
        "es.weak-map",
        "esnext.string.at",
        "esnext.string.cooked",
        "esnext.string.code-points",
        "esnext.string.dedent",
        "esnext.string.is-well-formed",
        "esnext.string.match-all",
        "esnext.string.replace-all",
        "esnext.string.to-well-formed"
    ],
        "core-js/features/string/anchor": [
        "es.string.anchor"
    ],
        "core-js/features/string/at": [
        "es.string.at-alternative",
        "esnext.string.at"
    ],
        "core-js/features/string/big": [
        "es.string.big"
    ],
        "core-js/features/string/blink": [
        "es.string.blink"
    ],
        "core-js/features/string/bold": [
        "es.string.bold"
    ],
        "core-js/features/string/code-point-at": [
        "es.string.code-point-at"
    ],
        "core-js/features/string/code-points": [
        "es.object.to-string",
        "esnext.string.code-points"
    ],
        "core-js/features/string/cooked": [
        "esnext.string.cooked"
    ],
        "core-js/features/string/dedent": [
        "es.string.from-code-point",
        "es.weak-map",
        "esnext.string.dedent"
    ],
        "core-js/features/string/ends-with": [
        "es.string.ends-with"
    ],
        "core-js/features/string/fixed": [
        "es.string.fixed"
    ],
        "core-js/features/string/fontcolor": [
        "es.string.fontcolor"
    ],
        "core-js/features/string/fontsize": [
        "es.string.fontsize"
    ],
        "core-js/features/string/from-code-point": [
        "es.string.from-code-point"
    ],
        "core-js/features/string/includes": [
        "es.string.includes"
    ],
        "core-js/features/string/is-well-formed": [
        "esnext.string.is-well-formed"
    ],
        "core-js/features/string/italics": [
        "es.string.italics"
    ],
        "core-js/features/string/iterator": [
        "es.object.to-string",
        "es.string.iterator"
    ],
        "core-js/features/string/link": [
        "es.string.link"
    ],
        "core-js/features/string/match": [
        "es.regexp.exec",
        "es.string.match"
    ],
        "core-js/features/string/match-all": [
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.match-all",
        "esnext.string.match-all"
    ],
        "core-js/features/string/pad-end": [
        "es.string.pad-end"
    ],
        "core-js/features/string/pad-start": [
        "es.string.pad-start"
    ],
        "core-js/features/string/raw": [
        "es.string.raw"
    ],
        "core-js/features/string/repeat": [
        "es.string.repeat"
    ],
        "core-js/features/string/replace": [
        "es.regexp.exec",
        "es.string.replace"
    ],
        "core-js/features/string/replace-all": [
        "es.regexp.exec",
        "es.string.replace",
        "es.string.replace-all",
        "esnext.string.replace-all"
    ],
        "core-js/features/string/search": [
        "es.regexp.exec",
        "es.string.search"
    ],
        "core-js/features/string/small": [
        "es.string.small"
    ],
        "core-js/features/string/split": [
        "es.regexp.exec",
        "es.string.split"
    ],
        "core-js/features/string/starts-with": [
        "es.string.starts-with"
    ],
        "core-js/features/string/strike": [
        "es.string.strike"
    ],
        "core-js/features/string/sub": [
        "es.string.sub"
    ],
        "core-js/features/string/substr": [
        "es.string.substr"
    ],
        "core-js/features/string/sup": [
        "es.string.sup"
    ],
        "core-js/features/string/to-well-formed": [
        "esnext.string.to-well-formed"
    ],
        "core-js/features/string/trim": [
        "es.string.trim"
    ],
        "core-js/features/string/trim-end": [
        "es.string.trim-end"
    ],
        "core-js/features/string/trim-left": [
        "es.string.trim-start"
    ],
        "core-js/features/string/trim-right": [
        "es.string.trim-end"
    ],
        "core-js/features/string/trim-start": [
        "es.string.trim-start"
    ],
        "core-js/features/string/virtual": [
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.at-alternative",
        "es.string.code-point-at",
        "es.string.ends-with",
        "es.string.includes",
        "es.string.iterator",
        "es.string.match",
        "es.string.match-all",
        "es.string.pad-end",
        "es.string.pad-start",
        "es.string.repeat",
        "es.string.replace",
        "es.string.replace-all",
        "es.string.search",
        "es.string.split",
        "es.string.starts-with",
        "es.string.substr",
        "es.string.trim",
        "es.string.trim-end",
        "es.string.trim-start",
        "es.string.anchor",
        "es.string.big",
        "es.string.blink",
        "es.string.bold",
        "es.string.fixed",
        "es.string.fontcolor",
        "es.string.fontsize",
        "es.string.italics",
        "es.string.link",
        "es.string.small",
        "es.string.strike",
        "es.string.sub",
        "es.string.sup",
        "esnext.string.at",
        "esnext.string.code-points",
        "esnext.string.is-well-formed",
        "esnext.string.match-all",
        "esnext.string.replace-all",
        "esnext.string.to-well-formed"
    ],
        "core-js/features/string/virtual/anchor": [
        "es.string.anchor"
    ],
        "core-js/features/string/virtual/at": [
        "es.string.at-alternative",
        "esnext.string.at"
    ],
        "core-js/features/string/virtual/big": [
        "es.string.big"
    ],
        "core-js/features/string/virtual/blink": [
        "es.string.blink"
    ],
        "core-js/features/string/virtual/bold": [
        "es.string.bold"
    ],
        "core-js/features/string/virtual/code-point-at": [
        "es.string.code-point-at"
    ],
        "core-js/features/string/virtual/code-points": [
        "es.object.to-string",
        "esnext.string.code-points"
    ],
        "core-js/features/string/virtual/ends-with": [
        "es.string.ends-with"
    ],
        "core-js/features/string/virtual/fixed": [
        "es.string.fixed"
    ],
        "core-js/features/string/virtual/fontcolor": [
        "es.string.fontcolor"
    ],
        "core-js/features/string/virtual/fontsize": [
        "es.string.fontsize"
    ],
        "core-js/features/string/virtual/includes": [
        "es.string.includes"
    ],
        "core-js/features/string/virtual/is-well-formed": [
        "esnext.string.is-well-formed"
    ],
        "core-js/features/string/virtual/italics": [
        "es.string.italics"
    ],
        "core-js/features/string/virtual/iterator": [
        "es.object.to-string",
        "es.string.iterator"
    ],
        "core-js/features/string/virtual/link": [
        "es.string.link"
    ],
        "core-js/features/string/virtual/match-all": [
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.match-all",
        "esnext.string.match-all"
    ],
        "core-js/features/string/virtual/pad-end": [
        "es.string.pad-end"
    ],
        "core-js/features/string/virtual/pad-start": [
        "es.string.pad-start"
    ],
        "core-js/features/string/virtual/repeat": [
        "es.string.repeat"
    ],
        "core-js/features/string/virtual/replace-all": [
        "es.regexp.exec",
        "es.string.replace",
        "es.string.replace-all",
        "esnext.string.replace-all"
    ],
        "core-js/features/string/virtual/small": [
        "es.string.small"
    ],
        "core-js/features/string/virtual/starts-with": [
        "es.string.starts-with"
    ],
        "core-js/features/string/virtual/strike": [
        "es.string.strike"
    ],
        "core-js/features/string/virtual/sub": [
        "es.string.sub"
    ],
        "core-js/features/string/virtual/substr": [
        "es.string.substr"
    ],
        "core-js/features/string/virtual/sup": [
        "es.string.sup"
    ],
        "core-js/features/string/virtual/to-well-formed": [
        "esnext.string.to-well-formed"
    ],
        "core-js/features/string/virtual/trim": [
        "es.string.trim"
    ],
        "core-js/features/string/virtual/trim-end": [
        "es.string.trim-end"
    ],
        "core-js/features/string/virtual/trim-left": [
        "es.string.trim-start"
    ],
        "core-js/features/string/virtual/trim-right": [
        "es.string.trim-end"
    ],
        "core-js/features/string/virtual/trim-start": [
        "es.string.trim-start"
    ],
        "core-js/features/structured-clone": [
        "es.error.to-string",
        "es.array.iterator",
        "es.map",
        "es.object.keys",
        "es.object.to-string",
        "es.set",
        "web.dom-exception.constructor",
        "web.dom-exception.stack",
        "web.dom-exception.to-string-tag",
        "web.structured-clone"
    ],
        "core-js/features/suppressed-error": [
        "es.error.cause",
        "es.error.to-string",
        "esnext.suppressed-error.constructor"
    ],
        "core-js/features/symbol": [
        "es.symbol",
        "es.symbol.description",
        "es.symbol.async-iterator",
        "es.symbol.has-instance",
        "es.symbol.is-concat-spreadable",
        "es.symbol.iterator",
        "es.symbol.match",
        "es.symbol.match-all",
        "es.symbol.replace",
        "es.symbol.search",
        "es.symbol.species",
        "es.symbol.split",
        "es.symbol.to-primitive",
        "es.symbol.to-string-tag",
        "es.symbol.unscopables",
        "es.array.concat",
        "es.json.to-string-tag",
        "es.math.to-string-tag",
        "es.object.to-string",
        "es.reflect.to-string-tag",
        "esnext.symbol.async-dispose",
        "esnext.symbol.dispose",
        "esnext.symbol.is-registered",
        "esnext.symbol.is-well-known",
        "esnext.symbol.matcher",
        "esnext.symbol.metadata",
        "esnext.symbol.metadata-key",
        "esnext.symbol.observable",
        "esnext.symbol.pattern-match",
        "esnext.symbol.replace-all",
        "web.dom-collections.iterator"
    ],
        "core-js/features/symbol/async-dispose": [
        "esnext.symbol.async-dispose"
    ],
        "core-js/features/symbol/async-iterator": [
        "es.symbol.async-iterator"
    ],
        "core-js/features/symbol/description": [
        "es.symbol.description"
    ],
        "core-js/features/symbol/dispose": [
        "esnext.symbol.dispose"
    ],
        "core-js/features/symbol/for": [
        "es.symbol"
    ],
        "core-js/features/symbol/has-instance": [
        "es.symbol.has-instance",
        "es.function.has-instance"
    ],
        "core-js/features/symbol/is-concat-spreadable": [
        "es.symbol.is-concat-spreadable",
        "es.array.concat"
    ],
        "core-js/features/symbol/is-registered": [
        "es.symbol",
        "esnext.symbol.is-registered"
    ],
        "core-js/features/symbol/is-well-known": [
        "es.symbol",
        "esnext.symbol.is-well-known"
    ],
        "core-js/features/symbol/iterator": [
        "es.symbol.iterator",
        "es.array.iterator",
        "es.object.to-string",
        "es.string.iterator",
        "web.dom-collections.iterator"
    ],
        "core-js/features/symbol/key-for": [
        "es.symbol"
    ],
        "core-js/features/symbol/match": [
        "es.symbol.match",
        "es.regexp.exec",
        "es.string.match"
    ],
        "core-js/features/symbol/match-all": [
        "es.symbol.match-all",
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.match-all"
    ],
        "core-js/features/symbol/matcher": [
        "esnext.symbol.matcher"
    ],
        "core-js/features/symbol/metadata": [
        "esnext.symbol.metadata"
    ],
        "core-js/features/symbol/metadata-key": [
        "esnext.symbol.metadata-key"
    ],
        "core-js/features/symbol/observable": [
        "esnext.symbol.observable"
    ],
        "core-js/features/symbol/pattern-match": [
        "esnext.symbol.pattern-match"
    ],
        "core-js/features/symbol/replace": [
        "es.symbol.replace",
        "es.regexp.exec",
        "es.string.replace"
    ],
        "core-js/features/symbol/replace-all": [
        "esnext.symbol.replace-all"
    ],
        "core-js/features/symbol/search": [
        "es.symbol.search",
        "es.regexp.exec",
        "es.string.search"
    ],
        "core-js/features/symbol/species": [
        "es.symbol.species"
    ],
        "core-js/features/symbol/split": [
        "es.symbol.split",
        "es.regexp.exec",
        "es.string.split"
    ],
        "core-js/features/symbol/to-primitive": [
        "es.symbol.to-primitive",
        "es.date.to-primitive"
    ],
        "core-js/features/symbol/to-string-tag": [
        "es.symbol.to-string-tag",
        "es.json.to-string-tag",
        "es.math.to-string-tag",
        "es.object.to-string",
        "es.reflect.to-string-tag"
    ],
        "core-js/features/symbol/unscopables": [
        "es.symbol.unscopables"
    ],
        "core-js/features/typed-array": [
        "es.map",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "es.typed-array.float32-array",
        "es.typed-array.float64-array",
        "es.typed-array.int8-array",
        "es.typed-array.int16-array",
        "es.typed-array.int32-array",
        "es.typed-array.uint8-array",
        "es.typed-array.uint8-clamped-array",
        "es.typed-array.uint16-array",
        "es.typed-array.uint32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with"
    ],
        "core-js/features/typed-array/at": [
        "es.typed-array.at",
        "esnext.typed-array.at"
    ],
        "core-js/features/typed-array/copy-within": [
        "es.typed-array.copy-within"
    ],
        "core-js/features/typed-array/entries": [
        "es.object.to-string",
        "es.typed-array.iterator"
    ],
        "core-js/features/typed-array/every": [
        "es.typed-array.every"
    ],
        "core-js/features/typed-array/fill": [
        "es.typed-array.fill"
    ],
        "core-js/features/typed-array/filter": [
        "es.typed-array.filter"
    ],
        "core-js/features/typed-array/filter-out": [
        "esnext.typed-array.filter-out"
    ],
        "core-js/features/typed-array/filter-reject": [
        "esnext.typed-array.filter-reject"
    ],
        "core-js/features/typed-array/find": [
        "es.typed-array.find"
    ],
        "core-js/features/typed-array/find-index": [
        "es.typed-array.find-index"
    ],
        "core-js/features/typed-array/find-last": [
        "es.typed-array.find-last",
        "esnext.typed-array.find-last"
    ],
        "core-js/features/typed-array/find-last-index": [
        "es.typed-array.find-last-index",
        "esnext.typed-array.find-last-index"
    ],
        "core-js/features/typed-array/float32-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.map",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "es.typed-array.float32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with"
    ],
        "core-js/features/typed-array/float64-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.map",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "es.typed-array.float64-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with"
    ],
        "core-js/features/typed-array/for-each": [
        "es.typed-array.for-each"
    ],
        "core-js/features/typed-array/from": [
        "es.typed-array.from"
    ],
        "core-js/features/typed-array/from-async": [
        "esnext.typed-array.from-async"
    ],
        "core-js/features/typed-array/group-by": [
        "esnext.typed-array.group-by"
    ],
        "core-js/features/typed-array/includes": [
        "es.typed-array.includes"
    ],
        "core-js/features/typed-array/index-of": [
        "es.typed-array.index-of"
    ],
        "core-js/features/typed-array/int16-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.map",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "es.typed-array.int16-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with"
    ],
        "core-js/features/typed-array/int32-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.map",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "es.typed-array.int32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with"
    ],
        "core-js/features/typed-array/int8-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.map",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "es.typed-array.int8-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with"
    ],
        "core-js/features/typed-array/iterator": [
        "es.object.to-string",
        "es.typed-array.iterator"
    ],
        "core-js/features/typed-array/join": [
        "es.typed-array.join"
    ],
        "core-js/features/typed-array/keys": [
        "es.object.to-string",
        "es.typed-array.iterator"
    ],
        "core-js/features/typed-array/last-index-of": [
        "es.typed-array.last-index-of"
    ],
        "core-js/features/typed-array/map": [
        "es.typed-array.map"
    ],
        "core-js/features/typed-array/methods": [
        "es.map",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with"
    ],
        "core-js/features/typed-array/of": [
        "es.typed-array.of"
    ],
        "core-js/features/typed-array/reduce": [
        "es.typed-array.reduce"
    ],
        "core-js/features/typed-array/reduce-right": [
        "es.typed-array.reduce-right"
    ],
        "core-js/features/typed-array/reverse": [
        "es.typed-array.reverse"
    ],
        "core-js/features/typed-array/set": [
        "es.typed-array.set"
    ],
        "core-js/features/typed-array/slice": [
        "es.typed-array.slice"
    ],
        "core-js/features/typed-array/some": [
        "es.typed-array.some"
    ],
        "core-js/features/typed-array/sort": [
        "es.typed-array.sort"
    ],
        "core-js/features/typed-array/subarray": [
        "es.typed-array.subarray"
    ],
        "core-js/features/typed-array/to-locale-string": [
        "es.typed-array.to-locale-string"
    ],
        "core-js/features/typed-array/to-reversed": [
        "esnext.typed-array.to-reversed"
    ],
        "core-js/features/typed-array/to-sorted": [
        "es.typed-array.sort",
        "es.typed-array.to-sorted",
        "esnext.typed-array.to-sorted"
    ],
        "core-js/features/typed-array/to-spliced": [
        "esnext.typed-array.to-spliced"
    ],
        "core-js/features/typed-array/to-string": [
        "es.typed-array.to-string"
    ],
        "core-js/features/typed-array/uint16-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.map",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "es.typed-array.uint16-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with"
    ],
        "core-js/features/typed-array/uint32-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.map",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "es.typed-array.uint32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with"
    ],
        "core-js/features/typed-array/uint8-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.map",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "es.typed-array.uint8-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with"
    ],
        "core-js/features/typed-array/uint8-clamped-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.map",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "es.typed-array.uint8-clamped-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with"
    ],
        "core-js/features/typed-array/unique-by": [
        "es.map",
        "esnext.typed-array.unique-by"
    ],
        "core-js/features/typed-array/values": [
        "es.object.to-string",
        "es.typed-array.iterator"
    ],
        "core-js/features/typed-array/with": [
        "esnext.typed-array.with"
    ],
        "core-js/features/unescape": [
        "es.unescape"
    ],
        "core-js/features/url": [
        "web.url",
        "web.url.to-json",
        "web.url-search-params",
        "web.url-search-params.size"
    ],
        "core-js/features/url-search-params": [
        "web.dom-collections.iterator",
        "web.url-search-params",
        "web.url-search-params.size"
    ],
        "core-js/features/url/to-json": [
        "web.url.to-json"
    ],
        "core-js/features/weak-map": [
        "es.array.iterator",
        "es.object.to-string",
        "es.string.iterator",
        "es.weak-map",
        "esnext.weak-map.delete-all",
        "esnext.weak-map.from",
        "esnext.weak-map.of",
        "esnext.weak-map.emplace",
        "esnext.weak-map.upsert",
        "web.dom-collections.iterator"
    ],
        "core-js/features/weak-map/delete-all": [
        "es.weak-map",
        "esnext.weak-map.delete-all"
    ],
        "core-js/features/weak-map/emplace": [
        "es.weak-map",
        "esnext.weak-map.emplace"
    ],
        "core-js/features/weak-map/from": [
        "es.array.iterator",
        "es.string.iterator",
        "es.weak-map",
        "esnext.weak-map.from",
        "web.dom-collections.iterator"
    ],
        "core-js/features/weak-map/of": [
        "es.array.iterator",
        "es.weak-map",
        "esnext.weak-map.of"
    ],
        "core-js/features/weak-map/upsert": [
        "es.weak-map",
        "esnext.weak-map.upsert"
    ],
        "core-js/features/weak-set": [
        "es.array.iterator",
        "es.object.to-string",
        "es.string.iterator",
        "es.weak-set",
        "esnext.weak-set.add-all",
        "esnext.weak-set.delete-all",
        "esnext.weak-set.from",
        "esnext.weak-set.of",
        "web.dom-collections.iterator"
    ],
        "core-js/features/weak-set/add-all": [
        "es.weak-set",
        "esnext.weak-set.add-all"
    ],
        "core-js/features/weak-set/delete-all": [
        "es.weak-set",
        "esnext.weak-set.delete-all"
    ],
        "core-js/features/weak-set/from": [
        "es.array.iterator",
        "es.string.iterator",
        "es.weak-set",
        "esnext.weak-set.from",
        "web.dom-collections.iterator"
    ],
        "core-js/features/weak-set/of": [
        "es.array.iterator",
        "es.weak-set",
        "esnext.weak-set.of"
    ],
        "core-js/full": [
        "es.symbol",
        "es.symbol.description",
        "es.symbol.async-iterator",
        "es.symbol.has-instance",
        "es.symbol.is-concat-spreadable",
        "es.symbol.iterator",
        "es.symbol.match",
        "es.symbol.match-all",
        "es.symbol.replace",
        "es.symbol.search",
        "es.symbol.species",
        "es.symbol.split",
        "es.symbol.to-primitive",
        "es.symbol.to-string-tag",
        "es.symbol.unscopables",
        "es.error.cause",
        "es.error.to-string",
        "es.aggregate-error",
        "es.aggregate-error.cause",
        "es.array.at",
        "es.array.concat",
        "es.array.copy-within",
        "es.array.every",
        "es.array.fill",
        "es.array.filter",
        "es.array.find",
        "es.array.find-index",
        "es.array.find-last",
        "es.array.find-last-index",
        "es.array.flat",
        "es.array.flat-map",
        "es.array.for-each",
        "es.array.from",
        "es.array.includes",
        "es.array.index-of",
        "es.array.is-array",
        "es.array.iterator",
        "es.array.join",
        "es.array.last-index-of",
        "es.array.map",
        "es.array.of",
        "es.array.push",
        "es.array.reduce",
        "es.array.reduce-right",
        "es.array.reverse",
        "es.array.slice",
        "es.array.some",
        "es.array.sort",
        "es.array.species",
        "es.array.splice",
        "es.array.to-reversed",
        "es.array.to-sorted",
        "es.array.to-spliced",
        "es.array.unscopables.flat",
        "es.array.unscopables.flat-map",
        "es.array.unshift",
        "es.array.with",
        "es.array-buffer.constructor",
        "es.array-buffer.is-view",
        "es.array-buffer.slice",
        "es.data-view",
        "es.date.get-year",
        "es.date.now",
        "es.date.set-year",
        "es.date.to-gmt-string",
        "es.date.to-iso-string",
        "es.date.to-json",
        "es.date.to-primitive",
        "es.date.to-string",
        "es.escape",
        "es.function.bind",
        "es.function.has-instance",
        "es.function.name",
        "es.global-this",
        "es.json.stringify",
        "es.json.to-string-tag",
        "es.map",
        "es.math.acosh",
        "es.math.asinh",
        "es.math.atanh",
        "es.math.cbrt",
        "es.math.clz32",
        "es.math.cosh",
        "es.math.expm1",
        "es.math.fround",
        "es.math.hypot",
        "es.math.imul",
        "es.math.log10",
        "es.math.log1p",
        "es.math.log2",
        "es.math.sign",
        "es.math.sinh",
        "es.math.tanh",
        "es.math.to-string-tag",
        "es.math.trunc",
        "es.number.constructor",
        "es.number.epsilon",
        "es.number.is-finite",
        "es.number.is-integer",
        "es.number.is-nan",
        "es.number.is-safe-integer",
        "es.number.max-safe-integer",
        "es.number.min-safe-integer",
        "es.number.parse-float",
        "es.number.parse-int",
        "es.number.to-exponential",
        "es.number.to-fixed",
        "es.number.to-precision",
        "es.object.assign",
        "es.object.create",
        "es.object.define-getter",
        "es.object.define-properties",
        "es.object.define-property",
        "es.object.define-setter",
        "es.object.entries",
        "es.object.freeze",
        "es.object.from-entries",
        "es.object.get-own-property-descriptor",
        "es.object.get-own-property-descriptors",
        "es.object.get-own-property-names",
        "es.object.get-prototype-of",
        "es.object.has-own",
        "es.object.is",
        "es.object.is-extensible",
        "es.object.is-frozen",
        "es.object.is-sealed",
        "es.object.keys",
        "es.object.lookup-getter",
        "es.object.lookup-setter",
        "es.object.prevent-extensions",
        "es.object.proto",
        "es.object.seal",
        "es.object.set-prototype-of",
        "es.object.to-string",
        "es.object.values",
        "es.parse-float",
        "es.parse-int",
        "es.promise",
        "es.promise.all-settled",
        "es.promise.any",
        "es.promise.finally",
        "es.reflect.apply",
        "es.reflect.construct",
        "es.reflect.define-property",
        "es.reflect.delete-property",
        "es.reflect.get",
        "es.reflect.get-own-property-descriptor",
        "es.reflect.get-prototype-of",
        "es.reflect.has",
        "es.reflect.is-extensible",
        "es.reflect.own-keys",
        "es.reflect.prevent-extensions",
        "es.reflect.set",
        "es.reflect.set-prototype-of",
        "es.reflect.to-string-tag",
        "es.regexp.constructor",
        "es.regexp.dot-all",
        "es.regexp.exec",
        "es.regexp.flags",
        "es.regexp.sticky",
        "es.regexp.test",
        "es.regexp.to-string",
        "es.set",
        "es.string.at-alternative",
        "es.string.code-point-at",
        "es.string.ends-with",
        "es.string.from-code-point",
        "es.string.includes",
        "es.string.iterator",
        "es.string.match",
        "es.string.match-all",
        "es.string.pad-end",
        "es.string.pad-start",
        "es.string.raw",
        "es.string.repeat",
        "es.string.replace",
        "es.string.replace-all",
        "es.string.search",
        "es.string.split",
        "es.string.starts-with",
        "es.string.substr",
        "es.string.trim",
        "es.string.trim-end",
        "es.string.trim-start",
        "es.string.anchor",
        "es.string.big",
        "es.string.blink",
        "es.string.bold",
        "es.string.fixed",
        "es.string.fontcolor",
        "es.string.fontsize",
        "es.string.italics",
        "es.string.link",
        "es.string.small",
        "es.string.strike",
        "es.string.sub",
        "es.string.sup",
        "es.typed-array.float32-array",
        "es.typed-array.float64-array",
        "es.typed-array.int8-array",
        "es.typed-array.int16-array",
        "es.typed-array.int32-array",
        "es.typed-array.uint8-array",
        "es.typed-array.uint8-clamped-array",
        "es.typed-array.uint16-array",
        "es.typed-array.uint32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "es.unescape",
        "es.weak-map",
        "es.weak-set",
        "esnext.aggregate-error",
        "esnext.suppressed-error.constructor",
        "esnext.array.from-async",
        "esnext.array.at",
        "esnext.array.filter-out",
        "esnext.array.filter-reject",
        "esnext.array.find-last",
        "esnext.array.find-last-index",
        "esnext.array.group",
        "esnext.array.group-by",
        "esnext.array.group-by-to-map",
        "esnext.array.group-to-map",
        "esnext.array.is-template-object",
        "esnext.array.last-index",
        "esnext.array.last-item",
        "esnext.array.to-reversed",
        "esnext.array.to-sorted",
        "esnext.array.to-spliced",
        "esnext.array.unique-by",
        "esnext.array.with",
        "esnext.array-buffer.detached",
        "esnext.array-buffer.transfer",
        "esnext.array-buffer.transfer-to-fixed-length",
        "esnext.async-disposable-stack.constructor",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.as-indexed-pairs",
        "esnext.async-iterator.async-dispose",
        "esnext.async-iterator.drop",
        "esnext.async-iterator.every",
        "esnext.async-iterator.filter",
        "esnext.async-iterator.find",
        "esnext.async-iterator.flat-map",
        "esnext.async-iterator.for-each",
        "esnext.async-iterator.from",
        "esnext.async-iterator.indexed",
        "esnext.async-iterator.map",
        "esnext.async-iterator.reduce",
        "esnext.async-iterator.some",
        "esnext.async-iterator.take",
        "esnext.async-iterator.to-array",
        "esnext.bigint.range",
        "esnext.composite-key",
        "esnext.composite-symbol",
        "esnext.disposable-stack.constructor",
        "esnext.function.demethodize",
        "esnext.function.is-callable",
        "esnext.function.is-constructor",
        "esnext.function.un-this",
        "esnext.global-this",
        "esnext.iterator.constructor",
        "esnext.iterator.as-indexed-pairs",
        "esnext.iterator.dispose",
        "esnext.iterator.drop",
        "esnext.iterator.every",
        "esnext.iterator.filter",
        "esnext.iterator.find",
        "esnext.iterator.flat-map",
        "esnext.iterator.for-each",
        "esnext.iterator.from",
        "esnext.iterator.indexed",
        "esnext.iterator.map",
        "esnext.iterator.range",
        "esnext.iterator.reduce",
        "esnext.iterator.some",
        "esnext.iterator.take",
        "esnext.iterator.to-array",
        "esnext.iterator.to-async",
        "esnext.json.is-raw-json",
        "esnext.json.parse",
        "esnext.json.raw-json",
        "esnext.map.delete-all",
        "esnext.map.emplace",
        "esnext.map.every",
        "esnext.map.filter",
        "esnext.map.find",
        "esnext.map.find-key",
        "esnext.map.from",
        "esnext.map.group-by",
        "esnext.map.includes",
        "esnext.map.key-by",
        "esnext.map.key-of",
        "esnext.map.map-keys",
        "esnext.map.map-values",
        "esnext.map.merge",
        "esnext.map.of",
        "esnext.map.reduce",
        "esnext.map.some",
        "esnext.map.update",
        "esnext.map.update-or-insert",
        "esnext.map.upsert",
        "esnext.math.clamp",
        "esnext.math.deg-per-rad",
        "esnext.math.degrees",
        "esnext.math.fscale",
        "esnext.math.iaddh",
        "esnext.math.imulh",
        "esnext.math.isubh",
        "esnext.math.rad-per-deg",
        "esnext.math.radians",
        "esnext.math.scale",
        "esnext.math.seeded-prng",
        "esnext.math.signbit",
        "esnext.math.umulh",
        "esnext.number.from-string",
        "esnext.number.range",
        "esnext.object.has-own",
        "esnext.object.iterate-entries",
        "esnext.object.iterate-keys",
        "esnext.object.iterate-values",
        "esnext.observable",
        "esnext.promise.all-settled",
        "esnext.promise.any",
        "esnext.promise.try",
        "esnext.reflect.define-metadata",
        "esnext.reflect.delete-metadata",
        "esnext.reflect.get-metadata",
        "esnext.reflect.get-metadata-keys",
        "esnext.reflect.get-own-metadata",
        "esnext.reflect.get-own-metadata-keys",
        "esnext.reflect.has-metadata",
        "esnext.reflect.has-own-metadata",
        "esnext.reflect.metadata",
        "esnext.set.add-all",
        "esnext.set.delete-all",
        "esnext.set.difference.v2",
        "esnext.set.difference",
        "esnext.set.every",
        "esnext.set.filter",
        "esnext.set.find",
        "esnext.set.from",
        "esnext.set.intersection.v2",
        "esnext.set.intersection",
        "esnext.set.is-disjoint-from.v2",
        "esnext.set.is-disjoint-from",
        "esnext.set.is-subset-of.v2",
        "esnext.set.is-subset-of",
        "esnext.set.is-superset-of.v2",
        "esnext.set.is-superset-of",
        "esnext.set.join",
        "esnext.set.map",
        "esnext.set.of",
        "esnext.set.reduce",
        "esnext.set.some",
        "esnext.set.symmetric-difference.v2",
        "esnext.set.symmetric-difference",
        "esnext.set.union.v2",
        "esnext.set.union",
        "esnext.string.at",
        "esnext.string.cooked",
        "esnext.string.code-points",
        "esnext.string.dedent",
        "esnext.string.is-well-formed",
        "esnext.string.match-all",
        "esnext.string.replace-all",
        "esnext.string.to-well-formed",
        "esnext.symbol.async-dispose",
        "esnext.symbol.dispose",
        "esnext.symbol.is-registered",
        "esnext.symbol.is-well-known",
        "esnext.symbol.matcher",
        "esnext.symbol.metadata",
        "esnext.symbol.metadata-key",
        "esnext.symbol.observable",
        "esnext.symbol.pattern-match",
        "esnext.symbol.replace-all",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with",
        "esnext.weak-map.delete-all",
        "esnext.weak-map.from",
        "esnext.weak-map.of",
        "esnext.weak-map.emplace",
        "esnext.weak-map.upsert",
        "esnext.weak-set.add-all",
        "esnext.weak-set.delete-all",
        "esnext.weak-set.from",
        "esnext.weak-set.of",
        "web.atob",
        "web.btoa",
        "web.dom-collections.for-each",
        "web.dom-collections.iterator",
        "web.dom-exception.constructor",
        "web.dom-exception.stack",
        "web.dom-exception.to-string-tag",
        "web.immediate",
        "web.queue-microtask",
        "web.self",
        "web.structured-clone",
        "web.timers",
        "web.url",
        "web.url.to-json",
        "web.url-search-params",
        "web.url-search-params.size"
    ],
        "core-js/full/aggregate-error": [
        "es.error.cause",
        "es.aggregate-error",
        "es.aggregate-error.cause",
        "es.array.iterator",
        "es.string.iterator",
        "esnext.aggregate-error",
        "web.dom-collections.iterator"
    ],
        "core-js/full/array": [
        "es.array.at",
        "es.array.concat",
        "es.array.copy-within",
        "es.array.every",
        "es.array.fill",
        "es.array.filter",
        "es.array.find",
        "es.array.find-index",
        "es.array.find-last",
        "es.array.find-last-index",
        "es.array.flat",
        "es.array.flat-map",
        "es.array.for-each",
        "es.array.from",
        "es.array.includes",
        "es.array.index-of",
        "es.array.is-array",
        "es.array.iterator",
        "es.array.join",
        "es.array.last-index-of",
        "es.array.map",
        "es.array.of",
        "es.array.push",
        "es.array.reduce",
        "es.array.reduce-right",
        "es.array.reverse",
        "es.array.slice",
        "es.array.some",
        "es.array.sort",
        "es.array.species",
        "es.array.splice",
        "es.array.to-reversed",
        "es.array.to-sorted",
        "es.array.to-spliced",
        "es.array.unscopables.flat",
        "es.array.unscopables.flat-map",
        "es.array.unshift",
        "es.array.with",
        "es.map",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "esnext.array.from-async",
        "esnext.array.at",
        "esnext.array.filter-out",
        "esnext.array.filter-reject",
        "esnext.array.find-last",
        "esnext.array.find-last-index",
        "esnext.array.group",
        "esnext.array.group-by",
        "esnext.array.group-by-to-map",
        "esnext.array.group-to-map",
        "esnext.array.is-template-object",
        "esnext.array.last-index",
        "esnext.array.last-item",
        "esnext.array.to-reversed",
        "esnext.array.to-sorted",
        "esnext.array.to-spliced",
        "esnext.array.unique-by",
        "esnext.array.with"
    ],
        "core-js/full/array-buffer": [
        "es.array-buffer.constructor",
        "es.array-buffer.is-view",
        "es.array-buffer.slice",
        "es.object.to-string",
        "esnext.array-buffer.detached",
        "esnext.array-buffer.transfer",
        "esnext.array-buffer.transfer-to-fixed-length"
    ],
        "core-js/full/array-buffer/constructor": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "esnext.array-buffer.detached",
        "esnext.array-buffer.transfer",
        "esnext.array-buffer.transfer-to-fixed-length"
    ],
        "core-js/full/array-buffer/detached": [
        "es.array-buffer.constructor",
        "es.array-buffer.is-view",
        "es.array-buffer.slice",
        "es.object.to-string",
        "esnext.array-buffer.detached"
    ],
        "core-js/full/array-buffer/is-view": [
        "es.array-buffer.is-view"
    ],
        "core-js/full/array-buffer/slice": [
        "es.array-buffer.slice"
    ],
        "core-js/full/array-buffer/transfer": [
        "es.array-buffer.constructor",
        "es.array-buffer.is-view",
        "es.array-buffer.slice",
        "es.object.to-string",
        "esnext.array-buffer.transfer"
    ],
        "core-js/full/array-buffer/transfer-to-fixed-length": [
        "es.array-buffer.constructor",
        "es.array-buffer.is-view",
        "es.array-buffer.slice",
        "es.object.to-string",
        "esnext.array-buffer.transfer-to-fixed-length"
    ],
        "core-js/full/array/at": [
        "es.array.at",
        "esnext.array.at"
    ],
        "core-js/full/array/concat": [
        "es.array.concat"
    ],
        "core-js/full/array/copy-within": [
        "es.array.copy-within"
    ],
        "core-js/full/array/entries": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/full/array/every": [
        "es.array.every"
    ],
        "core-js/full/array/fill": [
        "es.array.fill"
    ],
        "core-js/full/array/filter": [
        "es.array.filter"
    ],
        "core-js/full/array/filter-out": [
        "esnext.array.filter-out"
    ],
        "core-js/full/array/filter-reject": [
        "esnext.array.filter-reject"
    ],
        "core-js/full/array/find": [
        "es.array.find"
    ],
        "core-js/full/array/find-index": [
        "es.array.find-index"
    ],
        "core-js/full/array/find-last": [
        "es.array.find-last",
        "esnext.array.find-last"
    ],
        "core-js/full/array/find-last-index": [
        "es.array.find-last-index",
        "esnext.array.find-last-index"
    ],
        "core-js/full/array/flat": [
        "es.array.flat",
        "es.array.unscopables.flat"
    ],
        "core-js/full/array/flat-map": [
        "es.array.flat-map",
        "es.array.unscopables.flat-map"
    ],
        "core-js/full/array/for-each": [
        "es.array.for-each"
    ],
        "core-js/full/array/from": [
        "es.array.from",
        "es.string.iterator"
    ],
        "core-js/full/array/from-async": [
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "esnext.array.from-async"
    ],
        "core-js/full/array/group": [
        "esnext.array.group"
    ],
        "core-js/full/array/group-by": [
        "esnext.array.group-by"
    ],
        "core-js/full/array/group-by-to-map": [
        "es.map",
        "es.object.to-string",
        "esnext.array.group-by-to-map"
    ],
        "core-js/full/array/group-to-map": [
        "es.map",
        "es.object.to-string",
        "esnext.array.group-to-map"
    ],
        "core-js/full/array/includes": [
        "es.array.includes"
    ],
        "core-js/full/array/index-of": [
        "es.array.index-of"
    ],
        "core-js/full/array/is-array": [
        "es.array.is-array"
    ],
        "core-js/full/array/is-template-object": [
        "esnext.array.is-template-object"
    ],
        "core-js/full/array/iterator": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/full/array/join": [
        "es.array.join"
    ],
        "core-js/full/array/keys": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/full/array/last-index": [
        "esnext.array.last-index"
    ],
        "core-js/full/array/last-index-of": [
        "es.array.last-index-of"
    ],
        "core-js/full/array/last-item": [
        "esnext.array.last-item"
    ],
        "core-js/full/array/map": [
        "es.array.map"
    ],
        "core-js/full/array/of": [
        "es.array.of"
    ],
        "core-js/full/array/push": [
        "es.array.push"
    ],
        "core-js/full/array/reduce": [
        "es.array.reduce"
    ],
        "core-js/full/array/reduce-right": [
        "es.array.reduce-right"
    ],
        "core-js/full/array/reverse": [
        "es.array.reverse"
    ],
        "core-js/full/array/slice": [
        "es.array.slice"
    ],
        "core-js/full/array/some": [
        "es.array.some"
    ],
        "core-js/full/array/sort": [
        "es.array.sort"
    ],
        "core-js/full/array/splice": [
        "es.array.splice"
    ],
        "core-js/full/array/to-reversed": [
        "esnext.array.to-reversed"
    ],
        "core-js/full/array/to-sorted": [
        "es.array.sort",
        "esnext.array.to-sorted"
    ],
        "core-js/full/array/to-spliced": [
        "esnext.array.to-spliced"
    ],
        "core-js/full/array/unique-by": [
        "es.map",
        "esnext.array.unique-by"
    ],
        "core-js/full/array/unshift": [
        "es.array.unshift"
    ],
        "core-js/full/array/values": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/full/array/virtual": [
        "es.array.at",
        "es.array.concat",
        "es.array.copy-within",
        "es.array.every",
        "es.array.fill",
        "es.array.filter",
        "es.array.find",
        "es.array.find-index",
        "es.array.find-last",
        "es.array.find-last-index",
        "es.array.flat",
        "es.array.flat-map",
        "es.array.for-each",
        "es.array.includes",
        "es.array.index-of",
        "es.array.iterator",
        "es.array.join",
        "es.array.last-index-of",
        "es.array.map",
        "es.array.push",
        "es.array.reduce",
        "es.array.reduce-right",
        "es.array.reverse",
        "es.array.slice",
        "es.array.some",
        "es.array.sort",
        "es.array.species",
        "es.array.splice",
        "es.array.to-reversed",
        "es.array.to-sorted",
        "es.array.to-spliced",
        "es.array.unscopables.flat",
        "es.array.unscopables.flat-map",
        "es.array.unshift",
        "es.array.with",
        "es.map",
        "es.object.to-string",
        "esnext.array.at",
        "esnext.array.filter-out",
        "esnext.array.filter-reject",
        "esnext.array.find-last",
        "esnext.array.find-last-index",
        "esnext.array.group",
        "esnext.array.group-by",
        "esnext.array.group-by-to-map",
        "esnext.array.group-to-map",
        "esnext.array.to-reversed",
        "esnext.array.to-sorted",
        "esnext.array.to-spliced",
        "esnext.array.unique-by",
        "esnext.array.with"
    ],
        "core-js/full/array/virtual/at": [
        "es.array.at",
        "esnext.array.at"
    ],
        "core-js/full/array/virtual/concat": [
        "es.array.concat"
    ],
        "core-js/full/array/virtual/copy-within": [
        "es.array.copy-within"
    ],
        "core-js/full/array/virtual/entries": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/full/array/virtual/every": [
        "es.array.every"
    ],
        "core-js/full/array/virtual/fill": [
        "es.array.fill"
    ],
        "core-js/full/array/virtual/filter": [
        "es.array.filter"
    ],
        "core-js/full/array/virtual/filter-out": [
        "esnext.array.filter-out"
    ],
        "core-js/full/array/virtual/filter-reject": [
        "esnext.array.filter-reject"
    ],
        "core-js/full/array/virtual/find": [
        "es.array.find"
    ],
        "core-js/full/array/virtual/find-index": [
        "es.array.find-index"
    ],
        "core-js/full/array/virtual/find-last": [
        "es.array.find-last",
        "esnext.array.find-last"
    ],
        "core-js/full/array/virtual/find-last-index": [
        "es.array.find-last-index",
        "esnext.array.find-last-index"
    ],
        "core-js/full/array/virtual/flat": [
        "es.array.flat",
        "es.array.unscopables.flat"
    ],
        "core-js/full/array/virtual/flat-map": [
        "es.array.flat-map",
        "es.array.unscopables.flat-map"
    ],
        "core-js/full/array/virtual/for-each": [
        "es.array.for-each"
    ],
        "core-js/full/array/virtual/group": [
        "esnext.array.group"
    ],
        "core-js/full/array/virtual/group-by": [
        "esnext.array.group-by"
    ],
        "core-js/full/array/virtual/group-by-to-map": [
        "es.map",
        "es.object.to-string",
        "esnext.array.group-by-to-map"
    ],
        "core-js/full/array/virtual/group-to-map": [
        "es.map",
        "es.object.to-string",
        "esnext.array.group-to-map"
    ],
        "core-js/full/array/virtual/includes": [
        "es.array.includes"
    ],
        "core-js/full/array/virtual/index-of": [
        "es.array.index-of"
    ],
        "core-js/full/array/virtual/iterator": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/full/array/virtual/join": [
        "es.array.join"
    ],
        "core-js/full/array/virtual/keys": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/full/array/virtual/last-index-of": [
        "es.array.last-index-of"
    ],
        "core-js/full/array/virtual/map": [
        "es.array.map"
    ],
        "core-js/full/array/virtual/push": [
        "es.array.push"
    ],
        "core-js/full/array/virtual/reduce": [
        "es.array.reduce"
    ],
        "core-js/full/array/virtual/reduce-right": [
        "es.array.reduce-right"
    ],
        "core-js/full/array/virtual/reverse": [
        "es.array.reverse"
    ],
        "core-js/full/array/virtual/slice": [
        "es.array.slice"
    ],
        "core-js/full/array/virtual/some": [
        "es.array.some"
    ],
        "core-js/full/array/virtual/sort": [
        "es.array.sort"
    ],
        "core-js/full/array/virtual/splice": [
        "es.array.splice"
    ],
        "core-js/full/array/virtual/to-reversed": [
        "es.array.to-reversed",
        "esnext.array.to-reversed"
    ],
        "core-js/full/array/virtual/to-sorted": [
        "es.array.sort",
        "es.array.to-sorted",
        "esnext.array.to-sorted"
    ],
        "core-js/full/array/virtual/to-spliced": [
        "es.array.to-spliced",
        "esnext.array.to-spliced"
    ],
        "core-js/full/array/virtual/unique-by": [
        "es.map",
        "esnext.array.unique-by"
    ],
        "core-js/full/array/virtual/unshift": [
        "es.array.unshift"
    ],
        "core-js/full/array/virtual/values": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/full/array/virtual/with": [
        "es.array.with",
        "esnext.array.with"
    ],
        "core-js/full/array/with": [
        "esnext.array.with"
    ],
        "core-js/full/async-disposable-stack": [
        "es.error.cause",
        "es.error.to-string",
        "es.object.to-string",
        "es.promise",
        "esnext.suppressed-error.constructor",
        "esnext.async-disposable-stack.constructor",
        "esnext.async-iterator.async-dispose",
        "esnext.iterator.dispose"
    ],
        "core-js/full/async-disposable-stack/constructor": [
        "es.error.cause",
        "es.error.to-string",
        "es.object.to-string",
        "es.promise",
        "esnext.suppressed-error.constructor",
        "esnext.async-disposable-stack.constructor",
        "esnext.async-iterator.async-dispose",
        "esnext.iterator.dispose"
    ],
        "core-js/full/async-iterator": [
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.as-indexed-pairs",
        "esnext.async-iterator.async-dispose",
        "esnext.async-iterator.drop",
        "esnext.async-iterator.every",
        "esnext.async-iterator.filter",
        "esnext.async-iterator.find",
        "esnext.async-iterator.flat-map",
        "esnext.async-iterator.for-each",
        "esnext.async-iterator.from",
        "esnext.async-iterator.indexed",
        "esnext.async-iterator.map",
        "esnext.async-iterator.reduce",
        "esnext.async-iterator.some",
        "esnext.async-iterator.take",
        "esnext.async-iterator.to-array",
        "web.dom-collections.iterator"
    ],
        "core-js/full/async-iterator/as-indexed-pairs": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.as-indexed-pairs"
    ],
        "core-js/full/async-iterator/async-dispose": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.async-dispose"
    ],
        "core-js/full/async-iterator/drop": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.drop"
    ],
        "core-js/full/async-iterator/every": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.every"
    ],
        "core-js/full/async-iterator/filter": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.filter"
    ],
        "core-js/full/async-iterator/find": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.find"
    ],
        "core-js/full/async-iterator/flat-map": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.flat-map"
    ],
        "core-js/full/async-iterator/for-each": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.for-each"
    ],
        "core-js/full/async-iterator/from": [
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.drop",
        "esnext.async-iterator.every",
        "esnext.async-iterator.filter",
        "esnext.async-iterator.find",
        "esnext.async-iterator.flat-map",
        "esnext.async-iterator.for-each",
        "esnext.async-iterator.from",
        "esnext.async-iterator.map",
        "esnext.async-iterator.reduce",
        "esnext.async-iterator.some",
        "esnext.async-iterator.take",
        "esnext.async-iterator.to-array",
        "web.dom-collections.iterator"
    ],
        "core-js/full/async-iterator/indexed": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.indexed"
    ],
        "core-js/full/async-iterator/map": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.map"
    ],
        "core-js/full/async-iterator/reduce": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.reduce"
    ],
        "core-js/full/async-iterator/some": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.some"
    ],
        "core-js/full/async-iterator/take": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.take"
    ],
        "core-js/full/async-iterator/to-array": [
        "es.object.to-string",
        "es.promise",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.to-array"
    ],
        "core-js/full/atob": [
        "es.error.to-string",
        "es.object.to-string",
        "web.atob",
        "web.dom-exception.constructor",
        "web.dom-exception.stack",
        "web.dom-exception.to-string-tag"
    ],
        "core-js/full/bigint": [
        "es.object.to-string",
        "esnext.bigint.range"
    ],
        "core-js/full/bigint/range": [
        "es.object.to-string",
        "esnext.bigint.range"
    ],
        "core-js/full/btoa": [
        "es.error.to-string",
        "es.object.to-string",
        "web.btoa",
        "web.dom-exception.constructor",
        "web.dom-exception.stack",
        "web.dom-exception.to-string-tag"
    ],
        "core-js/full/clear-immediate": [
        "web.immediate"
    ],
        "core-js/full/composite-key": [
        "esnext.composite-key"
    ],
        "core-js/full/composite-symbol": [
        "es.symbol",
        "esnext.composite-symbol"
    ],
        "core-js/full/data-view": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.data-view",
        "es.object.to-string"
    ],
        "core-js/full/date": [
        "es.date.get-year",
        "es.date.now",
        "es.date.set-year",
        "es.date.to-gmt-string",
        "es.date.to-iso-string",
        "es.date.to-json",
        "es.date.to-primitive",
        "es.date.to-string"
    ],
        "core-js/full/date/get-year": [
        "es.date.get-year"
    ],
        "core-js/full/date/now": [
        "es.date.now"
    ],
        "core-js/full/date/set-year": [
        "es.date.set-year"
    ],
        "core-js/full/date/to-gmt-string": [
        "es.date.to-gmt-string"
    ],
        "core-js/full/date/to-iso-string": [
        "es.date.to-iso-string",
        "es.date.to-json"
    ],
        "core-js/full/date/to-json": [
        "es.date.to-json"
    ],
        "core-js/full/date/to-primitive": [
        "es.date.to-primitive"
    ],
        "core-js/full/date/to-string": [
        "es.date.to-string"
    ],
        "core-js/full/disposable-stack": [
        "es.error.cause",
        "es.error.to-string",
        "es.object.to-string",
        "esnext.suppressed-error.constructor",
        "esnext.disposable-stack.constructor",
        "esnext.iterator.dispose"
    ],
        "core-js/full/disposable-stack/constructor": [
        "es.error.cause",
        "es.error.to-string",
        "es.object.to-string",
        "esnext.suppressed-error.constructor",
        "esnext.disposable-stack.constructor",
        "esnext.iterator.dispose"
    ],
        "core-js/full/dom-collections": [
        "es.array.iterator",
        "es.object.to-string",
        "web.dom-collections.for-each",
        "web.dom-collections.iterator"
    ],
        "core-js/full/dom-collections/for-each": [
        "web.dom-collections.for-each"
    ],
        "core-js/full/dom-collections/iterator": [
        "es.object.to-string",
        "web.dom-collections.iterator"
    ],
        "core-js/full/dom-exception": [
        "es.error.to-string",
        "web.dom-exception.constructor",
        "web.dom-exception.stack",
        "web.dom-exception.to-string-tag"
    ],
        "core-js/full/dom-exception/constructor": [
        "es.error.to-string",
        "web.dom-exception.constructor",
        "web.dom-exception.stack"
    ],
        "core-js/full/dom-exception/to-string-tag": [
        "web.dom-exception.to-string-tag"
    ],
        "core-js/full/error": [
        "es.error.cause",
        "es.error.to-string"
    ],
        "core-js/full/error/constructor": [
        "es.error.cause"
    ],
        "core-js/full/error/to-string": [
        "es.error.to-string"
    ],
        "core-js/full/escape": [
        "es.escape"
    ],
        "core-js/full/function": [
        "es.function.bind",
        "es.function.has-instance",
        "es.function.name",
        "esnext.function.demethodize",
        "esnext.function.is-callable",
        "esnext.function.is-constructor",
        "esnext.function.un-this"
    ],
        "core-js/full/function/bind": [
        "es.function.bind"
    ],
        "core-js/full/function/demethodize": [
        "esnext.function.demethodize"
    ],
        "core-js/full/function/has-instance": [
        "es.function.has-instance"
    ],
        "core-js/full/function/is-callable": [
        "esnext.function.is-callable"
    ],
        "core-js/full/function/is-constructor": [
        "esnext.function.is-constructor"
    ],
        "core-js/full/function/name": [
        "es.function.name"
    ],
        "core-js/full/function/un-this": [
        "esnext.function.un-this"
    ],
        "core-js/full/function/virtual": [
        "es.function.bind",
        "esnext.function.demethodize",
        "esnext.function.un-this"
    ],
        "core-js/full/function/virtual/bind": [
        "es.function.bind"
    ],
        "core-js/full/function/virtual/demethodize": [
        "esnext.function.demethodize"
    ],
        "core-js/full/function/virtual/un-this": [
        "esnext.function.un-this"
    ],
        "core-js/full/get-iterator": [
        "es.array.iterator",
        "es.string.iterator",
        "web.dom-collections.iterator"
    ],
        "core-js/full/get-iterator-method": [
        "es.array.iterator",
        "es.string.iterator",
        "web.dom-collections.iterator"
    ],
        "core-js/full/global-this": [
        "es.global-this",
        "esnext.global-this"
    ],
        "core-js/full/instance/at": [
        "es.array.at",
        "es.string.at-alternative",
        "esnext.array.at",
        "esnext.string.at"
    ],
        "core-js/full/instance/bind": [
        "es.function.bind"
    ],
        "core-js/full/instance/code-point-at": [
        "es.string.code-point-at"
    ],
        "core-js/full/instance/code-points": [
        "es.object.to-string",
        "esnext.string.code-points"
    ],
        "core-js/full/instance/concat": [
        "es.array.concat"
    ],
        "core-js/full/instance/copy-within": [
        "es.array.copy-within"
    ],
        "core-js/full/instance/demethodize": [
        "esnext.function.demethodize"
    ],
        "core-js/full/instance/ends-with": [
        "es.string.ends-with"
    ],
        "core-js/full/instance/entries": [
        "es.array.iterator",
        "es.object.to-string",
        "web.dom-collections.iterator"
    ],
        "core-js/full/instance/every": [
        "es.array.every"
    ],
        "core-js/full/instance/fill": [
        "es.array.fill"
    ],
        "core-js/full/instance/filter": [
        "es.array.filter"
    ],
        "core-js/full/instance/filter-out": [
        "esnext.array.filter-out"
    ],
        "core-js/full/instance/filter-reject": [
        "esnext.array.filter-reject"
    ],
        "core-js/full/instance/find": [
        "es.array.find"
    ],
        "core-js/full/instance/find-index": [
        "es.array.find-index"
    ],
        "core-js/full/instance/find-last": [
        "es.array.find-last",
        "esnext.array.find-last"
    ],
        "core-js/full/instance/find-last-index": [
        "es.array.find-last-index",
        "esnext.array.find-last-index"
    ],
        "core-js/full/instance/flags": [
        "es.regexp.flags"
    ],
        "core-js/full/instance/flat": [
        "es.array.flat",
        "es.array.unscopables.flat"
    ],
        "core-js/full/instance/flat-map": [
        "es.array.flat-map",
        "es.array.unscopables.flat-map"
    ],
        "core-js/full/instance/for-each": [
        "es.array.for-each",
        "web.dom-collections.iterator"
    ],
        "core-js/full/instance/group": [
        "esnext.array.group"
    ],
        "core-js/full/instance/group-by": [
        "esnext.array.group-by"
    ],
        "core-js/full/instance/group-by-to-map": [
        "es.map",
        "es.object.to-string",
        "esnext.array.group-by-to-map"
    ],
        "core-js/full/instance/group-to-map": [
        "es.map",
        "es.object.to-string",
        "esnext.array.group-to-map"
    ],
        "core-js/full/instance/includes": [
        "es.array.includes",
        "es.string.includes"
    ],
        "core-js/full/instance/index-of": [
        "es.array.index-of"
    ],
        "core-js/full/instance/is-well-formed": [
        "esnext.string.is-well-formed"
    ],
        "core-js/full/instance/keys": [
        "es.array.iterator",
        "es.object.to-string",
        "web.dom-collections.iterator"
    ],
        "core-js/full/instance/last-index-of": [
        "es.array.last-index-of"
    ],
        "core-js/full/instance/map": [
        "es.array.map"
    ],
        "core-js/full/instance/match-all": [
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.match-all",
        "esnext.string.match-all"
    ],
        "core-js/full/instance/pad-end": [
        "es.string.pad-end"
    ],
        "core-js/full/instance/pad-start": [
        "es.string.pad-start"
    ],
        "core-js/full/instance/push": [
        "es.array.push"
    ],
        "core-js/full/instance/reduce": [
        "es.array.reduce"
    ],
        "core-js/full/instance/reduce-right": [
        "es.array.reduce-right"
    ],
        "core-js/full/instance/repeat": [
        "es.string.repeat"
    ],
        "core-js/full/instance/replace-all": [
        "es.regexp.exec",
        "es.string.replace",
        "es.string.replace-all"
    ],
        "core-js/full/instance/reverse": [
        "es.array.reverse"
    ],
        "core-js/full/instance/slice": [
        "es.array.slice"
    ],
        "core-js/full/instance/some": [
        "es.array.some"
    ],
        "core-js/full/instance/sort": [
        "es.array.sort"
    ],
        "core-js/full/instance/splice": [
        "es.array.splice"
    ],
        "core-js/full/instance/starts-with": [
        "es.string.starts-with"
    ],
        "core-js/full/instance/to-reversed": [
        "es.array.to-reversed",
        "esnext.array.to-reversed"
    ],
        "core-js/full/instance/to-sorted": [
        "es.array.sort",
        "es.array.to-sorted",
        "esnext.array.to-sorted"
    ],
        "core-js/full/instance/to-spliced": [
        "es.array.to-spliced",
        "esnext.array.to-spliced"
    ],
        "core-js/full/instance/to-well-formed": [
        "esnext.string.to-well-formed"
    ],
        "core-js/full/instance/trim": [
        "es.string.trim"
    ],
        "core-js/full/instance/trim-end": [
        "es.string.trim-end"
    ],
        "core-js/full/instance/trim-left": [
        "es.string.trim-start"
    ],
        "core-js/full/instance/trim-right": [
        "es.string.trim-end"
    ],
        "core-js/full/instance/trim-start": [
        "es.string.trim-start"
    ],
        "core-js/full/instance/un-this": [
        "esnext.function.un-this"
    ],
        "core-js/full/instance/unique-by": [
        "es.map",
        "esnext.array.unique-by"
    ],
        "core-js/full/instance/unshift": [
        "es.array.unshift"
    ],
        "core-js/full/instance/values": [
        "es.array.iterator",
        "es.object.to-string",
        "web.dom-collections.iterator"
    ],
        "core-js/full/instance/with": [
        "es.array.with",
        "esnext.array.with"
    ],
        "core-js/full/is-iterable": [
        "es.array.iterator",
        "es.string.iterator",
        "web.dom-collections.iterator"
    ],
        "core-js/full/iterator": [
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "esnext.iterator.constructor",
        "esnext.iterator.as-indexed-pairs",
        "esnext.iterator.dispose",
        "esnext.iterator.drop",
        "esnext.iterator.every",
        "esnext.iterator.filter",
        "esnext.iterator.find",
        "esnext.iterator.flat-map",
        "esnext.iterator.for-each",
        "esnext.iterator.from",
        "esnext.iterator.indexed",
        "esnext.iterator.map",
        "esnext.iterator.range",
        "esnext.iterator.reduce",
        "esnext.iterator.some",
        "esnext.iterator.take",
        "esnext.iterator.to-array",
        "esnext.iterator.to-async",
        "web.dom-collections.iterator"
    ],
        "core-js/full/iterator/as-indexed-pairs": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.as-indexed-pairs"
    ],
        "core-js/full/iterator/dispose": [
        "esnext.iterator.dispose"
    ],
        "core-js/full/iterator/drop": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.drop"
    ],
        "core-js/full/iterator/every": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.every"
    ],
        "core-js/full/iterator/filter": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.filter"
    ],
        "core-js/full/iterator/find": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.find"
    ],
        "core-js/full/iterator/flat-map": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.flat-map"
    ],
        "core-js/full/iterator/for-each": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.for-each"
    ],
        "core-js/full/iterator/from": [
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "esnext.iterator.constructor",
        "esnext.iterator.dispose",
        "esnext.iterator.drop",
        "esnext.iterator.every",
        "esnext.iterator.filter",
        "esnext.iterator.find",
        "esnext.iterator.flat-map",
        "esnext.iterator.for-each",
        "esnext.iterator.from",
        "esnext.iterator.map",
        "esnext.iterator.reduce",
        "esnext.iterator.some",
        "esnext.iterator.take",
        "esnext.iterator.to-array",
        "esnext.iterator.to-async",
        "web.dom-collections.iterator"
    ],
        "core-js/full/iterator/indexed": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.indexed"
    ],
        "core-js/full/iterator/map": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.map"
    ],
        "core-js/full/iterator/range": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.range"
    ],
        "core-js/full/iterator/reduce": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.reduce"
    ],
        "core-js/full/iterator/some": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.some"
    ],
        "core-js/full/iterator/take": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.take"
    ],
        "core-js/full/iterator/to-array": [
        "es.object.to-string",
        "esnext.iterator.constructor",
        "esnext.iterator.to-array"
    ],
        "core-js/full/iterator/to-async": [
        "es.object.to-string",
        "es.promise",
        "esnext.iterator.constructor",
        "esnext.iterator.to-async"
    ],
        "core-js/full/json": [
        "es.json.stringify",
        "es.json.to-string-tag",
        "es.object.create",
        "es.object.freeze",
        "es.object.keys",
        "esnext.json.is-raw-json",
        "esnext.json.parse",
        "esnext.json.raw-json"
    ],
        "core-js/full/json/is-raw-json": [
        "esnext.json.is-raw-json"
    ],
        "core-js/full/json/parse": [
        "es.object.keys",
        "esnext.json.parse"
    ],
        "core-js/full/json/raw-json": [
        "es.object.create",
        "es.object.freeze",
        "esnext.json.raw-json"
    ],
        "core-js/full/json/stringify": [
        "es.json.stringify"
    ],
        "core-js/full/json/to-string-tag": [
        "es.json.to-string-tag"
    ],
        "core-js/full/map": [
        "es.array.iterator",
        "es.map",
        "es.object.to-string",
        "es.string.iterator",
        "esnext.map.delete-all",
        "esnext.map.emplace",
        "esnext.map.every",
        "esnext.map.filter",
        "esnext.map.find",
        "esnext.map.find-key",
        "esnext.map.from",
        "esnext.map.group-by",
        "esnext.map.includes",
        "esnext.map.key-by",
        "esnext.map.key-of",
        "esnext.map.map-keys",
        "esnext.map.map-values",
        "esnext.map.merge",
        "esnext.map.of",
        "esnext.map.reduce",
        "esnext.map.some",
        "esnext.map.update",
        "esnext.map.update-or-insert",
        "esnext.map.upsert",
        "web.dom-collections.iterator"
    ],
        "core-js/full/map/delete-all": [
        "es.map",
        "esnext.map.delete-all"
    ],
        "core-js/full/map/emplace": [
        "es.map",
        "esnext.map.emplace"
    ],
        "core-js/full/map/every": [
        "es.map",
        "esnext.map.every"
    ],
        "core-js/full/map/filter": [
        "es.map",
        "esnext.map.filter"
    ],
        "core-js/full/map/find": [
        "es.map",
        "esnext.map.find"
    ],
        "core-js/full/map/find-key": [
        "es.map",
        "esnext.map.find-key"
    ],
        "core-js/full/map/from": [
        "es.array.iterator",
        "es.map",
        "es.string.iterator",
        "esnext.map.from",
        "web.dom-collections.iterator"
    ],
        "core-js/full/map/group-by": [
        "es.map",
        "esnext.map.group-by"
    ],
        "core-js/full/map/includes": [
        "es.map",
        "esnext.map.includes"
    ],
        "core-js/full/map/key-by": [
        "es.map",
        "esnext.map.key-by"
    ],
        "core-js/full/map/key-of": [
        "es.map",
        "esnext.map.key-of"
    ],
        "core-js/full/map/map-keys": [
        "es.map",
        "esnext.map.map-keys"
    ],
        "core-js/full/map/map-values": [
        "es.map",
        "esnext.map.map-values"
    ],
        "core-js/full/map/merge": [
        "es.map",
        "esnext.map.merge"
    ],
        "core-js/full/map/of": [
        "es.array.iterator",
        "es.map",
        "esnext.map.of"
    ],
        "core-js/full/map/reduce": [
        "es.map",
        "esnext.map.reduce"
    ],
        "core-js/full/map/some": [
        "es.map",
        "esnext.map.some"
    ],
        "core-js/full/map/update": [
        "es.map",
        "esnext.map.update"
    ],
        "core-js/full/map/update-or-insert": [
        "es.map",
        "esnext.map.update-or-insert"
    ],
        "core-js/full/map/upsert": [
        "es.map",
        "esnext.map.upsert"
    ],
        "core-js/full/math": [
        "es.math.acosh",
        "es.math.asinh",
        "es.math.atanh",
        "es.math.cbrt",
        "es.math.clz32",
        "es.math.cosh",
        "es.math.expm1",
        "es.math.fround",
        "es.math.hypot",
        "es.math.imul",
        "es.math.log10",
        "es.math.log1p",
        "es.math.log2",
        "es.math.sign",
        "es.math.sinh",
        "es.math.tanh",
        "es.math.to-string-tag",
        "es.math.trunc",
        "esnext.math.clamp",
        "esnext.math.deg-per-rad",
        "esnext.math.degrees",
        "esnext.math.fscale",
        "esnext.math.iaddh",
        "esnext.math.imulh",
        "esnext.math.isubh",
        "esnext.math.rad-per-deg",
        "esnext.math.radians",
        "esnext.math.scale",
        "esnext.math.seeded-prng",
        "esnext.math.signbit",
        "esnext.math.umulh"
    ],
        "core-js/full/math/acosh": [
        "es.math.acosh"
    ],
        "core-js/full/math/asinh": [
        "es.math.asinh"
    ],
        "core-js/full/math/atanh": [
        "es.math.atanh"
    ],
        "core-js/full/math/cbrt": [
        "es.math.cbrt"
    ],
        "core-js/full/math/clamp": [
        "esnext.math.clamp"
    ],
        "core-js/full/math/clz32": [
        "es.math.clz32"
    ],
        "core-js/full/math/cosh": [
        "es.math.cosh"
    ],
        "core-js/full/math/deg-per-rad": [
        "esnext.math.deg-per-rad"
    ],
        "core-js/full/math/degrees": [
        "esnext.math.degrees"
    ],
        "core-js/full/math/expm1": [
        "es.math.expm1"
    ],
        "core-js/full/math/fround": [
        "es.math.fround"
    ],
        "core-js/full/math/fscale": [
        "esnext.math.fscale"
    ],
        "core-js/full/math/hypot": [
        "es.math.hypot"
    ],
        "core-js/full/math/iaddh": [
        "esnext.math.iaddh"
    ],
        "core-js/full/math/imul": [
        "es.math.imul"
    ],
        "core-js/full/math/imulh": [
        "esnext.math.imulh"
    ],
        "core-js/full/math/isubh": [
        "esnext.math.isubh"
    ],
        "core-js/full/math/log10": [
        "es.math.log10"
    ],
        "core-js/full/math/log1p": [
        "es.math.log1p"
    ],
        "core-js/full/math/log2": [
        "es.math.log2"
    ],
        "core-js/full/math/rad-per-deg": [
        "esnext.math.rad-per-deg"
    ],
        "core-js/full/math/radians": [
        "esnext.math.radians"
    ],
        "core-js/full/math/scale": [
        "esnext.math.scale"
    ],
        "core-js/full/math/seeded-prng": [
        "esnext.math.seeded-prng"
    ],
        "core-js/full/math/sign": [
        "es.math.sign"
    ],
        "core-js/full/math/signbit": [
        "esnext.math.signbit"
    ],
        "core-js/full/math/sinh": [
        "es.math.sinh"
    ],
        "core-js/full/math/tanh": [
        "es.math.tanh"
    ],
        "core-js/full/math/to-string-tag": [
        "es.math.to-string-tag"
    ],
        "core-js/full/math/trunc": [
        "es.math.trunc"
    ],
        "core-js/full/math/umulh": [
        "esnext.math.umulh"
    ],
        "core-js/full/number": [
        "es.number.constructor",
        "es.number.epsilon",
        "es.number.is-finite",
        "es.number.is-integer",
        "es.number.is-nan",
        "es.number.is-safe-integer",
        "es.number.max-safe-integer",
        "es.number.min-safe-integer",
        "es.number.parse-float",
        "es.number.parse-int",
        "es.number.to-exponential",
        "es.number.to-fixed",
        "es.number.to-precision",
        "es.object.to-string",
        "esnext.number.from-string",
        "esnext.number.range"
    ],
        "core-js/full/number/constructor": [
        "es.number.constructor"
    ],
        "core-js/full/number/epsilon": [
        "es.number.epsilon"
    ],
        "core-js/full/number/from-string": [
        "esnext.number.from-string"
    ],
        "core-js/full/number/is-finite": [
        "es.number.is-finite"
    ],
        "core-js/full/number/is-integer": [
        "es.number.is-integer"
    ],
        "core-js/full/number/is-nan": [
        "es.number.is-nan"
    ],
        "core-js/full/number/is-safe-integer": [
        "es.number.is-safe-integer"
    ],
        "core-js/full/number/max-safe-integer": [
        "es.number.max-safe-integer"
    ],
        "core-js/full/number/min-safe-integer": [
        "es.number.min-safe-integer"
    ],
        "core-js/full/number/parse-float": [
        "es.number.parse-float"
    ],
        "core-js/full/number/parse-int": [
        "es.number.parse-int"
    ],
        "core-js/full/number/range": [
        "es.object.to-string",
        "esnext.number.range"
    ],
        "core-js/full/number/to-exponential": [
        "es.number.to-exponential"
    ],
        "core-js/full/number/to-fixed": [
        "es.number.to-fixed"
    ],
        "core-js/full/number/to-precision": [
        "es.number.to-precision"
    ],
        "core-js/full/number/virtual": [
        "es.number.to-exponential",
        "es.number.to-fixed",
        "es.number.to-precision"
    ],
        "core-js/full/number/virtual/to-exponential": [
        "es.number.to-exponential"
    ],
        "core-js/full/number/virtual/to-fixed": [
        "es.number.to-fixed"
    ],
        "core-js/full/number/virtual/to-precision": [
        "es.number.to-precision"
    ],
        "core-js/full/object": [
        "es.symbol",
        "es.json.to-string-tag",
        "es.math.to-string-tag",
        "es.object.assign",
        "es.object.create",
        "es.object.define-getter",
        "es.object.define-properties",
        "es.object.define-property",
        "es.object.define-setter",
        "es.object.entries",
        "es.object.freeze",
        "es.object.from-entries",
        "es.object.get-own-property-descriptor",
        "es.object.get-own-property-descriptors",
        "es.object.get-own-property-names",
        "es.object.get-prototype-of",
        "es.object.has-own",
        "es.object.is",
        "es.object.is-extensible",
        "es.object.is-frozen",
        "es.object.is-sealed",
        "es.object.keys",
        "es.object.lookup-getter",
        "es.object.lookup-setter",
        "es.object.prevent-extensions",
        "es.object.proto",
        "es.object.seal",
        "es.object.set-prototype-of",
        "es.object.to-string",
        "es.object.values",
        "es.reflect.to-string-tag",
        "esnext.object.has-own",
        "esnext.object.iterate-entries",
        "esnext.object.iterate-keys",
        "esnext.object.iterate-values",
        "web.dom-collections.iterator"
    ],
        "core-js/full/object/assign": [
        "es.object.assign"
    ],
        "core-js/full/object/create": [
        "es.object.create"
    ],
        "core-js/full/object/define-getter": [
        "es.object.define-getter"
    ],
        "core-js/full/object/define-properties": [
        "es.object.define-properties"
    ],
        "core-js/full/object/define-property": [
        "es.object.define-property"
    ],
        "core-js/full/object/define-setter": [
        "es.object.define-setter"
    ],
        "core-js/full/object/entries": [
        "es.object.entries"
    ],
        "core-js/full/object/freeze": [
        "es.object.freeze"
    ],
        "core-js/full/object/from-entries": [
        "es.array.iterator",
        "es.object.from-entries",
        "web.dom-collections.iterator"
    ],
        "core-js/full/object/get-own-property-descriptor": [
        "es.object.get-own-property-descriptor"
    ],
        "core-js/full/object/get-own-property-descriptors": [
        "es.object.get-own-property-descriptors"
    ],
        "core-js/full/object/get-own-property-names": [
        "es.object.get-own-property-names"
    ],
        "core-js/full/object/get-own-property-symbols": [
        "es.symbol"
    ],
        "core-js/full/object/get-prototype-of": [
        "es.object.get-prototype-of"
    ],
        "core-js/full/object/has-own": [
        "es.object.has-own",
        "esnext.object.has-own"
    ],
        "core-js/full/object/is": [
        "es.object.is"
    ],
        "core-js/full/object/is-extensible": [
        "es.object.is-extensible"
    ],
        "core-js/full/object/is-frozen": [
        "es.object.is-frozen"
    ],
        "core-js/full/object/is-sealed": [
        "es.object.is-sealed"
    ],
        "core-js/full/object/iterate-entries": [
        "esnext.object.iterate-entries"
    ],
        "core-js/full/object/iterate-keys": [
        "esnext.object.iterate-keys"
    ],
        "core-js/full/object/iterate-values": [
        "esnext.object.iterate-values"
    ],
        "core-js/full/object/keys": [
        "es.object.keys"
    ],
        "core-js/full/object/lookup-getter": [
        "es.object.lookup-getter"
    ],
        "core-js/full/object/lookup-setter": [
        "es.object.lookup-setter"
    ],
        "core-js/full/object/prevent-extensions": [
        "es.object.prevent-extensions"
    ],
        "core-js/full/object/proto": [
        "es.object.proto"
    ],
        "core-js/full/object/seal": [
        "es.object.seal"
    ],
        "core-js/full/object/set-prototype-of": [
        "es.object.set-prototype-of"
    ],
        "core-js/full/object/to-string": [
        "es.json.to-string-tag",
        "es.math.to-string-tag",
        "es.object.to-string",
        "es.reflect.to-string-tag"
    ],
        "core-js/full/object/values": [
        "es.object.values"
    ],
        "core-js/full/observable": [
        "es.object.to-string",
        "es.string.iterator",
        "esnext.observable",
        "esnext.symbol.observable",
        "web.dom-collections.iterator"
    ],
        "core-js/full/parse-float": [
        "es.parse-float"
    ],
        "core-js/full/parse-int": [
        "es.parse-int"
    ],
        "core-js/full/promise": [
        "es.aggregate-error",
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.promise.all-settled",
        "es.promise.any",
        "es.promise.finally",
        "es.string.iterator",
        "esnext.aggregate-error",
        "esnext.promise.all-settled",
        "esnext.promise.any",
        "esnext.promise.try",
        "web.dom-collections.iterator"
    ],
        "core-js/full/promise/all-settled": [
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.promise.all-settled",
        "es.string.iterator",
        "esnext.promise.all-settled",
        "web.dom-collections.iterator"
    ],
        "core-js/full/promise/any": [
        "es.aggregate-error",
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.promise.any",
        "es.string.iterator",
        "esnext.aggregate-error",
        "esnext.promise.any",
        "web.dom-collections.iterator"
    ],
        "core-js/full/promise/finally": [
        "es.object.to-string",
        "es.promise",
        "es.promise.finally"
    ],
        "core-js/full/promise/try": [
        "es.promise",
        "esnext.promise.try"
    ],
        "core-js/full/queue-microtask": [
        "web.queue-microtask"
    ],
        "core-js/full/reflect": [
        "es.object.to-string",
        "es.reflect.apply",
        "es.reflect.construct",
        "es.reflect.define-property",
        "es.reflect.delete-property",
        "es.reflect.get",
        "es.reflect.get-own-property-descriptor",
        "es.reflect.get-prototype-of",
        "es.reflect.has",
        "es.reflect.is-extensible",
        "es.reflect.own-keys",
        "es.reflect.prevent-extensions",
        "es.reflect.set",
        "es.reflect.set-prototype-of",
        "es.reflect.to-string-tag",
        "esnext.reflect.define-metadata",
        "esnext.reflect.delete-metadata",
        "esnext.reflect.get-metadata",
        "esnext.reflect.get-metadata-keys",
        "esnext.reflect.get-own-metadata",
        "esnext.reflect.get-own-metadata-keys",
        "esnext.reflect.has-metadata",
        "esnext.reflect.has-own-metadata",
        "esnext.reflect.metadata"
    ],
        "core-js/full/reflect/apply": [
        "es.reflect.apply"
    ],
        "core-js/full/reflect/construct": [
        "es.reflect.construct"
    ],
        "core-js/full/reflect/define-metadata": [
        "esnext.reflect.define-metadata"
    ],
        "core-js/full/reflect/define-property": [
        "es.reflect.define-property"
    ],
        "core-js/full/reflect/delete-metadata": [
        "esnext.reflect.delete-metadata"
    ],
        "core-js/full/reflect/delete-property": [
        "es.reflect.delete-property"
    ],
        "core-js/full/reflect/get": [
        "es.reflect.get"
    ],
        "core-js/full/reflect/get-metadata": [
        "esnext.reflect.get-metadata"
    ],
        "core-js/full/reflect/get-metadata-keys": [
        "esnext.reflect.get-metadata-keys"
    ],
        "core-js/full/reflect/get-own-metadata": [
        "esnext.reflect.get-own-metadata"
    ],
        "core-js/full/reflect/get-own-metadata-keys": [
        "esnext.reflect.get-own-metadata-keys"
    ],
        "core-js/full/reflect/get-own-property-descriptor": [
        "es.reflect.get-own-property-descriptor"
    ],
        "core-js/full/reflect/get-prototype-of": [
        "es.reflect.get-prototype-of"
    ],
        "core-js/full/reflect/has": [
        "es.reflect.has"
    ],
        "core-js/full/reflect/has-metadata": [
        "esnext.reflect.has-metadata"
    ],
        "core-js/full/reflect/has-own-metadata": [
        "esnext.reflect.has-own-metadata"
    ],
        "core-js/full/reflect/is-extensible": [
        "es.reflect.is-extensible"
    ],
        "core-js/full/reflect/metadata": [
        "esnext.reflect.metadata"
    ],
        "core-js/full/reflect/own-keys": [
        "es.reflect.own-keys"
    ],
        "core-js/full/reflect/prevent-extensions": [
        "es.reflect.prevent-extensions"
    ],
        "core-js/full/reflect/set": [
        "es.reflect.set"
    ],
        "core-js/full/reflect/set-prototype-of": [
        "es.reflect.set-prototype-of"
    ],
        "core-js/full/reflect/to-string-tag": [
        "es.reflect.to-string-tag"
    ],
        "core-js/full/regexp": [
        "es.regexp.constructor",
        "es.regexp.dot-all",
        "es.regexp.exec",
        "es.regexp.flags",
        "es.regexp.sticky",
        "es.regexp.test",
        "es.regexp.to-string",
        "es.string.match",
        "es.string.replace",
        "es.string.search",
        "es.string.split"
    ],
        "core-js/full/regexp/constructor": [
        "es.regexp.constructor",
        "es.regexp.dot-all",
        "es.regexp.exec",
        "es.regexp.sticky"
    ],
        "core-js/full/regexp/dot-all": [
        "es.regexp.constructor",
        "es.regexp.dot-all",
        "es.regexp.exec"
    ],
        "core-js/full/regexp/flags": [
        "es.regexp.flags"
    ],
        "core-js/full/regexp/match": [
        "es.regexp.exec",
        "es.string.match"
    ],
        "core-js/full/regexp/replace": [
        "es.regexp.exec",
        "es.string.replace"
    ],
        "core-js/full/regexp/search": [
        "es.regexp.exec",
        "es.string.search"
    ],
        "core-js/full/regexp/split": [
        "es.regexp.exec",
        "es.string.split"
    ],
        "core-js/full/regexp/sticky": [
        "es.regexp.constructor",
        "es.regexp.exec",
        "es.regexp.sticky"
    ],
        "core-js/full/regexp/test": [
        "es.regexp.exec",
        "es.regexp.test"
    ],
        "core-js/full/regexp/to-string": [
        "es.regexp.to-string"
    ],
        "core-js/full/self": [
        "web.self"
    ],
        "core-js/full/set": [
        "es.array.iterator",
        "es.object.to-string",
        "es.set",
        "es.string.iterator",
        "esnext.set.add-all",
        "esnext.set.delete-all",
        "esnext.set.difference.v2",
        "esnext.set.difference",
        "esnext.set.every",
        "esnext.set.filter",
        "esnext.set.find",
        "esnext.set.from",
        "esnext.set.intersection.v2",
        "esnext.set.intersection",
        "esnext.set.is-disjoint-from.v2",
        "esnext.set.is-disjoint-from",
        "esnext.set.is-subset-of.v2",
        "esnext.set.is-subset-of",
        "esnext.set.is-superset-of.v2",
        "esnext.set.is-superset-of",
        "esnext.set.join",
        "esnext.set.map",
        "esnext.set.of",
        "esnext.set.reduce",
        "esnext.set.some",
        "esnext.set.symmetric-difference.v2",
        "esnext.set.symmetric-difference",
        "esnext.set.union.v2",
        "esnext.set.union",
        "web.dom-collections.iterator"
    ],
        "core-js/full/set-immediate": [
        "web.immediate"
    ],
        "core-js/full/set-interval": [
        "web.timers"
    ],
        "core-js/full/set-timeout": [
        "web.timers"
    ],
        "core-js/full/set/add-all": [
        "es.set",
        "esnext.set.add-all"
    ],
        "core-js/full/set/delete-all": [
        "es.set",
        "esnext.set.delete-all"
    ],
        "core-js/full/set/difference": [
        "es.array.iterator",
        "es.set",
        "es.string.iterator",
        "esnext.set.difference.v2",
        "esnext.set.difference",
        "web.dom-collections.iterator"
    ],
        "core-js/full/set/every": [
        "es.set",
        "esnext.set.every"
    ],
        "core-js/full/set/filter": [
        "es.set",
        "esnext.set.filter"
    ],
        "core-js/full/set/find": [
        "es.set",
        "esnext.set.find"
    ],
        "core-js/full/set/from": [
        "es.array.iterator",
        "es.set",
        "es.string.iterator",
        "esnext.set.from",
        "web.dom-collections.iterator"
    ],
        "core-js/full/set/intersection": [
        "es.array.iterator",
        "es.set",
        "es.string.iterator",
        "esnext.set.intersection.v2",
        "esnext.set.intersection",
        "web.dom-collections.iterator"
    ],
        "core-js/full/set/is-disjoint-from": [
        "es.array.iterator",
        "es.set",
        "es.string.iterator",
        "esnext.set.is-disjoint-from.v2",
        "esnext.set.is-disjoint-from",
        "web.dom-collections.iterator"
    ],
        "core-js/full/set/is-subset-of": [
        "es.array.iterator",
        "es.set",
        "es.string.iterator",
        "esnext.set.is-subset-of.v2",
        "esnext.set.is-subset-of",
        "web.dom-collections.iterator"
    ],
        "core-js/full/set/is-superset-of": [
        "es.array.iterator",
        "es.set",
        "es.string.iterator",
        "esnext.set.is-superset-of.v2",
        "esnext.set.is-superset-of",
        "web.dom-collections.iterator"
    ],
        "core-js/full/set/join": [
        "es.set",
        "esnext.set.join"
    ],
        "core-js/full/set/map": [
        "es.set",
        "esnext.set.map"
    ],
        "core-js/full/set/of": [
        "es.array.iterator",
        "es.set",
        "esnext.set.of"
    ],
        "core-js/full/set/reduce": [
        "es.set",
        "esnext.set.reduce"
    ],
        "core-js/full/set/some": [
        "es.set",
        "esnext.set.some"
    ],
        "core-js/full/set/symmetric-difference": [
        "es.array.iterator",
        "es.set",
        "es.string.iterator",
        "esnext.set.symmetric-difference.v2",
        "esnext.set.symmetric-difference",
        "web.dom-collections.iterator"
    ],
        "core-js/full/set/union": [
        "es.array.iterator",
        "es.set",
        "es.string.iterator",
        "esnext.set.union.v2",
        "esnext.set.union",
        "web.dom-collections.iterator"
    ],
        "core-js/full/string": [
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.at-alternative",
        "es.string.code-point-at",
        "es.string.ends-with",
        "es.string.from-code-point",
        "es.string.includes",
        "es.string.iterator",
        "es.string.match",
        "es.string.match-all",
        "es.string.pad-end",
        "es.string.pad-start",
        "es.string.raw",
        "es.string.repeat",
        "es.string.replace",
        "es.string.replace-all",
        "es.string.search",
        "es.string.split",
        "es.string.starts-with",
        "es.string.substr",
        "es.string.trim",
        "es.string.trim-end",
        "es.string.trim-start",
        "es.string.anchor",
        "es.string.big",
        "es.string.blink",
        "es.string.bold",
        "es.string.fixed",
        "es.string.fontcolor",
        "es.string.fontsize",
        "es.string.italics",
        "es.string.link",
        "es.string.small",
        "es.string.strike",
        "es.string.sub",
        "es.string.sup",
        "es.weak-map",
        "esnext.string.at",
        "esnext.string.cooked",
        "esnext.string.code-points",
        "esnext.string.dedent",
        "esnext.string.is-well-formed",
        "esnext.string.match-all",
        "esnext.string.replace-all",
        "esnext.string.to-well-formed"
    ],
        "core-js/full/string/anchor": [
        "es.string.anchor"
    ],
        "core-js/full/string/at": [
        "es.string.at-alternative",
        "esnext.string.at"
    ],
        "core-js/full/string/big": [
        "es.string.big"
    ],
        "core-js/full/string/blink": [
        "es.string.blink"
    ],
        "core-js/full/string/bold": [
        "es.string.bold"
    ],
        "core-js/full/string/code-point-at": [
        "es.string.code-point-at"
    ],
        "core-js/full/string/code-points": [
        "es.object.to-string",
        "esnext.string.code-points"
    ],
        "core-js/full/string/cooked": [
        "esnext.string.cooked"
    ],
        "core-js/full/string/dedent": [
        "es.string.from-code-point",
        "es.weak-map",
        "esnext.string.dedent"
    ],
        "core-js/full/string/ends-with": [
        "es.string.ends-with"
    ],
        "core-js/full/string/fixed": [
        "es.string.fixed"
    ],
        "core-js/full/string/fontcolor": [
        "es.string.fontcolor"
    ],
        "core-js/full/string/fontsize": [
        "es.string.fontsize"
    ],
        "core-js/full/string/from-code-point": [
        "es.string.from-code-point"
    ],
        "core-js/full/string/includes": [
        "es.string.includes"
    ],
        "core-js/full/string/is-well-formed": [
        "esnext.string.is-well-formed"
    ],
        "core-js/full/string/italics": [
        "es.string.italics"
    ],
        "core-js/full/string/iterator": [
        "es.object.to-string",
        "es.string.iterator"
    ],
        "core-js/full/string/link": [
        "es.string.link"
    ],
        "core-js/full/string/match": [
        "es.regexp.exec",
        "es.string.match"
    ],
        "core-js/full/string/match-all": [
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.match-all",
        "esnext.string.match-all"
    ],
        "core-js/full/string/pad-end": [
        "es.string.pad-end"
    ],
        "core-js/full/string/pad-start": [
        "es.string.pad-start"
    ],
        "core-js/full/string/raw": [
        "es.string.raw"
    ],
        "core-js/full/string/repeat": [
        "es.string.repeat"
    ],
        "core-js/full/string/replace": [
        "es.regexp.exec",
        "es.string.replace"
    ],
        "core-js/full/string/replace-all": [
        "es.regexp.exec",
        "es.string.replace",
        "es.string.replace-all",
        "esnext.string.replace-all"
    ],
        "core-js/full/string/search": [
        "es.regexp.exec",
        "es.string.search"
    ],
        "core-js/full/string/small": [
        "es.string.small"
    ],
        "core-js/full/string/split": [
        "es.regexp.exec",
        "es.string.split"
    ],
        "core-js/full/string/starts-with": [
        "es.string.starts-with"
    ],
        "core-js/full/string/strike": [
        "es.string.strike"
    ],
        "core-js/full/string/sub": [
        "es.string.sub"
    ],
        "core-js/full/string/substr": [
        "es.string.substr"
    ],
        "core-js/full/string/sup": [
        "es.string.sup"
    ],
        "core-js/full/string/to-well-formed": [
        "esnext.string.to-well-formed"
    ],
        "core-js/full/string/trim": [
        "es.string.trim"
    ],
        "core-js/full/string/trim-end": [
        "es.string.trim-end"
    ],
        "core-js/full/string/trim-left": [
        "es.string.trim-start"
    ],
        "core-js/full/string/trim-right": [
        "es.string.trim-end"
    ],
        "core-js/full/string/trim-start": [
        "es.string.trim-start"
    ],
        "core-js/full/string/virtual": [
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.at-alternative",
        "es.string.code-point-at",
        "es.string.ends-with",
        "es.string.includes",
        "es.string.iterator",
        "es.string.match",
        "es.string.match-all",
        "es.string.pad-end",
        "es.string.pad-start",
        "es.string.repeat",
        "es.string.replace",
        "es.string.replace-all",
        "es.string.search",
        "es.string.split",
        "es.string.starts-with",
        "es.string.substr",
        "es.string.trim",
        "es.string.trim-end",
        "es.string.trim-start",
        "es.string.anchor",
        "es.string.big",
        "es.string.blink",
        "es.string.bold",
        "es.string.fixed",
        "es.string.fontcolor",
        "es.string.fontsize",
        "es.string.italics",
        "es.string.link",
        "es.string.small",
        "es.string.strike",
        "es.string.sub",
        "es.string.sup",
        "esnext.string.at",
        "esnext.string.code-points",
        "esnext.string.is-well-formed",
        "esnext.string.match-all",
        "esnext.string.replace-all",
        "esnext.string.to-well-formed"
    ],
        "core-js/full/string/virtual/anchor": [
        "es.string.anchor"
    ],
        "core-js/full/string/virtual/at": [
        "es.string.at-alternative",
        "esnext.string.at"
    ],
        "core-js/full/string/virtual/big": [
        "es.string.big"
    ],
        "core-js/full/string/virtual/blink": [
        "es.string.blink"
    ],
        "core-js/full/string/virtual/bold": [
        "es.string.bold"
    ],
        "core-js/full/string/virtual/code-point-at": [
        "es.string.code-point-at"
    ],
        "core-js/full/string/virtual/code-points": [
        "es.object.to-string",
        "esnext.string.code-points"
    ],
        "core-js/full/string/virtual/ends-with": [
        "es.string.ends-with"
    ],
        "core-js/full/string/virtual/fixed": [
        "es.string.fixed"
    ],
        "core-js/full/string/virtual/fontcolor": [
        "es.string.fontcolor"
    ],
        "core-js/full/string/virtual/fontsize": [
        "es.string.fontsize"
    ],
        "core-js/full/string/virtual/includes": [
        "es.string.includes"
    ],
        "core-js/full/string/virtual/is-well-formed": [
        "esnext.string.is-well-formed"
    ],
        "core-js/full/string/virtual/italics": [
        "es.string.italics"
    ],
        "core-js/full/string/virtual/iterator": [
        "es.object.to-string",
        "es.string.iterator"
    ],
        "core-js/full/string/virtual/link": [
        "es.string.link"
    ],
        "core-js/full/string/virtual/match-all": [
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.match-all",
        "esnext.string.match-all"
    ],
        "core-js/full/string/virtual/pad-end": [
        "es.string.pad-end"
    ],
        "core-js/full/string/virtual/pad-start": [
        "es.string.pad-start"
    ],
        "core-js/full/string/virtual/repeat": [
        "es.string.repeat"
    ],
        "core-js/full/string/virtual/replace-all": [
        "es.regexp.exec",
        "es.string.replace",
        "es.string.replace-all",
        "esnext.string.replace-all"
    ],
        "core-js/full/string/virtual/small": [
        "es.string.small"
    ],
        "core-js/full/string/virtual/starts-with": [
        "es.string.starts-with"
    ],
        "core-js/full/string/virtual/strike": [
        "es.string.strike"
    ],
        "core-js/full/string/virtual/sub": [
        "es.string.sub"
    ],
        "core-js/full/string/virtual/substr": [
        "es.string.substr"
    ],
        "core-js/full/string/virtual/sup": [
        "es.string.sup"
    ],
        "core-js/full/string/virtual/to-well-formed": [
        "esnext.string.to-well-formed"
    ],
        "core-js/full/string/virtual/trim": [
        "es.string.trim"
    ],
        "core-js/full/string/virtual/trim-end": [
        "es.string.trim-end"
    ],
        "core-js/full/string/virtual/trim-left": [
        "es.string.trim-start"
    ],
        "core-js/full/string/virtual/trim-right": [
        "es.string.trim-end"
    ],
        "core-js/full/string/virtual/trim-start": [
        "es.string.trim-start"
    ],
        "core-js/full/structured-clone": [
        "es.error.to-string",
        "es.array.iterator",
        "es.map",
        "es.object.keys",
        "es.object.to-string",
        "es.set",
        "web.dom-exception.constructor",
        "web.dom-exception.stack",
        "web.dom-exception.to-string-tag",
        "web.structured-clone"
    ],
        "core-js/full/suppressed-error": [
        "es.error.cause",
        "es.error.to-string",
        "esnext.suppressed-error.constructor"
    ],
        "core-js/full/symbol": [
        "es.symbol",
        "es.symbol.description",
        "es.symbol.async-iterator",
        "es.symbol.has-instance",
        "es.symbol.is-concat-spreadable",
        "es.symbol.iterator",
        "es.symbol.match",
        "es.symbol.match-all",
        "es.symbol.replace",
        "es.symbol.search",
        "es.symbol.species",
        "es.symbol.split",
        "es.symbol.to-primitive",
        "es.symbol.to-string-tag",
        "es.symbol.unscopables",
        "es.array.concat",
        "es.json.to-string-tag",
        "es.math.to-string-tag",
        "es.object.to-string",
        "es.reflect.to-string-tag",
        "esnext.symbol.async-dispose",
        "esnext.symbol.dispose",
        "esnext.symbol.is-registered",
        "esnext.symbol.is-well-known",
        "esnext.symbol.matcher",
        "esnext.symbol.metadata",
        "esnext.symbol.metadata-key",
        "esnext.symbol.observable",
        "esnext.symbol.pattern-match",
        "esnext.symbol.replace-all",
        "web.dom-collections.iterator"
    ],
        "core-js/full/symbol/async-dispose": [
        "esnext.symbol.async-dispose"
    ],
        "core-js/full/symbol/async-iterator": [
        "es.symbol.async-iterator"
    ],
        "core-js/full/symbol/description": [
        "es.symbol.description"
    ],
        "core-js/full/symbol/dispose": [
        "esnext.symbol.dispose"
    ],
        "core-js/full/symbol/for": [
        "es.symbol"
    ],
        "core-js/full/symbol/has-instance": [
        "es.symbol.has-instance",
        "es.function.has-instance"
    ],
        "core-js/full/symbol/is-concat-spreadable": [
        "es.symbol.is-concat-spreadable",
        "es.array.concat"
    ],
        "core-js/full/symbol/is-registered": [
        "es.symbol",
        "esnext.symbol.is-registered"
    ],
        "core-js/full/symbol/is-well-known": [
        "es.symbol",
        "esnext.symbol.is-well-known"
    ],
        "core-js/full/symbol/iterator": [
        "es.symbol.iterator",
        "es.array.iterator",
        "es.object.to-string",
        "es.string.iterator",
        "web.dom-collections.iterator"
    ],
        "core-js/full/symbol/key-for": [
        "es.symbol"
    ],
        "core-js/full/symbol/match": [
        "es.symbol.match",
        "es.regexp.exec",
        "es.string.match"
    ],
        "core-js/full/symbol/match-all": [
        "es.symbol.match-all",
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.match-all"
    ],
        "core-js/full/symbol/matcher": [
        "esnext.symbol.matcher"
    ],
        "core-js/full/symbol/metadata": [
        "esnext.symbol.metadata"
    ],
        "core-js/full/symbol/metadata-key": [
        "esnext.symbol.metadata-key"
    ],
        "core-js/full/symbol/observable": [
        "esnext.symbol.observable"
    ],
        "core-js/full/symbol/pattern-match": [
        "esnext.symbol.pattern-match"
    ],
        "core-js/full/symbol/replace": [
        "es.symbol.replace",
        "es.regexp.exec",
        "es.string.replace"
    ],
        "core-js/full/symbol/replace-all": [
        "esnext.symbol.replace-all"
    ],
        "core-js/full/symbol/search": [
        "es.symbol.search",
        "es.regexp.exec",
        "es.string.search"
    ],
        "core-js/full/symbol/species": [
        "es.symbol.species"
    ],
        "core-js/full/symbol/split": [
        "es.symbol.split",
        "es.regexp.exec",
        "es.string.split"
    ],
        "core-js/full/symbol/to-primitive": [
        "es.symbol.to-primitive",
        "es.date.to-primitive"
    ],
        "core-js/full/symbol/to-string-tag": [
        "es.symbol.to-string-tag",
        "es.json.to-string-tag",
        "es.math.to-string-tag",
        "es.object.to-string",
        "es.reflect.to-string-tag"
    ],
        "core-js/full/symbol/unscopables": [
        "es.symbol.unscopables"
    ],
        "core-js/full/typed-array": [
        "es.map",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "es.typed-array.float32-array",
        "es.typed-array.float64-array",
        "es.typed-array.int8-array",
        "es.typed-array.int16-array",
        "es.typed-array.int32-array",
        "es.typed-array.uint8-array",
        "es.typed-array.uint8-clamped-array",
        "es.typed-array.uint16-array",
        "es.typed-array.uint32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with"
    ],
        "core-js/full/typed-array/at": [
        "es.typed-array.at",
        "esnext.typed-array.at"
    ],
        "core-js/full/typed-array/copy-within": [
        "es.typed-array.copy-within"
    ],
        "core-js/full/typed-array/entries": [
        "es.object.to-string",
        "es.typed-array.iterator"
    ],
        "core-js/full/typed-array/every": [
        "es.typed-array.every"
    ],
        "core-js/full/typed-array/fill": [
        "es.typed-array.fill"
    ],
        "core-js/full/typed-array/filter": [
        "es.typed-array.filter"
    ],
        "core-js/full/typed-array/filter-out": [
        "esnext.typed-array.filter-out"
    ],
        "core-js/full/typed-array/filter-reject": [
        "esnext.typed-array.filter-reject"
    ],
        "core-js/full/typed-array/find": [
        "es.typed-array.find"
    ],
        "core-js/full/typed-array/find-index": [
        "es.typed-array.find-index"
    ],
        "core-js/full/typed-array/find-last": [
        "es.typed-array.find-last",
        "esnext.typed-array.find-last"
    ],
        "core-js/full/typed-array/find-last-index": [
        "es.typed-array.find-last-index",
        "esnext.typed-array.find-last-index"
    ],
        "core-js/full/typed-array/float32-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.map",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "es.typed-array.float32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with"
    ],
        "core-js/full/typed-array/float64-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.map",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "es.typed-array.float64-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with"
    ],
        "core-js/full/typed-array/for-each": [
        "es.typed-array.for-each"
    ],
        "core-js/full/typed-array/from": [
        "es.typed-array.from"
    ],
        "core-js/full/typed-array/from-async": [
        "esnext.typed-array.from-async"
    ],
        "core-js/full/typed-array/group-by": [
        "esnext.typed-array.group-by"
    ],
        "core-js/full/typed-array/includes": [
        "es.typed-array.includes"
    ],
        "core-js/full/typed-array/index-of": [
        "es.typed-array.index-of"
    ],
        "core-js/full/typed-array/int16-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.map",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "es.typed-array.int16-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with"
    ],
        "core-js/full/typed-array/int32-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.map",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "es.typed-array.int32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with"
    ],
        "core-js/full/typed-array/int8-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.map",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "es.typed-array.int8-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with"
    ],
        "core-js/full/typed-array/iterator": [
        "es.object.to-string",
        "es.typed-array.iterator"
    ],
        "core-js/full/typed-array/join": [
        "es.typed-array.join"
    ],
        "core-js/full/typed-array/keys": [
        "es.object.to-string",
        "es.typed-array.iterator"
    ],
        "core-js/full/typed-array/last-index-of": [
        "es.typed-array.last-index-of"
    ],
        "core-js/full/typed-array/map": [
        "es.typed-array.map"
    ],
        "core-js/full/typed-array/methods": [
        "es.map",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with"
    ],
        "core-js/full/typed-array/of": [
        "es.typed-array.of"
    ],
        "core-js/full/typed-array/reduce": [
        "es.typed-array.reduce"
    ],
        "core-js/full/typed-array/reduce-right": [
        "es.typed-array.reduce-right"
    ],
        "core-js/full/typed-array/reverse": [
        "es.typed-array.reverse"
    ],
        "core-js/full/typed-array/set": [
        "es.typed-array.set"
    ],
        "core-js/full/typed-array/slice": [
        "es.typed-array.slice"
    ],
        "core-js/full/typed-array/some": [
        "es.typed-array.some"
    ],
        "core-js/full/typed-array/sort": [
        "es.typed-array.sort"
    ],
        "core-js/full/typed-array/subarray": [
        "es.typed-array.subarray"
    ],
        "core-js/full/typed-array/to-locale-string": [
        "es.typed-array.to-locale-string"
    ],
        "core-js/full/typed-array/to-reversed": [
        "esnext.typed-array.to-reversed"
    ],
        "core-js/full/typed-array/to-sorted": [
        "es.typed-array.sort",
        "es.typed-array.to-sorted",
        "esnext.typed-array.to-sorted"
    ],
        "core-js/full/typed-array/to-spliced": [
        "esnext.typed-array.to-spliced"
    ],
        "core-js/full/typed-array/to-string": [
        "es.typed-array.to-string"
    ],
        "core-js/full/typed-array/uint16-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.map",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "es.typed-array.uint16-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with"
    ],
        "core-js/full/typed-array/uint32-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.map",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "es.typed-array.uint32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with"
    ],
        "core-js/full/typed-array/uint8-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.map",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "es.typed-array.uint8-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with"
    ],
        "core-js/full/typed-array/uint8-clamped-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.map",
        "es.object.to-string",
        "es.promise",
        "es.string.iterator",
        "es.typed-array.uint8-clamped-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with"
    ],
        "core-js/full/typed-array/unique-by": [
        "es.map",
        "esnext.typed-array.unique-by"
    ],
        "core-js/full/typed-array/values": [
        "es.object.to-string",
        "es.typed-array.iterator"
    ],
        "core-js/full/typed-array/with": [
        "esnext.typed-array.with"
    ],
        "core-js/full/unescape": [
        "es.unescape"
    ],
        "core-js/full/url": [
        "web.url",
        "web.url.to-json",
        "web.url-search-params",
        "web.url-search-params.size"
    ],
        "core-js/full/url-search-params": [
        "web.dom-collections.iterator",
        "web.url-search-params",
        "web.url-search-params.size"
    ],
        "core-js/full/url/to-json": [
        "web.url.to-json"
    ],
        "core-js/full/weak-map": [
        "es.array.iterator",
        "es.object.to-string",
        "es.string.iterator",
        "es.weak-map",
        "esnext.weak-map.delete-all",
        "esnext.weak-map.from",
        "esnext.weak-map.of",
        "esnext.weak-map.emplace",
        "esnext.weak-map.upsert",
        "web.dom-collections.iterator"
    ],
        "core-js/full/weak-map/delete-all": [
        "es.weak-map",
        "esnext.weak-map.delete-all"
    ],
        "core-js/full/weak-map/emplace": [
        "es.weak-map",
        "esnext.weak-map.emplace"
    ],
        "core-js/full/weak-map/from": [
        "es.array.iterator",
        "es.string.iterator",
        "es.weak-map",
        "esnext.weak-map.from",
        "web.dom-collections.iterator"
    ],
        "core-js/full/weak-map/of": [
        "es.array.iterator",
        "es.weak-map",
        "esnext.weak-map.of"
    ],
        "core-js/full/weak-map/upsert": [
        "es.weak-map",
        "esnext.weak-map.upsert"
    ],
        "core-js/full/weak-set": [
        "es.array.iterator",
        "es.object.to-string",
        "es.string.iterator",
        "es.weak-set",
        "esnext.weak-set.add-all",
        "esnext.weak-set.delete-all",
        "esnext.weak-set.from",
        "esnext.weak-set.of",
        "web.dom-collections.iterator"
    ],
        "core-js/full/weak-set/add-all": [
        "es.weak-set",
        "esnext.weak-set.add-all"
    ],
        "core-js/full/weak-set/delete-all": [
        "es.weak-set",
        "esnext.weak-set.delete-all"
    ],
        "core-js/full/weak-set/from": [
        "es.array.iterator",
        "es.string.iterator",
        "es.weak-set",
        "esnext.weak-set.from",
        "web.dom-collections.iterator"
    ],
        "core-js/full/weak-set/of": [
        "es.array.iterator",
        "es.weak-set",
        "esnext.weak-set.of"
    ],
        "core-js/modules/es.aggregate-error": [
        "es.aggregate-error"
    ],
        "core-js/modules/es.aggregate-error.cause": [
        "es.aggregate-error.cause"
    ],
        "core-js/modules/es.aggregate-error.constructor": [
        "es.aggregate-error.constructor"
    ],
        "core-js/modules/es.array-buffer.constructor": [
        "es.array-buffer.constructor"
    ],
        "core-js/modules/es.array-buffer.is-view": [
        "es.array-buffer.is-view"
    ],
        "core-js/modules/es.array-buffer.slice": [
        "es.array-buffer.slice"
    ],
        "core-js/modules/es.array.at": [
        "es.array.at"
    ],
        "core-js/modules/es.array.concat": [
        "es.array.concat"
    ],
        "core-js/modules/es.array.copy-within": [
        "es.array.copy-within"
    ],
        "core-js/modules/es.array.every": [
        "es.array.every"
    ],
        "core-js/modules/es.array.fill": [
        "es.array.fill"
    ],
        "core-js/modules/es.array.filter": [
        "es.array.filter"
    ],
        "core-js/modules/es.array.find": [
        "es.array.find"
    ],
        "core-js/modules/es.array.find-index": [
        "es.array.find-index"
    ],
        "core-js/modules/es.array.find-last": [
        "es.array.find-last"
    ],
        "core-js/modules/es.array.find-last-index": [
        "es.array.find-last-index"
    ],
        "core-js/modules/es.array.flat": [
        "es.array.flat"
    ],
        "core-js/modules/es.array.flat-map": [
        "es.array.flat-map"
    ],
        "core-js/modules/es.array.for-each": [
        "es.array.for-each"
    ],
        "core-js/modules/es.array.from": [
        "es.array.from"
    ],
        "core-js/modules/es.array.includes": [
        "es.array.includes"
    ],
        "core-js/modules/es.array.index-of": [
        "es.array.index-of"
    ],
        "core-js/modules/es.array.is-array": [
        "es.array.is-array"
    ],
        "core-js/modules/es.array.iterator": [
        "es.array.iterator"
    ],
        "core-js/modules/es.array.join": [
        "es.array.join"
    ],
        "core-js/modules/es.array.last-index-of": [
        "es.array.last-index-of"
    ],
        "core-js/modules/es.array.map": [
        "es.array.map"
    ],
        "core-js/modules/es.array.of": [
        "es.array.of"
    ],
        "core-js/modules/es.array.push": [
        "es.array.push"
    ],
        "core-js/modules/es.array.reduce": [
        "es.array.reduce"
    ],
        "core-js/modules/es.array.reduce-right": [
        "es.array.reduce-right"
    ],
        "core-js/modules/es.array.reverse": [
        "es.array.reverse"
    ],
        "core-js/modules/es.array.slice": [
        "es.array.slice"
    ],
        "core-js/modules/es.array.some": [
        "es.array.some"
    ],
        "core-js/modules/es.array.sort": [
        "es.array.sort"
    ],
        "core-js/modules/es.array.species": [
        "es.array.species"
    ],
        "core-js/modules/es.array.splice": [
        "es.array.splice"
    ],
        "core-js/modules/es.array.to-reversed": [
        "es.array.to-reversed"
    ],
        "core-js/modules/es.array.to-sorted": [
        "es.array.to-sorted"
    ],
        "core-js/modules/es.array.to-spliced": [
        "es.array.to-spliced"
    ],
        "core-js/modules/es.array.unscopables.flat": [
        "es.array.unscopables.flat"
    ],
        "core-js/modules/es.array.unscopables.flat-map": [
        "es.array.unscopables.flat-map"
    ],
        "core-js/modules/es.array.unshift": [
        "es.array.unshift"
    ],
        "core-js/modules/es.array.with": [
        "es.array.with"
    ],
        "core-js/modules/es.data-view": [
        "es.data-view"
    ],
        "core-js/modules/es.data-view.constructor": [
        "es.data-view.constructor"
    ],
        "core-js/modules/es.date.get-year": [
        "es.date.get-year"
    ],
        "core-js/modules/es.date.now": [
        "es.date.now"
    ],
        "core-js/modules/es.date.set-year": [
        "es.date.set-year"
    ],
        "core-js/modules/es.date.to-gmt-string": [
        "es.date.to-gmt-string"
    ],
        "core-js/modules/es.date.to-iso-string": [
        "es.date.to-iso-string"
    ],
        "core-js/modules/es.date.to-json": [
        "es.date.to-json"
    ],
        "core-js/modules/es.date.to-primitive": [
        "es.date.to-primitive"
    ],
        "core-js/modules/es.date.to-string": [
        "es.date.to-string"
    ],
        "core-js/modules/es.error.cause": [
        "es.error.cause"
    ],
        "core-js/modules/es.error.to-string": [
        "es.error.to-string"
    ],
        "core-js/modules/es.escape": [
        "es.escape"
    ],
        "core-js/modules/es.function.bind": [
        "es.function.bind"
    ],
        "core-js/modules/es.function.has-instance": [
        "es.function.has-instance"
    ],
        "core-js/modules/es.function.name": [
        "es.function.name"
    ],
        "core-js/modules/es.global-this": [
        "es.global-this"
    ],
        "core-js/modules/es.json.stringify": [
        "es.json.stringify"
    ],
        "core-js/modules/es.json.to-string-tag": [
        "es.json.to-string-tag"
    ],
        "core-js/modules/es.map": [
        "es.map"
    ],
        "core-js/modules/es.map.constructor": [
        "es.map.constructor"
    ],
        "core-js/modules/es.math.acosh": [
        "es.math.acosh"
    ],
        "core-js/modules/es.math.asinh": [
        "es.math.asinh"
    ],
        "core-js/modules/es.math.atanh": [
        "es.math.atanh"
    ],
        "core-js/modules/es.math.cbrt": [
        "es.math.cbrt"
    ],
        "core-js/modules/es.math.clz32": [
        "es.math.clz32"
    ],
        "core-js/modules/es.math.cosh": [
        "es.math.cosh"
    ],
        "core-js/modules/es.math.expm1": [
        "es.math.expm1"
    ],
        "core-js/modules/es.math.fround": [
        "es.math.fround"
    ],
        "core-js/modules/es.math.hypot": [
        "es.math.hypot"
    ],
        "core-js/modules/es.math.imul": [
        "es.math.imul"
    ],
        "core-js/modules/es.math.log10": [
        "es.math.log10"
    ],
        "core-js/modules/es.math.log1p": [
        "es.math.log1p"
    ],
        "core-js/modules/es.math.log2": [
        "es.math.log2"
    ],
        "core-js/modules/es.math.sign": [
        "es.math.sign"
    ],
        "core-js/modules/es.math.sinh": [
        "es.math.sinh"
    ],
        "core-js/modules/es.math.tanh": [
        "es.math.tanh"
    ],
        "core-js/modules/es.math.to-string-tag": [
        "es.math.to-string-tag"
    ],
        "core-js/modules/es.math.trunc": [
        "es.math.trunc"
    ],
        "core-js/modules/es.number.constructor": [
        "es.number.constructor"
    ],
        "core-js/modules/es.number.epsilon": [
        "es.number.epsilon"
    ],
        "core-js/modules/es.number.is-finite": [
        "es.number.is-finite"
    ],
        "core-js/modules/es.number.is-integer": [
        "es.number.is-integer"
    ],
        "core-js/modules/es.number.is-nan": [
        "es.number.is-nan"
    ],
        "core-js/modules/es.number.is-safe-integer": [
        "es.number.is-safe-integer"
    ],
        "core-js/modules/es.number.max-safe-integer": [
        "es.number.max-safe-integer"
    ],
        "core-js/modules/es.number.min-safe-integer": [
        "es.number.min-safe-integer"
    ],
        "core-js/modules/es.number.parse-float": [
        "es.number.parse-float"
    ],
        "core-js/modules/es.number.parse-int": [
        "es.number.parse-int"
    ],
        "core-js/modules/es.number.to-exponential": [
        "es.number.to-exponential"
    ],
        "core-js/modules/es.number.to-fixed": [
        "es.number.to-fixed"
    ],
        "core-js/modules/es.number.to-precision": [
        "es.number.to-precision"
    ],
        "core-js/modules/es.object.assign": [
        "es.object.assign"
    ],
        "core-js/modules/es.object.create": [
        "es.object.create"
    ],
        "core-js/modules/es.object.define-getter": [
        "es.object.define-getter"
    ],
        "core-js/modules/es.object.define-properties": [
        "es.object.define-properties"
    ],
        "core-js/modules/es.object.define-property": [
        "es.object.define-property"
    ],
        "core-js/modules/es.object.define-setter": [
        "es.object.define-setter"
    ],
        "core-js/modules/es.object.entries": [
        "es.object.entries"
    ],
        "core-js/modules/es.object.freeze": [
        "es.object.freeze"
    ],
        "core-js/modules/es.object.from-entries": [
        "es.object.from-entries"
    ],
        "core-js/modules/es.object.get-own-property-descriptor": [
        "es.object.get-own-property-descriptor"
    ],
        "core-js/modules/es.object.get-own-property-descriptors": [
        "es.object.get-own-property-descriptors"
    ],
        "core-js/modules/es.object.get-own-property-names": [
        "es.object.get-own-property-names"
    ],
        "core-js/modules/es.object.get-own-property-symbols": [
        "es.object.get-own-property-symbols"
    ],
        "core-js/modules/es.object.get-prototype-of": [
        "es.object.get-prototype-of"
    ],
        "core-js/modules/es.object.has-own": [
        "es.object.has-own"
    ],
        "core-js/modules/es.object.is": [
        "es.object.is"
    ],
        "core-js/modules/es.object.is-extensible": [
        "es.object.is-extensible"
    ],
        "core-js/modules/es.object.is-frozen": [
        "es.object.is-frozen"
    ],
        "core-js/modules/es.object.is-sealed": [
        "es.object.is-sealed"
    ],
        "core-js/modules/es.object.keys": [
        "es.object.keys"
    ],
        "core-js/modules/es.object.lookup-getter": [
        "es.object.lookup-getter"
    ],
        "core-js/modules/es.object.lookup-setter": [
        "es.object.lookup-setter"
    ],
        "core-js/modules/es.object.prevent-extensions": [
        "es.object.prevent-extensions"
    ],
        "core-js/modules/es.object.proto": [
        "es.object.proto"
    ],
        "core-js/modules/es.object.seal": [
        "es.object.seal"
    ],
        "core-js/modules/es.object.set-prototype-of": [
        "es.object.set-prototype-of"
    ],
        "core-js/modules/es.object.to-string": [
        "es.object.to-string"
    ],
        "core-js/modules/es.object.values": [
        "es.object.values"
    ],
        "core-js/modules/es.parse-float": [
        "es.parse-float"
    ],
        "core-js/modules/es.parse-int": [
        "es.parse-int"
    ],
        "core-js/modules/es.promise": [
        "es.promise"
    ],
        "core-js/modules/es.promise.all": [
        "es.promise.all"
    ],
        "core-js/modules/es.promise.all-settled": [
        "es.promise.all-settled"
    ],
        "core-js/modules/es.promise.any": [
        "es.promise.any"
    ],
        "core-js/modules/es.promise.catch": [
        "es.promise.catch"
    ],
        "core-js/modules/es.promise.constructor": [
        "es.promise.constructor"
    ],
        "core-js/modules/es.promise.finally": [
        "es.promise.finally"
    ],
        "core-js/modules/es.promise.race": [
        "es.promise.race"
    ],
        "core-js/modules/es.promise.reject": [
        "es.promise.reject"
    ],
        "core-js/modules/es.promise.resolve": [
        "es.promise.resolve"
    ],
        "core-js/modules/es.reflect.apply": [
        "es.reflect.apply"
    ],
        "core-js/modules/es.reflect.construct": [
        "es.reflect.construct"
    ],
        "core-js/modules/es.reflect.define-property": [
        "es.reflect.define-property"
    ],
        "core-js/modules/es.reflect.delete-property": [
        "es.reflect.delete-property"
    ],
        "core-js/modules/es.reflect.get": [
        "es.reflect.get"
    ],
        "core-js/modules/es.reflect.get-own-property-descriptor": [
        "es.reflect.get-own-property-descriptor"
    ],
        "core-js/modules/es.reflect.get-prototype-of": [
        "es.reflect.get-prototype-of"
    ],
        "core-js/modules/es.reflect.has": [
        "es.reflect.has"
    ],
        "core-js/modules/es.reflect.is-extensible": [
        "es.reflect.is-extensible"
    ],
        "core-js/modules/es.reflect.own-keys": [
        "es.reflect.own-keys"
    ],
        "core-js/modules/es.reflect.prevent-extensions": [
        "es.reflect.prevent-extensions"
    ],
        "core-js/modules/es.reflect.set": [
        "es.reflect.set"
    ],
        "core-js/modules/es.reflect.set-prototype-of": [
        "es.reflect.set-prototype-of"
    ],
        "core-js/modules/es.reflect.to-string-tag": [
        "es.reflect.to-string-tag"
    ],
        "core-js/modules/es.regexp.constructor": [
        "es.regexp.constructor"
    ],
        "core-js/modules/es.regexp.dot-all": [
        "es.regexp.dot-all"
    ],
        "core-js/modules/es.regexp.exec": [
        "es.regexp.exec"
    ],
        "core-js/modules/es.regexp.flags": [
        "es.regexp.flags"
    ],
        "core-js/modules/es.regexp.sticky": [
        "es.regexp.sticky"
    ],
        "core-js/modules/es.regexp.test": [
        "es.regexp.test"
    ],
        "core-js/modules/es.regexp.to-string": [
        "es.regexp.to-string"
    ],
        "core-js/modules/es.set": [
        "es.set"
    ],
        "core-js/modules/es.set.constructor": [
        "es.set.constructor"
    ],
        "core-js/modules/es.string.anchor": [
        "es.string.anchor"
    ],
        "core-js/modules/es.string.at-alternative": [
        "es.string.at-alternative"
    ],
        "core-js/modules/es.string.big": [
        "es.string.big"
    ],
        "core-js/modules/es.string.blink": [
        "es.string.blink"
    ],
        "core-js/modules/es.string.bold": [
        "es.string.bold"
    ],
        "core-js/modules/es.string.code-point-at": [
        "es.string.code-point-at"
    ],
        "core-js/modules/es.string.ends-with": [
        "es.string.ends-with"
    ],
        "core-js/modules/es.string.fixed": [
        "es.string.fixed"
    ],
        "core-js/modules/es.string.fontcolor": [
        "es.string.fontcolor"
    ],
        "core-js/modules/es.string.fontsize": [
        "es.string.fontsize"
    ],
        "core-js/modules/es.string.from-code-point": [
        "es.string.from-code-point"
    ],
        "core-js/modules/es.string.includes": [
        "es.string.includes"
    ],
        "core-js/modules/es.string.italics": [
        "es.string.italics"
    ],
        "core-js/modules/es.string.iterator": [
        "es.string.iterator"
    ],
        "core-js/modules/es.string.link": [
        "es.string.link"
    ],
        "core-js/modules/es.string.match": [
        "es.string.match"
    ],
        "core-js/modules/es.string.match-all": [
        "es.string.match-all"
    ],
        "core-js/modules/es.string.pad-end": [
        "es.string.pad-end"
    ],
        "core-js/modules/es.string.pad-start": [
        "es.string.pad-start"
    ],
        "core-js/modules/es.string.raw": [
        "es.string.raw"
    ],
        "core-js/modules/es.string.repeat": [
        "es.string.repeat"
    ],
        "core-js/modules/es.string.replace": [
        "es.string.replace"
    ],
        "core-js/modules/es.string.replace-all": [
        "es.string.replace-all"
    ],
        "core-js/modules/es.string.search": [
        "es.string.search"
    ],
        "core-js/modules/es.string.small": [
        "es.string.small"
    ],
        "core-js/modules/es.string.split": [
        "es.string.split"
    ],
        "core-js/modules/es.string.starts-with": [
        "es.string.starts-with"
    ],
        "core-js/modules/es.string.strike": [
        "es.string.strike"
    ],
        "core-js/modules/es.string.sub": [
        "es.string.sub"
    ],
        "core-js/modules/es.string.substr": [
        "es.string.substr"
    ],
        "core-js/modules/es.string.sup": [
        "es.string.sup"
    ],
        "core-js/modules/es.string.trim": [
        "es.string.trim"
    ],
        "core-js/modules/es.string.trim-end": [
        "es.string.trim-end"
    ],
        "core-js/modules/es.string.trim-left": [
        "es.string.trim-left"
    ],
        "core-js/modules/es.string.trim-right": [
        "es.string.trim-right"
    ],
        "core-js/modules/es.string.trim-start": [
        "es.string.trim-start"
    ],
        "core-js/modules/es.symbol": [
        "es.symbol"
    ],
        "core-js/modules/es.symbol.async-iterator": [
        "es.symbol.async-iterator"
    ],
        "core-js/modules/es.symbol.constructor": [
        "es.symbol.constructor"
    ],
        "core-js/modules/es.symbol.description": [
        "es.symbol.description"
    ],
        "core-js/modules/es.symbol.for": [
        "es.symbol.for"
    ],
        "core-js/modules/es.symbol.has-instance": [
        "es.symbol.has-instance"
    ],
        "core-js/modules/es.symbol.is-concat-spreadable": [
        "es.symbol.is-concat-spreadable"
    ],
        "core-js/modules/es.symbol.iterator": [
        "es.symbol.iterator"
    ],
        "core-js/modules/es.symbol.key-for": [
        "es.symbol.key-for"
    ],
        "core-js/modules/es.symbol.match": [
        "es.symbol.match"
    ],
        "core-js/modules/es.symbol.match-all": [
        "es.symbol.match-all"
    ],
        "core-js/modules/es.symbol.replace": [
        "es.symbol.replace"
    ],
        "core-js/modules/es.symbol.search": [
        "es.symbol.search"
    ],
        "core-js/modules/es.symbol.species": [
        "es.symbol.species"
    ],
        "core-js/modules/es.symbol.split": [
        "es.symbol.split"
    ],
        "core-js/modules/es.symbol.to-primitive": [
        "es.symbol.to-primitive"
    ],
        "core-js/modules/es.symbol.to-string-tag": [
        "es.symbol.to-string-tag"
    ],
        "core-js/modules/es.symbol.unscopables": [
        "es.symbol.unscopables"
    ],
        "core-js/modules/es.typed-array.at": [
        "es.typed-array.at"
    ],
        "core-js/modules/es.typed-array.copy-within": [
        "es.typed-array.copy-within"
    ],
        "core-js/modules/es.typed-array.every": [
        "es.typed-array.every"
    ],
        "core-js/modules/es.typed-array.fill": [
        "es.typed-array.fill"
    ],
        "core-js/modules/es.typed-array.filter": [
        "es.typed-array.filter"
    ],
        "core-js/modules/es.typed-array.find": [
        "es.typed-array.find"
    ],
        "core-js/modules/es.typed-array.find-index": [
        "es.typed-array.find-index"
    ],
        "core-js/modules/es.typed-array.find-last": [
        "es.typed-array.find-last"
    ],
        "core-js/modules/es.typed-array.find-last-index": [
        "es.typed-array.find-last-index"
    ],
        "core-js/modules/es.typed-array.float32-array": [
        "es.typed-array.float32-array"
    ],
        "core-js/modules/es.typed-array.float64-array": [
        "es.typed-array.float64-array"
    ],
        "core-js/modules/es.typed-array.for-each": [
        "es.typed-array.for-each"
    ],
        "core-js/modules/es.typed-array.from": [
        "es.typed-array.from"
    ],
        "core-js/modules/es.typed-array.includes": [
        "es.typed-array.includes"
    ],
        "core-js/modules/es.typed-array.index-of": [
        "es.typed-array.index-of"
    ],
        "core-js/modules/es.typed-array.int16-array": [
        "es.typed-array.int16-array"
    ],
        "core-js/modules/es.typed-array.int32-array": [
        "es.typed-array.int32-array"
    ],
        "core-js/modules/es.typed-array.int8-array": [
        "es.typed-array.int8-array"
    ],
        "core-js/modules/es.typed-array.iterator": [
        "es.typed-array.iterator"
    ],
        "core-js/modules/es.typed-array.join": [
        "es.typed-array.join"
    ],
        "core-js/modules/es.typed-array.last-index-of": [
        "es.typed-array.last-index-of"
    ],
        "core-js/modules/es.typed-array.map": [
        "es.typed-array.map"
    ],
        "core-js/modules/es.typed-array.of": [
        "es.typed-array.of"
    ],
        "core-js/modules/es.typed-array.reduce": [
        "es.typed-array.reduce"
    ],
        "core-js/modules/es.typed-array.reduce-right": [
        "es.typed-array.reduce-right"
    ],
        "core-js/modules/es.typed-array.reverse": [
        "es.typed-array.reverse"
    ],
        "core-js/modules/es.typed-array.set": [
        "es.typed-array.set"
    ],
        "core-js/modules/es.typed-array.slice": [
        "es.typed-array.slice"
    ],
        "core-js/modules/es.typed-array.some": [
        "es.typed-array.some"
    ],
        "core-js/modules/es.typed-array.sort": [
        "es.typed-array.sort"
    ],
        "core-js/modules/es.typed-array.subarray": [
        "es.typed-array.subarray"
    ],
        "core-js/modules/es.typed-array.to-locale-string": [
        "es.typed-array.to-locale-string"
    ],
        "core-js/modules/es.typed-array.to-reversed": [
        "es.typed-array.to-reversed"
    ],
        "core-js/modules/es.typed-array.to-sorted": [
        "es.typed-array.to-sorted"
    ],
        "core-js/modules/es.typed-array.to-string": [
        "es.typed-array.to-string"
    ],
        "core-js/modules/es.typed-array.uint16-array": [
        "es.typed-array.uint16-array"
    ],
        "core-js/modules/es.typed-array.uint32-array": [
        "es.typed-array.uint32-array"
    ],
        "core-js/modules/es.typed-array.uint8-array": [
        "es.typed-array.uint8-array"
    ],
        "core-js/modules/es.typed-array.uint8-clamped-array": [
        "es.typed-array.uint8-clamped-array"
    ],
        "core-js/modules/es.typed-array.with": [
        "es.typed-array.with"
    ],
        "core-js/modules/es.unescape": [
        "es.unescape"
    ],
        "core-js/modules/es.weak-map": [
        "es.weak-map"
    ],
        "core-js/modules/es.weak-map.constructor": [
        "es.weak-map.constructor"
    ],
        "core-js/modules/es.weak-set": [
        "es.weak-set"
    ],
        "core-js/modules/es.weak-set.constructor": [
        "es.weak-set.constructor"
    ],
        "core-js/modules/esnext.aggregate-error": [
        "esnext.aggregate-error"
    ],
        "core-js/modules/esnext.array-buffer.detached": [
        "esnext.array-buffer.detached"
    ],
        "core-js/modules/esnext.array-buffer.transfer": [
        "esnext.array-buffer.transfer"
    ],
        "core-js/modules/esnext.array-buffer.transfer-to-fixed-length": [
        "esnext.array-buffer.transfer-to-fixed-length"
    ],
        "core-js/modules/esnext.array.at": [
        "esnext.array.at"
    ],
        "core-js/modules/esnext.array.filter-out": [
        "esnext.array.filter-out"
    ],
        "core-js/modules/esnext.array.filter-reject": [
        "esnext.array.filter-reject"
    ],
        "core-js/modules/esnext.array.find-last": [
        "esnext.array.find-last"
    ],
        "core-js/modules/esnext.array.find-last-index": [
        "esnext.array.find-last-index"
    ],
        "core-js/modules/esnext.array.from-async": [
        "esnext.array.from-async"
    ],
        "core-js/modules/esnext.array.group": [
        "esnext.array.group"
    ],
        "core-js/modules/esnext.array.group-by": [
        "esnext.array.group-by"
    ],
        "core-js/modules/esnext.array.group-by-to-map": [
        "esnext.array.group-by-to-map"
    ],
        "core-js/modules/esnext.array.group-to-map": [
        "esnext.array.group-to-map"
    ],
        "core-js/modules/esnext.array.is-template-object": [
        "esnext.array.is-template-object"
    ],
        "core-js/modules/esnext.array.last-index": [
        "esnext.array.last-index"
    ],
        "core-js/modules/esnext.array.last-item": [
        "esnext.array.last-item"
    ],
        "core-js/modules/esnext.array.to-reversed": [
        "esnext.array.to-reversed"
    ],
        "core-js/modules/esnext.array.to-sorted": [
        "esnext.array.to-sorted"
    ],
        "core-js/modules/esnext.array.to-spliced": [
        "esnext.array.to-spliced"
    ],
        "core-js/modules/esnext.array.unique-by": [
        "esnext.array.unique-by"
    ],
        "core-js/modules/esnext.array.with": [
        "esnext.array.with"
    ],
        "core-js/modules/esnext.async-disposable-stack.constructor": [
        "esnext.async-disposable-stack.constructor"
    ],
        "core-js/modules/esnext.async-iterator.as-indexed-pairs": [
        "esnext.async-iterator.as-indexed-pairs"
    ],
        "core-js/modules/esnext.async-iterator.async-dispose": [
        "esnext.async-iterator.async-dispose"
    ],
        "core-js/modules/esnext.async-iterator.constructor": [
        "esnext.async-iterator.constructor"
    ],
        "core-js/modules/esnext.async-iterator.drop": [
        "esnext.async-iterator.drop"
    ],
        "core-js/modules/esnext.async-iterator.every": [
        "esnext.async-iterator.every"
    ],
        "core-js/modules/esnext.async-iterator.filter": [
        "esnext.async-iterator.filter"
    ],
        "core-js/modules/esnext.async-iterator.find": [
        "esnext.async-iterator.find"
    ],
        "core-js/modules/esnext.async-iterator.flat-map": [
        "esnext.async-iterator.flat-map"
    ],
        "core-js/modules/esnext.async-iterator.for-each": [
        "esnext.async-iterator.for-each"
    ],
        "core-js/modules/esnext.async-iterator.from": [
        "esnext.async-iterator.from"
    ],
        "core-js/modules/esnext.async-iterator.indexed": [
        "esnext.async-iterator.indexed"
    ],
        "core-js/modules/esnext.async-iterator.map": [
        "esnext.async-iterator.map"
    ],
        "core-js/modules/esnext.async-iterator.reduce": [
        "esnext.async-iterator.reduce"
    ],
        "core-js/modules/esnext.async-iterator.some": [
        "esnext.async-iterator.some"
    ],
        "core-js/modules/esnext.async-iterator.take": [
        "esnext.async-iterator.take"
    ],
        "core-js/modules/esnext.async-iterator.to-array": [
        "esnext.async-iterator.to-array"
    ],
        "core-js/modules/esnext.bigint.range": [
        "esnext.bigint.range"
    ],
        "core-js/modules/esnext.composite-key": [
        "esnext.composite-key"
    ],
        "core-js/modules/esnext.composite-symbol": [
        "esnext.composite-symbol"
    ],
        "core-js/modules/esnext.disposable-stack.constructor": [
        "esnext.disposable-stack.constructor"
    ],
        "core-js/modules/esnext.function.demethodize": [
        "esnext.function.demethodize"
    ],
        "core-js/modules/esnext.function.is-callable": [
        "esnext.function.is-callable"
    ],
        "core-js/modules/esnext.function.is-constructor": [
        "esnext.function.is-constructor"
    ],
        "core-js/modules/esnext.function.un-this": [
        "esnext.function.un-this"
    ],
        "core-js/modules/esnext.global-this": [
        "esnext.global-this"
    ],
        "core-js/modules/esnext.iterator.as-indexed-pairs": [
        "esnext.iterator.as-indexed-pairs"
    ],
        "core-js/modules/esnext.iterator.constructor": [
        "esnext.iterator.constructor"
    ],
        "core-js/modules/esnext.iterator.dispose": [
        "esnext.iterator.dispose"
    ],
        "core-js/modules/esnext.iterator.drop": [
        "esnext.iterator.drop"
    ],
        "core-js/modules/esnext.iterator.every": [
        "esnext.iterator.every"
    ],
        "core-js/modules/esnext.iterator.filter": [
        "esnext.iterator.filter"
    ],
        "core-js/modules/esnext.iterator.find": [
        "esnext.iterator.find"
    ],
        "core-js/modules/esnext.iterator.flat-map": [
        "esnext.iterator.flat-map"
    ],
        "core-js/modules/esnext.iterator.for-each": [
        "esnext.iterator.for-each"
    ],
        "core-js/modules/esnext.iterator.from": [
        "esnext.iterator.from"
    ],
        "core-js/modules/esnext.iterator.indexed": [
        "esnext.iterator.indexed"
    ],
        "core-js/modules/esnext.iterator.map": [
        "esnext.iterator.map"
    ],
        "core-js/modules/esnext.iterator.range": [
        "esnext.iterator.range"
    ],
        "core-js/modules/esnext.iterator.reduce": [
        "esnext.iterator.reduce"
    ],
        "core-js/modules/esnext.iterator.some": [
        "esnext.iterator.some"
    ],
        "core-js/modules/esnext.iterator.take": [
        "esnext.iterator.take"
    ],
        "core-js/modules/esnext.iterator.to-array": [
        "esnext.iterator.to-array"
    ],
        "core-js/modules/esnext.iterator.to-async": [
        "esnext.iterator.to-async"
    ],
        "core-js/modules/esnext.json.is-raw-json": [
        "esnext.json.is-raw-json"
    ],
        "core-js/modules/esnext.json.parse": [
        "esnext.json.parse"
    ],
        "core-js/modules/esnext.json.raw-json": [
        "esnext.json.raw-json"
    ],
        "core-js/modules/esnext.map.delete-all": [
        "esnext.map.delete-all"
    ],
        "core-js/modules/esnext.map.emplace": [
        "esnext.map.emplace"
    ],
        "core-js/modules/esnext.map.every": [
        "esnext.map.every"
    ],
        "core-js/modules/esnext.map.filter": [
        "esnext.map.filter"
    ],
        "core-js/modules/esnext.map.find": [
        "esnext.map.find"
    ],
        "core-js/modules/esnext.map.find-key": [
        "esnext.map.find-key"
    ],
        "core-js/modules/esnext.map.from": [
        "esnext.map.from"
    ],
        "core-js/modules/esnext.map.group-by": [
        "esnext.map.group-by"
    ],
        "core-js/modules/esnext.map.includes": [
        "esnext.map.includes"
    ],
        "core-js/modules/esnext.map.key-by": [
        "esnext.map.key-by"
    ],
        "core-js/modules/esnext.map.key-of": [
        "esnext.map.key-of"
    ],
        "core-js/modules/esnext.map.map-keys": [
        "esnext.map.map-keys"
    ],
        "core-js/modules/esnext.map.map-values": [
        "esnext.map.map-values"
    ],
        "core-js/modules/esnext.map.merge": [
        "esnext.map.merge"
    ],
        "core-js/modules/esnext.map.of": [
        "esnext.map.of"
    ],
        "core-js/modules/esnext.map.reduce": [
        "esnext.map.reduce"
    ],
        "core-js/modules/esnext.map.some": [
        "esnext.map.some"
    ],
        "core-js/modules/esnext.map.update": [
        "esnext.map.update"
    ],
        "core-js/modules/esnext.map.update-or-insert": [
        "esnext.map.update-or-insert"
    ],
        "core-js/modules/esnext.map.upsert": [
        "esnext.map.upsert"
    ],
        "core-js/modules/esnext.math.clamp": [
        "esnext.math.clamp"
    ],
        "core-js/modules/esnext.math.deg-per-rad": [
        "esnext.math.deg-per-rad"
    ],
        "core-js/modules/esnext.math.degrees": [
        "esnext.math.degrees"
    ],
        "core-js/modules/esnext.math.fscale": [
        "esnext.math.fscale"
    ],
        "core-js/modules/esnext.math.iaddh": [
        "esnext.math.iaddh"
    ],
        "core-js/modules/esnext.math.imulh": [
        "esnext.math.imulh"
    ],
        "core-js/modules/esnext.math.isubh": [
        "esnext.math.isubh"
    ],
        "core-js/modules/esnext.math.rad-per-deg": [
        "esnext.math.rad-per-deg"
    ],
        "core-js/modules/esnext.math.radians": [
        "esnext.math.radians"
    ],
        "core-js/modules/esnext.math.scale": [
        "esnext.math.scale"
    ],
        "core-js/modules/esnext.math.seeded-prng": [
        "esnext.math.seeded-prng"
    ],
        "core-js/modules/esnext.math.signbit": [
        "esnext.math.signbit"
    ],
        "core-js/modules/esnext.math.umulh": [
        "esnext.math.umulh"
    ],
        "core-js/modules/esnext.number.from-string": [
        "esnext.number.from-string"
    ],
        "core-js/modules/esnext.number.range": [
        "esnext.number.range"
    ],
        "core-js/modules/esnext.object.has-own": [
        "esnext.object.has-own"
    ],
        "core-js/modules/esnext.object.iterate-entries": [
        "esnext.object.iterate-entries"
    ],
        "core-js/modules/esnext.object.iterate-keys": [
        "esnext.object.iterate-keys"
    ],
        "core-js/modules/esnext.object.iterate-values": [
        "esnext.object.iterate-values"
    ],
        "core-js/modules/esnext.observable": [
        "esnext.observable"
    ],
        "core-js/modules/esnext.observable.constructor": [
        "esnext.observable.constructor"
    ],
        "core-js/modules/esnext.observable.from": [
        "esnext.observable.from"
    ],
        "core-js/modules/esnext.observable.of": [
        "esnext.observable.of"
    ],
        "core-js/modules/esnext.promise.all-settled": [
        "esnext.promise.all-settled"
    ],
        "core-js/modules/esnext.promise.any": [
        "esnext.promise.any"
    ],
        "core-js/modules/esnext.promise.try": [
        "esnext.promise.try"
    ],
        "core-js/modules/esnext.reflect.define-metadata": [
        "esnext.reflect.define-metadata"
    ],
        "core-js/modules/esnext.reflect.delete-metadata": [
        "esnext.reflect.delete-metadata"
    ],
        "core-js/modules/esnext.reflect.get-metadata": [
        "esnext.reflect.get-metadata"
    ],
        "core-js/modules/esnext.reflect.get-metadata-keys": [
        "esnext.reflect.get-metadata-keys"
    ],
        "core-js/modules/esnext.reflect.get-own-metadata": [
        "esnext.reflect.get-own-metadata"
    ],
        "core-js/modules/esnext.reflect.get-own-metadata-keys": [
        "esnext.reflect.get-own-metadata-keys"
    ],
        "core-js/modules/esnext.reflect.has-metadata": [
        "esnext.reflect.has-metadata"
    ],
        "core-js/modules/esnext.reflect.has-own-metadata": [
        "esnext.reflect.has-own-metadata"
    ],
        "core-js/modules/esnext.reflect.metadata": [
        "esnext.reflect.metadata"
    ],
        "core-js/modules/esnext.set.add-all": [
        "esnext.set.add-all"
    ],
        "core-js/modules/esnext.set.delete-all": [
        "esnext.set.delete-all"
    ],
        "core-js/modules/esnext.set.difference": [
        "esnext.set.difference"
    ],
        "core-js/modules/esnext.set.difference.v2": [
        "esnext.set.difference.v2"
    ],
        "core-js/modules/esnext.set.every": [
        "esnext.set.every"
    ],
        "core-js/modules/esnext.set.filter": [
        "esnext.set.filter"
    ],
        "core-js/modules/esnext.set.find": [
        "esnext.set.find"
    ],
        "core-js/modules/esnext.set.from": [
        "esnext.set.from"
    ],
        "core-js/modules/esnext.set.intersection": [
        "esnext.set.intersection"
    ],
        "core-js/modules/esnext.set.intersection.v2": [
        "esnext.set.intersection.v2"
    ],
        "core-js/modules/esnext.set.is-disjoint-from": [
        "esnext.set.is-disjoint-from"
    ],
        "core-js/modules/esnext.set.is-disjoint-from.v2": [
        "esnext.set.is-disjoint-from.v2"
    ],
        "core-js/modules/esnext.set.is-subset-of": [
        "esnext.set.is-subset-of"
    ],
        "core-js/modules/esnext.set.is-subset-of.v2": [
        "esnext.set.is-subset-of.v2"
    ],
        "core-js/modules/esnext.set.is-superset-of": [
        "esnext.set.is-superset-of"
    ],
        "core-js/modules/esnext.set.is-superset-of.v2": [
        "esnext.set.is-superset-of.v2"
    ],
        "core-js/modules/esnext.set.join": [
        "esnext.set.join"
    ],
        "core-js/modules/esnext.set.map": [
        "esnext.set.map"
    ],
        "core-js/modules/esnext.set.of": [
        "esnext.set.of"
    ],
        "core-js/modules/esnext.set.reduce": [
        "esnext.set.reduce"
    ],
        "core-js/modules/esnext.set.some": [
        "esnext.set.some"
    ],
        "core-js/modules/esnext.set.symmetric-difference": [
        "esnext.set.symmetric-difference"
    ],
        "core-js/modules/esnext.set.symmetric-difference.v2": [
        "esnext.set.symmetric-difference.v2"
    ],
        "core-js/modules/esnext.set.union": [
        "esnext.set.union"
    ],
        "core-js/modules/esnext.set.union.v2": [
        "esnext.set.union.v2"
    ],
        "core-js/modules/esnext.string.at": [
        "esnext.string.at"
    ],
        "core-js/modules/esnext.string.at-alternative": [
        "esnext.string.at-alternative"
    ],
        "core-js/modules/esnext.string.code-points": [
        "esnext.string.code-points"
    ],
        "core-js/modules/esnext.string.cooked": [
        "esnext.string.cooked"
    ],
        "core-js/modules/esnext.string.dedent": [
        "esnext.string.dedent"
    ],
        "core-js/modules/esnext.string.is-well-formed": [
        "esnext.string.is-well-formed"
    ],
        "core-js/modules/esnext.string.match-all": [
        "esnext.string.match-all"
    ],
        "core-js/modules/esnext.string.replace-all": [
        "esnext.string.replace-all"
    ],
        "core-js/modules/esnext.string.to-well-formed": [
        "esnext.string.to-well-formed"
    ],
        "core-js/modules/esnext.suppressed-error.constructor": [
        "esnext.suppressed-error.constructor"
    ],
        "core-js/modules/esnext.symbol.async-dispose": [
        "esnext.symbol.async-dispose"
    ],
        "core-js/modules/esnext.symbol.dispose": [
        "esnext.symbol.dispose"
    ],
        "core-js/modules/esnext.symbol.is-registered": [
        "esnext.symbol.is-registered"
    ],
        "core-js/modules/esnext.symbol.is-well-known": [
        "esnext.symbol.is-well-known"
    ],
        "core-js/modules/esnext.symbol.matcher": [
        "esnext.symbol.matcher"
    ],
        "core-js/modules/esnext.symbol.metadata": [
        "esnext.symbol.metadata"
    ],
        "core-js/modules/esnext.symbol.metadata-key": [
        "esnext.symbol.metadata-key"
    ],
        "core-js/modules/esnext.symbol.observable": [
        "esnext.symbol.observable"
    ],
        "core-js/modules/esnext.symbol.pattern-match": [
        "esnext.symbol.pattern-match"
    ],
        "core-js/modules/esnext.symbol.replace-all": [
        "esnext.symbol.replace-all"
    ],
        "core-js/modules/esnext.typed-array.at": [
        "esnext.typed-array.at"
    ],
        "core-js/modules/esnext.typed-array.filter-out": [
        "esnext.typed-array.filter-out"
    ],
        "core-js/modules/esnext.typed-array.filter-reject": [
        "esnext.typed-array.filter-reject"
    ],
        "core-js/modules/esnext.typed-array.find-last": [
        "esnext.typed-array.find-last"
    ],
        "core-js/modules/esnext.typed-array.find-last-index": [
        "esnext.typed-array.find-last-index"
    ],
        "core-js/modules/esnext.typed-array.from-async": [
        "esnext.typed-array.from-async"
    ],
        "core-js/modules/esnext.typed-array.group-by": [
        "esnext.typed-array.group-by"
    ],
        "core-js/modules/esnext.typed-array.to-reversed": [
        "esnext.typed-array.to-reversed"
    ],
        "core-js/modules/esnext.typed-array.to-sorted": [
        "esnext.typed-array.to-sorted"
    ],
        "core-js/modules/esnext.typed-array.to-spliced": [
        "esnext.typed-array.to-spliced"
    ],
        "core-js/modules/esnext.typed-array.unique-by": [
        "esnext.typed-array.unique-by"
    ],
        "core-js/modules/esnext.typed-array.with": [
        "esnext.typed-array.with"
    ],
        "core-js/modules/esnext.weak-map.delete-all": [
        "esnext.weak-map.delete-all"
    ],
        "core-js/modules/esnext.weak-map.emplace": [
        "esnext.weak-map.emplace"
    ],
        "core-js/modules/esnext.weak-map.from": [
        "esnext.weak-map.from"
    ],
        "core-js/modules/esnext.weak-map.of": [
        "esnext.weak-map.of"
    ],
        "core-js/modules/esnext.weak-map.upsert": [
        "esnext.weak-map.upsert"
    ],
        "core-js/modules/esnext.weak-set.add-all": [
        "esnext.weak-set.add-all"
    ],
        "core-js/modules/esnext.weak-set.delete-all": [
        "esnext.weak-set.delete-all"
    ],
        "core-js/modules/esnext.weak-set.from": [
        "esnext.weak-set.from"
    ],
        "core-js/modules/esnext.weak-set.of": [
        "esnext.weak-set.of"
    ],
        "core-js/modules/web.atob": [
        "web.atob"
    ],
        "core-js/modules/web.btoa": [
        "web.btoa"
    ],
        "core-js/modules/web.clear-immediate": [
        "web.clear-immediate"
    ],
        "core-js/modules/web.dom-collections.for-each": [
        "web.dom-collections.for-each"
    ],
        "core-js/modules/web.dom-collections.iterator": [
        "web.dom-collections.iterator"
    ],
        "core-js/modules/web.dom-exception.constructor": [
        "web.dom-exception.constructor"
    ],
        "core-js/modules/web.dom-exception.stack": [
        "web.dom-exception.stack"
    ],
        "core-js/modules/web.dom-exception.to-string-tag": [
        "web.dom-exception.to-string-tag"
    ],
        "core-js/modules/web.immediate": [
        "web.immediate"
    ],
        "core-js/modules/web.queue-microtask": [
        "web.queue-microtask"
    ],
        "core-js/modules/web.self": [
        "web.self"
    ],
        "core-js/modules/web.set-immediate": [
        "web.set-immediate"
    ],
        "core-js/modules/web.set-interval": [
        "web.set-interval"
    ],
        "core-js/modules/web.set-timeout": [
        "web.set-timeout"
    ],
        "core-js/modules/web.structured-clone": [
        "web.structured-clone"
    ],
        "core-js/modules/web.timers": [
        "web.timers"
    ],
        "core-js/modules/web.url": [
        "web.url"
    ],
        "core-js/modules/web.url-search-params": [
        "web.url-search-params"
    ],
        "core-js/modules/web.url-search-params.constructor": [
        "web.url-search-params.constructor"
    ],
        "core-js/modules/web.url-search-params.size": [
        "web.url-search-params.size"
    ],
        "core-js/modules/web.url.constructor": [
        "web.url.constructor"
    ],
        "core-js/modules/web.url.to-json": [
        "web.url.to-json"
    ],
        "core-js/proposals": [
        "es.map",
        "es.string.at-alternative",
        "esnext.aggregate-error",
        "esnext.suppressed-error.constructor",
        "esnext.array.from-async",
        "esnext.array.at",
        "esnext.array.filter-out",
        "esnext.array.filter-reject",
        "esnext.array.find-last",
        "esnext.array.find-last-index",
        "esnext.array.group",
        "esnext.array.group-by",
        "esnext.array.group-by-to-map",
        "esnext.array.group-to-map",
        "esnext.array.is-template-object",
        "esnext.array.last-index",
        "esnext.array.last-item",
        "esnext.array.to-reversed",
        "esnext.array.to-sorted",
        "esnext.array.to-spliced",
        "esnext.array.unique-by",
        "esnext.array.with",
        "esnext.array-buffer.detached",
        "esnext.array-buffer.transfer",
        "esnext.array-buffer.transfer-to-fixed-length",
        "esnext.async-disposable-stack.constructor",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.as-indexed-pairs",
        "esnext.async-iterator.async-dispose",
        "esnext.async-iterator.drop",
        "esnext.async-iterator.every",
        "esnext.async-iterator.filter",
        "esnext.async-iterator.find",
        "esnext.async-iterator.flat-map",
        "esnext.async-iterator.for-each",
        "esnext.async-iterator.from",
        "esnext.async-iterator.indexed",
        "esnext.async-iterator.map",
        "esnext.async-iterator.reduce",
        "esnext.async-iterator.some",
        "esnext.async-iterator.take",
        "esnext.async-iterator.to-array",
        "esnext.bigint.range",
        "esnext.composite-key",
        "esnext.composite-symbol",
        "esnext.disposable-stack.constructor",
        "esnext.function.demethodize",
        "esnext.function.is-callable",
        "esnext.function.is-constructor",
        "esnext.function.un-this",
        "esnext.global-this",
        "esnext.iterator.constructor",
        "esnext.iterator.as-indexed-pairs",
        "esnext.iterator.dispose",
        "esnext.iterator.drop",
        "esnext.iterator.every",
        "esnext.iterator.filter",
        "esnext.iterator.find",
        "esnext.iterator.flat-map",
        "esnext.iterator.for-each",
        "esnext.iterator.from",
        "esnext.iterator.indexed",
        "esnext.iterator.map",
        "esnext.iterator.range",
        "esnext.iterator.reduce",
        "esnext.iterator.some",
        "esnext.iterator.take",
        "esnext.iterator.to-array",
        "esnext.iterator.to-async",
        "esnext.json.is-raw-json",
        "esnext.json.parse",
        "esnext.json.raw-json",
        "esnext.map.delete-all",
        "esnext.map.emplace",
        "esnext.map.every",
        "esnext.map.filter",
        "esnext.map.find",
        "esnext.map.find-key",
        "esnext.map.from",
        "esnext.map.group-by",
        "esnext.map.includes",
        "esnext.map.key-by",
        "esnext.map.key-of",
        "esnext.map.map-keys",
        "esnext.map.map-values",
        "esnext.map.merge",
        "esnext.map.of",
        "esnext.map.reduce",
        "esnext.map.some",
        "esnext.map.update",
        "esnext.map.update-or-insert",
        "esnext.map.upsert",
        "esnext.math.clamp",
        "esnext.math.deg-per-rad",
        "esnext.math.degrees",
        "esnext.math.fscale",
        "esnext.math.iaddh",
        "esnext.math.imulh",
        "esnext.math.isubh",
        "esnext.math.rad-per-deg",
        "esnext.math.radians",
        "esnext.math.scale",
        "esnext.math.seeded-prng",
        "esnext.math.signbit",
        "esnext.math.umulh",
        "esnext.number.from-string",
        "esnext.number.range",
        "esnext.object.has-own",
        "esnext.object.iterate-entries",
        "esnext.object.iterate-keys",
        "esnext.object.iterate-values",
        "esnext.observable",
        "esnext.promise.all-settled",
        "esnext.promise.any",
        "esnext.promise.try",
        "esnext.reflect.define-metadata",
        "esnext.reflect.delete-metadata",
        "esnext.reflect.get-metadata",
        "esnext.reflect.get-metadata-keys",
        "esnext.reflect.get-own-metadata",
        "esnext.reflect.get-own-metadata-keys",
        "esnext.reflect.has-metadata",
        "esnext.reflect.has-own-metadata",
        "esnext.reflect.metadata",
        "esnext.set.add-all",
        "esnext.set.delete-all",
        "esnext.set.difference.v2",
        "esnext.set.difference",
        "esnext.set.every",
        "esnext.set.filter",
        "esnext.set.find",
        "esnext.set.from",
        "esnext.set.intersection.v2",
        "esnext.set.intersection",
        "esnext.set.is-disjoint-from.v2",
        "esnext.set.is-disjoint-from",
        "esnext.set.is-subset-of.v2",
        "esnext.set.is-subset-of",
        "esnext.set.is-superset-of.v2",
        "esnext.set.is-superset-of",
        "esnext.set.join",
        "esnext.set.map",
        "esnext.set.of",
        "esnext.set.reduce",
        "esnext.set.some",
        "esnext.set.symmetric-difference.v2",
        "esnext.set.symmetric-difference",
        "esnext.set.union.v2",
        "esnext.set.union",
        "esnext.string.at",
        "esnext.string.cooked",
        "esnext.string.code-points",
        "esnext.string.dedent",
        "esnext.string.is-well-formed",
        "esnext.string.match-all",
        "esnext.string.replace-all",
        "esnext.string.to-well-formed",
        "esnext.symbol.async-dispose",
        "esnext.symbol.dispose",
        "esnext.symbol.is-registered",
        "esnext.symbol.is-well-known",
        "esnext.symbol.matcher",
        "esnext.symbol.metadata",
        "esnext.symbol.metadata-key",
        "esnext.symbol.observable",
        "esnext.symbol.pattern-match",
        "esnext.symbol.replace-all",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with",
        "esnext.weak-map.delete-all",
        "esnext.weak-map.from",
        "esnext.weak-map.of",
        "esnext.weak-map.emplace",
        "esnext.weak-map.upsert",
        "esnext.weak-set.add-all",
        "esnext.weak-set.delete-all",
        "esnext.weak-set.from",
        "esnext.weak-set.of",
        "web.url",
        "web.url.to-json",
        "web.url-search-params",
        "web.url-search-params.size"
    ],
        "core-js/proposals/accessible-object-hasownproperty": [
        "esnext.object.has-own"
    ],
        "core-js/proposals/array-buffer-transfer": [
        "esnext.array-buffer.detached",
        "esnext.array-buffer.transfer",
        "esnext.array-buffer.transfer-to-fixed-length"
    ],
        "core-js/proposals/array-filtering": [
        "esnext.array.filter-out",
        "esnext.array.filter-reject",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject"
    ],
        "core-js/proposals/array-filtering-stage-1": [
        "esnext.array.filter-reject",
        "esnext.typed-array.filter-reject"
    ],
        "core-js/proposals/array-find-from-last": [
        "esnext.array.find-last",
        "esnext.array.find-last-index",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index"
    ],
        "core-js/proposals/array-flat-map": [
        "es.array.flat",
        "es.array.flat-map",
        "es.array.unscopables.flat",
        "es.array.unscopables.flat-map"
    ],
        "core-js/proposals/array-from-async": [
        "esnext.array.from-async",
        "esnext.typed-array.from-async"
    ],
        "core-js/proposals/array-from-async-stage-2": [
        "esnext.array.from-async"
    ],
        "core-js/proposals/array-grouping": [
        "esnext.array.group-by",
        "esnext.array.group-by-to-map",
        "esnext.typed-array.group-by"
    ],
        "core-js/proposals/array-grouping-stage-3": [
        "esnext.array.group-by",
        "esnext.array.group-by-to-map"
    ],
        "core-js/proposals/array-grouping-stage-3-2": [
        "esnext.array.group",
        "esnext.array.group-to-map"
    ],
        "core-js/proposals/array-includes": [
        "es.array.includes",
        "es.typed-array.includes"
    ],
        "core-js/proposals/array-is-template-object": [
        "esnext.array.is-template-object"
    ],
        "core-js/proposals/array-last": [
        "esnext.array.last-index",
        "esnext.array.last-item"
    ],
        "core-js/proposals/array-unique": [
        "es.map",
        "esnext.array.unique-by",
        "esnext.typed-array.unique-by"
    ],
        "core-js/proposals/async-explicit-resource-management": [
        "esnext.suppressed-error.constructor",
        "esnext.async-disposable-stack.constructor",
        "esnext.async-iterator.async-dispose",
        "esnext.symbol.async-dispose"
    ],
        "core-js/proposals/async-iteration": [
        "es.symbol.async-iterator"
    ],
        "core-js/proposals/async-iterator-helpers": [
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.drop",
        "esnext.async-iterator.every",
        "esnext.async-iterator.filter",
        "esnext.async-iterator.find",
        "esnext.async-iterator.flat-map",
        "esnext.async-iterator.for-each",
        "esnext.async-iterator.from",
        "esnext.async-iterator.map",
        "esnext.async-iterator.reduce",
        "esnext.async-iterator.some",
        "esnext.async-iterator.take",
        "esnext.async-iterator.to-array",
        "esnext.iterator.to-async"
    ],
        "core-js/proposals/change-array-by-copy": [
        "esnext.array.to-reversed",
        "esnext.array.to-sorted",
        "esnext.array.to-spliced",
        "esnext.array.with",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.with"
    ],
        "core-js/proposals/change-array-by-copy-stage-4": [
        "esnext.array.to-reversed",
        "esnext.array.to-sorted",
        "esnext.array.to-spliced",
        "esnext.array.with",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.with"
    ],
        "core-js/proposals/collection-methods": [
        "esnext.map.delete-all",
        "esnext.map.every",
        "esnext.map.filter",
        "esnext.map.find",
        "esnext.map.find-key",
        "esnext.map.group-by",
        "esnext.map.includes",
        "esnext.map.key-by",
        "esnext.map.key-of",
        "esnext.map.map-keys",
        "esnext.map.map-values",
        "esnext.map.merge",
        "esnext.map.reduce",
        "esnext.map.some",
        "esnext.map.update",
        "esnext.set.add-all",
        "esnext.set.delete-all",
        "esnext.set.every",
        "esnext.set.filter",
        "esnext.set.find",
        "esnext.set.join",
        "esnext.set.map",
        "esnext.set.reduce",
        "esnext.set.some",
        "esnext.weak-map.delete-all",
        "esnext.weak-set.add-all",
        "esnext.weak-set.delete-all"
    ],
        "core-js/proposals/collection-of-from": [
        "esnext.map.from",
        "esnext.map.of",
        "esnext.set.from",
        "esnext.set.of",
        "esnext.weak-map.from",
        "esnext.weak-map.of",
        "esnext.weak-set.from",
        "esnext.weak-set.of"
    ],
        "core-js/proposals/decorator-metadata": [
        "esnext.symbol.metadata-key"
    ],
        "core-js/proposals/decorators": [
        "esnext.symbol.metadata"
    ],
        "core-js/proposals/efficient-64-bit-arithmetic": [
        "esnext.math.iaddh",
        "esnext.math.imulh",
        "esnext.math.isubh",
        "esnext.math.umulh"
    ],
        "core-js/proposals/error-cause": [
        "es.error.cause",
        "es.aggregate-error.cause"
    ],
        "core-js/proposals/explicit-resource-management": [
        "esnext.suppressed-error.constructor",
        "esnext.disposable-stack.constructor",
        "esnext.iterator.dispose",
        "esnext.symbol.dispose"
    ],
        "core-js/proposals/function-demethodize": [
        "esnext.function.demethodize"
    ],
        "core-js/proposals/function-is-callable-is-constructor": [
        "esnext.function.is-callable",
        "esnext.function.is-constructor"
    ],
        "core-js/proposals/function-un-this": [
        "esnext.function.un-this"
    ],
        "core-js/proposals/global-this": [
        "esnext.global-this"
    ],
        "core-js/proposals/iterator-helpers": [
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.as-indexed-pairs",
        "esnext.async-iterator.drop",
        "esnext.async-iterator.every",
        "esnext.async-iterator.filter",
        "esnext.async-iterator.find",
        "esnext.async-iterator.flat-map",
        "esnext.async-iterator.for-each",
        "esnext.async-iterator.from",
        "esnext.async-iterator.indexed",
        "esnext.async-iterator.map",
        "esnext.async-iterator.reduce",
        "esnext.async-iterator.some",
        "esnext.async-iterator.take",
        "esnext.async-iterator.to-array",
        "esnext.iterator.constructor",
        "esnext.iterator.as-indexed-pairs",
        "esnext.iterator.drop",
        "esnext.iterator.every",
        "esnext.iterator.filter",
        "esnext.iterator.find",
        "esnext.iterator.flat-map",
        "esnext.iterator.for-each",
        "esnext.iterator.from",
        "esnext.iterator.indexed",
        "esnext.iterator.map",
        "esnext.iterator.reduce",
        "esnext.iterator.some",
        "esnext.iterator.take",
        "esnext.iterator.to-array",
        "esnext.iterator.to-async"
    ],
        "core-js/proposals/iterator-helpers-stage-3": [
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.drop",
        "esnext.async-iterator.every",
        "esnext.async-iterator.filter",
        "esnext.async-iterator.find",
        "esnext.async-iterator.flat-map",
        "esnext.async-iterator.for-each",
        "esnext.async-iterator.from",
        "esnext.async-iterator.map",
        "esnext.async-iterator.reduce",
        "esnext.async-iterator.some",
        "esnext.async-iterator.take",
        "esnext.async-iterator.to-array",
        "esnext.iterator.constructor",
        "esnext.iterator.drop",
        "esnext.iterator.every",
        "esnext.iterator.filter",
        "esnext.iterator.find",
        "esnext.iterator.flat-map",
        "esnext.iterator.for-each",
        "esnext.iterator.from",
        "esnext.iterator.map",
        "esnext.iterator.reduce",
        "esnext.iterator.some",
        "esnext.iterator.take",
        "esnext.iterator.to-array",
        "esnext.iterator.to-async"
    ],
        "core-js/proposals/iterator-helpers-stage-3-2": [
        "esnext.iterator.constructor",
        "esnext.iterator.drop",
        "esnext.iterator.every",
        "esnext.iterator.filter",
        "esnext.iterator.find",
        "esnext.iterator.flat-map",
        "esnext.iterator.for-each",
        "esnext.iterator.from",
        "esnext.iterator.map",
        "esnext.iterator.reduce",
        "esnext.iterator.some",
        "esnext.iterator.take",
        "esnext.iterator.to-array"
    ],
        "core-js/proposals/iterator-range": [
        "esnext.iterator.constructor",
        "esnext.iterator.range"
    ],
        "core-js/proposals/json-parse-with-source": [
        "esnext.json.is-raw-json",
        "esnext.json.parse",
        "esnext.json.raw-json"
    ],
        "core-js/proposals/keys-composition": [
        "esnext.composite-key",
        "esnext.composite-symbol"
    ],
        "core-js/proposals/map-update-or-insert": [
        "esnext.map.emplace",
        "esnext.map.update-or-insert",
        "esnext.map.upsert",
        "esnext.weak-map.emplace",
        "esnext.weak-map.upsert"
    ],
        "core-js/proposals/map-upsert": [
        "esnext.map.emplace",
        "esnext.map.update-or-insert",
        "esnext.map.upsert",
        "esnext.weak-map.emplace",
        "esnext.weak-map.upsert"
    ],
        "core-js/proposals/map-upsert-stage-2": [
        "esnext.map.emplace",
        "esnext.weak-map.emplace"
    ],
        "core-js/proposals/math-extensions": [
        "esnext.math.clamp",
        "esnext.math.deg-per-rad",
        "esnext.math.degrees",
        "esnext.math.fscale",
        "esnext.math.rad-per-deg",
        "esnext.math.radians",
        "esnext.math.scale"
    ],
        "core-js/proposals/math-signbit": [
        "esnext.math.signbit"
    ],
        "core-js/proposals/number-from-string": [
        "esnext.number.from-string"
    ],
        "core-js/proposals/number-range": [
        "esnext.bigint.range",
        "esnext.number.range"
    ],
        "core-js/proposals/object-from-entries": [
        "es.object.from-entries"
    ],
        "core-js/proposals/object-getownpropertydescriptors": [
        "es.object.get-own-property-descriptors"
    ],
        "core-js/proposals/object-iteration": [
        "esnext.object.iterate-entries",
        "esnext.object.iterate-keys",
        "esnext.object.iterate-values"
    ],
        "core-js/proposals/object-values-entries": [
        "es.object.entries",
        "es.object.values"
    ],
        "core-js/proposals/observable": [
        "esnext.observable",
        "esnext.symbol.observable"
    ],
        "core-js/proposals/pattern-matching": [
        "esnext.symbol.matcher",
        "esnext.symbol.pattern-match"
    ],
        "core-js/proposals/promise-all-settled": [
        "esnext.promise.all-settled"
    ],
        "core-js/proposals/promise-any": [
        "esnext.aggregate-error",
        "esnext.promise.any"
    ],
        "core-js/proposals/promise-finally": [
        "es.promise.finally"
    ],
        "core-js/proposals/promise-try": [
        "esnext.promise.try"
    ],
        "core-js/proposals/reflect-metadata": [
        "esnext.reflect.define-metadata",
        "esnext.reflect.delete-metadata",
        "esnext.reflect.get-metadata",
        "esnext.reflect.get-metadata-keys",
        "esnext.reflect.get-own-metadata",
        "esnext.reflect.get-own-metadata-keys",
        "esnext.reflect.has-metadata",
        "esnext.reflect.has-own-metadata",
        "esnext.reflect.metadata"
    ],
        "core-js/proposals/regexp-dotall-flag": [
        "es.regexp.constructor",
        "es.regexp.dot-all",
        "es.regexp.exec",
        "es.regexp.flags"
    ],
        "core-js/proposals/regexp-named-groups": [
        "es.regexp.constructor",
        "es.regexp.exec",
        "es.string.replace"
    ],
        "core-js/proposals/relative-indexing-method": [
        "es.string.at-alternative",
        "esnext.array.at",
        "esnext.typed-array.at"
    ],
        "core-js/proposals/seeded-random": [
        "esnext.math.seeded-prng"
    ],
        "core-js/proposals/set-methods": [
        "esnext.set.difference.v2",
        "esnext.set.difference",
        "esnext.set.intersection.v2",
        "esnext.set.intersection",
        "esnext.set.is-disjoint-from.v2",
        "esnext.set.is-disjoint-from",
        "esnext.set.is-subset-of.v2",
        "esnext.set.is-subset-of",
        "esnext.set.is-superset-of.v2",
        "esnext.set.is-superset-of",
        "esnext.set.symmetric-difference.v2",
        "esnext.set.symmetric-difference",
        "esnext.set.union.v2",
        "esnext.set.union"
    ],
        "core-js/proposals/set-methods-v2": [
        "esnext.set.difference.v2",
        "esnext.set.intersection.v2",
        "esnext.set.is-disjoint-from.v2",
        "esnext.set.is-subset-of.v2",
        "esnext.set.is-superset-of.v2",
        "esnext.set.symmetric-difference.v2",
        "esnext.set.union.v2"
    ],
        "core-js/proposals/string-at": [
        "esnext.string.at"
    ],
        "core-js/proposals/string-code-points": [
        "esnext.string.code-points"
    ],
        "core-js/proposals/string-cooked": [
        "esnext.string.cooked"
    ],
        "core-js/proposals/string-dedent": [
        "esnext.string.dedent"
    ],
        "core-js/proposals/string-left-right-trim": [
        "es.string.trim-end",
        "es.string.trim-start"
    ],
        "core-js/proposals/string-match-all": [
        "esnext.string.match-all"
    ],
        "core-js/proposals/string-padding": [
        "es.string.pad-end",
        "es.string.pad-start"
    ],
        "core-js/proposals/string-replace-all": [
        "esnext.string.replace-all",
        "esnext.symbol.replace-all"
    ],
        "core-js/proposals/string-replace-all-stage-4": [
        "esnext.string.replace-all"
    ],
        "core-js/proposals/symbol-description": [
        "es.symbol.description"
    ],
        "core-js/proposals/symbol-predicates": [
        "esnext.symbol.is-registered",
        "esnext.symbol.is-well-known"
    ],
        "core-js/proposals/url": [
        "web.url",
        "web.url.to-json",
        "web.url-search-params",
        "web.url-search-params.size"
    ],
        "core-js/proposals/using-statement": [
        "esnext.symbol.async-dispose",
        "esnext.symbol.dispose"
    ],
        "core-js/proposals/well-formed-stringify": [
        "es.json.stringify"
    ],
        "core-js/proposals/well-formed-unicode-strings": [
        "esnext.string.is-well-formed",
        "esnext.string.to-well-formed"
    ],
        "core-js/stable": [
        "es.symbol",
        "es.symbol.description",
        "es.symbol.async-iterator",
        "es.symbol.has-instance",
        "es.symbol.is-concat-spreadable",
        "es.symbol.iterator",
        "es.symbol.match",
        "es.symbol.match-all",
        "es.symbol.replace",
        "es.symbol.search",
        "es.symbol.species",
        "es.symbol.split",
        "es.symbol.to-primitive",
        "es.symbol.to-string-tag",
        "es.symbol.unscopables",
        "es.error.cause",
        "es.error.to-string",
        "es.aggregate-error",
        "es.aggregate-error.cause",
        "es.array.at",
        "es.array.concat",
        "es.array.copy-within",
        "es.array.every",
        "es.array.fill",
        "es.array.filter",
        "es.array.find",
        "es.array.find-index",
        "es.array.find-last",
        "es.array.find-last-index",
        "es.array.flat",
        "es.array.flat-map",
        "es.array.for-each",
        "es.array.from",
        "es.array.includes",
        "es.array.index-of",
        "es.array.is-array",
        "es.array.iterator",
        "es.array.join",
        "es.array.last-index-of",
        "es.array.map",
        "es.array.of",
        "es.array.push",
        "es.array.reduce",
        "es.array.reduce-right",
        "es.array.reverse",
        "es.array.slice",
        "es.array.some",
        "es.array.sort",
        "es.array.species",
        "es.array.splice",
        "es.array.to-reversed",
        "es.array.to-sorted",
        "es.array.to-spliced",
        "es.array.unscopables.flat",
        "es.array.unscopables.flat-map",
        "es.array.unshift",
        "es.array.with",
        "es.array-buffer.constructor",
        "es.array-buffer.is-view",
        "es.array-buffer.slice",
        "es.data-view",
        "es.date.get-year",
        "es.date.now",
        "es.date.set-year",
        "es.date.to-gmt-string",
        "es.date.to-iso-string",
        "es.date.to-json",
        "es.date.to-primitive",
        "es.date.to-string",
        "es.escape",
        "es.function.bind",
        "es.function.has-instance",
        "es.function.name",
        "es.global-this",
        "es.json.stringify",
        "es.json.to-string-tag",
        "es.map",
        "es.math.acosh",
        "es.math.asinh",
        "es.math.atanh",
        "es.math.cbrt",
        "es.math.clz32",
        "es.math.cosh",
        "es.math.expm1",
        "es.math.fround",
        "es.math.hypot",
        "es.math.imul",
        "es.math.log10",
        "es.math.log1p",
        "es.math.log2",
        "es.math.sign",
        "es.math.sinh",
        "es.math.tanh",
        "es.math.to-string-tag",
        "es.math.trunc",
        "es.number.constructor",
        "es.number.epsilon",
        "es.number.is-finite",
        "es.number.is-integer",
        "es.number.is-nan",
        "es.number.is-safe-integer",
        "es.number.max-safe-integer",
        "es.number.min-safe-integer",
        "es.number.parse-float",
        "es.number.parse-int",
        "es.number.to-exponential",
        "es.number.to-fixed",
        "es.number.to-precision",
        "es.object.assign",
        "es.object.create",
        "es.object.define-getter",
        "es.object.define-properties",
        "es.object.define-property",
        "es.object.define-setter",
        "es.object.entries",
        "es.object.freeze",
        "es.object.from-entries",
        "es.object.get-own-property-descriptor",
        "es.object.get-own-property-descriptors",
        "es.object.get-own-property-names",
        "es.object.get-prototype-of",
        "es.object.has-own",
        "es.object.is",
        "es.object.is-extensible",
        "es.object.is-frozen",
        "es.object.is-sealed",
        "es.object.keys",
        "es.object.lookup-getter",
        "es.object.lookup-setter",
        "es.object.prevent-extensions",
        "es.object.proto",
        "es.object.seal",
        "es.object.set-prototype-of",
        "es.object.to-string",
        "es.object.values",
        "es.parse-float",
        "es.parse-int",
        "es.promise",
        "es.promise.all-settled",
        "es.promise.any",
        "es.promise.finally",
        "es.reflect.apply",
        "es.reflect.construct",
        "es.reflect.define-property",
        "es.reflect.delete-property",
        "es.reflect.get",
        "es.reflect.get-own-property-descriptor",
        "es.reflect.get-prototype-of",
        "es.reflect.has",
        "es.reflect.is-extensible",
        "es.reflect.own-keys",
        "es.reflect.prevent-extensions",
        "es.reflect.set",
        "es.reflect.set-prototype-of",
        "es.reflect.to-string-tag",
        "es.regexp.constructor",
        "es.regexp.dot-all",
        "es.regexp.exec",
        "es.regexp.flags",
        "es.regexp.sticky",
        "es.regexp.test",
        "es.regexp.to-string",
        "es.set",
        "es.string.at-alternative",
        "es.string.code-point-at",
        "es.string.ends-with",
        "es.string.from-code-point",
        "es.string.includes",
        "es.string.iterator",
        "es.string.match",
        "es.string.match-all",
        "es.string.pad-end",
        "es.string.pad-start",
        "es.string.raw",
        "es.string.repeat",
        "es.string.replace",
        "es.string.replace-all",
        "es.string.search",
        "es.string.split",
        "es.string.starts-with",
        "es.string.substr",
        "es.string.trim",
        "es.string.trim-end",
        "es.string.trim-start",
        "es.string.anchor",
        "es.string.big",
        "es.string.blink",
        "es.string.bold",
        "es.string.fixed",
        "es.string.fontcolor",
        "es.string.fontsize",
        "es.string.italics",
        "es.string.link",
        "es.string.small",
        "es.string.strike",
        "es.string.sub",
        "es.string.sup",
        "es.typed-array.float32-array",
        "es.typed-array.float64-array",
        "es.typed-array.int8-array",
        "es.typed-array.int16-array",
        "es.typed-array.int32-array",
        "es.typed-array.uint8-array",
        "es.typed-array.uint8-clamped-array",
        "es.typed-array.uint16-array",
        "es.typed-array.uint32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with",
        "es.unescape",
        "es.weak-map",
        "es.weak-set",
        "web.atob",
        "web.btoa",
        "web.dom-collections.for-each",
        "web.dom-collections.iterator",
        "web.dom-exception.constructor",
        "web.dom-exception.stack",
        "web.dom-exception.to-string-tag",
        "web.immediate",
        "web.queue-microtask",
        "web.self",
        "web.structured-clone",
        "web.timers",
        "web.url",
        "web.url.to-json",
        "web.url-search-params",
        "web.url-search-params.size"
    ],
        "core-js/stable/aggregate-error": [
        "es.error.cause",
        "es.aggregate-error",
        "es.aggregate-error.cause",
        "es.array.iterator",
        "es.string.iterator",
        "esnext.aggregate-error",
        "web.dom-collections.iterator"
    ],
        "core-js/stable/array": [
        "es.array.at",
        "es.array.concat",
        "es.array.copy-within",
        "es.array.every",
        "es.array.fill",
        "es.array.filter",
        "es.array.find",
        "es.array.find-index",
        "es.array.find-last",
        "es.array.find-last-index",
        "es.array.flat",
        "es.array.flat-map",
        "es.array.for-each",
        "es.array.from",
        "es.array.includes",
        "es.array.index-of",
        "es.array.is-array",
        "es.array.iterator",
        "es.array.join",
        "es.array.last-index-of",
        "es.array.map",
        "es.array.of",
        "es.array.push",
        "es.array.reduce",
        "es.array.reduce-right",
        "es.array.reverse",
        "es.array.slice",
        "es.array.some",
        "es.array.sort",
        "es.array.species",
        "es.array.splice",
        "es.array.to-reversed",
        "es.array.to-sorted",
        "es.array.to-spliced",
        "es.array.unscopables.flat",
        "es.array.unscopables.flat-map",
        "es.array.unshift",
        "es.array.with",
        "es.object.to-string",
        "es.string.iterator"
    ],
        "core-js/stable/array-buffer": [
        "es.array-buffer.constructor",
        "es.array-buffer.is-view",
        "es.array-buffer.slice",
        "es.object.to-string"
    ],
        "core-js/stable/array-buffer/constructor": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string"
    ],
        "core-js/stable/array-buffer/is-view": [
        "es.array-buffer.is-view"
    ],
        "core-js/stable/array-buffer/slice": [
        "es.array-buffer.slice"
    ],
        "core-js/stable/array/at": [
        "es.array.at"
    ],
        "core-js/stable/array/concat": [
        "es.array.concat"
    ],
        "core-js/stable/array/copy-within": [
        "es.array.copy-within"
    ],
        "core-js/stable/array/entries": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/stable/array/every": [
        "es.array.every"
    ],
        "core-js/stable/array/fill": [
        "es.array.fill"
    ],
        "core-js/stable/array/filter": [
        "es.array.filter"
    ],
        "core-js/stable/array/find": [
        "es.array.find"
    ],
        "core-js/stable/array/find-index": [
        "es.array.find-index"
    ],
        "core-js/stable/array/find-last": [
        "es.array.find-last"
    ],
        "core-js/stable/array/find-last-index": [
        "es.array.find-last-index"
    ],
        "core-js/stable/array/flat": [
        "es.array.flat",
        "es.array.unscopables.flat"
    ],
        "core-js/stable/array/flat-map": [
        "es.array.flat-map",
        "es.array.unscopables.flat-map"
    ],
        "core-js/stable/array/for-each": [
        "es.array.for-each"
    ],
        "core-js/stable/array/from": [
        "es.array.from",
        "es.string.iterator"
    ],
        "core-js/stable/array/includes": [
        "es.array.includes"
    ],
        "core-js/stable/array/index-of": [
        "es.array.index-of"
    ],
        "core-js/stable/array/is-array": [
        "es.array.is-array"
    ],
        "core-js/stable/array/iterator": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/stable/array/join": [
        "es.array.join"
    ],
        "core-js/stable/array/keys": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/stable/array/last-index-of": [
        "es.array.last-index-of"
    ],
        "core-js/stable/array/map": [
        "es.array.map"
    ],
        "core-js/stable/array/of": [
        "es.array.of"
    ],
        "core-js/stable/array/push": [
        "es.array.push"
    ],
        "core-js/stable/array/reduce": [
        "es.array.reduce"
    ],
        "core-js/stable/array/reduce-right": [
        "es.array.reduce-right"
    ],
        "core-js/stable/array/reverse": [
        "es.array.reverse"
    ],
        "core-js/stable/array/slice": [
        "es.array.slice"
    ],
        "core-js/stable/array/some": [
        "es.array.some"
    ],
        "core-js/stable/array/sort": [
        "es.array.sort"
    ],
        "core-js/stable/array/splice": [
        "es.array.splice"
    ],
        "core-js/stable/array/to-reversed": [
        "es.array.to-reversed"
    ],
        "core-js/stable/array/to-sorted": [
        "es.array.sort",
        "es.array.to-sorted"
    ],
        "core-js/stable/array/to-spliced": [
        "es.array.to-spliced"
    ],
        "core-js/stable/array/unshift": [
        "es.array.unshift"
    ],
        "core-js/stable/array/values": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/stable/array/virtual": [
        "es.array.at",
        "es.array.concat",
        "es.array.copy-within",
        "es.array.every",
        "es.array.fill",
        "es.array.filter",
        "es.array.find",
        "es.array.find-index",
        "es.array.find-last",
        "es.array.find-last-index",
        "es.array.flat",
        "es.array.flat-map",
        "es.array.for-each",
        "es.array.includes",
        "es.array.index-of",
        "es.array.iterator",
        "es.array.join",
        "es.array.last-index-of",
        "es.array.map",
        "es.array.push",
        "es.array.reduce",
        "es.array.reduce-right",
        "es.array.reverse",
        "es.array.slice",
        "es.array.some",
        "es.array.sort",
        "es.array.species",
        "es.array.splice",
        "es.array.to-reversed",
        "es.array.to-sorted",
        "es.array.to-spliced",
        "es.array.unscopables.flat",
        "es.array.unscopables.flat-map",
        "es.array.unshift",
        "es.array.with",
        "es.object.to-string"
    ],
        "core-js/stable/array/virtual/at": [
        "es.array.at"
    ],
        "core-js/stable/array/virtual/concat": [
        "es.array.concat"
    ],
        "core-js/stable/array/virtual/copy-within": [
        "es.array.copy-within"
    ],
        "core-js/stable/array/virtual/entries": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/stable/array/virtual/every": [
        "es.array.every"
    ],
        "core-js/stable/array/virtual/fill": [
        "es.array.fill"
    ],
        "core-js/stable/array/virtual/filter": [
        "es.array.filter"
    ],
        "core-js/stable/array/virtual/find": [
        "es.array.find"
    ],
        "core-js/stable/array/virtual/find-index": [
        "es.array.find-index"
    ],
        "core-js/stable/array/virtual/find-last": [
        "es.array.find-last"
    ],
        "core-js/stable/array/virtual/find-last-index": [
        "es.array.find-last-index"
    ],
        "core-js/stable/array/virtual/flat": [
        "es.array.flat",
        "es.array.unscopables.flat"
    ],
        "core-js/stable/array/virtual/flat-map": [
        "es.array.flat-map",
        "es.array.unscopables.flat-map"
    ],
        "core-js/stable/array/virtual/for-each": [
        "es.array.for-each"
    ],
        "core-js/stable/array/virtual/includes": [
        "es.array.includes"
    ],
        "core-js/stable/array/virtual/index-of": [
        "es.array.index-of"
    ],
        "core-js/stable/array/virtual/iterator": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/stable/array/virtual/join": [
        "es.array.join"
    ],
        "core-js/stable/array/virtual/keys": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/stable/array/virtual/last-index-of": [
        "es.array.last-index-of"
    ],
        "core-js/stable/array/virtual/map": [
        "es.array.map"
    ],
        "core-js/stable/array/virtual/push": [
        "es.array.push"
    ],
        "core-js/stable/array/virtual/reduce": [
        "es.array.reduce"
    ],
        "core-js/stable/array/virtual/reduce-right": [
        "es.array.reduce-right"
    ],
        "core-js/stable/array/virtual/reverse": [
        "es.array.reverse"
    ],
        "core-js/stable/array/virtual/slice": [
        "es.array.slice"
    ],
        "core-js/stable/array/virtual/some": [
        "es.array.some"
    ],
        "core-js/stable/array/virtual/sort": [
        "es.array.sort"
    ],
        "core-js/stable/array/virtual/splice": [
        "es.array.splice"
    ],
        "core-js/stable/array/virtual/to-reversed": [
        "es.array.to-reversed"
    ],
        "core-js/stable/array/virtual/to-sorted": [
        "es.array.sort",
        "es.array.to-sorted"
    ],
        "core-js/stable/array/virtual/to-spliced": [
        "es.array.to-spliced"
    ],
        "core-js/stable/array/virtual/unshift": [
        "es.array.unshift"
    ],
        "core-js/stable/array/virtual/values": [
        "es.array.iterator",
        "es.object.to-string"
    ],
        "core-js/stable/array/virtual/with": [
        "es.array.with"
    ],
        "core-js/stable/array/with": [
        "es.array.with"
    ],
        "core-js/stable/atob": [
        "es.error.to-string",
        "es.object.to-string",
        "web.atob",
        "web.dom-exception.constructor",
        "web.dom-exception.stack",
        "web.dom-exception.to-string-tag"
    ],
        "core-js/stable/btoa": [
        "es.error.to-string",
        "es.object.to-string",
        "web.btoa",
        "web.dom-exception.constructor",
        "web.dom-exception.stack",
        "web.dom-exception.to-string-tag"
    ],
        "core-js/stable/clear-immediate": [
        "web.immediate"
    ],
        "core-js/stable/data-view": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.data-view",
        "es.object.to-string"
    ],
        "core-js/stable/date": [
        "es.date.get-year",
        "es.date.now",
        "es.date.set-year",
        "es.date.to-gmt-string",
        "es.date.to-iso-string",
        "es.date.to-json",
        "es.date.to-primitive",
        "es.date.to-string"
    ],
        "core-js/stable/date/get-year": [
        "es.date.get-year"
    ],
        "core-js/stable/date/now": [
        "es.date.now"
    ],
        "core-js/stable/date/set-year": [
        "es.date.set-year"
    ],
        "core-js/stable/date/to-gmt-string": [
        "es.date.to-gmt-string"
    ],
        "core-js/stable/date/to-iso-string": [
        "es.date.to-iso-string",
        "es.date.to-json"
    ],
        "core-js/stable/date/to-json": [
        "es.date.to-json"
    ],
        "core-js/stable/date/to-primitive": [
        "es.date.to-primitive"
    ],
        "core-js/stable/date/to-string": [
        "es.date.to-string"
    ],
        "core-js/stable/dom-collections": [
        "es.array.iterator",
        "es.object.to-string",
        "web.dom-collections.for-each",
        "web.dom-collections.iterator"
    ],
        "core-js/stable/dom-collections/for-each": [
        "web.dom-collections.for-each"
    ],
        "core-js/stable/dom-collections/iterator": [
        "es.object.to-string",
        "web.dom-collections.iterator"
    ],
        "core-js/stable/dom-exception": [
        "es.error.to-string",
        "web.dom-exception.constructor",
        "web.dom-exception.stack",
        "web.dom-exception.to-string-tag"
    ],
        "core-js/stable/dom-exception/constructor": [
        "es.error.to-string",
        "web.dom-exception.constructor",
        "web.dom-exception.stack"
    ],
        "core-js/stable/dom-exception/to-string-tag": [
        "web.dom-exception.to-string-tag"
    ],
        "core-js/stable/error": [
        "es.error.cause",
        "es.error.to-string"
    ],
        "core-js/stable/error/constructor": [
        "es.error.cause"
    ],
        "core-js/stable/error/to-string": [
        "es.error.to-string"
    ],
        "core-js/stable/escape": [
        "es.escape"
    ],
        "core-js/stable/function": [
        "es.function.bind",
        "es.function.has-instance",
        "es.function.name"
    ],
        "core-js/stable/function/bind": [
        "es.function.bind"
    ],
        "core-js/stable/function/has-instance": [
        "es.function.has-instance"
    ],
        "core-js/stable/function/name": [
        "es.function.name"
    ],
        "core-js/stable/function/virtual": [
        "es.function.bind"
    ],
        "core-js/stable/function/virtual/bind": [
        "es.function.bind"
    ],
        "core-js/stable/get-iterator": [
        "es.array.iterator",
        "es.string.iterator",
        "web.dom-collections.iterator"
    ],
        "core-js/stable/get-iterator-method": [
        "es.array.iterator",
        "es.string.iterator",
        "web.dom-collections.iterator"
    ],
        "core-js/stable/global-this": [
        "es.global-this"
    ],
        "core-js/stable/instance/at": [
        "es.array.at",
        "es.string.at-alternative"
    ],
        "core-js/stable/instance/bind": [
        "es.function.bind"
    ],
        "core-js/stable/instance/code-point-at": [
        "es.string.code-point-at"
    ],
        "core-js/stable/instance/concat": [
        "es.array.concat"
    ],
        "core-js/stable/instance/copy-within": [
        "es.array.copy-within"
    ],
        "core-js/stable/instance/ends-with": [
        "es.string.ends-with"
    ],
        "core-js/stable/instance/entries": [
        "es.array.iterator",
        "es.object.to-string",
        "web.dom-collections.iterator"
    ],
        "core-js/stable/instance/every": [
        "es.array.every"
    ],
        "core-js/stable/instance/fill": [
        "es.array.fill"
    ],
        "core-js/stable/instance/filter": [
        "es.array.filter"
    ],
        "core-js/stable/instance/find": [
        "es.array.find"
    ],
        "core-js/stable/instance/find-index": [
        "es.array.find-index"
    ],
        "core-js/stable/instance/find-last": [
        "es.array.find-last"
    ],
        "core-js/stable/instance/find-last-index": [
        "es.array.find-last-index"
    ],
        "core-js/stable/instance/flags": [
        "es.regexp.flags"
    ],
        "core-js/stable/instance/flat": [
        "es.array.flat",
        "es.array.unscopables.flat"
    ],
        "core-js/stable/instance/flat-map": [
        "es.array.flat-map",
        "es.array.unscopables.flat-map"
    ],
        "core-js/stable/instance/for-each": [
        "es.array.for-each",
        "web.dom-collections.iterator"
    ],
        "core-js/stable/instance/includes": [
        "es.array.includes",
        "es.string.includes"
    ],
        "core-js/stable/instance/index-of": [
        "es.array.index-of"
    ],
        "core-js/stable/instance/keys": [
        "es.array.iterator",
        "es.object.to-string",
        "web.dom-collections.iterator"
    ],
        "core-js/stable/instance/last-index-of": [
        "es.array.last-index-of"
    ],
        "core-js/stable/instance/map": [
        "es.array.map"
    ],
        "core-js/stable/instance/match-all": [
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.match-all"
    ],
        "core-js/stable/instance/pad-end": [
        "es.string.pad-end"
    ],
        "core-js/stable/instance/pad-start": [
        "es.string.pad-start"
    ],
        "core-js/stable/instance/push": [
        "es.array.push"
    ],
        "core-js/stable/instance/reduce": [
        "es.array.reduce"
    ],
        "core-js/stable/instance/reduce-right": [
        "es.array.reduce-right"
    ],
        "core-js/stable/instance/repeat": [
        "es.string.repeat"
    ],
        "core-js/stable/instance/replace-all": [
        "es.regexp.exec",
        "es.string.replace",
        "es.string.replace-all"
    ],
        "core-js/stable/instance/reverse": [
        "es.array.reverse"
    ],
        "core-js/stable/instance/slice": [
        "es.array.slice"
    ],
        "core-js/stable/instance/some": [
        "es.array.some"
    ],
        "core-js/stable/instance/sort": [
        "es.array.sort"
    ],
        "core-js/stable/instance/splice": [
        "es.array.splice"
    ],
        "core-js/stable/instance/starts-with": [
        "es.string.starts-with"
    ],
        "core-js/stable/instance/to-reversed": [
        "es.array.to-reversed"
    ],
        "core-js/stable/instance/to-sorted": [
        "es.array.sort",
        "es.array.to-sorted"
    ],
        "core-js/stable/instance/to-spliced": [
        "es.array.to-spliced"
    ],
        "core-js/stable/instance/trim": [
        "es.string.trim"
    ],
        "core-js/stable/instance/trim-end": [
        "es.string.trim-end"
    ],
        "core-js/stable/instance/trim-left": [
        "es.string.trim-start"
    ],
        "core-js/stable/instance/trim-right": [
        "es.string.trim-end"
    ],
        "core-js/stable/instance/trim-start": [
        "es.string.trim-start"
    ],
        "core-js/stable/instance/unshift": [
        "es.array.unshift"
    ],
        "core-js/stable/instance/values": [
        "es.array.iterator",
        "es.object.to-string",
        "web.dom-collections.iterator"
    ],
        "core-js/stable/instance/with": [
        "es.array.with"
    ],
        "core-js/stable/is-iterable": [
        "es.array.iterator",
        "es.string.iterator",
        "web.dom-collections.iterator"
    ],
        "core-js/stable/json": [
        "es.json.stringify",
        "es.json.to-string-tag"
    ],
        "core-js/stable/json/stringify": [
        "es.json.stringify"
    ],
        "core-js/stable/json/to-string-tag": [
        "es.json.to-string-tag"
    ],
        "core-js/stable/map": [
        "es.array.iterator",
        "es.map",
        "es.object.to-string",
        "es.string.iterator",
        "web.dom-collections.iterator"
    ],
        "core-js/stable/math": [
        "es.math.acosh",
        "es.math.asinh",
        "es.math.atanh",
        "es.math.cbrt",
        "es.math.clz32",
        "es.math.cosh",
        "es.math.expm1",
        "es.math.fround",
        "es.math.hypot",
        "es.math.imul",
        "es.math.log10",
        "es.math.log1p",
        "es.math.log2",
        "es.math.sign",
        "es.math.sinh",
        "es.math.tanh",
        "es.math.to-string-tag",
        "es.math.trunc"
    ],
        "core-js/stable/math/acosh": [
        "es.math.acosh"
    ],
        "core-js/stable/math/asinh": [
        "es.math.asinh"
    ],
        "core-js/stable/math/atanh": [
        "es.math.atanh"
    ],
        "core-js/stable/math/cbrt": [
        "es.math.cbrt"
    ],
        "core-js/stable/math/clz32": [
        "es.math.clz32"
    ],
        "core-js/stable/math/cosh": [
        "es.math.cosh"
    ],
        "core-js/stable/math/expm1": [
        "es.math.expm1"
    ],
        "core-js/stable/math/fround": [
        "es.math.fround"
    ],
        "core-js/stable/math/hypot": [
        "es.math.hypot"
    ],
        "core-js/stable/math/imul": [
        "es.math.imul"
    ],
        "core-js/stable/math/log10": [
        "es.math.log10"
    ],
        "core-js/stable/math/log1p": [
        "es.math.log1p"
    ],
        "core-js/stable/math/log2": [
        "es.math.log2"
    ],
        "core-js/stable/math/sign": [
        "es.math.sign"
    ],
        "core-js/stable/math/sinh": [
        "es.math.sinh"
    ],
        "core-js/stable/math/tanh": [
        "es.math.tanh"
    ],
        "core-js/stable/math/to-string-tag": [
        "es.math.to-string-tag"
    ],
        "core-js/stable/math/trunc": [
        "es.math.trunc"
    ],
        "core-js/stable/number": [
        "es.number.constructor",
        "es.number.epsilon",
        "es.number.is-finite",
        "es.number.is-integer",
        "es.number.is-nan",
        "es.number.is-safe-integer",
        "es.number.max-safe-integer",
        "es.number.min-safe-integer",
        "es.number.parse-float",
        "es.number.parse-int",
        "es.number.to-exponential",
        "es.number.to-fixed",
        "es.number.to-precision"
    ],
        "core-js/stable/number/constructor": [
        "es.number.constructor"
    ],
        "core-js/stable/number/epsilon": [
        "es.number.epsilon"
    ],
        "core-js/stable/number/is-finite": [
        "es.number.is-finite"
    ],
        "core-js/stable/number/is-integer": [
        "es.number.is-integer"
    ],
        "core-js/stable/number/is-nan": [
        "es.number.is-nan"
    ],
        "core-js/stable/number/is-safe-integer": [
        "es.number.is-safe-integer"
    ],
        "core-js/stable/number/max-safe-integer": [
        "es.number.max-safe-integer"
    ],
        "core-js/stable/number/min-safe-integer": [
        "es.number.min-safe-integer"
    ],
        "core-js/stable/number/parse-float": [
        "es.number.parse-float"
    ],
        "core-js/stable/number/parse-int": [
        "es.number.parse-int"
    ],
        "core-js/stable/number/to-exponential": [
        "es.number.to-exponential"
    ],
        "core-js/stable/number/to-fixed": [
        "es.number.to-fixed"
    ],
        "core-js/stable/number/to-precision": [
        "es.number.to-precision"
    ],
        "core-js/stable/number/virtual": [
        "es.number.to-exponential",
        "es.number.to-fixed",
        "es.number.to-precision"
    ],
        "core-js/stable/number/virtual/to-exponential": [
        "es.number.to-exponential"
    ],
        "core-js/stable/number/virtual/to-fixed": [
        "es.number.to-fixed"
    ],
        "core-js/stable/number/virtual/to-precision": [
        "es.number.to-precision"
    ],
        "core-js/stable/object": [
        "es.symbol",
        "es.json.to-string-tag",
        "es.math.to-string-tag",
        "es.object.assign",
        "es.object.create",
        "es.object.define-getter",
        "es.object.define-properties",
        "es.object.define-property",
        "es.object.define-setter",
        "es.object.entries",
        "es.object.freeze",
        "es.object.from-entries",
        "es.object.get-own-property-descriptor",
        "es.object.get-own-property-descriptors",
        "es.object.get-own-property-names",
        "es.object.get-prototype-of",
        "es.object.has-own",
        "es.object.is",
        "es.object.is-extensible",
        "es.object.is-frozen",
        "es.object.is-sealed",
        "es.object.keys",
        "es.object.lookup-getter",
        "es.object.lookup-setter",
        "es.object.prevent-extensions",
        "es.object.proto",
        "es.object.seal",
        "es.object.set-prototype-of",
        "es.object.to-string",
        "es.object.values",
        "es.reflect.to-string-tag",
        "web.dom-collections.iterator"
    ],
        "core-js/stable/object/assign": [
        "es.object.assign"
    ],
        "core-js/stable/object/create": [
        "es.object.create"
    ],
        "core-js/stable/object/define-getter": [
        "es.object.define-getter"
    ],
        "core-js/stable/object/define-properties": [
        "es.object.define-properties"
    ],
        "core-js/stable/object/define-property": [
        "es.object.define-property"
    ],
        "core-js/stable/object/define-setter": [
        "es.object.define-setter"
    ],
        "core-js/stable/object/entries": [
        "es.object.entries"
    ],
        "core-js/stable/object/freeze": [
        "es.object.freeze"
    ],
        "core-js/stable/object/from-entries": [
        "es.array.iterator",
        "es.object.from-entries",
        "web.dom-collections.iterator"
    ],
        "core-js/stable/object/get-own-property-descriptor": [
        "es.object.get-own-property-descriptor"
    ],
        "core-js/stable/object/get-own-property-descriptors": [
        "es.object.get-own-property-descriptors"
    ],
        "core-js/stable/object/get-own-property-names": [
        "es.object.get-own-property-names"
    ],
        "core-js/stable/object/get-own-property-symbols": [
        "es.symbol"
    ],
        "core-js/stable/object/get-prototype-of": [
        "es.object.get-prototype-of"
    ],
        "core-js/stable/object/has-own": [
        "es.object.has-own"
    ],
        "core-js/stable/object/is": [
        "es.object.is"
    ],
        "core-js/stable/object/is-extensible": [
        "es.object.is-extensible"
    ],
        "core-js/stable/object/is-frozen": [
        "es.object.is-frozen"
    ],
        "core-js/stable/object/is-sealed": [
        "es.object.is-sealed"
    ],
        "core-js/stable/object/keys": [
        "es.object.keys"
    ],
        "core-js/stable/object/lookup-getter": [
        "es.object.lookup-getter"
    ],
        "core-js/stable/object/lookup-setter": [
        "es.object.lookup-setter"
    ],
        "core-js/stable/object/prevent-extensions": [
        "es.object.prevent-extensions"
    ],
        "core-js/stable/object/proto": [
        "es.object.proto"
    ],
        "core-js/stable/object/seal": [
        "es.object.seal"
    ],
        "core-js/stable/object/set-prototype-of": [
        "es.object.set-prototype-of"
    ],
        "core-js/stable/object/to-string": [
        "es.json.to-string-tag",
        "es.math.to-string-tag",
        "es.object.to-string",
        "es.reflect.to-string-tag"
    ],
        "core-js/stable/object/values": [
        "es.object.values"
    ],
        "core-js/stable/parse-float": [
        "es.parse-float"
    ],
        "core-js/stable/parse-int": [
        "es.parse-int"
    ],
        "core-js/stable/promise": [
        "es.aggregate-error",
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.promise.all-settled",
        "es.promise.any",
        "es.promise.finally",
        "es.string.iterator",
        "web.dom-collections.iterator"
    ],
        "core-js/stable/promise/all-settled": [
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.promise.all-settled",
        "es.string.iterator",
        "web.dom-collections.iterator"
    ],
        "core-js/stable/promise/any": [
        "es.aggregate-error",
        "es.array.iterator",
        "es.object.to-string",
        "es.promise",
        "es.promise.any",
        "es.string.iterator",
        "web.dom-collections.iterator"
    ],
        "core-js/stable/promise/finally": [
        "es.object.to-string",
        "es.promise",
        "es.promise.finally"
    ],
        "core-js/stable/queue-microtask": [
        "web.queue-microtask"
    ],
        "core-js/stable/reflect": [
        "es.object.to-string",
        "es.reflect.apply",
        "es.reflect.construct",
        "es.reflect.define-property",
        "es.reflect.delete-property",
        "es.reflect.get",
        "es.reflect.get-own-property-descriptor",
        "es.reflect.get-prototype-of",
        "es.reflect.has",
        "es.reflect.is-extensible",
        "es.reflect.own-keys",
        "es.reflect.prevent-extensions",
        "es.reflect.set",
        "es.reflect.set-prototype-of",
        "es.reflect.to-string-tag"
    ],
        "core-js/stable/reflect/apply": [
        "es.reflect.apply"
    ],
        "core-js/stable/reflect/construct": [
        "es.reflect.construct"
    ],
        "core-js/stable/reflect/define-property": [
        "es.reflect.define-property"
    ],
        "core-js/stable/reflect/delete-property": [
        "es.reflect.delete-property"
    ],
        "core-js/stable/reflect/get": [
        "es.reflect.get"
    ],
        "core-js/stable/reflect/get-own-property-descriptor": [
        "es.reflect.get-own-property-descriptor"
    ],
        "core-js/stable/reflect/get-prototype-of": [
        "es.reflect.get-prototype-of"
    ],
        "core-js/stable/reflect/has": [
        "es.reflect.has"
    ],
        "core-js/stable/reflect/is-extensible": [
        "es.reflect.is-extensible"
    ],
        "core-js/stable/reflect/own-keys": [
        "es.reflect.own-keys"
    ],
        "core-js/stable/reflect/prevent-extensions": [
        "es.reflect.prevent-extensions"
    ],
        "core-js/stable/reflect/set": [
        "es.reflect.set"
    ],
        "core-js/stable/reflect/set-prototype-of": [
        "es.reflect.set-prototype-of"
    ],
        "core-js/stable/reflect/to-string-tag": [
        "es.reflect.to-string-tag"
    ],
        "core-js/stable/regexp": [
        "es.regexp.constructor",
        "es.regexp.dot-all",
        "es.regexp.exec",
        "es.regexp.flags",
        "es.regexp.sticky",
        "es.regexp.test",
        "es.regexp.to-string",
        "es.string.match",
        "es.string.replace",
        "es.string.search",
        "es.string.split"
    ],
        "core-js/stable/regexp/constructor": [
        "es.regexp.constructor",
        "es.regexp.dot-all",
        "es.regexp.exec",
        "es.regexp.sticky"
    ],
        "core-js/stable/regexp/dot-all": [
        "es.regexp.constructor",
        "es.regexp.dot-all",
        "es.regexp.exec"
    ],
        "core-js/stable/regexp/flags": [
        "es.regexp.flags"
    ],
        "core-js/stable/regexp/match": [
        "es.regexp.exec",
        "es.string.match"
    ],
        "core-js/stable/regexp/replace": [
        "es.regexp.exec",
        "es.string.replace"
    ],
        "core-js/stable/regexp/search": [
        "es.regexp.exec",
        "es.string.search"
    ],
        "core-js/stable/regexp/split": [
        "es.regexp.exec",
        "es.string.split"
    ],
        "core-js/stable/regexp/sticky": [
        "es.regexp.constructor",
        "es.regexp.exec",
        "es.regexp.sticky"
    ],
        "core-js/stable/regexp/test": [
        "es.regexp.exec",
        "es.regexp.test"
    ],
        "core-js/stable/regexp/to-string": [
        "es.regexp.to-string"
    ],
        "core-js/stable/self": [
        "web.self"
    ],
        "core-js/stable/set": [
        "es.array.iterator",
        "es.object.to-string",
        "es.set",
        "es.string.iterator",
        "web.dom-collections.iterator"
    ],
        "core-js/stable/set-immediate": [
        "web.immediate"
    ],
        "core-js/stable/set-interval": [
        "web.timers"
    ],
        "core-js/stable/set-timeout": [
        "web.timers"
    ],
        "core-js/stable/string": [
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.at-alternative",
        "es.string.code-point-at",
        "es.string.ends-with",
        "es.string.from-code-point",
        "es.string.includes",
        "es.string.iterator",
        "es.string.match",
        "es.string.match-all",
        "es.string.pad-end",
        "es.string.pad-start",
        "es.string.raw",
        "es.string.repeat",
        "es.string.replace",
        "es.string.replace-all",
        "es.string.search",
        "es.string.split",
        "es.string.starts-with",
        "es.string.substr",
        "es.string.trim",
        "es.string.trim-end",
        "es.string.trim-start",
        "es.string.anchor",
        "es.string.big",
        "es.string.blink",
        "es.string.bold",
        "es.string.fixed",
        "es.string.fontcolor",
        "es.string.fontsize",
        "es.string.italics",
        "es.string.link",
        "es.string.small",
        "es.string.strike",
        "es.string.sub",
        "es.string.sup"
    ],
        "core-js/stable/string/anchor": [
        "es.string.anchor"
    ],
        "core-js/stable/string/at": [
        "es.string.at-alternative"
    ],
        "core-js/stable/string/big": [
        "es.string.big"
    ],
        "core-js/stable/string/blink": [
        "es.string.blink"
    ],
        "core-js/stable/string/bold": [
        "es.string.bold"
    ],
        "core-js/stable/string/code-point-at": [
        "es.string.code-point-at"
    ],
        "core-js/stable/string/ends-with": [
        "es.string.ends-with"
    ],
        "core-js/stable/string/fixed": [
        "es.string.fixed"
    ],
        "core-js/stable/string/fontcolor": [
        "es.string.fontcolor"
    ],
        "core-js/stable/string/fontsize": [
        "es.string.fontsize"
    ],
        "core-js/stable/string/from-code-point": [
        "es.string.from-code-point"
    ],
        "core-js/stable/string/includes": [
        "es.string.includes"
    ],
        "core-js/stable/string/italics": [
        "es.string.italics"
    ],
        "core-js/stable/string/iterator": [
        "es.object.to-string",
        "es.string.iterator"
    ],
        "core-js/stable/string/link": [
        "es.string.link"
    ],
        "core-js/stable/string/match": [
        "es.regexp.exec",
        "es.string.match"
    ],
        "core-js/stable/string/match-all": [
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.match-all"
    ],
        "core-js/stable/string/pad-end": [
        "es.string.pad-end"
    ],
        "core-js/stable/string/pad-start": [
        "es.string.pad-start"
    ],
        "core-js/stable/string/raw": [
        "es.string.raw"
    ],
        "core-js/stable/string/repeat": [
        "es.string.repeat"
    ],
        "core-js/stable/string/replace": [
        "es.regexp.exec",
        "es.string.replace"
    ],
        "core-js/stable/string/replace-all": [
        "es.regexp.exec",
        "es.string.replace",
        "es.string.replace-all"
    ],
        "core-js/stable/string/search": [
        "es.regexp.exec",
        "es.string.search"
    ],
        "core-js/stable/string/small": [
        "es.string.small"
    ],
        "core-js/stable/string/split": [
        "es.regexp.exec",
        "es.string.split"
    ],
        "core-js/stable/string/starts-with": [
        "es.string.starts-with"
    ],
        "core-js/stable/string/strike": [
        "es.string.strike"
    ],
        "core-js/stable/string/sub": [
        "es.string.sub"
    ],
        "core-js/stable/string/substr": [
        "es.string.substr"
    ],
        "core-js/stable/string/sup": [
        "es.string.sup"
    ],
        "core-js/stable/string/trim": [
        "es.string.trim"
    ],
        "core-js/stable/string/trim-end": [
        "es.string.trim-end"
    ],
        "core-js/stable/string/trim-left": [
        "es.string.trim-start"
    ],
        "core-js/stable/string/trim-right": [
        "es.string.trim-end"
    ],
        "core-js/stable/string/trim-start": [
        "es.string.trim-start"
    ],
        "core-js/stable/string/virtual": [
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.at-alternative",
        "es.string.code-point-at",
        "es.string.ends-with",
        "es.string.includes",
        "es.string.iterator",
        "es.string.match",
        "es.string.match-all",
        "es.string.pad-end",
        "es.string.pad-start",
        "es.string.repeat",
        "es.string.replace",
        "es.string.replace-all",
        "es.string.search",
        "es.string.split",
        "es.string.starts-with",
        "es.string.substr",
        "es.string.trim",
        "es.string.trim-end",
        "es.string.trim-start",
        "es.string.anchor",
        "es.string.big",
        "es.string.blink",
        "es.string.bold",
        "es.string.fixed",
        "es.string.fontcolor",
        "es.string.fontsize",
        "es.string.italics",
        "es.string.link",
        "es.string.small",
        "es.string.strike",
        "es.string.sub",
        "es.string.sup"
    ],
        "core-js/stable/string/virtual/anchor": [
        "es.string.anchor"
    ],
        "core-js/stable/string/virtual/at": [
        "es.string.at-alternative"
    ],
        "core-js/stable/string/virtual/big": [
        "es.string.big"
    ],
        "core-js/stable/string/virtual/blink": [
        "es.string.blink"
    ],
        "core-js/stable/string/virtual/bold": [
        "es.string.bold"
    ],
        "core-js/stable/string/virtual/code-point-at": [
        "es.string.code-point-at"
    ],
        "core-js/stable/string/virtual/ends-with": [
        "es.string.ends-with"
    ],
        "core-js/stable/string/virtual/fixed": [
        "es.string.fixed"
    ],
        "core-js/stable/string/virtual/fontcolor": [
        "es.string.fontcolor"
    ],
        "core-js/stable/string/virtual/fontsize": [
        "es.string.fontsize"
    ],
        "core-js/stable/string/virtual/includes": [
        "es.string.includes"
    ],
        "core-js/stable/string/virtual/italics": [
        "es.string.italics"
    ],
        "core-js/stable/string/virtual/iterator": [
        "es.object.to-string",
        "es.string.iterator"
    ],
        "core-js/stable/string/virtual/link": [
        "es.string.link"
    ],
        "core-js/stable/string/virtual/match-all": [
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.match-all"
    ],
        "core-js/stable/string/virtual/pad-end": [
        "es.string.pad-end"
    ],
        "core-js/stable/string/virtual/pad-start": [
        "es.string.pad-start"
    ],
        "core-js/stable/string/virtual/repeat": [
        "es.string.repeat"
    ],
        "core-js/stable/string/virtual/replace-all": [
        "es.regexp.exec",
        "es.string.replace",
        "es.string.replace-all"
    ],
        "core-js/stable/string/virtual/small": [
        "es.string.small"
    ],
        "core-js/stable/string/virtual/starts-with": [
        "es.string.starts-with"
    ],
        "core-js/stable/string/virtual/strike": [
        "es.string.strike"
    ],
        "core-js/stable/string/virtual/sub": [
        "es.string.sub"
    ],
        "core-js/stable/string/virtual/substr": [
        "es.string.substr"
    ],
        "core-js/stable/string/virtual/sup": [
        "es.string.sup"
    ],
        "core-js/stable/string/virtual/trim": [
        "es.string.trim"
    ],
        "core-js/stable/string/virtual/trim-end": [
        "es.string.trim-end"
    ],
        "core-js/stable/string/virtual/trim-left": [
        "es.string.trim-start"
    ],
        "core-js/stable/string/virtual/trim-right": [
        "es.string.trim-end"
    ],
        "core-js/stable/string/virtual/trim-start": [
        "es.string.trim-start"
    ],
        "core-js/stable/structured-clone": [
        "es.error.to-string",
        "es.array.iterator",
        "es.map",
        "es.object.keys",
        "es.object.to-string",
        "es.set",
        "web.dom-exception.constructor",
        "web.dom-exception.stack",
        "web.dom-exception.to-string-tag",
        "web.structured-clone"
    ],
        "core-js/stable/symbol": [
        "es.symbol",
        "es.symbol.description",
        "es.symbol.async-iterator",
        "es.symbol.has-instance",
        "es.symbol.is-concat-spreadable",
        "es.symbol.iterator",
        "es.symbol.match",
        "es.symbol.match-all",
        "es.symbol.replace",
        "es.symbol.search",
        "es.symbol.species",
        "es.symbol.split",
        "es.symbol.to-primitive",
        "es.symbol.to-string-tag",
        "es.symbol.unscopables",
        "es.array.concat",
        "es.json.to-string-tag",
        "es.math.to-string-tag",
        "es.object.to-string",
        "es.reflect.to-string-tag",
        "web.dom-collections.iterator"
    ],
        "core-js/stable/symbol/async-iterator": [
        "es.symbol.async-iterator"
    ],
        "core-js/stable/symbol/description": [
        "es.symbol.description"
    ],
        "core-js/stable/symbol/for": [
        "es.symbol"
    ],
        "core-js/stable/symbol/has-instance": [
        "es.symbol.has-instance",
        "es.function.has-instance"
    ],
        "core-js/stable/symbol/is-concat-spreadable": [
        "es.symbol.is-concat-spreadable",
        "es.array.concat"
    ],
        "core-js/stable/symbol/iterator": [
        "es.symbol.iterator",
        "es.array.iterator",
        "es.object.to-string",
        "es.string.iterator",
        "web.dom-collections.iterator"
    ],
        "core-js/stable/symbol/key-for": [
        "es.symbol"
    ],
        "core-js/stable/symbol/match": [
        "es.symbol.match",
        "es.regexp.exec",
        "es.string.match"
    ],
        "core-js/stable/symbol/match-all": [
        "es.symbol.match-all",
        "es.object.to-string",
        "es.regexp.exec",
        "es.string.match-all"
    ],
        "core-js/stable/symbol/replace": [
        "es.symbol.replace",
        "es.regexp.exec",
        "es.string.replace"
    ],
        "core-js/stable/symbol/search": [
        "es.symbol.search",
        "es.regexp.exec",
        "es.string.search"
    ],
        "core-js/stable/symbol/species": [
        "es.symbol.species"
    ],
        "core-js/stable/symbol/split": [
        "es.symbol.split",
        "es.regexp.exec",
        "es.string.split"
    ],
        "core-js/stable/symbol/to-primitive": [
        "es.symbol.to-primitive",
        "es.date.to-primitive"
    ],
        "core-js/stable/symbol/to-string-tag": [
        "es.symbol.to-string-tag",
        "es.json.to-string-tag",
        "es.math.to-string-tag",
        "es.object.to-string",
        "es.reflect.to-string-tag"
    ],
        "core-js/stable/symbol/unscopables": [
        "es.symbol.unscopables"
    ],
        "core-js/stable/typed-array": [
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.float32-array",
        "es.typed-array.float64-array",
        "es.typed-array.int8-array",
        "es.typed-array.int16-array",
        "es.typed-array.int32-array",
        "es.typed-array.uint8-array",
        "es.typed-array.uint8-clamped-array",
        "es.typed-array.uint16-array",
        "es.typed-array.uint32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with"
    ],
        "core-js/stable/typed-array/at": [
        "es.typed-array.at"
    ],
        "core-js/stable/typed-array/copy-within": [
        "es.typed-array.copy-within"
    ],
        "core-js/stable/typed-array/entries": [
        "es.object.to-string",
        "es.typed-array.iterator"
    ],
        "core-js/stable/typed-array/every": [
        "es.typed-array.every"
    ],
        "core-js/stable/typed-array/fill": [
        "es.typed-array.fill"
    ],
        "core-js/stable/typed-array/filter": [
        "es.typed-array.filter"
    ],
        "core-js/stable/typed-array/find": [
        "es.typed-array.find"
    ],
        "core-js/stable/typed-array/find-index": [
        "es.typed-array.find-index"
    ],
        "core-js/stable/typed-array/find-last": [
        "es.typed-array.find-last"
    ],
        "core-js/stable/typed-array/find-last-index": [
        "es.typed-array.find-last-index"
    ],
        "core-js/stable/typed-array/float32-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.float32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with"
    ],
        "core-js/stable/typed-array/float64-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.float64-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with"
    ],
        "core-js/stable/typed-array/for-each": [
        "es.typed-array.for-each"
    ],
        "core-js/stable/typed-array/from": [
        "es.typed-array.from"
    ],
        "core-js/stable/typed-array/includes": [
        "es.typed-array.includes"
    ],
        "core-js/stable/typed-array/index-of": [
        "es.typed-array.index-of"
    ],
        "core-js/stable/typed-array/int16-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.int16-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with"
    ],
        "core-js/stable/typed-array/int32-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.int32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with"
    ],
        "core-js/stable/typed-array/int8-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.int8-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with"
    ],
        "core-js/stable/typed-array/iterator": [
        "es.object.to-string",
        "es.typed-array.iterator"
    ],
        "core-js/stable/typed-array/join": [
        "es.typed-array.join"
    ],
        "core-js/stable/typed-array/keys": [
        "es.object.to-string",
        "es.typed-array.iterator"
    ],
        "core-js/stable/typed-array/last-index-of": [
        "es.typed-array.last-index-of"
    ],
        "core-js/stable/typed-array/map": [
        "es.typed-array.map"
    ],
        "core-js/stable/typed-array/methods": [
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with"
    ],
        "core-js/stable/typed-array/of": [
        "es.typed-array.of"
    ],
        "core-js/stable/typed-array/reduce": [
        "es.typed-array.reduce"
    ],
        "core-js/stable/typed-array/reduce-right": [
        "es.typed-array.reduce-right"
    ],
        "core-js/stable/typed-array/reverse": [
        "es.typed-array.reverse"
    ],
        "core-js/stable/typed-array/set": [
        "es.typed-array.set"
    ],
        "core-js/stable/typed-array/slice": [
        "es.typed-array.slice"
    ],
        "core-js/stable/typed-array/some": [
        "es.typed-array.some"
    ],
        "core-js/stable/typed-array/sort": [
        "es.typed-array.sort"
    ],
        "core-js/stable/typed-array/subarray": [
        "es.typed-array.subarray"
    ],
        "core-js/stable/typed-array/to-locale-string": [
        "es.typed-array.to-locale-string"
    ],
        "core-js/stable/typed-array/to-reversed": [
        "esnext.typed-array.to-reversed"
    ],
        "core-js/stable/typed-array/to-sorted": [
        "es.typed-array.sort",
        "es.typed-array.to-sorted"
    ],
        "core-js/stable/typed-array/to-string": [
        "es.typed-array.to-string"
    ],
        "core-js/stable/typed-array/uint16-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.uint16-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with"
    ],
        "core-js/stable/typed-array/uint32-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.uint32-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with"
    ],
        "core-js/stable/typed-array/uint8-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.uint8-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with"
    ],
        "core-js/stable/typed-array/uint8-clamped-array": [
        "es.array-buffer.constructor",
        "es.array-buffer.slice",
        "es.object.to-string",
        "es.string.iterator",
        "es.typed-array.uint8-clamped-array",
        "es.typed-array.at",
        "es.typed-array.copy-within",
        "es.typed-array.every",
        "es.typed-array.fill",
        "es.typed-array.filter",
        "es.typed-array.find",
        "es.typed-array.find-index",
        "es.typed-array.find-last",
        "es.typed-array.find-last-index",
        "es.typed-array.for-each",
        "es.typed-array.from",
        "es.typed-array.includes",
        "es.typed-array.index-of",
        "es.typed-array.iterator",
        "es.typed-array.join",
        "es.typed-array.last-index-of",
        "es.typed-array.map",
        "es.typed-array.of",
        "es.typed-array.reduce",
        "es.typed-array.reduce-right",
        "es.typed-array.reverse",
        "es.typed-array.set",
        "es.typed-array.slice",
        "es.typed-array.some",
        "es.typed-array.sort",
        "es.typed-array.subarray",
        "es.typed-array.to-locale-string",
        "es.typed-array.to-reversed",
        "es.typed-array.to-sorted",
        "es.typed-array.to-string",
        "es.typed-array.with"
    ],
        "core-js/stable/typed-array/values": [
        "es.object.to-string",
        "es.typed-array.iterator"
    ],
        "core-js/stable/typed-array/with": [
        "esnext.typed-array.with"
    ],
        "core-js/stable/unescape": [
        "es.unescape"
    ],
        "core-js/stable/url": [
        "web.url",
        "web.url.to-json",
        "web.url-search-params",
        "web.url-search-params.size"
    ],
        "core-js/stable/url-search-params": [
        "web.dom-collections.iterator",
        "web.url-search-params",
        "web.url-search-params.size"
    ],
        "core-js/stable/url/to-json": [
        "web.url.to-json"
    ],
        "core-js/stable/weak-map": [
        "es.array.iterator",
        "es.object.to-string",
        "es.weak-map",
        "web.dom-collections.iterator"
    ],
        "core-js/stable/weak-set": [
        "es.array.iterator",
        "es.object.to-string",
        "es.weak-set",
        "web.dom-collections.iterator"
    ],
        "core-js/stage": [
        "es.map",
        "es.string.at-alternative",
        "esnext.aggregate-error",
        "esnext.suppressed-error.constructor",
        "esnext.array.from-async",
        "esnext.array.at",
        "esnext.array.filter-out",
        "esnext.array.filter-reject",
        "esnext.array.find-last",
        "esnext.array.find-last-index",
        "esnext.array.group",
        "esnext.array.group-by",
        "esnext.array.group-by-to-map",
        "esnext.array.group-to-map",
        "esnext.array.is-template-object",
        "esnext.array.last-index",
        "esnext.array.last-item",
        "esnext.array.to-reversed",
        "esnext.array.to-sorted",
        "esnext.array.to-spliced",
        "esnext.array.unique-by",
        "esnext.array.with",
        "esnext.array-buffer.detached",
        "esnext.array-buffer.transfer",
        "esnext.array-buffer.transfer-to-fixed-length",
        "esnext.async-disposable-stack.constructor",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.as-indexed-pairs",
        "esnext.async-iterator.async-dispose",
        "esnext.async-iterator.drop",
        "esnext.async-iterator.every",
        "esnext.async-iterator.filter",
        "esnext.async-iterator.find",
        "esnext.async-iterator.flat-map",
        "esnext.async-iterator.for-each",
        "esnext.async-iterator.from",
        "esnext.async-iterator.indexed",
        "esnext.async-iterator.map",
        "esnext.async-iterator.reduce",
        "esnext.async-iterator.some",
        "esnext.async-iterator.take",
        "esnext.async-iterator.to-array",
        "esnext.bigint.range",
        "esnext.composite-key",
        "esnext.composite-symbol",
        "esnext.disposable-stack.constructor",
        "esnext.function.demethodize",
        "esnext.function.is-callable",
        "esnext.function.is-constructor",
        "esnext.function.un-this",
        "esnext.global-this",
        "esnext.iterator.constructor",
        "esnext.iterator.as-indexed-pairs",
        "esnext.iterator.dispose",
        "esnext.iterator.drop",
        "esnext.iterator.every",
        "esnext.iterator.filter",
        "esnext.iterator.find",
        "esnext.iterator.flat-map",
        "esnext.iterator.for-each",
        "esnext.iterator.from",
        "esnext.iterator.indexed",
        "esnext.iterator.map",
        "esnext.iterator.range",
        "esnext.iterator.reduce",
        "esnext.iterator.some",
        "esnext.iterator.take",
        "esnext.iterator.to-array",
        "esnext.iterator.to-async",
        "esnext.json.is-raw-json",
        "esnext.json.parse",
        "esnext.json.raw-json",
        "esnext.map.delete-all",
        "esnext.map.emplace",
        "esnext.map.every",
        "esnext.map.filter",
        "esnext.map.find",
        "esnext.map.find-key",
        "esnext.map.from",
        "esnext.map.group-by",
        "esnext.map.includes",
        "esnext.map.key-by",
        "esnext.map.key-of",
        "esnext.map.map-keys",
        "esnext.map.map-values",
        "esnext.map.merge",
        "esnext.map.of",
        "esnext.map.reduce",
        "esnext.map.some",
        "esnext.map.update",
        "esnext.map.update-or-insert",
        "esnext.map.upsert",
        "esnext.math.clamp",
        "esnext.math.deg-per-rad",
        "esnext.math.degrees",
        "esnext.math.fscale",
        "esnext.math.iaddh",
        "esnext.math.imulh",
        "esnext.math.isubh",
        "esnext.math.rad-per-deg",
        "esnext.math.radians",
        "esnext.math.scale",
        "esnext.math.seeded-prng",
        "esnext.math.signbit",
        "esnext.math.umulh",
        "esnext.number.from-string",
        "esnext.number.range",
        "esnext.object.has-own",
        "esnext.object.iterate-entries",
        "esnext.object.iterate-keys",
        "esnext.object.iterate-values",
        "esnext.observable",
        "esnext.promise.all-settled",
        "esnext.promise.any",
        "esnext.promise.try",
        "esnext.reflect.define-metadata",
        "esnext.reflect.delete-metadata",
        "esnext.reflect.get-metadata",
        "esnext.reflect.get-metadata-keys",
        "esnext.reflect.get-own-metadata",
        "esnext.reflect.get-own-metadata-keys",
        "esnext.reflect.has-metadata",
        "esnext.reflect.has-own-metadata",
        "esnext.reflect.metadata",
        "esnext.set.add-all",
        "esnext.set.delete-all",
        "esnext.set.difference.v2",
        "esnext.set.difference",
        "esnext.set.every",
        "esnext.set.filter",
        "esnext.set.find",
        "esnext.set.from",
        "esnext.set.intersection.v2",
        "esnext.set.intersection",
        "esnext.set.is-disjoint-from.v2",
        "esnext.set.is-disjoint-from",
        "esnext.set.is-subset-of.v2",
        "esnext.set.is-subset-of",
        "esnext.set.is-superset-of.v2",
        "esnext.set.is-superset-of",
        "esnext.set.join",
        "esnext.set.map",
        "esnext.set.of",
        "esnext.set.reduce",
        "esnext.set.some",
        "esnext.set.symmetric-difference.v2",
        "esnext.set.symmetric-difference",
        "esnext.set.union.v2",
        "esnext.set.union",
        "esnext.string.at",
        "esnext.string.cooked",
        "esnext.string.code-points",
        "esnext.string.dedent",
        "esnext.string.is-well-formed",
        "esnext.string.match-all",
        "esnext.string.replace-all",
        "esnext.string.to-well-formed",
        "esnext.symbol.async-dispose",
        "esnext.symbol.dispose",
        "esnext.symbol.is-registered",
        "esnext.symbol.is-well-known",
        "esnext.symbol.matcher",
        "esnext.symbol.metadata",
        "esnext.symbol.metadata-key",
        "esnext.symbol.observable",
        "esnext.symbol.pattern-match",
        "esnext.symbol.replace-all",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with",
        "esnext.weak-map.delete-all",
        "esnext.weak-map.from",
        "esnext.weak-map.of",
        "esnext.weak-map.emplace",
        "esnext.weak-map.upsert",
        "esnext.weak-set.add-all",
        "esnext.weak-set.delete-all",
        "esnext.weak-set.from",
        "esnext.weak-set.of",
        "web.url",
        "web.url.to-json",
        "web.url-search-params",
        "web.url-search-params.size"
    ],
        "core-js/stage/0": [
        "es.map",
        "es.string.at-alternative",
        "esnext.aggregate-error",
        "esnext.suppressed-error.constructor",
        "esnext.array.from-async",
        "esnext.array.at",
        "esnext.array.filter-out",
        "esnext.array.filter-reject",
        "esnext.array.find-last",
        "esnext.array.find-last-index",
        "esnext.array.group",
        "esnext.array.group-by",
        "esnext.array.group-by-to-map",
        "esnext.array.group-to-map",
        "esnext.array.is-template-object",
        "esnext.array.last-index",
        "esnext.array.last-item",
        "esnext.array.to-reversed",
        "esnext.array.to-sorted",
        "esnext.array.to-spliced",
        "esnext.array.unique-by",
        "esnext.array.with",
        "esnext.array-buffer.detached",
        "esnext.array-buffer.transfer",
        "esnext.array-buffer.transfer-to-fixed-length",
        "esnext.async-disposable-stack.constructor",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.as-indexed-pairs",
        "esnext.async-iterator.async-dispose",
        "esnext.async-iterator.drop",
        "esnext.async-iterator.every",
        "esnext.async-iterator.filter",
        "esnext.async-iterator.find",
        "esnext.async-iterator.flat-map",
        "esnext.async-iterator.for-each",
        "esnext.async-iterator.from",
        "esnext.async-iterator.indexed",
        "esnext.async-iterator.map",
        "esnext.async-iterator.reduce",
        "esnext.async-iterator.some",
        "esnext.async-iterator.take",
        "esnext.async-iterator.to-array",
        "esnext.bigint.range",
        "esnext.composite-key",
        "esnext.composite-symbol",
        "esnext.disposable-stack.constructor",
        "esnext.function.demethodize",
        "esnext.function.is-callable",
        "esnext.function.is-constructor",
        "esnext.function.un-this",
        "esnext.global-this",
        "esnext.iterator.constructor",
        "esnext.iterator.as-indexed-pairs",
        "esnext.iterator.dispose",
        "esnext.iterator.drop",
        "esnext.iterator.every",
        "esnext.iterator.filter",
        "esnext.iterator.find",
        "esnext.iterator.flat-map",
        "esnext.iterator.for-each",
        "esnext.iterator.from",
        "esnext.iterator.indexed",
        "esnext.iterator.map",
        "esnext.iterator.range",
        "esnext.iterator.reduce",
        "esnext.iterator.some",
        "esnext.iterator.take",
        "esnext.iterator.to-array",
        "esnext.iterator.to-async",
        "esnext.json.is-raw-json",
        "esnext.json.parse",
        "esnext.json.raw-json",
        "esnext.map.delete-all",
        "esnext.map.emplace",
        "esnext.map.every",
        "esnext.map.filter",
        "esnext.map.find",
        "esnext.map.find-key",
        "esnext.map.from",
        "esnext.map.group-by",
        "esnext.map.includes",
        "esnext.map.key-by",
        "esnext.map.key-of",
        "esnext.map.map-keys",
        "esnext.map.map-values",
        "esnext.map.merge",
        "esnext.map.of",
        "esnext.map.reduce",
        "esnext.map.some",
        "esnext.map.update",
        "esnext.map.update-or-insert",
        "esnext.map.upsert",
        "esnext.math.clamp",
        "esnext.math.deg-per-rad",
        "esnext.math.degrees",
        "esnext.math.fscale",
        "esnext.math.iaddh",
        "esnext.math.imulh",
        "esnext.math.isubh",
        "esnext.math.rad-per-deg",
        "esnext.math.radians",
        "esnext.math.scale",
        "esnext.math.seeded-prng",
        "esnext.math.signbit",
        "esnext.math.umulh",
        "esnext.number.from-string",
        "esnext.number.range",
        "esnext.object.has-own",
        "esnext.object.iterate-entries",
        "esnext.object.iterate-keys",
        "esnext.object.iterate-values",
        "esnext.observable",
        "esnext.promise.all-settled",
        "esnext.promise.any",
        "esnext.promise.try",
        "esnext.set.add-all",
        "esnext.set.delete-all",
        "esnext.set.difference.v2",
        "esnext.set.difference",
        "esnext.set.every",
        "esnext.set.filter",
        "esnext.set.find",
        "esnext.set.from",
        "esnext.set.intersection.v2",
        "esnext.set.intersection",
        "esnext.set.is-disjoint-from.v2",
        "esnext.set.is-disjoint-from",
        "esnext.set.is-subset-of.v2",
        "esnext.set.is-subset-of",
        "esnext.set.is-superset-of.v2",
        "esnext.set.is-superset-of",
        "esnext.set.join",
        "esnext.set.map",
        "esnext.set.of",
        "esnext.set.reduce",
        "esnext.set.some",
        "esnext.set.symmetric-difference.v2",
        "esnext.set.symmetric-difference",
        "esnext.set.union.v2",
        "esnext.set.union",
        "esnext.string.at",
        "esnext.string.cooked",
        "esnext.string.code-points",
        "esnext.string.dedent",
        "esnext.string.is-well-formed",
        "esnext.string.match-all",
        "esnext.string.replace-all",
        "esnext.string.to-well-formed",
        "esnext.symbol.async-dispose",
        "esnext.symbol.dispose",
        "esnext.symbol.is-registered",
        "esnext.symbol.is-well-known",
        "esnext.symbol.matcher",
        "esnext.symbol.metadata",
        "esnext.symbol.metadata-key",
        "esnext.symbol.observable",
        "esnext.symbol.pattern-match",
        "esnext.symbol.replace-all",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with",
        "esnext.weak-map.delete-all",
        "esnext.weak-map.from",
        "esnext.weak-map.of",
        "esnext.weak-map.emplace",
        "esnext.weak-map.upsert",
        "esnext.weak-set.add-all",
        "esnext.weak-set.delete-all",
        "esnext.weak-set.from",
        "esnext.weak-set.of",
        "web.url",
        "web.url.to-json",
        "web.url-search-params",
        "web.url-search-params.size"
    ],
        "core-js/stage/1": [
        "es.map",
        "es.string.at-alternative",
        "esnext.aggregate-error",
        "esnext.suppressed-error.constructor",
        "esnext.array.from-async",
        "esnext.array.at",
        "esnext.array.filter-reject",
        "esnext.array.find-last",
        "esnext.array.find-last-index",
        "esnext.array.group",
        "esnext.array.group-by",
        "esnext.array.group-by-to-map",
        "esnext.array.group-to-map",
        "esnext.array.is-template-object",
        "esnext.array.last-index",
        "esnext.array.last-item",
        "esnext.array.to-reversed",
        "esnext.array.to-sorted",
        "esnext.array.to-spliced",
        "esnext.array.unique-by",
        "esnext.array.with",
        "esnext.array-buffer.detached",
        "esnext.array-buffer.transfer",
        "esnext.array-buffer.transfer-to-fixed-length",
        "esnext.async-disposable-stack.constructor",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.as-indexed-pairs",
        "esnext.async-iterator.async-dispose",
        "esnext.async-iterator.drop",
        "esnext.async-iterator.every",
        "esnext.async-iterator.filter",
        "esnext.async-iterator.find",
        "esnext.async-iterator.flat-map",
        "esnext.async-iterator.for-each",
        "esnext.async-iterator.from",
        "esnext.async-iterator.indexed",
        "esnext.async-iterator.map",
        "esnext.async-iterator.reduce",
        "esnext.async-iterator.some",
        "esnext.async-iterator.take",
        "esnext.async-iterator.to-array",
        "esnext.bigint.range",
        "esnext.composite-key",
        "esnext.composite-symbol",
        "esnext.disposable-stack.constructor",
        "esnext.global-this",
        "esnext.iterator.constructor",
        "esnext.iterator.as-indexed-pairs",
        "esnext.iterator.dispose",
        "esnext.iterator.drop",
        "esnext.iterator.every",
        "esnext.iterator.filter",
        "esnext.iterator.find",
        "esnext.iterator.flat-map",
        "esnext.iterator.for-each",
        "esnext.iterator.from",
        "esnext.iterator.indexed",
        "esnext.iterator.map",
        "esnext.iterator.range",
        "esnext.iterator.reduce",
        "esnext.iterator.some",
        "esnext.iterator.take",
        "esnext.iterator.to-array",
        "esnext.iterator.to-async",
        "esnext.json.is-raw-json",
        "esnext.json.parse",
        "esnext.json.raw-json",
        "esnext.map.delete-all",
        "esnext.map.emplace",
        "esnext.map.every",
        "esnext.map.filter",
        "esnext.map.find",
        "esnext.map.find-key",
        "esnext.map.from",
        "esnext.map.group-by",
        "esnext.map.includes",
        "esnext.map.key-by",
        "esnext.map.key-of",
        "esnext.map.map-keys",
        "esnext.map.map-values",
        "esnext.map.merge",
        "esnext.map.of",
        "esnext.map.reduce",
        "esnext.map.some",
        "esnext.map.update",
        "esnext.map.update-or-insert",
        "esnext.map.upsert",
        "esnext.math.clamp",
        "esnext.math.deg-per-rad",
        "esnext.math.degrees",
        "esnext.math.fscale",
        "esnext.math.rad-per-deg",
        "esnext.math.radians",
        "esnext.math.scale",
        "esnext.math.seeded-prng",
        "esnext.math.signbit",
        "esnext.number.from-string",
        "esnext.number.range",
        "esnext.object.has-own",
        "esnext.object.iterate-entries",
        "esnext.object.iterate-keys",
        "esnext.object.iterate-values",
        "esnext.observable",
        "esnext.promise.all-settled",
        "esnext.promise.any",
        "esnext.promise.try",
        "esnext.set.add-all",
        "esnext.set.delete-all",
        "esnext.set.difference.v2",
        "esnext.set.difference",
        "esnext.set.every",
        "esnext.set.filter",
        "esnext.set.find",
        "esnext.set.from",
        "esnext.set.intersection.v2",
        "esnext.set.intersection",
        "esnext.set.is-disjoint-from.v2",
        "esnext.set.is-disjoint-from",
        "esnext.set.is-subset-of.v2",
        "esnext.set.is-subset-of",
        "esnext.set.is-superset-of.v2",
        "esnext.set.is-superset-of",
        "esnext.set.join",
        "esnext.set.map",
        "esnext.set.of",
        "esnext.set.reduce",
        "esnext.set.some",
        "esnext.set.symmetric-difference.v2",
        "esnext.set.symmetric-difference",
        "esnext.set.union.v2",
        "esnext.set.union",
        "esnext.string.cooked",
        "esnext.string.code-points",
        "esnext.string.dedent",
        "esnext.string.is-well-formed",
        "esnext.string.match-all",
        "esnext.string.replace-all",
        "esnext.string.to-well-formed",
        "esnext.symbol.async-dispose",
        "esnext.symbol.dispose",
        "esnext.symbol.is-registered",
        "esnext.symbol.is-well-known",
        "esnext.symbol.matcher",
        "esnext.symbol.metadata",
        "esnext.symbol.metadata-key",
        "esnext.symbol.observable",
        "esnext.symbol.pattern-match",
        "esnext.symbol.replace-all",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with",
        "esnext.weak-map.delete-all",
        "esnext.weak-map.from",
        "esnext.weak-map.of",
        "esnext.weak-map.emplace",
        "esnext.weak-map.upsert",
        "esnext.weak-set.add-all",
        "esnext.weak-set.delete-all",
        "esnext.weak-set.from",
        "esnext.weak-set.of"
    ],
        "core-js/stage/2": [
        "es.string.at-alternative",
        "esnext.aggregate-error",
        "esnext.suppressed-error.constructor",
        "esnext.array.from-async",
        "esnext.array.at",
        "esnext.array.find-last",
        "esnext.array.find-last-index",
        "esnext.array.group",
        "esnext.array.group-by",
        "esnext.array.group-by-to-map",
        "esnext.array.group-to-map",
        "esnext.array.is-template-object",
        "esnext.array.to-reversed",
        "esnext.array.to-sorted",
        "esnext.array.to-spliced",
        "esnext.array.with",
        "esnext.array-buffer.detached",
        "esnext.array-buffer.transfer",
        "esnext.array-buffer.transfer-to-fixed-length",
        "esnext.async-disposable-stack.constructor",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.as-indexed-pairs",
        "esnext.async-iterator.async-dispose",
        "esnext.async-iterator.drop",
        "esnext.async-iterator.every",
        "esnext.async-iterator.filter",
        "esnext.async-iterator.find",
        "esnext.async-iterator.flat-map",
        "esnext.async-iterator.for-each",
        "esnext.async-iterator.from",
        "esnext.async-iterator.indexed",
        "esnext.async-iterator.map",
        "esnext.async-iterator.reduce",
        "esnext.async-iterator.some",
        "esnext.async-iterator.take",
        "esnext.async-iterator.to-array",
        "esnext.disposable-stack.constructor",
        "esnext.global-this",
        "esnext.iterator.constructor",
        "esnext.iterator.as-indexed-pairs",
        "esnext.iterator.dispose",
        "esnext.iterator.drop",
        "esnext.iterator.every",
        "esnext.iterator.filter",
        "esnext.iterator.find",
        "esnext.iterator.flat-map",
        "esnext.iterator.for-each",
        "esnext.iterator.from",
        "esnext.iterator.indexed",
        "esnext.iterator.map",
        "esnext.iterator.reduce",
        "esnext.iterator.some",
        "esnext.iterator.take",
        "esnext.iterator.to-array",
        "esnext.iterator.to-async",
        "esnext.json.is-raw-json",
        "esnext.json.parse",
        "esnext.json.raw-json",
        "esnext.map.emplace",
        "esnext.object.has-own",
        "esnext.promise.all-settled",
        "esnext.promise.any",
        "esnext.set.difference.v2",
        "esnext.set.difference",
        "esnext.set.intersection.v2",
        "esnext.set.intersection",
        "esnext.set.is-disjoint-from.v2",
        "esnext.set.is-disjoint-from",
        "esnext.set.is-subset-of.v2",
        "esnext.set.is-subset-of",
        "esnext.set.is-superset-of.v2",
        "esnext.set.is-superset-of",
        "esnext.set.symmetric-difference.v2",
        "esnext.set.symmetric-difference",
        "esnext.set.union.v2",
        "esnext.set.union",
        "esnext.string.dedent",
        "esnext.string.is-well-formed",
        "esnext.string.match-all",
        "esnext.string.replace-all",
        "esnext.string.to-well-formed",
        "esnext.symbol.async-dispose",
        "esnext.symbol.dispose",
        "esnext.symbol.is-registered",
        "esnext.symbol.is-well-known",
        "esnext.symbol.metadata",
        "esnext.symbol.metadata-key",
        "esnext.typed-array.at",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.with",
        "esnext.weak-map.emplace"
    ],
        "core-js/stage/3": [
        "es.string.at-alternative",
        "esnext.aggregate-error",
        "esnext.suppressed-error.constructor",
        "esnext.array.from-async",
        "esnext.array.at",
        "esnext.array.find-last",
        "esnext.array.find-last-index",
        "esnext.array.group",
        "esnext.array.group-by",
        "esnext.array.group-by-to-map",
        "esnext.array.group-to-map",
        "esnext.array.to-reversed",
        "esnext.array.to-sorted",
        "esnext.array.to-spliced",
        "esnext.array.with",
        "esnext.array-buffer.detached",
        "esnext.array-buffer.transfer",
        "esnext.array-buffer.transfer-to-fixed-length",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.drop",
        "esnext.async-iterator.every",
        "esnext.async-iterator.filter",
        "esnext.async-iterator.find",
        "esnext.async-iterator.flat-map",
        "esnext.async-iterator.for-each",
        "esnext.async-iterator.from",
        "esnext.async-iterator.map",
        "esnext.async-iterator.reduce",
        "esnext.async-iterator.some",
        "esnext.async-iterator.take",
        "esnext.async-iterator.to-array",
        "esnext.disposable-stack.constructor",
        "esnext.global-this",
        "esnext.iterator.constructor",
        "esnext.iterator.dispose",
        "esnext.iterator.drop",
        "esnext.iterator.every",
        "esnext.iterator.filter",
        "esnext.iterator.find",
        "esnext.iterator.flat-map",
        "esnext.iterator.for-each",
        "esnext.iterator.from",
        "esnext.iterator.map",
        "esnext.iterator.reduce",
        "esnext.iterator.some",
        "esnext.iterator.take",
        "esnext.iterator.to-array",
        "esnext.iterator.to-async",
        "esnext.json.is-raw-json",
        "esnext.json.parse",
        "esnext.json.raw-json",
        "esnext.object.has-own",
        "esnext.promise.all-settled",
        "esnext.promise.any",
        "esnext.set.difference.v2",
        "esnext.set.intersection.v2",
        "esnext.set.is-disjoint-from.v2",
        "esnext.set.is-subset-of.v2",
        "esnext.set.is-superset-of.v2",
        "esnext.set.symmetric-difference.v2",
        "esnext.set.union.v2",
        "esnext.string.is-well-formed",
        "esnext.string.match-all",
        "esnext.string.replace-all",
        "esnext.string.to-well-formed",
        "esnext.symbol.dispose",
        "esnext.typed-array.at",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.with"
    ],
        "core-js/stage/4": [
        "es.string.at-alternative",
        "esnext.aggregate-error",
        "esnext.array.at",
        "esnext.array.find-last",
        "esnext.array.find-last-index",
        "esnext.array.to-reversed",
        "esnext.array.to-sorted",
        "esnext.array.to-spliced",
        "esnext.array.with",
        "esnext.global-this",
        "esnext.object.has-own",
        "esnext.promise.all-settled",
        "esnext.promise.any",
        "esnext.string.match-all",
        "esnext.string.replace-all",
        "esnext.typed-array.at",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.with"
    ],
        "core-js/stage/pre": [
        "es.map",
        "es.string.at-alternative",
        "esnext.aggregate-error",
        "esnext.suppressed-error.constructor",
        "esnext.array.from-async",
        "esnext.array.at",
        "esnext.array.filter-out",
        "esnext.array.filter-reject",
        "esnext.array.find-last",
        "esnext.array.find-last-index",
        "esnext.array.group",
        "esnext.array.group-by",
        "esnext.array.group-by-to-map",
        "esnext.array.group-to-map",
        "esnext.array.is-template-object",
        "esnext.array.last-index",
        "esnext.array.last-item",
        "esnext.array.to-reversed",
        "esnext.array.to-sorted",
        "esnext.array.to-spliced",
        "esnext.array.unique-by",
        "esnext.array.with",
        "esnext.array-buffer.detached",
        "esnext.array-buffer.transfer",
        "esnext.array-buffer.transfer-to-fixed-length",
        "esnext.async-disposable-stack.constructor",
        "esnext.async-iterator.constructor",
        "esnext.async-iterator.as-indexed-pairs",
        "esnext.async-iterator.async-dispose",
        "esnext.async-iterator.drop",
        "esnext.async-iterator.every",
        "esnext.async-iterator.filter",
        "esnext.async-iterator.find",
        "esnext.async-iterator.flat-map",
        "esnext.async-iterator.for-each",
        "esnext.async-iterator.from",
        "esnext.async-iterator.indexed",
        "esnext.async-iterator.map",
        "esnext.async-iterator.reduce",
        "esnext.async-iterator.some",
        "esnext.async-iterator.take",
        "esnext.async-iterator.to-array",
        "esnext.bigint.range",
        "esnext.composite-key",
        "esnext.composite-symbol",
        "esnext.disposable-stack.constructor",
        "esnext.function.demethodize",
        "esnext.function.is-callable",
        "esnext.function.is-constructor",
        "esnext.function.un-this",
        "esnext.global-this",
        "esnext.iterator.constructor",
        "esnext.iterator.as-indexed-pairs",
        "esnext.iterator.dispose",
        "esnext.iterator.drop",
        "esnext.iterator.every",
        "esnext.iterator.filter",
        "esnext.iterator.find",
        "esnext.iterator.flat-map",
        "esnext.iterator.for-each",
        "esnext.iterator.from",
        "esnext.iterator.indexed",
        "esnext.iterator.map",
        "esnext.iterator.range",
        "esnext.iterator.reduce",
        "esnext.iterator.some",
        "esnext.iterator.take",
        "esnext.iterator.to-array",
        "esnext.iterator.to-async",
        "esnext.json.is-raw-json",
        "esnext.json.parse",
        "esnext.json.raw-json",
        "esnext.map.delete-all",
        "esnext.map.emplace",
        "esnext.map.every",
        "esnext.map.filter",
        "esnext.map.find",
        "esnext.map.find-key",
        "esnext.map.from",
        "esnext.map.group-by",
        "esnext.map.includes",
        "esnext.map.key-by",
        "esnext.map.key-of",
        "esnext.map.map-keys",
        "esnext.map.map-values",
        "esnext.map.merge",
        "esnext.map.of",
        "esnext.map.reduce",
        "esnext.map.some",
        "esnext.map.update",
        "esnext.map.update-or-insert",
        "esnext.map.upsert",
        "esnext.math.clamp",
        "esnext.math.deg-per-rad",
        "esnext.math.degrees",
        "esnext.math.fscale",
        "esnext.math.iaddh",
        "esnext.math.imulh",
        "esnext.math.isubh",
        "esnext.math.rad-per-deg",
        "esnext.math.radians",
        "esnext.math.scale",
        "esnext.math.seeded-prng",
        "esnext.math.signbit",
        "esnext.math.umulh",
        "esnext.number.from-string",
        "esnext.number.range",
        "esnext.object.has-own",
        "esnext.object.iterate-entries",
        "esnext.object.iterate-keys",
        "esnext.object.iterate-values",
        "esnext.observable",
        "esnext.promise.all-settled",
        "esnext.promise.any",
        "esnext.promise.try",
        "esnext.reflect.define-metadata",
        "esnext.reflect.delete-metadata",
        "esnext.reflect.get-metadata",
        "esnext.reflect.get-metadata-keys",
        "esnext.reflect.get-own-metadata",
        "esnext.reflect.get-own-metadata-keys",
        "esnext.reflect.has-metadata",
        "esnext.reflect.has-own-metadata",
        "esnext.reflect.metadata",
        "esnext.set.add-all",
        "esnext.set.delete-all",
        "esnext.set.difference.v2",
        "esnext.set.difference",
        "esnext.set.every",
        "esnext.set.filter",
        "esnext.set.find",
        "esnext.set.from",
        "esnext.set.intersection.v2",
        "esnext.set.intersection",
        "esnext.set.is-disjoint-from.v2",
        "esnext.set.is-disjoint-from",
        "esnext.set.is-subset-of.v2",
        "esnext.set.is-subset-of",
        "esnext.set.is-superset-of.v2",
        "esnext.set.is-superset-of",
        "esnext.set.join",
        "esnext.set.map",
        "esnext.set.of",
        "esnext.set.reduce",
        "esnext.set.some",
        "esnext.set.symmetric-difference.v2",
        "esnext.set.symmetric-difference",
        "esnext.set.union.v2",
        "esnext.set.union",
        "esnext.string.at",
        "esnext.string.cooked",
        "esnext.string.code-points",
        "esnext.string.dedent",
        "esnext.string.is-well-formed",
        "esnext.string.match-all",
        "esnext.string.replace-all",
        "esnext.string.to-well-formed",
        "esnext.symbol.async-dispose",
        "esnext.symbol.dispose",
        "esnext.symbol.is-registered",
        "esnext.symbol.is-well-known",
        "esnext.symbol.matcher",
        "esnext.symbol.metadata",
        "esnext.symbol.metadata-key",
        "esnext.symbol.observable",
        "esnext.symbol.pattern-match",
        "esnext.symbol.replace-all",
        "esnext.typed-array.from-async",
        "esnext.typed-array.at",
        "esnext.typed-array.filter-out",
        "esnext.typed-array.filter-reject",
        "esnext.typed-array.find-last",
        "esnext.typed-array.find-last-index",
        "esnext.typed-array.group-by",
        "esnext.typed-array.to-reversed",
        "esnext.typed-array.to-sorted",
        "esnext.typed-array.to-spliced",
        "esnext.typed-array.unique-by",
        "esnext.typed-array.with",
        "esnext.weak-map.delete-all",
        "esnext.weak-map.from",
        "esnext.weak-map.of",
        "esnext.weak-map.emplace",
        "esnext.weak-map.upsert",
        "esnext.weak-set.add-all",
        "esnext.weak-set.delete-all",
        "esnext.weak-set.from",
        "esnext.weak-set.of",
        "web.url",
        "web.url.to-json",
        "web.url-search-params",
        "web.url-search-params.size"
    ],
        "core-js/web": [
        "web.atob",
        "web.btoa",
        "web.dom-collections.for-each",
        "web.dom-collections.iterator",
        "web.dom-exception.constructor",
        "web.dom-exception.stack",
        "web.dom-exception.to-string-tag",
        "web.immediate",
        "web.queue-microtask",
        "web.self",
        "web.structured-clone",
        "web.timers",
        "web.url",
        "web.url.to-json",
        "web.url-search-params",
        "web.url-search-params.size"
    ],
        "core-js/web/dom-collections": [
        "web.dom-collections.for-each",
        "web.dom-collections.iterator"
    ],
        "core-js/web/dom-exception": [
        "es.error.to-string",
        "web.dom-exception.constructor",
        "web.dom-exception.stack",
        "web.dom-exception.to-string-tag"
    ],
        "core-js/web/immediate": [
        "web.immediate"
    ],
        "core-js/web/queue-microtask": [
        "web.queue-microtask"
    ],
        "core-js/web/structured-clone": [
        "es.array.iterator",
        "es.map",
        "es.object.to-string",
        "es.set",
        "web.structured-clone"
    ],
        "core-js/web/timers": [
        "web.timers"
    ],
        "core-js/web/url": [
        "web.url",
        "web.url.to-json",
        "web.url-search-params",
        "web.url-search-params.size"
    ],
        "core-js/web/url-search-params": [
        "web.url-search-params",
        "web.url-search-params.size"
    ]
    };
  
    var entries$1 = require$$0$2;
  
    var _InstanceProperties$1;
    var corejs3ShippedProposalsList$1 = new Set(["esnext.array.group", "esnext.array.group-to-map", "esnext.array.to-reversed", "esnext.array.to-sorted", "esnext.array.to-spliced", "esnext.array.with", "esnext.typed-array.to-reversed", "esnext.typed-array.to-sorted", "esnext.typed-array.with"]);
    var polyfillsOrder$1 = {};
    Object.keys(data$1).forEach(function (name, index) {
      polyfillsOrder$1[name] = index;
    });
    var define$2 = function define(pure, global, name, exclude) {
      if (name === void 0) {
        name = global[0];
      }
      return {
        name: name,
        pure: pure,
        global: global.sort(function (a, b) {
          return polyfillsOrder$1[a] - polyfillsOrder$1[b];
        }),
        exclude: exclude
      };
    };
    var typed$1 = function typed(name) {
      return define$2(null, [name].concat(TypedArrayDependencies$1));
    };
    var ArrayNatureIterators$2 = ["es.array.iterator", "web.dom-collections.iterator"];
    var CommonIterators$2 = ["es.string.iterator"].concat(ArrayNatureIterators$2);
    var ArrayNatureIteratorsWithTag$1 = ["es.object.to-string"].concat(ArrayNatureIterators$2);
    var CommonIteratorsWithTag$1 = ["es.object.to-string"].concat(_toConsumableArray(CommonIterators$2));
    var ErrorDependencies$1 = ["es.error.cause", "es.error.to-string"];
    var TypedArrayDependencies$1 = ["es.typed-array.at", "es.typed-array.copy-within", "es.typed-array.every", "es.typed-array.fill", "es.typed-array.filter", "es.typed-array.find", "es.typed-array.find-index", "es.typed-array.find-last", "es.typed-array.find-last-index", "es.typed-array.for-each", "es.typed-array.includes", "es.typed-array.index-of", "es.typed-array.iterator", "es.typed-array.join", "es.typed-array.last-index-of", "es.typed-array.map", "es.typed-array.reduce", "es.typed-array.reduce-right", "es.typed-array.reverse", "es.typed-array.set", "es.typed-array.slice", "es.typed-array.some", "es.typed-array.sort", "es.typed-array.subarray", "es.typed-array.to-locale-string", "es.typed-array.to-string", "es.object.to-string", "es.array.iterator", "es.array-buffer.slice", "esnext.typed-array.filter-reject", "esnext.typed-array.group-by", "esnext.typed-array.to-reversed", "esnext.typed-array.to-sorted", "esnext.typed-array.to-spliced", "esnext.typed-array.unique-by", "esnext.typed-array.with"];
    var PromiseDependencies$2 = ["es.promise", "es.object.to-string"];
    var PromiseDependenciesWithIterators$1 = [].concat(PromiseDependencies$2, _toConsumableArray(CommonIterators$2));
    var SymbolDependencies$1 = ["es.symbol", "es.symbol.description", "es.object.to-string"];
    var MapDependencies$1 = ["es.map", "esnext.map.delete-all", "esnext.map.emplace", "esnext.map.every", "esnext.map.filter", "esnext.map.find", "esnext.map.find-key", "esnext.map.includes", "esnext.map.key-of", "esnext.map.map-keys", "esnext.map.map-values", "esnext.map.merge", "esnext.map.reduce", "esnext.map.some", "esnext.map.update"].concat(_toConsumableArray(CommonIteratorsWithTag$1));
    var SetDependencies$1 = ["es.set", "esnext.set.add-all", "esnext.set.delete-all", "esnext.set.difference", "esnext.set.every", "esnext.set.filter", "esnext.set.find", "esnext.set.intersection", "esnext.set.is-disjoint-from", "esnext.set.is-subset-of", "esnext.set.is-superset-of", "esnext.set.join", "esnext.set.map", "esnext.set.reduce", "esnext.set.some", "esnext.set.symmetric-difference", "esnext.set.union"].concat(_toConsumableArray(CommonIteratorsWithTag$1));
    var WeakMapDependencies$1 = ["es.weak-map", "esnext.weak-map.delete-all", "esnext.weak-map.emplace"].concat(_toConsumableArray(CommonIteratorsWithTag$1));
    var WeakSetDependencies$1 = ["es.weak-set", "esnext.weak-set.add-all", "esnext.weak-set.delete-all"].concat(_toConsumableArray(CommonIteratorsWithTag$1));
    var DOMExceptionDependencies$1 = ["web.dom-exception.constructor", "web.dom-exception.stack", "web.dom-exception.to-string-tag", "es.error.to-string"];
    var URLSearchParamsDependencies$1 = ["web.url-search-params"].concat(_toConsumableArray(CommonIteratorsWithTag$1));
    var AsyncIteratorDependencies$1 = ["esnext.async-iterator.constructor"].concat(PromiseDependencies$2);
    var AsyncIteratorProblemMethods$1 = ["esnext.async-iterator.every", "esnext.async-iterator.filter", "esnext.async-iterator.find", "esnext.async-iterator.flat-map", "esnext.async-iterator.for-each", "esnext.async-iterator.map", "esnext.async-iterator.reduce", "esnext.async-iterator.some"];
    var IteratorDependencies$1 = ["esnext.iterator.constructor", "es.object.to-string"];
    var TypedArrayStaticMethods$1 = {
      from: define$2(null, ["es.typed-array.from"]),
      fromAsync: define$2(null, ["esnext.typed-array.from-async"].concat(_toConsumableArray(PromiseDependenciesWithIterators$1))),
      of: define$2(null, ["es.typed-array.of"])
    };
    var BuiltIns$2 = {
      AsyncIterator: define$2("async-iterator/index", AsyncIteratorDependencies$1),
      AggregateError: define$2("aggregate-error", ["es.aggregate-error"].concat(ErrorDependencies$1, _toConsumableArray(CommonIteratorsWithTag$1), ["es.aggregate-error.cause"])),
      ArrayBuffer: define$2(null, ["es.array-buffer.constructor", "es.array-buffer.slice", "es.object.to-string"]),
      DataView: define$2(null, ["es.data-view", "es.array-buffer.slice", "es.object.to-string"]),
      Date: define$2(null, ["es.date.to-string"]),
      DOMException: define$2("dom-exception", DOMExceptionDependencies$1),
      Error: define$2(null, ErrorDependencies$1),
      EvalError: define$2(null, ErrorDependencies$1),
      Float32Array: typed$1("es.typed-array.float32-array"),
      Float64Array: typed$1("es.typed-array.float64-array"),
      Int8Array: typed$1("es.typed-array.int8-array"),
      Int16Array: typed$1("es.typed-array.int16-array"),
      Int32Array: typed$1("es.typed-array.int32-array"),
      Iterator: define$2("iterator/index", IteratorDependencies$1),
      Uint8Array: typed$1("es.typed-array.uint8-array"),
      Uint8ClampedArray: typed$1("es.typed-array.uint8-clamped-array"),
      Uint16Array: typed$1("es.typed-array.uint16-array"),
      Uint32Array: typed$1("es.typed-array.uint32-array"),
      Map: define$2("map/index", MapDependencies$1),
      Number: define$2(null, ["es.number.constructor"]),
      Observable: define$2("observable/index", ["esnext.observable", "esnext.symbol.observable", "es.object.to-string"].concat(_toConsumableArray(CommonIteratorsWithTag$1))),
      Promise: define$2("promise/index", PromiseDependencies$2),
      RangeError: define$2(null, ErrorDependencies$1),
      ReferenceError: define$2(null, ErrorDependencies$1),
      Reflect: define$2(null, ["es.reflect.to-string-tag", "es.object.to-string"]),
      RegExp: define$2(null, ["es.regexp.constructor", "es.regexp.dot-all", "es.regexp.exec", "es.regexp.sticky", "es.regexp.to-string"]),
      Set: define$2("set/index", SetDependencies$1),
      Symbol: define$2("symbol/index", SymbolDependencies$1),
      SyntaxError: define$2(null, ErrorDependencies$1),
      TypeError: define$2(null, ErrorDependencies$1),
      URIError: define$2(null, ErrorDependencies$1),
      URL: define$2("url/index", ["web.url"].concat(_toConsumableArray(URLSearchParamsDependencies$1))),
      URLSearchParams: define$2("url-search-params/index", URLSearchParamsDependencies$1),
      WeakMap: define$2("weak-map/index", WeakMapDependencies$1),
      WeakSet: define$2("weak-set/index", WeakSetDependencies$1),
      atob: define$2("atob", ["web.atob"].concat(DOMExceptionDependencies$1)),
      btoa: define$2("btoa", ["web.btoa"].concat(DOMExceptionDependencies$1)),
      clearImmediate: define$2("clear-immediate", ["web.immediate"]),
      compositeKey: define$2("composite-key", ["esnext.composite-key"]),
      compositeSymbol: define$2("composite-symbol", ["esnext.composite-symbol"]),
      escape: define$2("escape", ["es.escape"]),
      fetch: define$2(null, PromiseDependencies$2),
      globalThis: define$2("global-this", ["es.global-this"]),
      parseFloat: define$2("parse-float", ["es.parse-float"]),
      parseInt: define$2("parse-int", ["es.parse-int"]),
      queueMicrotask: define$2("queue-microtask", ["web.queue-microtask"]),
      setImmediate: define$2("set-immediate", ["web.immediate"]),
      setInterval: define$2("set-interval", ["web.timers"]),
      setTimeout: define$2("set-timeout", ["web.timers"]),
      structuredClone: define$2("structured-clone", ["web.structured-clone"].concat(DOMExceptionDependencies$1, ["es.array.iterator", "es.object.keys", "es.object.to-string", "es.map", "es.set"])),
      unescape: define$2("unescape", ["es.unescape"])
    };
    var StaticProperties$2 = {
      AsyncIterator: {
        from: define$2("async-iterator/from", ["esnext.async-iterator.from"].concat(_toConsumableArray(AsyncIteratorDependencies$1), AsyncIteratorProblemMethods$1, _toConsumableArray(CommonIterators$2)))
      },
      Array: {
        from: define$2("array/from", ["es.array.from", "es.string.iterator"]),
        fromAsync: define$2("array/from-async", ["esnext.array.from-async"].concat(_toConsumableArray(PromiseDependenciesWithIterators$1))),
        isArray: define$2("array/is-array", ["es.array.is-array"]),
        isTemplateObject: define$2("array/is-template-object", ["esnext.array.is-template-object"]),
        of: define$2("array/of", ["es.array.of"])
      },
      ArrayBuffer: {
        isView: define$2(null, ["es.array-buffer.is-view"])
      },
      BigInt: {
        range: define$2("bigint/range", ["esnext.bigint.range", "es.object.to-string"])
      },
      Date: {
        now: define$2("date/now", ["es.date.now"])
      },
      Function: {
        isCallable: define$2("function/is-callable", ["esnext.function.is-callable"]),
        isConstructor: define$2("function/is-constructor", ["esnext.function.is-constructor"])
      },
      Iterator: {
        from: define$2("iterator/from", ["esnext.iterator.from"].concat(IteratorDependencies$1, _toConsumableArray(CommonIterators$2)))
      },
      JSON: {
        stringify: define$2("json/stringify", ["es.json.stringify"], "es.symbol")
      },
      Math: {
        DEG_PER_RAD: define$2("math/deg-per-rad", ["esnext.math.deg-per-rad"]),
        RAD_PER_DEG: define$2("math/rad-per-deg", ["esnext.math.rad-per-deg"]),
        acosh: define$2("math/acosh", ["es.math.acosh"]),
        asinh: define$2("math/asinh", ["es.math.asinh"]),
        atanh: define$2("math/atanh", ["es.math.atanh"]),
        cbrt: define$2("math/cbrt", ["es.math.cbrt"]),
        clamp: define$2("math/clamp", ["esnext.math.clamp"]),
        clz32: define$2("math/clz32", ["es.math.clz32"]),
        cosh: define$2("math/cosh", ["es.math.cosh"]),
        degrees: define$2("math/degrees", ["esnext.math.degrees"]),
        expm1: define$2("math/expm1", ["es.math.expm1"]),
        fround: define$2("math/fround", ["es.math.fround"]),
        fscale: define$2("math/fscale", ["esnext.math.fscale"]),
        hypot: define$2("math/hypot", ["es.math.hypot"]),
        iaddh: define$2("math/iaddh", ["esnext.math.iaddh"]),
        imul: define$2("math/imul", ["es.math.imul"]),
        imulh: define$2("math/imulh", ["esnext.math.imulh"]),
        isubh: define$2("math/isubh", ["esnext.math.isubh"]),
        log10: define$2("math/log10", ["es.math.log10"]),
        log1p: define$2("math/log1p", ["es.math.log1p"]),
        log2: define$2("math/log2", ["es.math.log2"]),
        radians: define$2("math/radians", ["esnext.math.radians"]),
        scale: define$2("math/scale", ["esnext.math.scale"]),
        seededPRNG: define$2("math/seeded-prng", ["esnext.math.seeded-prng"]),
        sign: define$2("math/sign", ["es.math.sign"]),
        signbit: define$2("math/signbit", ["esnext.math.signbit"]),
        sinh: define$2("math/sinh", ["es.math.sinh"]),
        tanh: define$2("math/tanh", ["es.math.tanh"]),
        trunc: define$2("math/trunc", ["es.math.trunc"]),
        umulh: define$2("math/umulh", ["esnext.math.umulh"])
      },
      Map: {
        from: define$2(null, ["esnext.map.from"].concat(_toConsumableArray(MapDependencies$1))),
        groupBy: define$2(null, ["esnext.map.group-by"].concat(_toConsumableArray(MapDependencies$1))),
        keyBy: define$2(null, ["esnext.map.key-by"].concat(_toConsumableArray(MapDependencies$1))),
        of: define$2(null, ["esnext.map.of"].concat(_toConsumableArray(MapDependencies$1)))
      },
      Number: {
        EPSILON: define$2("number/epsilon", ["es.number.epsilon"]),
        MAX_SAFE_INTEGER: define$2("number/max-safe-integer", ["es.number.max-safe-integer"]),
        MIN_SAFE_INTEGER: define$2("number/min-safe-integer", ["es.number.min-safe-integer"]),
        fromString: define$2("number/from-string", ["esnext.number.from-string"]),
        isFinite: define$2("number/is-finite", ["es.number.is-finite"]),
        isInteger: define$2("number/is-integer", ["es.number.is-integer"]),
        isNaN: define$2("number/is-nan", ["es.number.is-nan"]),
        isSafeInteger: define$2("number/is-safe-integer", ["es.number.is-safe-integer"]),
        parseFloat: define$2("number/parse-float", ["es.number.parse-float"]),
        parseInt: define$2("number/parse-int", ["es.number.parse-int"]),
        range: define$2("number/range", ["esnext.number.range", "es.object.to-string"])
      },
      Object: {
        assign: define$2("object/assign", ["es.object.assign"]),
        create: define$2("object/create", ["es.object.create"]),
        defineProperties: define$2("object/define-properties", ["es.object.define-properties"]),
        defineProperty: define$2("object/define-property", ["es.object.define-property"]),
        entries: define$2("object/entries", ["es.object.entries"]),
        freeze: define$2("object/freeze", ["es.object.freeze"]),
        fromEntries: define$2("object/from-entries", ["es.object.from-entries", "es.array.iterator"]),
        getOwnPropertyDescriptor: define$2("object/get-own-property-descriptor", ["es.object.get-own-property-descriptor"]),
        getOwnPropertyDescriptors: define$2("object/get-own-property-descriptors", ["es.object.get-own-property-descriptors"]),
        getOwnPropertyNames: define$2("object/get-own-property-names", ["es.object.get-own-property-names"]),
        getOwnPropertySymbols: define$2("object/get-own-property-symbols", ["es.symbol"]),
        getPrototypeOf: define$2("object/get-prototype-of", ["es.object.get-prototype-of"]),
        hasOwn: define$2("object/has-own", ["es.object.has-own"]),
        is: define$2("object/is", ["es.object.is"]),
        isExtensible: define$2("object/is-extensible", ["es.object.is-extensible"]),
        isFrozen: define$2("object/is-frozen", ["es.object.is-frozen"]),
        isSealed: define$2("object/is-sealed", ["es.object.is-sealed"]),
        keys: define$2("object/keys", ["es.object.keys"]),
        preventExtensions: define$2("object/prevent-extensions", ["es.object.prevent-extensions"]),
        seal: define$2("object/seal", ["es.object.seal"]),
        setPrototypeOf: define$2("object/set-prototype-of", ["es.object.set-prototype-of"]),
        values: define$2("object/values", ["es.object.values"])
      },
      Promise: {
        all: define$2(null, PromiseDependenciesWithIterators$1),
        allSettled: define$2(null, ["es.promise.all-settled"].concat(_toConsumableArray(PromiseDependenciesWithIterators$1))),
        any: define$2(null, ["es.promise.any", "es.aggregate-error"].concat(_toConsumableArray(PromiseDependenciesWithIterators$1))),
        race: define$2(null, PromiseDependenciesWithIterators$1),
        "try": define$2(null, ["esnext.promise.try"].concat(_toConsumableArray(PromiseDependenciesWithIterators$1)))
      },
      Reflect: {
        apply: define$2("reflect/apply", ["es.reflect.apply"]),
        construct: define$2("reflect/construct", ["es.reflect.construct"]),
        defineMetadata: define$2("reflect/define-metadata", ["esnext.reflect.define-metadata"]),
        defineProperty: define$2("reflect/define-property", ["es.reflect.define-property"]),
        deleteMetadata: define$2("reflect/delete-metadata", ["esnext.reflect.delete-metadata"]),
        deleteProperty: define$2("reflect/delete-property", ["es.reflect.delete-property"]),
        get: define$2("reflect/get", ["es.reflect.get"]),
        getMetadata: define$2("reflect/get-metadata", ["esnext.reflect.get-metadata"]),
        getMetadataKeys: define$2("reflect/get-metadata-keys", ["esnext.reflect.get-metadata-keys"]),
        getOwnMetadata: define$2("reflect/get-own-metadata", ["esnext.reflect.get-own-metadata"]),
        getOwnMetadataKeys: define$2("reflect/get-own-metadata-keys", ["esnext.reflect.get-own-metadata-keys"]),
        getOwnPropertyDescriptor: define$2("reflect/get-own-property-descriptor", ["es.reflect.get-own-property-descriptor"]),
        getPrototypeOf: define$2("reflect/get-prototype-of", ["es.reflect.get-prototype-of"]),
        has: define$2("reflect/has", ["es.reflect.has"]),
        hasMetadata: define$2("reflect/has-metadata", ["esnext.reflect.has-metadata"]),
        hasOwnMetadata: define$2("reflect/has-own-metadata", ["esnext.reflect.has-own-metadata"]),
        isExtensible: define$2("reflect/is-extensible", ["es.reflect.is-extensible"]),
        metadata: define$2("reflect/metadata", ["esnext.reflect.metadata"]),
        ownKeys: define$2("reflect/own-keys", ["es.reflect.own-keys"]),
        preventExtensions: define$2("reflect/prevent-extensions", ["es.reflect.prevent-extensions"]),
        set: define$2("reflect/set", ["es.reflect.set"]),
        setPrototypeOf: define$2("reflect/set-prototype-of", ["es.reflect.set-prototype-of"])
      },
      Set: {
        from: define$2(null, ["esnext.set.from"].concat(_toConsumableArray(SetDependencies$1))),
        of: define$2(null, ["esnext.set.of"].concat(_toConsumableArray(SetDependencies$1)))
      },
      String: {
        cooked: define$2("string/cooked", ["esnext.string.cooked"]),
        fromCodePoint: define$2("string/from-code-point", ["es.string.from-code-point"]),
        raw: define$2("string/raw", ["es.string.raw"])
      },
      Symbol: {
        asyncDispose: define$2("symbol/async-dispose", ["esnext.symbol.async-dispose"]),
        asyncIterator: define$2("symbol/async-iterator", ["es.symbol.async-iterator"]),
        dispose: define$2("symbol/dispose", ["esnext.symbol.dispose"]),
        "for": define$2("symbol/for", [], "es.symbol"),
        hasInstance: define$2("symbol/has-instance", ["es.symbol.has-instance", "es.function.has-instance"]),
        isConcatSpreadable: define$2("symbol/is-concat-spreadable", ["es.symbol.is-concat-spreadable", "es.array.concat"]),
        iterator: define$2("symbol/iterator", ["es.symbol.iterator"].concat(_toConsumableArray(CommonIteratorsWithTag$1))),
        keyFor: define$2("symbol/key-for", [], "es.symbol"),
        match: define$2("symbol/match", ["es.symbol.match", "es.string.match"]),
        matcher: define$2("symbol/matcher", ["esnext.symbol.matcher"]),
        matchAll: define$2("symbol/match-all", ["es.symbol.match-all", "es.string.match-all"]),
        metadata: define$2("symbol/metadata", ["esnext.symbol.metadata"]),
        metadataKey: define$2("symbol/metadata-key", ["esnext.symbol.metadata-key"]),
        observable: define$2("symbol/observable", ["esnext.symbol.observable"]),
        patternMatch: define$2("symbol/pattern-match", ["esnext.symbol.pattern-match"]),
        replace: define$2("symbol/replace", ["es.symbol.replace", "es.string.replace"]),
        search: define$2("symbol/search", ["es.symbol.search", "es.string.search"]),
        species: define$2("symbol/species", ["es.symbol.species", "es.array.species"]),
        split: define$2("symbol/split", ["es.symbol.split", "es.string.split"]),
        toPrimitive: define$2("symbol/to-primitive", ["es.symbol.to-primitive", "es.date.to-primitive"]),
        toStringTag: define$2("symbol/to-string-tag", ["es.symbol.to-string-tag", "es.object.to-string", "es.math.to-string-tag", "es.json.to-string-tag"]),
        unscopables: define$2("symbol/unscopables", ["es.symbol.unscopables"])
      },
      WeakMap: {
        from: define$2(null, ["esnext.weak-map.from"].concat(_toConsumableArray(WeakMapDependencies$1))),
        of: define$2(null, ["esnext.weak-map.of"].concat(_toConsumableArray(WeakMapDependencies$1)))
      },
      WeakSet: {
        from: define$2(null, ["esnext.weak-set.from"].concat(_toConsumableArray(WeakSetDependencies$1))),
        of: define$2(null, ["esnext.weak-set.of"].concat(_toConsumableArray(WeakSetDependencies$1)))
      },
      Int8Array: TypedArrayStaticMethods$1,
      Uint8Array: TypedArrayStaticMethods$1,
      Uint8ClampedArray: TypedArrayStaticMethods$1,
      Int16Array: TypedArrayStaticMethods$1,
      Uint16Array: TypedArrayStaticMethods$1,
      Int32Array: TypedArrayStaticMethods$1,
      Uint32Array: TypedArrayStaticMethods$1,
      Float32Array: TypedArrayStaticMethods$1,
      Float64Array: TypedArrayStaticMethods$1,
      WebAssembly: {
        CompileError: define$2(null, ErrorDependencies$1),
        LinkError: define$2(null, ErrorDependencies$1),
        RuntimeError: define$2(null, ErrorDependencies$1)
      }
    };
    var InstanceProperties$2 = (_InstanceProperties$1 = {
      asIndexedPairs: define$2("instance/asIndexedPairs", ["esnext.async-iterator.as-indexed-pairs"].concat(_toConsumableArray(AsyncIteratorDependencies$1), ["esnext.iterator.as-indexed-pairs"], IteratorDependencies$1)),
      at: define$2("instance/at", ["esnext.string.at", "es.string.at-alternative", "es.array.at"]),
      anchor: define$2(null, ["es.string.anchor"]),
      big: define$2(null, ["es.string.big"]),
      bind: define$2("instance/bind", ["es.function.bind"]),
      blink: define$2(null, ["es.string.blink"]),
      bold: define$2(null, ["es.string.bold"]),
      codePointAt: define$2("instance/code-point-at", ["es.string.code-point-at"]),
      codePoints: define$2("instance/code-points", ["esnext.string.code-points"]),
      concat: define$2("instance/concat", ["es.array.concat"], undefined, ["String"]),
      copyWithin: define$2("instance/copy-within", ["es.array.copy-within"]),
      description: define$2(null, ["es.symbol", "es.symbol.description"]),
      dotAll: define$2("instance/dot-all", ["es.regexp.dot-all"]),
      drop: define$2("instance/drop", ["esnext.async-iterator.drop"].concat(_toConsumableArray(AsyncIteratorDependencies$1), ["esnext.iterator.drop"], IteratorDependencies$1)),
      emplace: define$2("instance/emplace", ["esnext.map.emplace", "esnext.weak-map.emplace"]),
      endsWith: define$2("instance/ends-with", ["es.string.ends-with"]),
      entries: define$2("instance/entries", ArrayNatureIteratorsWithTag$1),
      every: define$2("instance/every", ["es.array.every", "esnext.async-iterator.every", "esnext.iterator.every"].concat(IteratorDependencies$1)),
      exec: define$2(null, ["es.regexp.exec"]),
      fill: define$2("instance/fill", ["es.array.fill"]),
      filter: define$2("instance/filter", ["es.array.filter", "esnext.async-iterator.filter", "esnext.iterator.filter"].concat(IteratorDependencies$1)),
      filterReject: define$2("instance/filterReject", ["esnext.array.filter-reject"]),
      "finally": define$2(null, ["es.promise.finally"].concat(PromiseDependencies$2)),
      find: define$2("instance/find", ["es.array.find", "esnext.async-iterator.find", "esnext.iterator.find"].concat(IteratorDependencies$1)),
      findIndex: define$2("instance/find-index", ["es.array.find-index"]),
      findLast: define$2("instance/find-last", ["es.array.find-last"]),
      findLastIndex: define$2("instance/find-last-index", ["es.array.find-last-index"]),
      fixed: define$2(null, ["es.string.fixed"]),
      flags: define$2("instance/flags", ["es.regexp.flags"]),
      flatMap: define$2("instance/flat-map", ["es.array.flat-map", "es.array.unscopables.flat-map", "esnext.async-iterator.flat-map", "esnext.iterator.flat-map"].concat(IteratorDependencies$1)),
      flat: define$2("instance/flat", ["es.array.flat", "es.array.unscopables.flat"]),
      getYear: define$2(null, ["es.date.get-year"]),
      group: define$2("instance/group", ["esnext.array.group"]),
      groupBy: define$2("instance/group-by", ["esnext.array.group-by"]),
      groupByToMap: define$2("instance/group-by-to-map", ["esnext.array.group-by-to-map", "es.map", "es.object.to-string"]),
      groupToMap: define$2("instance/group-to-map", ["esnext.array.group-to-map", "es.map", "es.object.to-string"]),
      fontcolor: define$2(null, ["es.string.fontcolor"]),
      fontsize: define$2(null, ["es.string.fontsize"]),
      forEach: define$2("instance/for-each", ["es.array.for-each", "esnext.async-iterator.for-each", "esnext.iterator.for-each"].concat(IteratorDependencies$1, ["web.dom-collections.for-each"])),
      includes: define$2("instance/includes", ["es.array.includes", "es.string.includes"]),
      indexed: define$2("instance/indexed", ["esnext.async-iterator.indexed"].concat(_toConsumableArray(AsyncIteratorDependencies$1), ["esnext.iterator.indexed"], IteratorDependencies$1)),
      indexOf: define$2("instance/index-of", ["es.array.index-of"]),
      italic: define$2(null, ["es.string.italics"]),
      join: define$2(null, ["es.array.join"]),
      keys: define$2("instance/keys", ArrayNatureIteratorsWithTag$1),
      lastIndex: define$2(null, ["esnext.array.last-index"]),
      lastIndexOf: define$2("instance/last-index-of", ["es.array.last-index-of"]),
      lastItem: define$2(null, ["esnext.array.last-item"]),
      link: define$2(null, ["es.string.link"]),
      map: define$2("instance/map", ["es.array.map", "esnext.async-iterator.map", "esnext.iterator.map"]),
      match: define$2(null, ["es.string.match", "es.regexp.exec"]),
      matchAll: define$2("instance/match-all", ["es.string.match-all", "es.regexp.exec"]),
      name: define$2(null, ["es.function.name"]),
      padEnd: define$2("instance/pad-end", ["es.string.pad-end"]),
      padStart: define$2("instance/pad-start", ["es.string.pad-start"]),
      push: define$2("instance/push", ["es.array.push"]),
      reduce: define$2("instance/reduce", ["es.array.reduce", "esnext.async-iterator.reduce", "esnext.iterator.reduce"].concat(IteratorDependencies$1)),
      reduceRight: define$2("instance/reduce-right", ["es.array.reduce-right"]),
      repeat: define$2("instance/repeat", ["es.string.repeat"]),
      replace: define$2(null, ["es.string.replace", "es.regexp.exec"]),
      replaceAll: define$2("instance/replace-all", ["es.string.replace-all", "es.string.replace", "es.regexp.exec"]),
      reverse: define$2("instance/reverse", ["es.array.reverse"]),
      search: define$2(null, ["es.string.search", "es.regexp.exec"]),
      setYear: define$2(null, ["es.date.set-year"]),
      slice: define$2("instance/slice", ["es.array.slice"]),
      small: define$2(null, ["es.string.small"]),
      some: define$2("instance/some", ["es.array.some", "esnext.async-iterator.some", "esnext.iterator.some"].concat(IteratorDependencies$1)),
      sort: define$2("instance/sort", ["es.array.sort"]),
      splice: define$2("instance/splice", ["es.array.splice"]),
      split: define$2(null, ["es.string.split", "es.regexp.exec"]),
      startsWith: define$2("instance/starts-with", ["es.string.starts-with"]),
      sticky: define$2("instance/sticky", ["es.regexp.sticky"]),
      strike: define$2(null, ["es.string.strike"]),
      sub: define$2(null, ["es.string.sub"]),
      substr: define$2(null, ["es.string.substr"]),
      sup: define$2(null, ["es.string.sup"]),
      take: define$2("instance/take", ["esnext.async-iterator.take"].concat(_toConsumableArray(AsyncIteratorDependencies$1), ["esnext.iterator.take"], IteratorDependencies$1)),
      test: define$2(null, ["es.regexp.test", "es.regexp.exec"]),
      toArray: define$2("instance/to-array", ["esnext.async-iterator.to-array"].concat(_toConsumableArray(AsyncIteratorDependencies$1), ["esnext.iterator.to-array"], IteratorDependencies$1)),
      toAsync: define$2(null, ["esnext.iterator.to-async"].concat(IteratorDependencies$1, _toConsumableArray(AsyncIteratorDependencies$1), AsyncIteratorProblemMethods$1)),
      toExponential: define$2(null, ["es.number.to-exponential"]),
      toFixed: define$2(null, ["es.number.to-fixed"]),
      toGMTString: define$2(null, ["es.date.to-gmt-string"]),
      toISOString: define$2(null, ["es.date.to-iso-string"]),
      toJSON: define$2(null, ["es.date.to-json", "web.url.to-json"]),
      toPrecision: define$2(null, ["es.number.to-precision"]),
      toReversed: define$2("instance/to-reversed", ["esnext.array.to-reversed"]),
      toSorted: define$2("instance/to-sorted", ["esnext.array.to-sorted", "es.array.sort"]),
      toSpliced: define$2("instance/to-spliced", ["esnext.array.to-spliced"]),
      toString: define$2(null, ["es.object.to-string", "es.error.to-string", "es.date.to-string", "es.regexp.to-string"]),
      trim: define$2("instance/trim", ["es.string.trim"]),
      trimEnd: define$2("instance/trim-end", ["es.string.trim-end"]),
      trimLeft: define$2("instance/trim-left", ["es.string.trim-start"]),
      trimRight: define$2("instance/trim-right", ["es.string.trim-end"]),
      trimStart: define$2("instance/trim-start", ["es.string.trim-start"]),
      uniqueBy: define$2("instance/unique-by", ["esnext.array.unique-by", "es.map"]),
      unshift: define$2("instance/unshift", ["es.array.unshift"]),
      unThis: define$2("instance/un-this", ["esnext.function.un-this"]),
      values: define$2("instance/values", ArrayNatureIteratorsWithTag$1),
      "with": define$2("instance/with", ["esnext.array.with"]),
      __defineGetter__: define$2(null, ["es.object.define-getter"]),
      __defineSetter__: define$2(null, ["es.object.define-setter"]),
      __lookupGetter__: define$2(null, ["es.object.lookup-getter"]),
      __lookupSetter__: define$2(null, ["es.object.lookup-setter"])
    }, _InstanceProperties$1["__proto__"] = define$2(null, ["es.object.proto"]), _InstanceProperties$1);
    var CommonInstanceDependencies$1 = new Set(["es.object.to-string", "es.object.define-getter", "es.object.define-setter", "es.object.lookup-getter", "es.object.lookup-setter", "es.regexp.exec"]);
    var _ref$3 = undefined || _babel,
      t$2$1 = _ref$3.types;
    function canSkipPolyfill$1(desc, path) {
      var node = path.node,
        parent = path.parent;
      switch (desc.name) {
        case "es.string.split":
          {
            if (!t$2$1.isCallExpression(parent, {
              callee: node
            })) return false;
            if (parent.arguments.length < 1) return true;
            var splitter = parent.arguments[0];
            return t$2$1.isStringLiteral(splitter) || t$2$1.isTemplateLiteral(splitter);
          }
      }
    }
    var _ref2$1 = undefined || _babel,
      t$1$2 = _ref2$1.types;
    function callMethod$1(path, id) {
      var object = path.node.object;
      var context1, context2;
      if (t$1$2.isIdentifier(object)) {
        context1 = object;
        context2 = t$1$2.cloneNode(object);
      } else {
        context1 = path.scope.generateDeclaredUidIdentifier("context");
        context2 = t$1$2.assignmentExpression("=", t$1$2.cloneNode(context1), object);
      }
      path.replaceWith(t$1$2.memberExpression(t$1$2.callExpression(id, [context2]), t$1$2.identifier("call")));
      path.parentPath.unshiftContainer("arguments", context1);
    }
    function isCoreJSSource$1(source) {
      if (typeof source === "string") {
        source = source.replace(/\\/g, "/").replace(/(\/(index)?)?(\.js)?$/i, "").toLowerCase();
      }
      return Object.prototype.hasOwnProperty.call(entries$1, source) && entries$1[source];
    }
    function coreJSModule$1(name) {
      return "core-js/modules/" + name + ".js";
    }
    function coreJSPureHelper$1(name, useBabelRuntime, ext) {
      return useBabelRuntime ? useBabelRuntime + "/core-js/" + name + ext : "core-js-pure/features/" + name + ".js";
    }
    var _ref3$1 = undefined || _babel,
      t$5 = _ref3$1.types;
    var runtimeCompat$4 = "#__secret_key__@babel/runtime__compatibility";
    var esnextFallback$1 = function esnextFallback(name, cb) {
      if (cb(name)) return true;
      if (!name.startsWith("es.")) return false;
      var fallback = "esnext." + name.slice(3);
      if (!data$1[fallback]) return false;
      return cb(fallback);
    };
    var index$4 = definePolyfillProvider$1(function (_ref4, _ref5) {
      var getUtils = _ref4.getUtils,
        method = _ref4.method,
        shouldInjectPolyfill = _ref4.shouldInjectPolyfill,
        createMetaResolver = _ref4.createMetaResolver,
        debug = _ref4.debug,
        babel = _ref4.babel;
      var _ref5$version = _ref5.version,
        version = _ref5$version === void 0 ? 3 : _ref5$version,
        proposals = _ref5.proposals,
        shippedProposals = _ref5.shippedProposals,
        _ref5$runtimeCompat = _ref5[runtimeCompat$4],
        _ref5$runtimeCompat2 = _ref5$runtimeCompat === void 0 ? {
          useBabelRuntime: ""
        } : _ref5$runtimeCompat,
        useBabelRuntime = _ref5$runtimeCompat2.useBabelRuntime,
        _ref5$runtimeCompat2$ = _ref5$runtimeCompat2.ext,
        ext = _ref5$runtimeCompat2$ === void 0 ? ".js" : _ref5$runtimeCompat2$;
      var isWebpack = babel.caller(function (caller) {
        return (caller == null ? void 0 : caller.name) === "babel-loader";
      });
      var resolve = createMetaResolver({
        global: BuiltIns$2,
        "static": StaticProperties$2,
        instance: InstanceProperties$2
      });
      var available = new Set(getModulesListForTargetVersion$1(version));
      function getCoreJSPureBase(useProposalBase) {
        return useBabelRuntime ? useProposalBase ? useBabelRuntime + "/core-js" : useBabelRuntime + "/core-js-stable" : useProposalBase ? "core-js-pure/features" : "core-js-pure/stable";
      }
      function maybeInjectGlobalImpl(name, utils) {
        if (shouldInjectPolyfill(name)) {
          debug(name);
          utils.injectGlobalImport(coreJSModule$1(name));
          return true;
        }
        return false;
      }
      function maybeInjectGlobal(names, utils, fallback) {
        if (fallback === void 0) {
          fallback = true;
        }
        for (var _iterator = _createForOfIteratorHelperLoose(names), _step; !(_step = _iterator()).done;) {
          var name = _step.value;
          if (fallback) {
            esnextFallback$1(name, function (name) {
              return maybeInjectGlobalImpl(name, utils);
            });
          } else {
            maybeInjectGlobalImpl(name, utils);
          }
        }
      }
      function maybeInjectPure(desc, hint, utils, object) {
        if (desc.pure && !(object && desc.exclude && desc.exclude.includes(object)) && esnextFallback$1(desc.name, shouldInjectPolyfill)) {
          var name = desc.name;
          var useProposalBase = false;
          if (proposals || shippedProposals && name.startsWith("esnext.")) {
            useProposalBase = true;
          } else if (name.startsWith("es.") && !available.has(name)) {
            useProposalBase = true;
          }
          var coreJSPureBase = getCoreJSPureBase(useProposalBase);
          return utils.injectDefaultImport(coreJSPureBase + "/" + desc.pure + ext, hint);
        }
      }
      function isFeatureStable(name) {
        if (name.startsWith("esnext.")) {
          var esName = "es." + name.slice(7);
          return esName in data$1;
        }
        return true;
      }
      return {
        name: "corejs3",
        polyfills: data$1,
        filterPolyfills: function filterPolyfills(name) {
          if (!available.has(name)) return false;
          if (proposals || method === "entry-global") return true;
          if (shippedProposals && corejs3ShippedProposalsList$1.has(name)) {
            return true;
          }
          return isFeatureStable(name);
        },
        entryGlobal: function entryGlobal(meta, utils, path) {
          if (meta.kind !== "import") return;
          var modules = isCoreJSSource$1(meta.source);
          if (!modules) return;
          if (modules.length === 1 && meta.source === coreJSModule$1(modules[0]) && shouldInjectPolyfill(modules[0])) {
            debug(null);
            return;
          }
          var modulesSet = new Set(modules);
          var filteredModules = modules.filter(function (module) {
            if (!module.startsWith("esnext.")) return true;
            var stable = module.replace("esnext.", "es.");
            if (modulesSet.has(stable) && shouldInjectPolyfill(stable)) {
              return false;
            }
            return true;
          });
          maybeInjectGlobal(filteredModules, utils, false);
          path.remove();
        },
        usageGlobal: function usageGlobal(meta, utils, path) {
          var resolved = resolve(meta);
          if (!resolved) return;
          if (canSkipPolyfill$1(resolved.desc, path)) return;
          var deps = resolved.desc.global;
          if (resolved.kind !== "global" && "object" in meta && meta.object && meta.placement === "prototype") {
            var low = meta.object.toLowerCase();
            deps = deps.filter(function (m) {
              return m.includes(low) || CommonInstanceDependencies$1.has(m);
            });
          }
          maybeInjectGlobal(deps, utils);
        },
        usagePure: function usagePure(meta, utils, path) {
          if (meta.kind === "in") {
            if (meta.key === "Symbol.iterator") {
              path.replaceWith(t$5.callExpression(utils.injectDefaultImport(coreJSPureHelper$1("is-iterable", useBabelRuntime, ext), "isIterable"), [path.node.right]));
            }
            return;
          }
          if (path.parentPath.isUnaryExpression({
            operator: "delete"
          })) return;
          if (meta.kind === "property") {
            if (!path.isMemberExpression()) return;
            if (!path.isReferenced()) return;
            if (path.parentPath.isUpdateExpression()) return;
            if (t$5.isSuper(path.node.object)) {
              return;
            }
            if (meta.key === "Symbol.iterator") {
              if (!shouldInjectPolyfill("es.symbol.iterator")) return;
              var parent = path.parent,
                node = path.node;
              if (t$5.isCallExpression(parent, {
                callee: node
              })) {
                if (parent.arguments.length === 0) {
                  path.parentPath.replaceWith(t$5.callExpression(utils.injectDefaultImport(coreJSPureHelper$1("get-iterator", useBabelRuntime, ext), "getIterator"), [node.object]));
                  path.skip();
                } else {
                  callMethod$1(path, utils.injectDefaultImport(coreJSPureHelper$1("get-iterator-method", useBabelRuntime, ext), "getIteratorMethod"));
                }
              } else {
                path.replaceWith(t$5.callExpression(utils.injectDefaultImport(coreJSPureHelper$1("get-iterator-method", useBabelRuntime, ext), "getIteratorMethod"), [path.node.object]));
              }
              return;
            }
          }
          var resolved = resolve(meta);
          if (!resolved) return;
          if (canSkipPolyfill$1(resolved.desc, path)) return;
          if (useBabelRuntime && resolved.desc.pure && resolved.desc.pure.slice(-6) === "/index") {
            resolved = Object.assign(Object.assign({}, resolved), {}, {
              desc: Object.assign(Object.assign({}, resolved.desc), {}, {
                pure: resolved.desc.pure.slice(0, -6)
              })
            });
          }
          if (resolved.kind === "global") {
            var id = maybeInjectPure(resolved.desc, resolved.name, utils);
            if (id) path.replaceWith(id);
          } else if (resolved.kind === "static") {
            var _id = maybeInjectPure(resolved.desc, resolved.name, utils, meta.object);
            if (_id) path.replaceWith(_id);
          } else if (resolved.kind === "instance") {
            var _id2 = maybeInjectPure(resolved.desc, resolved.name + "InstanceProperty", utils, meta.object);
            if (!_id2) return;
            var _node = path.node;
            if (t$5.isCallExpression(path.parent, {
              callee: _node
            })) {
              callMethod$1(path, _id2);
            } else {
              path.replaceWith(t$5.callExpression(_id2, [_node.object]));
            }
          }
        },
        visitor: method === "usage-global" && {
          CallExpression: function CallExpression(path) {
            if (path.get("callee").isImport()) {
              var utils = getUtils(path);
              if (isWebpack) {
                maybeInjectGlobal(PromiseDependenciesWithIterators$1, utils);
              } else {
                maybeInjectGlobal(PromiseDependencies$2, utils);
              }
            }
          },
          Function: function Function(path) {
            if (path.node.async) {
              maybeInjectGlobal(PromiseDependencies$2, getUtils(path));
            }
          },
          "ForOfStatement|ArrayPattern": function ForOfStatementArrayPattern(path) {
            maybeInjectGlobal(CommonIterators$2, getUtils(path));
          },
          SpreadElement: function SpreadElement(path) {
            if (!path.parentPath.isObjectExpression()) {
              maybeInjectGlobal(CommonIterators$2, getUtils(path));
            }
          },
          YieldExpression: function YieldExpression(path) {
            if (path.node.delegate) {
              maybeInjectGlobal(CommonIterators$2, getUtils(path));
            }
          }
        }
      };
    });
  
    var runtimeCompat$3 = "#__secret_key__@babel/runtime__compatibility";
    var index$3 = definePolyfillProvider$1(function (_ref, options) {
      var debug = _ref.debug,
        targets = _ref.targets,
        babel = _ref.babel;
      if (!shallowEqual$1(targets, babel.targets())) {
        throw new Error("This plugin does not use the targets option. Only preset-env's targets" + " or top-level targets need to be configured for this plugin to work." + " See https://github.com/babel/babel-polyfills/issues/36 for more" + " details.");
      }
      var _options$runtimeCompa = options[runtimeCompat$3],
        _options$runtimeCompa2 = _options$runtimeCompa === void 0 ? {
          useBabelRuntime: ""
        } : _options$runtimeCompa,
        useBabelRuntime = _options$runtimeCompa2.useBabelRuntime;
      var pureName = useBabelRuntime ? useBabelRuntime + "/regenerator" : "regenerator-runtime";
      return {
        name: "regenerator",
        polyfills: ["regenerator-runtime"],
        usageGlobal: function usageGlobal(meta, utils) {
          if (isRegenerator$1(meta)) {
            debug("regenerator-runtime");
            utils.injectGlobalImport("regenerator-runtime/runtime.js");
          }
        },
        usagePure: function usagePure(meta, utils, path) {
          if (isRegenerator$1(meta)) {
            path.replaceWith(utils.injectDefaultImport(pureName, "regenerator-runtime"));
          }
        }
      };
    });
    var isRegenerator$1 = function isRegenerator(meta) {
      return meta.kind === "global" && meta.name === "regeneratorRuntime";
    };
    function shallowEqual$1(obj1, obj2) {
      return JSON.stringify(obj1) === JSON.stringify(obj2);
    }
  
    var pluginCorejs2 = index$5["default"] || index$5;
    var pluginCorejs3 = index$4["default"] || index$4;
    var pluginRegenerator$1 = index$3["default"] || index$3;
    var pluginsCompat = "#__secret_key__@babel/runtime__compatibility";
    function supportsStaticESM$1(caller) {
      return !!(caller != null && caller.supportsStaticESM);
    }
    var transformRuntime = declare(function (api, options, dirname) {
      var _createCorejsPlugin, _createRegeneratorPlu, _createCorejsPlugin2, _createRegeneratorPlu2, _createRegeneratorPlu3;
      api.assertVersion(7);
      var corejs = options.corejs,
        _options$helpers = options.helpers,
        useRuntimeHelpers = _options$helpers === void 0 ? true : _options$helpers,
        _options$regenerator = options.regenerator,
        useRuntimeRegenerator = _options$regenerator === void 0 ? true : _options$regenerator,
        _options$useESModules = options.useESModules,
        useESModules = _options$useESModules === void 0 ? false : _options$useESModules,
        _options$version = options.version,
        runtimeVersion = _options$version === void 0 ? "7.0.0-beta.0" : _options$version,
        _options$absoluteRunt = options.absoluteRuntime,
        absoluteRuntime = _options$absoluteRunt === void 0 ? false : _options$absoluteRunt;
      var proposals = false;
      var rawVersion;
      if (typeof corejs === "object" && corejs !== null) {
        rawVersion = corejs.version;
        proposals = Boolean(corejs.proposals);
      } else {
        rawVersion = corejs;
      }
      var corejsVersion = rawVersion ? Number(rawVersion) : false;
      if (![false, 2, 3].includes(corejsVersion)) {
        throw new Error("The `core-js` version must be false, 2 or 3, but got " + JSON.stringify(rawVersion) + ".");
      }
      if (proposals && (!corejsVersion || corejsVersion < 3)) {
        throw new Error("The 'proposals' option is only supported when using 'corejs: 3'");
      }
      if (typeof useRuntimeRegenerator !== "boolean") {
        throw new Error("The 'regenerator' option must be undefined, or a boolean.");
      }
      if (typeof useRuntimeHelpers !== "boolean") {
        throw new Error("The 'helpers' option must be undefined, or a boolean.");
      }
      if (typeof useESModules !== "boolean" && useESModules !== "auto") {
        throw new Error("The 'useESModules' option must be undefined, or a boolean, or 'auto'.");
      }
      if (typeof absoluteRuntime !== "boolean" && typeof absoluteRuntime !== "string") {
        throw new Error("The 'absoluteRuntime' option must be undefined, a boolean, or a string.");
      }
      if (typeof runtimeVersion !== "string") {
        throw new Error("The 'version' option must be a version string.");
      }
      {
        var DUAL_MODE_RUNTIME = "7.13.0";
        var supportsCJSDefault = hasMinVersion$2(DUAL_MODE_RUNTIME, runtimeVersion);
      }
      function has(obj, key) {
        return Object.prototype.hasOwnProperty.call(obj, key);
      }
      if (has(options, "useBuiltIns")) {
        if (options["useBuiltIns"]) {
          throw new Error("The 'useBuiltIns' option has been removed. The @babel/runtime " + "module now uses builtins by default.");
        } else {
          throw new Error("The 'useBuiltIns' option has been removed. Use the 'corejs'" + "option to polyfill with `core-js` via @babel/runtime.");
        }
      }
      if (has(options, "polyfill")) {
        if (options["polyfill"] === false) {
          throw new Error("The 'polyfill' option has been removed. The @babel/runtime " + "module now skips polyfilling by default.");
        } else {
          throw new Error("The 'polyfill' option has been removed. Use the 'corejs'" + "option to polyfill with `core-js` via @babel/runtime.");
        }
      }
      if (has(options, "moduleName")) {
        throw new Error("The 'moduleName' option has been removed. @babel/transform-runtime " + "no longer supports arbitrary runtimes. If you were using this to " + "set an absolute path for Babel's standard runtimes, please use the " + "'absoluteRuntime' option.");
      }
      var esModules = useESModules === "auto" ? api.caller(supportsStaticESM$1) : useESModules;
      var injectCoreJS2 = corejsVersion === 2;
      var injectCoreJS3 = corejsVersion === 3;
      var moduleName = injectCoreJS3 ? "@babel/runtime-corejs3" : injectCoreJS2 ? "@babel/runtime-corejs2" : "@babel/runtime";
      var HEADER_HELPERS = ["interopRequireWildcard", "interopRequireDefault"];
      var modulePath = getRuntimePath(moduleName, dirname, absoluteRuntime);
      function createCorejsPlugin(plugin, options, regeneratorPlugin) {
        return function (api, _, filename) {
          return Object.assign({}, plugin(api, options, filename), {
            inherits: regeneratorPlugin
          });
        };
      }
      function createRegeneratorPlugin(options) {
        if (!useRuntimeRegenerator) return undefined;
        return function (api, _, filename) {
          return pluginRegenerator$1(api, options, filename);
        };
      }
      return {
        name: "transform-runtime",
        inherits: injectCoreJS2 ? createCorejsPlugin(pluginCorejs2, (_createCorejsPlugin = {
          method: "usage-pure",
          absoluteImports: absoluteRuntime ? modulePath : false
        }, _createCorejsPlugin[pluginsCompat] = {
          runtimeVersion: runtimeVersion,
          useBabelRuntime: modulePath,
          ext: ""
        }, _createCorejsPlugin), createRegeneratorPlugin((_createRegeneratorPlu = {
          method: "usage-pure",
          absoluteImports: absoluteRuntime ? modulePath : false
        }, _createRegeneratorPlu[pluginsCompat] = {
          useBabelRuntime: modulePath
        }, _createRegeneratorPlu))) : injectCoreJS3 ? createCorejsPlugin(pluginCorejs3, (_createCorejsPlugin2 = {
          method: "usage-pure",
          version: 3,
          proposals: proposals,
          absoluteImports: absoluteRuntime ? modulePath : false
        }, _createCorejsPlugin2[pluginsCompat] = {
          useBabelRuntime: modulePath,
          ext: ""
        }, _createCorejsPlugin2), createRegeneratorPlugin((_createRegeneratorPlu2 = {
          method: "usage-pure",
          absoluteImports: absoluteRuntime ? modulePath : false
        }, _createRegeneratorPlu2[pluginsCompat] = {
          useBabelRuntime: modulePath
        }, _createRegeneratorPlu2))) : createRegeneratorPlugin((_createRegeneratorPlu3 = {
          method: "usage-pure",
          absoluteImports: absoluteRuntime ? modulePath : false
        }, _createRegeneratorPlu3[pluginsCompat] = {
          useBabelRuntime: modulePath
        }, _createRegeneratorPlu3)),
        pre: function pre(file) {
          if (!useRuntimeHelpers) return;
          file.set("helperGenerator", function (name) {
            {
              if (!(file.availableHelper != null && file.availableHelper(name, runtimeVersion))) {
                if (name === "regeneratorRuntime") {
                  return arrowFunctionExpression$4([], identifier$i("regeneratorRuntime"));
                }
                return;
              }
            }
            var isInteropHelper = HEADER_HELPERS.indexOf(name) !== -1;
            var blockHoist = isInteropHelper && !isModule(file.path) ? 4 : undefined;
            var helpersDir = esModules && file.path.node.sourceType === "module" ? "helpers/esm" : "helpers";
            var helperPath = modulePath + "/" + helpersDir + "/" + name;
            if (absoluteRuntime) helperPath = resolveFSPath();
            return addDefaultImport(helperPath, name, blockHoist, true);
          });
          var cache = new Map();
          function addDefaultImport(source, nameHint, blockHoist, isHelper) {
            if (isHelper === void 0) {
              isHelper = false;
            }
            var cacheKey = isModule(file.path);
            var key = source + ":" + nameHint + ":" + (cacheKey || "");
            var cached = cache.get(key);
            if (cached) {
              cached = cloneNode$j(cached);
            } else {
              cached = addDefault(file.path, source, {
                importedInterop: isHelper && supportsCJSDefault ? "compiled" : "uncompiled",
                nameHint: nameHint,
                blockHoist: blockHoist
              });
              cache.set(key, cached);
            }
            return cached;
          }
        }
      };
    });
  
    var _transformShorthandProperties = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "transform-shorthand-properties",
        visitor: {
          ObjectMethod: function ObjectMethod(path) {
            var node = path.node;
            if (node.kind === "method") {
              var func = functionExpression$2(null, node.params, node.body, node.generator, node.async);
              func.returnType = node.returnType;
              var computedKey = toComputedKey$2(node);
              if (isStringLiteral$6(computedKey, {
                value: "__proto__"
              })) {
                path.replaceWith(objectProperty$1(computedKey, func, true));
              } else {
                path.replaceWith(objectProperty$1(node.key, func, node.computed));
              }
            }
          },
          ObjectProperty: function ObjectProperty(path) {
            var node = path.node;
            if (node.shorthand) {
              var computedKey = toComputedKey$2(node);
              if (isStringLiteral$6(computedKey, {
                value: "__proto__"
              })) {
                path.replaceWith(objectProperty$1(computedKey, node.value, true));
              } else {
                node.shorthand = false;
              }
            }
          }
        }
      };
    });
  
    var _transformSpread = declare(function (api, options) {
      var _api$assumption, _options$allowArrayLi;
      api.assertVersion(7);
      var iterableIsArray = (_api$assumption = api.assumption("iterableIsArray")) != null ? _api$assumption : options.loose;
      var arrayLikeIsIterable = (_options$allowArrayLi = options.allowArrayLike) != null ? _options$allowArrayLi : api.assumption("arrayLikeIsIterable");
      function getSpreadLiteral(spread, scope) {
        if (iterableIsArray && !isIdentifier$j(spread.argument, {
          name: "arguments"
        })) {
          return spread.argument;
        } else {
          return scope.toArray(spread.argument, true, arrayLikeIsIterable);
        }
      }
      function hasHole(spread) {
        return spread.elements.some(function (el) {
          return el === null;
        });
      }
      function hasSpread(nodes) {
        for (var i = 0; i < nodes.length; i++) {
          if (isSpreadElement$1(nodes[i])) {
            return true;
          }
        }
        return false;
      }
      function push(_props, nodes) {
        if (!_props.length) return _props;
        nodes.push(arrayExpression$1(_props));
        return [];
      }
      function build(props, scope, file) {
        var nodes = [];
        var _props = [];
        for (var _iterator = _createForOfIteratorHelperLoose(props), _step; !(_step = _iterator()).done;) {
          var prop = _step.value;
          if (isSpreadElement$1(prop)) {
            _props = push(_props, nodes);
            var spreadLiteral = getSpreadLiteral(prop, scope);
            if (isArrayExpression$2(spreadLiteral) && hasHole(spreadLiteral)) {
              spreadLiteral = callExpression$e(file.addHelper("arrayWithoutHoles"), [spreadLiteral]);
            }
            nodes.push(spreadLiteral);
          } else {
            _props.push(prop);
          }
        }
        push(_props, nodes);
        return nodes;
      }
      return {
        name: "transform-spread",
        visitor: {
          ArrayExpression: function ArrayExpression(path) {
            var node = path.node,
              scope = path.scope;
            var elements = node.elements;
            if (!hasSpread(elements)) return;
            var nodes = build(elements, scope, this.file);
            var first = nodes[0];
            if (nodes.length === 1 && first !== elements[0].argument) {
              path.replaceWith(first);
              return;
            }
            if (!isArrayExpression$2(first)) {
              first = arrayExpression$1([]);
            } else {
              nodes.shift();
            }
            path.replaceWith(callExpression$e(memberExpression$c(first, identifier$i("concat")), nodes));
          },
          CallExpression: function CallExpression(path) {
            var node = path.node,
              scope = path.scope;
            var args = node.arguments;
            if (!hasSpread(args)) return;
            var calleePath = skipTransparentExprWrappers(path.get("callee"));
            if (calleePath.isSuper()) {
              throw path.buildCodeFrameError("It's not possible to compile spread arguments in `super()` without compiling classes.\n" + "Please add '@babel/plugin-transform-classes' to your Babel configuration.");
            }
            var contextLiteral = scope.buildUndefinedNode();
            node.arguments = [];
            var nodes;
            if (args.length === 1 && isIdentifier$j(args[0].argument, {
              name: "arguments"
            })) {
              nodes = [args[0].argument];
            } else {
              nodes = build(args, scope, this.file);
            }
            var first = nodes.shift();
            if (nodes.length) {
              node.arguments.push(callExpression$e(memberExpression$c(first, identifier$i("concat")), nodes));
            } else {
              node.arguments.push(first);
            }
            var callee = calleePath.node;
            if (isMemberExpression$8(callee)) {
              var temp = scope.maybeGenerateMemoised(callee.object);
              if (temp) {
                callee.object = assignmentExpression$d("=", temp, callee.object);
                contextLiteral = temp;
              } else {
                contextLiteral = cloneNode$j(callee.object);
              }
            }
            node.callee = memberExpression$c(node.callee, identifier$i("apply"));
            if (isSuper$3(contextLiteral)) {
              contextLiteral = thisExpression$4();
            }
            node.arguments.unshift(cloneNode$j(contextLiteral));
          },
          NewExpression: function NewExpression(path) {
            var node = path.node,
              scope = path.scope;
            if (!hasSpread(node.arguments)) return;
            var nodes = build(node.arguments, scope, this.file);
            var first = nodes.shift();
            var args;
            if (nodes.length) {
              args = callExpression$e(memberExpression$c(first, identifier$i("concat")), nodes);
            } else {
              args = first;
            }
            path.replaceWith(callExpression$e(path.hub.addHelper("construct"), [node.callee, args]));
          }
        }
      };
    });
  
    var _transformStickyRegex = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "transform-sticky-regex",
        visitor: {
          RegExpLiteral: function RegExpLiteral(path) {
            var node = path.node;
            if (!node.flags.includes("y")) return;
            path.replaceWith(newExpression(identifier$i("RegExp"), [stringLiteral$8(node.pattern), stringLiteral$8(node.flags)]));
          }
        }
      };
    });
  
    var transformStrictMode = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "transform-strict-mode",
        visitor: {
          Program: function Program(path) {
            var node = path.node;
            for (var _iterator = _createForOfIteratorHelperLoose(node.directives), _step; !(_step = _iterator()).done;) {
              var directive = _step.value;
              if (directive.value.value === "use strict") return;
            }
            path.unshiftContainer("directives", directive$1(directiveLiteral$1("use strict")));
          }
        }
      };
    });
  
    var _templateObject$4;
    var _transformTemplateLiterals = declare(function (api, options) {
      var _api$assumption, _api$assumption2;
      api.assertVersion(7);
      var ignoreToPrimitiveHint = (_api$assumption = api.assumption("ignoreToPrimitiveHint")) != null ? _api$assumption : options.loose;
      var mutableTemplateObject = (_api$assumption2 = api.assumption("mutableTemplateObject")) != null ? _api$assumption2 : options.loose;
      var helperName = "taggedTemplateLiteral";
      if (mutableTemplateObject) helperName += "Loose";
      function buildConcatCallExpressions(items) {
        var avail = true;
        return items.reduce(function (left, right) {
          var canBeInserted = isLiteral$6(right);
          if (!canBeInserted && avail) {
            canBeInserted = true;
            avail = false;
          }
          if (canBeInserted && isCallExpression$8(left)) {
            left.arguments.push(right);
            return left;
          }
          return callExpression$e(memberExpression$c(left, identifier$i("concat")), [right]);
        });
      }
      return {
        name: "transform-template-literals",
        visitor: {
          TaggedTemplateExpression: function TaggedTemplateExpression(path) {
            var node = path.node;
            var quasi = node.quasi;
            var strings = [];
            var raws = [];
            var isStringsRawEqual = true;
            for (var _iterator = _createForOfIteratorHelperLoose(quasi.quasis), _step; !(_step = _iterator()).done;) {
              var elem = _step.value;
              var _elem$value = elem.value,
                raw = _elem$value.raw,
                cooked = _elem$value.cooked;
              var value = cooked == null ? path.scope.buildUndefinedNode() : stringLiteral$8(cooked);
              strings.push(value);
              raws.push(stringLiteral$8(raw));
              if (raw !== cooked) {
                isStringsRawEqual = false;
              }
            }
            var helperArgs = [arrayExpression$1(strings)];
            if (!isStringsRawEqual) {
              helperArgs.push(arrayExpression$1(raws));
            }
            var tmp = path.scope.generateUidIdentifier("templateObject");
            path.scope.getProgramParent().push({
              id: cloneNode$j(tmp)
            });
            path.replaceWith(callExpression$e(node.tag, [template$2.expression.ast(_templateObject$4 || (_templateObject$4 = _taggedTemplateLiteralLoose(["\n              ", " || (\n                ", " = ", "(", ")\n              )\n            "])), cloneNode$j(tmp), tmp, this.addHelper(helperName), helperArgs)].concat(_toConsumableArray(quasi.expressions))));
          },
          TemplateLiteral: function TemplateLiteral(path) {
            if (path.parent.type === "TSLiteralType") {
              return;
            }
            var nodes = [];
            var expressions = path.get("expressions");
            var index = 0;
            for (var _iterator2 = _createForOfIteratorHelperLoose(path.node.quasis), _step2; !(_step2 = _iterator2()).done;) {
              var elem = _step2.value;
              if (elem.value.cooked) {
                nodes.push(stringLiteral$8(elem.value.cooked));
              }
              if (index < expressions.length) {
                var expr = expressions[index++];
                var node = expr.node;
                if (!isStringLiteral$6(node, {
                  value: ""
                })) {
                  nodes.push(node);
                }
              }
            }
            if (!isStringLiteral$6(nodes[0]) && !(ignoreToPrimitiveHint && isStringLiteral$6(nodes[1]))) {
              nodes.unshift(stringLiteral$8(""));
            }
            var root = nodes[0];
            if (ignoreToPrimitiveHint) {
              for (var i = 1; i < nodes.length; i++) {
                root = binaryExpression$5("+", root, nodes[i]);
              }
            } else if (nodes.length > 1) {
              root = buildConcatCallExpressions(nodes);
            }
            path.replaceWith(root);
          }
        }
      };
    });
  
    var _transformTypeofSymbol = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "transform-typeof-symbol",
        visitor: {
          Scope: function Scope(_ref) {
            var scope = _ref.scope;
            if (!scope.getBinding("Symbol")) {
              return;
            }
            scope.rename("Symbol");
          },
          UnaryExpression: function UnaryExpression(path) {
            var node = path.node,
              parent = path.parent;
            if (node.operator !== "typeof") return;
            if (path.parentPath.isBinaryExpression() && EQUALITY_BINARY_OPERATORS.indexOf(parent.operator) >= 0) {
              var opposite = path.getOpposite();
              if (opposite.isStringLiteral() && opposite.node.value !== "symbol" && opposite.node.value !== "object") {
                return;
              }
            }
            var isUnderHelper = path.findParent(function (path) {
              if (path.isFunction()) {
                var _path$get;
                return ((_path$get = path.get("body.directives.0")) == null ? void 0 : _path$get.node.value.value) === "@babel/helpers - typeof";
              }
            });
            if (isUnderHelper) return;
            var helper = this.addHelper("typeof");
            isUnderHelper = path.findParent(function (path) {
              return path.isVariableDeclarator() && path.node.id === helper || path.isFunctionDeclaration() && path.node.id && path.node.id.name === helper.name;
            });
            if (isUnderHelper) {
              return;
            }
            var call = callExpression$e(helper, [node.argument]);
            var arg = path.get("argument");
            if (arg.isIdentifier() && !path.scope.hasBinding(arg.node.name, true)) {
              var unary = unaryExpression$7("typeof", cloneNode$j(node.argument));
              path.replaceWith(conditionalExpression$4(binaryExpression$5("===", unary, stringLiteral$8("undefined")), stringLiteral$8("undefined"), call));
            } else {
              path.replaceWith(call);
            }
          }
        }
      };
    });
  
    var ENUMS = new WeakMap();
    var buildEnumWrapper = template$2.expression("\n    (function (ID) {\n      ASSIGNMENTS;\n      return ID;\n    })(INIT)\n  ");
    function transpileEnum(path, t) {
      var node = path.node,
        parentPath = path.parentPath;
      if (node.declare) {
        path.remove();
        return;
      }
      var name = node.id.name;
      var _enumFill = enumFill(path, t, node.id),
        fill = _enumFill.fill,
        data = _enumFill.data,
        isPure = _enumFill.isPure;
      switch (parentPath.type) {
        case "BlockStatement":
        case "ExportNamedDeclaration":
        case "Program":
          {
            var isGlobal = t.isProgram(path.parent);
            var isSeen = seen(parentPath);
            var init = t.objectExpression([]);
            if (isSeen || isGlobal) {
              init = t.logicalExpression("||", t.cloneNode(fill.ID), init);
            }
            var enumIIFE = buildEnumWrapper(Object.assign({}, fill, {
              INIT: init
            }));
            if (isPure) annotateAsPure(enumIIFE);
            if (isSeen) {
              var toReplace = parentPath.isExportDeclaration() ? parentPath : path;
              toReplace.replaceWith(t.expressionStatement(t.assignmentExpression("=", t.cloneNode(node.id), enumIIFE)));
            } else {
              path.scope.registerDeclaration(path.replaceWith(t.variableDeclaration(isGlobal ? "var" : "let", [t.variableDeclarator(node.id, enumIIFE)]))[0]);
            }
            ENUMS.set(path.scope.getBindingIdentifier(name), data);
            break;
          }
        default:
          throw new Error("Unexpected enum parent '" + path.parent.type);
      }
      function seen(parentPath) {
        if (parentPath.isExportDeclaration()) {
          return seen(parentPath.parentPath);
        }
        if (parentPath.getData(name)) {
          return true;
        } else {
          parentPath.setData(name, true);
          return false;
        }
      }
    }
    var buildStringAssignment = template$2("\n  ENUM[\"NAME\"] = VALUE;\n");
    var buildNumericAssignment = template$2("\n  ENUM[ENUM[\"NAME\"] = VALUE] = \"NAME\";\n");
    var buildEnumMember = function buildEnumMember(isString, options) {
      return (isString ? buildStringAssignment : buildNumericAssignment)(options);
    };
    function enumFill(path, t, id) {
      var _translateEnumValues = translateEnumValues(path, t),
        x = _translateEnumValues.enumValues,
        data = _translateEnumValues.data,
        isPure = _translateEnumValues.isPure;
      var assignments = x.map(function (_ref) {
        var _ref2 = _slicedToArray(_ref, 2),
          memberName = _ref2[0],
          memberValue = _ref2[1];
        return buildEnumMember(t.isStringLiteral(memberValue), {
          ENUM: t.cloneNode(id),
          NAME: memberName,
          VALUE: memberValue
        });
      });
      return {
        fill: {
          ID: t.cloneNode(id),
          ASSIGNMENTS: assignments
        },
        data: data,
        isPure: isPure
      };
    }
    function ReferencedIdentifier(expr, state) {
      var seen = state.seen,
        path = state.path,
        t = state.t;
      var name = expr.node.name;
      if (seen.has(name) && !expr.scope.hasOwnBinding(name)) {
        expr.replaceWith(t.memberExpression(t.cloneNode(path.node.id), t.cloneNode(expr.node)));
        expr.skip();
      }
    }
    var enumSelfReferenceVisitor = {
      ReferencedIdentifier: ReferencedIdentifier
    };
    function translateEnumValues(path, t) {
      var seen = new Map();
      var constValue = -1;
      var lastName;
      var isPure = true;
      var enumValues = path.get("members").map(function (memberPath) {
        var member = memberPath.node;
        var name = t.isIdentifier(member.id) ? member.id.name : member.id.value;
        var initializerPath = memberPath.get("initializer");
        var initializer = member.initializer;
        var value;
        if (initializer) {
          constValue = computeConstantValue(initializerPath, seen);
          if (constValue !== undefined) {
            seen.set(name, constValue);
            if (typeof constValue === "number") {
              value = t.numericLiteral(constValue);
            } else {
              assert$1.exports(typeof constValue === "string");
              value = t.stringLiteral(constValue);
            }
          } else {
            isPure && (isPure = initializerPath.isPure());
            if (initializerPath.isReferencedIdentifier()) {
              ReferencedIdentifier(initializerPath, {
                t: t,
                seen: seen,
                path: path
              });
            } else {
              initializerPath.traverse(enumSelfReferenceVisitor, {
                t: t,
                seen: seen,
                path: path
              });
            }
            value = initializerPath.node;
            seen.set(name, undefined);
          }
        } else if (typeof constValue === "number") {
          constValue += 1;
          value = t.numericLiteral(constValue);
          seen.set(name, constValue);
        } else if (typeof constValue === "string") {
          throw path.buildCodeFrameError("Enum member must have initializer.");
        } else {
          var lastRef = t.memberExpression(t.cloneNode(path.node.id), t.stringLiteral(lastName), true);
          value = t.binaryExpression("+", t.numericLiteral(1), lastRef);
          seen.set(name, undefined);
        }
        lastName = name;
        return [name, value];
      });
      return {
        isPure: isPure,
        data: seen,
        enumValues: enumValues
      };
    }
    function computeConstantValue(path, prevMembers, seen) {
      if (seen === void 0) {
        seen = new Set();
      }
      return evaluate(path);
      function evaluate(path) {
        var expr = path.node;
        switch (expr.type) {
          case "MemberExpression":
            return evaluateRef(path, prevMembers, seen);
          case "StringLiteral":
            return expr.value;
          case "UnaryExpression":
            return evalUnaryExpression(path);
          case "BinaryExpression":
            return evalBinaryExpression(path);
          case "NumericLiteral":
            return expr.value;
          case "ParenthesizedExpression":
            return evaluate(path.get("expression"));
          case "Identifier":
            return evaluateRef(path, prevMembers, seen);
          case "TemplateLiteral":
            {
              if (expr.quasis.length === 1) {
                return expr.quasis[0].value.cooked;
              }
              var paths = path.get("expressions");
              var quasis = expr.quasis;
              var str = "";
              for (var i = 0; i < quasis.length; i++) {
                str += quasis[i].value.cooked;
                if (i + 1 < quasis.length) {
                  var _value = evaluateRef(paths[i], prevMembers, seen);
                  if (_value === undefined) return undefined;
                  str += _value;
                }
              }
              return str;
            }
          default:
            return undefined;
        }
      }
      function evaluateRef(path, prevMembers, seen) {
        if (path.isMemberExpression()) {
          var expr = path.node;
          var obj = expr.object;
          var prop = expr.property;
          if (!isIdentifier$j(obj) || (expr.computed ? !isStringLiteral$6(prop) : !isIdentifier$j(prop))) {
            return;
          }
          var bindingIdentifier = path.scope.getBindingIdentifier(obj.name);
          var data = ENUMS.get(bindingIdentifier);
          if (!data) return;
          return data.get(prop.computed ? prop.value : prop.name);
        } else if (path.isIdentifier()) {
          var _name = path.node.name;
          var _value2 = prevMembers == null ? void 0 : prevMembers.get(_name);
          if (_value2 !== undefined) {
            return _value2;
          }
          if (seen.has(path.node)) return;
          var bindingInitPath = path.resolve();
          if (bindingInitPath) {
            seen.add(path.node);
            _value2 = computeConstantValue(bindingInitPath, undefined, seen);
            prevMembers == null ? void 0 : prevMembers.set(_name, _value2);
            return _value2;
          }
        }
      }
      function evalUnaryExpression(path) {
        var value = evaluate(path.get("argument"));
        if (value === undefined) {
          return undefined;
        }
        switch (path.node.operator) {
          case "+":
            return value;
          case "-":
            return -value;
          case "~":
            return ~value;
          default:
            return undefined;
        }
      }
      function evalBinaryExpression(path) {
        var left = evaluate(path.get("left"));
        if (left === undefined) {
          return undefined;
        }
        var right = evaluate(path.get("right"));
        if (right === undefined) {
          return undefined;
        }
        switch (path.node.operator) {
          case "|":
            return left | right;
          case "&":
            return left & right;
          case ">>":
            return left >> right;
          case ">>>":
            return left >>> right;
          case "<<":
            return left << right;
          case "^":
            return left ^ right;
          case "*":
            return left * right;
          case "/":
            return left / right;
          case "+":
            return left + right;
          case "-":
            return left - right;
          case "%":
            return left % right;
          case "**":
            return Math.pow(left, right);
          default:
            return undefined;
        }
      }
    }
  
    function transpileConstEnum(path, t) {
      var name = path.node.id.name;
      var parentIsExport = path.parentPath.isExportNamedDeclaration();
      var isExported = parentIsExport;
      if (!isExported && t.isProgram(path.parent)) {
        isExported = path.parent.body.some(function (stmt) {
          return t.isExportNamedDeclaration(stmt) && stmt.exportKind !== "type" && !stmt.source && stmt.specifiers.some(function (spec) {
            return t.isExportSpecifier(spec) && spec.exportKind !== "type" && spec.local.name === name;
          });
        });
      }
      var _translateEnumValues = translateEnumValues(path, t),
        entries = _translateEnumValues.enumValues;
      if (isExported) {
        var obj = t.objectExpression(entries.map(function (_ref) {
          var _ref2 = _slicedToArray(_ref, 2),
            name = _ref2[0],
            value = _ref2[1];
          return t.objectProperty(t.isValidIdentifier(name) ? t.identifier(name) : t.stringLiteral(name), value);
        }));
        if (path.scope.hasOwnBinding(name)) {
          (parentIsExport ? path.parentPath : path).replaceWith(t.expressionStatement(t.callExpression(t.memberExpression(t.identifier("Object"), t.identifier("assign")), [path.node.id, obj])));
        } else {
          path.replaceWith(t.variableDeclaration("var", [t.variableDeclarator(path.node.id, obj)]));
          path.scope.registerDeclaration(path);
        }
        return;
      }
      var entriesMap = new Map(entries);
      path.scope.path.traverse({
        Scope: function Scope(path) {
          if (path.scope.hasOwnBinding(name)) path.skip();
        },
        MemberExpression: function MemberExpression(path) {
          if (!t.isIdentifier(path.node.object, {
            name: name
          })) return;
          var key;
          if (path.node.computed) {
            if (t.isStringLiteral(path.node.property)) {
              key = path.node.property.value;
            } else {
              return;
            }
          } else if (t.isIdentifier(path.node.property)) {
            key = path.node.property.name;
          } else {
            return;
          }
          if (!entriesMap.has(key)) return;
          path.replaceWith(t.cloneNode(entriesMap.get(key)));
        }
      });
      path.remove();
    }
  
    var _templateObject$3, _templateObject2$2;
    function transpileNamespace(path, allowNamespaces) {
      if (path.node.declare || path.node.id.type === "StringLiteral") {
        path.remove();
        return;
      }
      if (!allowNamespaces) {
        throw path.get("id").buildCodeFrameError("Namespace not marked type-only declare." + " Non-declarative namespaces are only supported experimentally in Babel." + " To enable and review caveats see:" + " https://babeljs.io/docs/en/babel-plugin-transform-typescript");
      }
      var name = path.node.id.name;
      var value = handleNested(path, cloneNode$j(path.node, true));
      var bound = path.scope.hasOwnBinding(name);
      if (path.parent.type === "ExportNamedDeclaration") {
        if (!bound) {
          path.parentPath.insertAfter(value);
          path.replaceWith(getDeclaration(name));
          path.scope.registerDeclaration(path.parentPath);
        } else {
          path.parentPath.replaceWith(value);
        }
      } else if (bound) {
        path.replaceWith(value);
      } else {
        path.scope.registerDeclaration(path.replaceWithMultiple([getDeclaration(name), value])[0]);
      }
    }
    function getDeclaration(name) {
      return variableDeclaration$8("let", [variableDeclarator$8(identifier$i(name))]);
    }
    function getMemberExpression(name, itemName) {
      return memberExpression$c(identifier$i(name), identifier$i(itemName));
    }
    function handleVariableDeclaration(node, name, hub) {
      if (node.kind !== "const") {
        throw hub.file.buildCodeFrameError(node, "Namespaces exporting non-const are not supported by Babel." + " Change to const or see:" + " https://babeljs.io/docs/en/babel-plugin-transform-typescript");
      }
      var declarations = node.declarations;
      if (declarations.every(function (declarator) {
        return isIdentifier$j(declarator.id);
      })) {
        for (var _iterator = _createForOfIteratorHelperLoose(declarations), _step; !(_step = _iterator()).done;) {
          var declarator = _step.value;
          declarator.init = assignmentExpression$d("=", getMemberExpression(name, declarator.id.name), declarator.init);
        }
        return [node];
      }
      var bindingIdentifiers = getBindingIdentifiers$2(node);
      var assignments = [];
      for (var idName in bindingIdentifiers) {
        assignments.push(assignmentExpression$d("=", getMemberExpression(name, idName), cloneNode$j(bindingIdentifiers[idName])));
      }
      return [node, expressionStatement$a(sequenceExpression$7(assignments))];
    }
    function buildNestedAmbientModuleError(path, node) {
      return path.hub.buildError(node, "Ambient modules cannot be nested in other modules or namespaces.", Error);
    }
    function handleNested(path, node, parentExport) {
      var names = new Set();
      var realName = node.id;
      assertIdentifier(realName);
      var name = path.scope.generateUid(realName.name);
      var namespaceTopLevel = isTSModuleBlock(node.body) ? node.body.body : [exportNamedDeclaration$2(node.body)];
      for (var i = 0; i < namespaceTopLevel.length; i++) {
        var subNode = namespaceTopLevel[i];
        switch (subNode.type) {
          case "TSModuleDeclaration":
            {
              if (!isIdentifier$j(subNode.id)) {
                throw buildNestedAmbientModuleError(path, subNode);
              }
              var transformed = handleNested(path, subNode);
              var moduleName = subNode.id.name;
              if (names.has(moduleName)) {
                namespaceTopLevel[i] = transformed;
              } else {
                names.add(moduleName);
                namespaceTopLevel.splice(i++, 1, getDeclaration(moduleName), transformed);
              }
              continue;
            }
          case "TSEnumDeclaration":
          case "FunctionDeclaration":
          case "ClassDeclaration":
            names.add(subNode.id.name);
            continue;
          case "VariableDeclaration":
            {
              for (var _name in getBindingIdentifiers$2(subNode)) {
                names.add(_name);
              }
              continue;
            }
          default:
            continue;
          case "ExportNamedDeclaration":
        }
        if ("declare" in subNode.declaration && subNode.declaration.declare) {
          continue;
        }
        switch (subNode.declaration.type) {
          case "TSEnumDeclaration":
          case "FunctionDeclaration":
          case "ClassDeclaration":
            {
              var itemName = subNode.declaration.id.name;
              names.add(itemName);
              namespaceTopLevel.splice(i++, 1, subNode.declaration, expressionStatement$a(assignmentExpression$d("=", getMemberExpression(name, itemName), identifier$i(itemName))));
              break;
            }
          case "VariableDeclaration":
            {
              var nodes = handleVariableDeclaration(subNode.declaration, name, path.hub);
              namespaceTopLevel.splice.apply(namespaceTopLevel, [i, nodes.length].concat(_toConsumableArray(nodes)));
              i += nodes.length - 1;
              break;
            }
          case "TSModuleDeclaration":
            {
              if (!isIdentifier$j(subNode.declaration.id)) {
                throw buildNestedAmbientModuleError(path, subNode.declaration);
              }
              var _transformed = handleNested(path, subNode.declaration, identifier$i(name));
              var _moduleName = subNode.declaration.id.name;
              if (names.has(_moduleName)) {
                namespaceTopLevel[i] = _transformed;
              } else {
                names.add(_moduleName);
                namespaceTopLevel.splice(i++, 1, getDeclaration(_moduleName), _transformed);
              }
            }
        }
      }
      var fallthroughValue = objectExpression$3([]);
      if (parentExport) {
        var memberExpr = memberExpression$c(parentExport, realName);
        fallthroughValue = template$2.expression.ast(_templateObject$3 || (_templateObject$3 = _taggedTemplateLiteralLoose(["\n      ", " ||\n        (", " = ", ")\n    "])), cloneNode$j(memberExpr), cloneNode$j(memberExpr), fallthroughValue);
      }
      return template$2.statement.ast(_templateObject2$2 || (_templateObject2$2 = _taggedTemplateLiteralLoose(["\n    (function (", ") {\n      ", "\n    })(", " || (", " = ", "));\n  "])), identifier$i(name), namespaceTopLevel, realName, cloneNode$j(realName), fallthroughValue);
    }
  
    var _templateObject$2;
    function isInType(path) {
      switch (path.parent.type) {
        case "TSTypeReference":
        case "TSExpressionWithTypeArguments":
        case "TSTypeQuery":
          return true;
        case "TSQualifiedName":
          return path.parentPath.findParent(function (path) {
            return path.type !== "TSQualifiedName";
          }).type !== "TSImportEqualsDeclaration";
        case "ExportSpecifier":
          return path.parent.exportKind === "type" || path.parentPath.parent.exportKind === "type";
        default:
          return false;
      }
    }
    var GLOBAL_TYPES = new WeakMap();
    var NEEDS_EXPLICIT_ESM = new WeakMap();
    var PARSED_PARAMS = new WeakSet();
    function isGlobalType(_ref, name) {
      var scope = _ref.scope;
      if (scope.hasBinding(name)) return false;
      if (GLOBAL_TYPES.get(scope).has(name)) return true;
      console.warn("The exported identifier \"" + name + "\" is not declared in Babel's scope tracker\n" + "as a JavaScript value binding, and \"@babel/plugin-transform-typescript\"\n" + "never encountered it as a TypeScript type declaration.\n" + "It will be treated as a JavaScript value.\n\n" + "This problem is likely caused by another plugin injecting\n" + ("\"" + name + "\" without registering it in the scope tracker. If you are the author\n") + " of that plugin, please use \"scope.registerDeclaration(declarationPath)\".");
      return false;
    }
    function registerGlobalType(programScope, name) {
      GLOBAL_TYPES.get(programScope).add(name);
    }
    function safeRemove(path) {
      var ids = path.getBindingIdentifiers();
      for (var _i = 0, _Object$keys = Object.keys(ids); _i < _Object$keys.length; _i++) {
        var name = _Object$keys[_i];
        var binding = path.scope.getBinding(name);
        if (binding && binding.identifier === ids[name]) {
          binding.scope.removeBinding(name);
        }
      }
      path.opts.noScope = true;
      path.remove();
      path.opts.noScope = false;
    }
    var transformTypeScript = declare(function (api, opts) {
      var _visitor;
      var t = api.types,
        template = api.template;
      api.assertVersion(7);
      var JSX_PRAGMA_REGEX = /\*?\s*@jsx((?:Frag)?)\s+([^\s]+)/;
      var _opts$allowNamespaces = opts.allowNamespaces,
        allowNamespaces = _opts$allowNamespaces === void 0 ? true : _opts$allowNamespaces,
        _opts$jsxPragma = opts.jsxPragma,
        jsxPragma = _opts$jsxPragma === void 0 ? "React.createElement" : _opts$jsxPragma,
        _opts$jsxPragmaFrag = opts.jsxPragmaFrag,
        jsxPragmaFrag = _opts$jsxPragmaFrag === void 0 ? "React.Fragment" : _opts$jsxPragmaFrag,
        _opts$onlyRemoveTypeI = opts.onlyRemoveTypeImports,
        onlyRemoveTypeImports = _opts$onlyRemoveTypeI === void 0 ? false : _opts$onlyRemoveTypeI,
        _opts$optimizeConstEn = opts.optimizeConstEnums,
        optimizeConstEnums = _opts$optimizeConstEn === void 0 ? false : _opts$optimizeConstEn;
      {
        var _opts$allowDeclareFie = opts.allowDeclareFields,
          allowDeclareFields = _opts$allowDeclareFie === void 0 ? false : _opts$allowDeclareFie;
      }
      var classMemberVisitors = {
        field: function field(path) {
          var node = path.node;
          {
            if (!allowDeclareFields && node.declare) {
              throw path.buildCodeFrameError("The 'declare' modifier is only allowed when the 'allowDeclareFields' option of " + "@babel/plugin-transform-typescript or @babel/preset-typescript is enabled.");
            }
          }
          if (node.declare) {
            if (node.value) {
              throw path.buildCodeFrameError("Fields with the 'declare' modifier cannot be initialized here, but only in the constructor");
            }
            if (!node.decorators) {
              path.remove();
            }
          } else if (node.definite) {
            if (node.value) {
              throw path.buildCodeFrameError("Definitely assigned fields cannot be initialized here, but only in the constructor");
            }
            {
              if (!allowDeclareFields && !node.decorators && !t.isClassPrivateProperty(node)) {
                path.remove();
              }
            }
          } else if (node["abstract"]) {
            path.remove();
          } else {
            if (!allowDeclareFields && !node.value && !node.decorators && !t.isClassPrivateProperty(node)) {
              path.remove();
            }
          }
          if (node.accessibility) node.accessibility = null;
          if (node["abstract"]) node["abstract"] = null;
          if (node.readonly) node.readonly = null;
          if (node.optional) node.optional = null;
          if (node.typeAnnotation) node.typeAnnotation = null;
          if (node.definite) node.definite = null;
          if (node.declare) node.declare = null;
          if (node.override) node.override = null;
        },
        method: function method(_ref2) {
          var node = _ref2.node;
          if (node.accessibility) node.accessibility = null;
          if (node["abstract"]) node["abstract"] = null;
          if (node.optional) node.optional = null;
          if (node.override) node.override = null;
        },
        constructor: function constructor(path, classPath) {
          if (path.node.accessibility) path.node.accessibility = null;
          var assigns = [];
          var scope = path.scope;
          for (var _iterator = _createForOfIteratorHelperLoose(path.get("params")), _step; !(_step = _iterator()).done;) {
            var paramPath = _step.value;
            var param = paramPath.node;
            if (param.type === "TSParameterProperty") {
              var parameter = param.parameter;
              if (PARSED_PARAMS.has(parameter)) continue;
              PARSED_PARAMS.add(parameter);
              var id = void 0;
              if (t.isIdentifier(parameter)) {
                id = parameter;
              } else if (t.isAssignmentPattern(parameter) && t.isIdentifier(parameter.left)) {
                id = parameter.left;
              } else {
                throw paramPath.buildCodeFrameError("Parameter properties can not be destructuring patterns.");
              }
              assigns.push(template.statement.ast(_templateObject$2 || (_templateObject$2 = _taggedTemplateLiteralLoose(["\n          this.", " = ", ""])), t.cloneNode(id), t.cloneNode(id)));
              paramPath.replaceWith(paramPath.get("parameter"));
              scope.registerBinding("param", paramPath);
            }
          }
          injectInitialization(classPath, path, assigns);
        }
      };
      return {
        name: "transform-typescript",
        inherits: syntaxTypescript,
        visitor: (_visitor = {
          Pattern: visitPattern,
          Identifier: visitPattern,
          RestElement: visitPattern,
          Program: {
            enter: function enter(path, state) {
              var file = state.file;
              var fileJsxPragma = null;
              var fileJsxPragmaFrag = null;
              var programScope = path.scope;
              if (!GLOBAL_TYPES.has(programScope)) {
                GLOBAL_TYPES.set(programScope, new Set());
              }
              if (file.ast.comments) {
                for (var _iterator2 = _createForOfIteratorHelperLoose(file.ast.comments), _step2; !(_step2 = _iterator2()).done;) {
                  var comment = _step2.value;
                  var jsxMatches = JSX_PRAGMA_REGEX.exec(comment.value);
                  if (jsxMatches) {
                    if (jsxMatches[1]) {
                      fileJsxPragmaFrag = jsxMatches[2];
                    } else {
                      fileJsxPragma = jsxMatches[2];
                    }
                  }
                }
              }
              var pragmaImportName = fileJsxPragma || jsxPragma;
              if (pragmaImportName) {
                var _pragmaImportName$spl = pragmaImportName.split(".");
                var _pragmaImportName$spl2 = _slicedToArray(_pragmaImportName$spl, 1);
                pragmaImportName = _pragmaImportName$spl2[0];
              }
              var pragmaFragImportName = fileJsxPragmaFrag || jsxPragmaFrag;
              if (pragmaFragImportName) {
                var _pragmaFragImportName = pragmaFragImportName.split(".");
                var _pragmaFragImportName2 = _slicedToArray(_pragmaFragImportName, 1);
                pragmaFragImportName = _pragmaFragImportName2[0];
              }
              var _loop = function _loop() {
                var stmt = _step3.value;
                if (stmt.isImportDeclaration()) {
                  if (!NEEDS_EXPLICIT_ESM.has(state.file.ast.program)) {
                    NEEDS_EXPLICIT_ESM.set(state.file.ast.program, true);
                  }
                  if (stmt.node.importKind === "type") {
                    for (var _iterator4 = _createForOfIteratorHelperLoose(stmt.node.specifiers), _step4; !(_step4 = _iterator4()).done;) {
                      var specifier = _step4.value;
                      registerGlobalType(programScope, specifier.local.name);
                    }
                    stmt.remove();
                    return "continue";
                  }
                  var importsToRemove = new Set();
                  var specifiersLength = stmt.node.specifiers.length;
                  var isAllSpecifiersElided = function isAllSpecifiersElided() {
                    return specifiersLength > 0 && specifiersLength === importsToRemove.size;
                  };
                  for (var _iterator5 = _createForOfIteratorHelperLoose(stmt.node.specifiers), _step5; !(_step5 = _iterator5()).done;) {
                    var _specifier2 = _step5.value;
                    if (_specifier2.type === "ImportSpecifier" && _specifier2.importKind === "type") {
                      registerGlobalType(programScope, _specifier2.local.name);
                      var _binding = stmt.scope.getBinding(_specifier2.local.name);
                      if (_binding) {
                        importsToRemove.add(_binding.path);
                      }
                    }
                  }
                  if (onlyRemoveTypeImports) {
                    NEEDS_EXPLICIT_ESM.set(path.node, false);
                  } else {
                    if (stmt.node.specifiers.length === 0) {
                      NEEDS_EXPLICIT_ESM.set(path.node, false);
                      return "continue";
                    }
                    for (var _iterator6 = _createForOfIteratorHelperLoose(stmt.node.specifiers), _step6; !(_step6 = _iterator6()).done;) {
                      var _specifier = _step6.value;
                      var binding = stmt.scope.getBinding(_specifier.local.name);
                      if (binding && !importsToRemove.has(binding.path)) {
                        if (isImportTypeOnly({
                          binding: binding,
                          programPath: path,
                          pragmaImportName: pragmaImportName,
                          pragmaFragImportName: pragmaFragImportName
                        })) {
                          importsToRemove.add(binding.path);
                        } else {
                          NEEDS_EXPLICIT_ESM.set(path.node, false);
                        }
                      }
                    }
                  }
                  if (isAllSpecifiersElided() && !onlyRemoveTypeImports) {
                    stmt.remove();
                  } else {
                    for (var _iterator7 = _createForOfIteratorHelperLoose(importsToRemove), _step7; !(_step7 = _iterator7()).done;) {
                      var importPath = _step7.value;
                      importPath.remove();
                    }
                  }
                  return "continue";
                }
                if (stmt.isExportDeclaration()) {
                  stmt = stmt.get("declaration");
                }
                if (stmt.isVariableDeclaration({
                  declare: true
                })) {
                  for (var _i2 = 0, _Object$keys2 = Object.keys(stmt.getBindingIdentifiers()); _i2 < _Object$keys2.length; _i2++) {
                    var name = _Object$keys2[_i2];
                    registerGlobalType(programScope, name);
                  }
                } else if (stmt.isTSTypeAliasDeclaration() || stmt.isTSDeclareFunction() && stmt.get("id").isIdentifier() || stmt.isTSInterfaceDeclaration() || stmt.isClassDeclaration({
                  declare: true
                }) || stmt.isTSEnumDeclaration({
                  declare: true
                }) || stmt.isTSModuleDeclaration({
                  declare: true
                }) && stmt.get("id").isIdentifier()) {
                  registerGlobalType(programScope, stmt.node.id.name);
                }
              };
              for (var _iterator3 = _createForOfIteratorHelperLoose(path.get("body")), _step3; !(_step3 = _iterator3()).done;) {
                var _ret = _loop();
                if (_ret === "continue") continue;
              }
            },
            exit: function exit(path) {
              if (path.node.sourceType === "module" && NEEDS_EXPLICIT_ESM.get(path.node)) {
                path.pushContainer("body", t.exportNamedDeclaration());
              }
            }
          },
          ExportNamedDeclaration: function ExportNamedDeclaration(path, state) {
            if (!NEEDS_EXPLICIT_ESM.has(state.file.ast.program)) {
              NEEDS_EXPLICIT_ESM.set(state.file.ast.program, true);
            }
            if (path.node.exportKind === "type") {
              path.remove();
              return;
            }
            if (path.node.source && path.node.specifiers.length > 0 && path.node.specifiers.every(function (specifier) {
              return specifier.type === "ExportSpecifier" && specifier.exportKind === "type";
            })) {
              path.remove();
              return;
            }
            if (!path.node.source && path.node.specifiers.length > 0 && path.node.specifiers.every(function (specifier) {
              return t.isExportSpecifier(specifier) && isGlobalType(path, specifier.local.name);
            })) {
              path.remove();
              return;
            }
            NEEDS_EXPLICIT_ESM.set(state.file.ast.program, false);
          },
          ExportAllDeclaration: function ExportAllDeclaration(path) {
            if (path.node.exportKind === "type") path.remove();
          },
          ExportSpecifier: function ExportSpecifier(path) {
            var parent = path.parent;
            if (!parent.source && isGlobalType(path, path.node.local.name) || path.node.exportKind === "type") {
              path.remove();
            }
          },
          ExportDefaultDeclaration: function ExportDefaultDeclaration(path, state) {
            if (!NEEDS_EXPLICIT_ESM.has(state.file.ast.program)) {
              NEEDS_EXPLICIT_ESM.set(state.file.ast.program, true);
            }
            if (t.isIdentifier(path.node.declaration) && isGlobalType(path, path.node.declaration.name)) {
              path.remove();
              return;
            }
            NEEDS_EXPLICIT_ESM.set(state.file.ast.program, false);
          },
          TSDeclareFunction: function TSDeclareFunction(path) {
            safeRemove(path);
          },
          TSDeclareMethod: function TSDeclareMethod(path) {
            safeRemove(path);
          },
          VariableDeclaration: function VariableDeclaration(path) {
            if (path.node.declare) {
              safeRemove(path);
            }
          },
          VariableDeclarator: function VariableDeclarator(_ref3) {
            var node = _ref3.node;
            if (node.definite) node.definite = null;
          },
          TSIndexSignature: function TSIndexSignature(path) {
            path.remove();
          },
          ClassDeclaration: function ClassDeclaration(path) {
            var node = path.node;
            if (node.declare) {
              safeRemove(path);
            }
          },
          Class: function Class(path) {
            var node = path.node;
            if (node.typeParameters) node.typeParameters = null;
            if (node.superTypeParameters) node.superTypeParameters = null;
            if (node["implements"]) node["implements"] = null;
            if (node["abstract"]) node["abstract"] = null;
            path.get("body.body").forEach(function (child) {
              if (child.isClassMethod() || child.isClassPrivateMethod()) {
                if (child.node.kind === "constructor") {
                  classMemberVisitors.constructor(child, path);
                } else {
                  classMemberVisitors.method(child);
                }
              } else if (child.isClassProperty() || child.isClassPrivateProperty() || child.isClassAccessorProperty()) {
                classMemberVisitors.field(child);
              }
            });
          },
          Function: function Function(path) {
            var node = path.node;
            if (node.typeParameters) node.typeParameters = null;
            if (node.returnType) node.returnType = null;
            var params = node.params;
            if (params.length > 0 && t.isIdentifier(params[0], {
              name: "this"
            })) {
              params.shift();
            }
          },
          TSModuleDeclaration: function TSModuleDeclaration(path) {
            transpileNamespace(path, allowNamespaces);
          },
          TSInterfaceDeclaration: function TSInterfaceDeclaration(path) {
            path.remove();
          },
          TSTypeAliasDeclaration: function TSTypeAliasDeclaration(path) {
            path.remove();
          },
          TSEnumDeclaration: function TSEnumDeclaration(path) {
            if (optimizeConstEnums && path.node["const"]) {
              transpileConstEnum(path, t);
            } else {
              transpileEnum(path, t);
            }
          },
          TSImportEqualsDeclaration: function (_TSImportEqualsDeclaration) {
            function TSImportEqualsDeclaration(_x) {
              return _TSImportEqualsDeclaration.apply(this, arguments);
            }
            TSImportEqualsDeclaration.toString = function () {
              return _TSImportEqualsDeclaration.toString();
            };
            return TSImportEqualsDeclaration;
          }(function (path) {
            if (t.isTSExternalModuleReference(path.node.moduleReference)) {
              throw path.buildCodeFrameError("`import " + path.node.id.name + " = require('" + path.node.moduleReference.expression.value + "')` " + "is not supported by @babel/plugin-transform-typescript\n" + "Please consider using " + ("`import " + path.node.id.name + " from '" + path.node.moduleReference.expression.value + "';` alongside ") + "Typescript's --allowSyntheticDefaultImports option.");
            }
            path.replaceWith(t.variableDeclaration("var", [t.variableDeclarator(path.node.id, entityNameToExpr(path.node.moduleReference))]));
            path.scope.registerDeclaration(path);
          }),
          TSExportAssignment: function TSExportAssignment(path) {
            throw path.buildCodeFrameError("`export =` is not supported by @babel/plugin-transform-typescript\n" + "Please consider using `export <value>;`.");
          },
          TSTypeAssertion: function TSTypeAssertion(path) {
            path.replaceWith(path.node.expression);
          }
        }, _visitor["TSAsExpression" + (t.tsSatisfiesExpression ? "|TSSatisfiesExpression" : "")] = function (_TSAsExpression) {
          function TSAsExpression(_x2) {
            return _TSAsExpression.apply(this, arguments);
          }
          TSAsExpression.toString = function () {
            return _TSAsExpression.toString();
          };
          return TSAsExpression;
        }(function (path) {
          var node = path.node;
          do {
            node = node.expression;
          } while (t.isTSAsExpression(node) || t.isTSSatisfiesExpression != null && t.isTSSatisfiesExpression(node));
          path.replaceWith(node);
        }), _visitor[api.types.tsInstantiationExpression ? "TSNonNullExpression|TSInstantiationExpression" : "TSNonNullExpression"] = function (path) {
          path.replaceWith(path.node.expression);
        }, _visitor.CallExpression = function CallExpression(path) {
          path.node.typeParameters = null;
        }, _visitor.OptionalCallExpression = function OptionalCallExpression(path) {
          path.node.typeParameters = null;
        }, _visitor.NewExpression = function NewExpression(path) {
          path.node.typeParameters = null;
        }, _visitor.JSXOpeningElement = function JSXOpeningElement(path) {
          path.node.typeParameters = null;
        }, _visitor.TaggedTemplateExpression = function TaggedTemplateExpression(path) {
          path.node.typeParameters = null;
        }, _visitor)
      };
      function entityNameToExpr(node) {
        if (t.isTSQualifiedName(node)) {
          return t.memberExpression(entityNameToExpr(node.left), node.right);
        }
        return node;
      }
      function visitPattern(_ref4) {
        var node = _ref4.node;
        if (node.typeAnnotation) node.typeAnnotation = null;
        if (t.isIdentifier(node) && node.optional) node.optional = null;
      }
      function isImportTypeOnly(_ref5) {
        var binding = _ref5.binding,
          programPath = _ref5.programPath,
          pragmaImportName = _ref5.pragmaImportName,
          pragmaFragImportName = _ref5.pragmaFragImportName;
        for (var _iterator8 = _createForOfIteratorHelperLoose(binding.referencePaths), _step8; !(_step8 = _iterator8()).done;) {
          var path = _step8.value;
          if (!isInType(path)) {
            return false;
          }
        }
        if (binding.identifier.name !== pragmaImportName && binding.identifier.name !== pragmaFragImportName) {
          return true;
        }
        var sourceFileHasJsx = false;
        programPath.traverse({
          "JSXElement|JSXFragment": function JSXElementJSXFragment(path) {
            sourceFileHasJsx = true;
            path.stop();
          }
        });
        return !sourceFileHasJsx;
      }
    });
  
    var _transformUnicodeEscapes = declare(function (api) {
      api.assertVersion(7);
      var surrogate = /[\ud800-\udfff]/g;
      var unicodeEscape = /(\\+)u\{([0-9a-fA-F]+)\}/g;
      function escape(code) {
        {
          var str = code.toString(16);
          while (str.length < 4) str = "0" + str;
          return "\\u" + str;
        }
      }
      function replacer(match, backslashes, code) {
        if (backslashes.length % 2 === 0) {
          return match;
        }
        var _char = String.fromCodePoint(parseInt(code, 16));
        var escaped = backslashes.slice(0, -1) + escape(_char.charCodeAt(0));
        return _char.length === 1 ? escaped : escaped + escape(_char.charCodeAt(1));
      }
      function replaceUnicodeEscapes(str) {
        return str.replace(unicodeEscape, replacer);
      }
      function getUnicodeEscape(str) {
        var match;
        while (match = unicodeEscape.exec(str)) {
          if (match[1].length % 2 === 0) continue;
          unicodeEscape.lastIndex = 0;
          return match[0];
        }
        return null;
      }
      return {
        name: "transform-unicode-escapes",
        manipulateOptions: function manipulateOptions(_ref) {
          var _generatorOpts$jsescO, _generatorOpts$jsescO2;
          var generatorOpts = _ref.generatorOpts;
          if (!generatorOpts.jsescOption) {
            generatorOpts.jsescOption = {};
          }
          (_generatorOpts$jsescO2 = (_generatorOpts$jsescO = generatorOpts.jsescOption).minimal) != null ? _generatorOpts$jsescO2 : _generatorOpts$jsescO.minimal = false;
        },
        visitor: {
          Identifier: function Identifier(path) {
            var node = path.node,
              key = path.key;
            var name = node.name;
            var replaced = name.replace(surrogate, function (c) {
              return "_u" + c.charCodeAt(0).toString(16);
            });
            if (name === replaced) return;
            var str = inherits$1(stringLiteral$8(name), node);
            if (key === "key") {
              path.replaceWith(str);
              return;
            }
            var parentPath = path.parentPath,
              scope = path.scope;
            if (parentPath.isMemberExpression({
              property: node
            }) || parentPath.isOptionalMemberExpression({
              property: node
            })) {
              parentPath.node.computed = true;
              path.replaceWith(str);
              return;
            }
            var binding = scope.getBinding(name);
            if (binding) {
              scope.rename(name, scope.generateUid(replaced));
              return;
            }
            throw path.buildCodeFrameError("Can't reference '" + name + "' as a bare identifier");
          },
          "StringLiteral|DirectiveLiteral": function StringLiteralDirectiveLiteral(path) {
            var node = path.node;
            var extra = node.extra;
            if (extra != null && extra.raw) extra.raw = replaceUnicodeEscapes(extra.raw);
          },
          TemplateElement: function TemplateElement(path) {
            var node = path.node,
              parentPath = path.parentPath;
            var value = node.value;
            var firstEscape = getUnicodeEscape(value.raw);
            if (!firstEscape) return;
            var grandParent = parentPath.parentPath;
            if (grandParent.isTaggedTemplateExpression()) {
              throw path.buildCodeFrameError("Can't replace Unicode escape '" + firstEscape + "' inside tagged template literals. You can enable '@babel/plugin-transform-template-literals' to compile them to classic strings.");
            }
            value.raw = replaceUnicodeEscapes(value.raw);
          }
        }
      };
    });
  
    var _transformUnicodeRegex = declare(function (api) {
      api.assertVersion(7);
      return createRegExpFeaturePlugin({
        name: "transform-unicode-regex",
        feature: "unicodeFlag"
      });
    });
  
    var syntaxAsyncGenerators = makeNoopPlugin(),
      syntaxClassProperties = makeNoopPlugin(),
      syntaxClassStaticBlock = makeNoopPlugin(),
      syntaxImportMeta = makeNoopPlugin(),
      syntaxObjectRestSpread = makeNoopPlugin(),
      syntaxOptionalCatchBinding = makeNoopPlugin(),
      syntaxTopLevelAwait = makeNoopPlugin();
    var all = {
      "syntax-async-generators": syntaxAsyncGenerators,
      "syntax-class-properties": syntaxClassProperties,
      "syntax-class-static-block": syntaxClassStaticBlock,
      "syntax-import-meta": syntaxImportMeta,
      "syntax-object-rest-spread": syntaxObjectRestSpread,
      "syntax-optional-catch-binding": syntaxOptionalCatchBinding,
      "syntax-top-level-await": syntaxTopLevelAwait,
      "external-helpers": externalHelpers,
      "syntax-decimal": syntaxDecimal,
      "syntax-decorators": syntaxDecorators,
      "syntax-destructuring-private": syntaxDestructuringPrivate,
      "syntax-do-expressions": syntaxDoExpressions,
      "syntax-explicit-resource-management": syntaxExplicitResourceManagement,
      "syntax-export-default-from": syntaxExportDefaultFrom,
      "syntax-flow": syntaxFlow,
      "syntax-function-bind": syntaxFunctionBind,
      "syntax-function-sent": syntaxFunctionSent,
      "syntax-import-assertions": _syntaxImportAssertions,
      "syntax-import-reflection": syntaxImportReflection,
      "syntax-module-blocks": syntaxModuleBlocks,
      "syntax-jsx": syntaxJsx,
      "syntax-pipeline-operator": syntaxPipelineOperator,
      "syntax-record-and-tuple": syntaxRecordAndTuple,
      "syntax-typescript": syntaxTypescript,
      "proposal-async-generator-functions": proposalAsyncGeneratorFunctions,
      "proposal-class-properties": proposalClassProperties,
      "proposal-class-static-block": proposalClassStaticBlock,
      "proposal-decorators": proposalDecorators,
      "proposal-destructuring-private": proposalDestructuringPrivate,
      "proposal-do-expressions": proposalDoExpressions,
      "proposal-duplicate-named-capturing-groups-regex": proposalDuplicateNamedCapturingGroupsRegex,
      "proposal-dynamic-import": proposalDynamicImport,
      "proposal-export-default-from": proposalExportDefaultFrom,
      "proposal-export-namespace-from": proposalExportNamespaceFrom,
      "proposal-function-bind": proposalFunctionBind,
      "proposal-function-sent": proposalFunctionSent,
      "proposal-json-strings": proposalJsonStrings,
      "proposal-logical-assignment-operators": proposalLogicalAssignmentOperators,
      "proposal-nullish-coalescing-operator": proposalNullishCoalescingOperator,
      "proposal-numeric-separator": proposalNumericSeparator,
      "proposal-object-rest-spread": proposalObjectRestSpread,
      "proposal-optional-catch-binding": proposalOptionalCatchBinding,
      "proposal-optional-chaining": proposalOptionalChaining,
      "proposal-pipeline-operator": proposalPipelineOperator,
      "proposal-private-methods": proposalPrivateMethods,
      "proposal-private-property-in-object": proposalPrivatePropertyInObject,
      "proposal-record-and-tuple": proposalRecordAndTuple,
      "proposal-regexp-modifiers": proposalRegexpModifiers,
      "proposal-throw-expressions": proposalThrowExpressions,
      "proposal-unicode-property-regex": proposalUnicodePropertyRegex,
      "proposal-unicode-sets-regex": proposalUnicodeSetsRegex,
      "transform-async-to-generator": _transformAsyncToGenerator,
      "transform-arrow-functions": _transformArrowFunctions,
      "transform-block-scoped-functions": _transformBlockScopedFunctions,
      "transform-block-scoping": _transformBlockScoping,
      "transform-classes": _transformClasses,
      "transform-computed-properties": _transformComputedProperties,
      "transform-destructuring": _transformDestructuring,
      "transform-dotall-regex": _transformDotallRegex,
      "transform-duplicate-keys": _transformDuplicateKeys,
      "transform-exponentiation-operator": transformExponentialOperator,
      "transform-flow-comments": transformFlowComments,
      "transform-flow-strip-types": transformFlowStripTypes,
      "transform-for-of": _transformForOf,
      "transform-function-name": _transformFunctionName,
      "transform-instanceof": transformInstanceof,
      "transform-jscript": transformJscript,
      "transform-literals": _transformLiterals,
      "transform-member-expression-literals": _transformMemberExpressionLiterals,
      "transform-modules-amd": _transformModulesAmd,
      "transform-modules-commonjs": transformModulesCommonJS,
      "transform-modules-systemjs": _transformModulesSystemjs,
      "transform-modules-umd": _transformModulesUmd,
      "transform-named-capturing-groups-regex": _transformNamedCapturingGroupsRegex,
      "transform-new-target": _transformNewTarget,
      "transform-object-assign": transformObjectAssign,
      "transform-object-super": _transformObjectSuper,
      "transform-object-set-prototype-of-to-assign": transformObjectSetPrototypeOfToAssign,
      "transform-parameters": _transformParameters,
      "transform-property-literals": _transformPropertyLiterals,
      "transform-property-mutators": transformPropertyMutators,
      "transform-proto-to-assign": transformProtoToAssign,
      "transform-react-constant-elements": transformReactConstantElements,
      "transform-react-display-name": transformReactDisplayName,
      "transform-react-inline-elements": transformReactInlineElements,
      "transform-react-jsx": transformReactJSX,
      "transform-react-jsx-compat": transformReactJsxCompat,
      "transform-react-jsx-development": transformReactJSXDevelopment,
      "transform-react-jsx-self": transformReactJsxSelf,
      "transform-react-jsx-source": transformReactJsxSource,
      "transform-regenerator": _transformRegenerator,
      "transform-reserved-words": _transformReservedWords,
      "transform-runtime": transformRuntime,
      "transform-shorthand-properties": _transformShorthandProperties,
      "transform-spread": _transformSpread,
      "transform-sticky-regex": _transformStickyRegex,
      "transform-strict-mode": transformStrictMode,
      "transform-template-literals": _transformTemplateLiterals,
      "transform-typeof-symbol": _transformTypeofSymbol,
      "transform-typescript": transformTypeScript,
      "transform-unicode-escapes": _transformUnicodeEscapes,
      "transform-unicode-regex": _transformUnicodeRegex
    };
  
    var preset2015 = (function (_, opts) {
      var loose = false;
      var modules = "commonjs";
      var spec = false;
      if (opts !== undefined) {
        if (opts.loose !== undefined) loose = opts.loose;
        if (opts.modules !== undefined) modules = opts.modules;
        if (opts.spec !== undefined) spec = opts.spec;
      }
      var optsLoose = {
        loose: loose
      };
      return {
        plugins: [[_transformTemplateLiterals, {
          loose: loose,
          spec: spec
        }], _transformLiterals, _transformFunctionName, [_transformArrowFunctions, {
          spec: spec
        }], _transformBlockScopedFunctions, [_transformClasses, optsLoose], _transformObjectSuper, _transformShorthandProperties, _transformDuplicateKeys, [_transformComputedProperties, optsLoose], [_transformForOf, optsLoose], _transformStickyRegex, _transformUnicodeEscapes, _transformUnicodeRegex, [_transformSpread, optsLoose], [_transformParameters, optsLoose], [_transformDestructuring, optsLoose], _transformBlockScoping, _transformTypeofSymbol, transformInstanceof, (modules === "commonjs" || modules === "cjs") && [transformModulesCommonJS, optsLoose], modules === "systemjs" && [_transformModulesSystemjs, optsLoose], modules === "amd" && [_transformModulesAmd, optsLoose], modules === "umd" && [_transformModulesUmd, optsLoose], [_transformRegenerator, {
          async: false,
          asyncGenerators: false
        }]].filter(Boolean)
      };
    });
  
    var presetStage3 = (function (_, opts) {
      if (opts === void 0) {
        opts = {};
      }
      var _opts = opts,
        _opts$loose = _opts.loose,
        loose = _opts$loose === void 0 ? false : _opts$loose,
        _opts$decoratorsLegac = _opts.decoratorsLegacy,
        decoratorsLegacy = _opts$decoratorsLegac === void 0 ? false : _opts$decoratorsLegac,
        _opts$decoratorsVersi = _opts.decoratorsVersion,
        decoratorsVersion = _opts$decoratorsVersi === void 0 ? "2018-09" : _opts$decoratorsVersi,
        decoratorsBeforeExport = _opts.decoratorsBeforeExport;
      var plugins = [_syntaxImportAssertions, proposalUnicodeSetsRegex, proposalDuplicateNamedCapturingGroupsRegex, [proposalDecorators, {
        version: decoratorsLegacy ? "legacy" : decoratorsVersion,
        decoratorsBeforeExport: decoratorsBeforeExport
      }], proposalRegexpModifiers].concat(_toConsumableArray([proposalExportNamespaceFrom, proposalLogicalAssignmentOperators, [proposalOptionalChaining, {
        loose: loose
      }], [proposalNullishCoalescingOperator, {
        loose: loose
      }], [proposalClassProperties, {
        loose: loose
      }], proposalJsonStrings, proposalNumericSeparator, [proposalPrivateMethods, {
        loose: loose
      }], proposalPrivatePropertyInObject, proposalClassStaticBlock]));
      return {
        plugins: plugins
      };
    });
  
    var presetStage2 = (function (_, opts) {
      if (opts === void 0) {
        opts = {};
      }
      var _opts = opts,
        _opts$pipelineProposa = _opts.pipelineProposal,
        pipelineProposal = _opts$pipelineProposa === void 0 ? "minimal" : _opts$pipelineProposa,
        _opts$pipelineTopicTo = _opts.pipelineTopicToken,
        pipelineTopicToken = _opts$pipelineTopicTo === void 0 ? "%" : _opts$pipelineTopicTo,
        _opts$recordAndTupleS = _opts.recordAndTupleSyntax,
        recordAndTupleSyntax = _opts$recordAndTupleS === void 0 ? "hash" : _opts$recordAndTupleS;
      return {
        presets: [[presetStage3, opts]],
        plugins: [proposalDestructuringPrivate, [proposalPipelineOperator, {
          proposal: pipelineProposal,
          topicToken: pipelineTopicToken
        }], proposalFunctionSent, proposalThrowExpressions, [proposalRecordAndTuple, {
          syntaxType: recordAndTupleSyntax
        }], syntaxExplicitResourceManagement, syntaxModuleBlocks, syntaxImportReflection]
      };
    });
  
    var presetStage1 = (function (_, opts) {
      if (opts === void 0) {
        opts = {};
      }
      var _opts = opts,
        _opts$loose = _opts.loose,
        loose = _opts$loose === void 0 ? false : _opts$loose,
        _opts$useBuiltIns = _opts.useBuiltIns,
        useBuiltIns = _opts$useBuiltIns === void 0 ? false : _opts$useBuiltIns,
        decoratorsLegacy = _opts.decoratorsLegacy,
        decoratorsVersion = _opts.decoratorsVersion,
        decoratorsBeforeExport = _opts.decoratorsBeforeExport,
        pipelineProposal = _opts.pipelineProposal,
        pipelineTopicToken = _opts.pipelineTopicToken,
        recordAndTupleSyntax = _opts.recordAndTupleSyntax;
      return {
        presets: [[presetStage2, {
          loose: loose,
          useBuiltIns: useBuiltIns,
          decoratorsLegacy: decoratorsLegacy,
          decoratorsVersion: decoratorsVersion,
          decoratorsBeforeExport: decoratorsBeforeExport,
          pipelineProposal: pipelineProposal,
          pipelineTopicToken: pipelineTopicToken,
          recordAndTupleSyntax: recordAndTupleSyntax
        }]],
        plugins: [syntaxDecimal, proposalExportDefaultFrom, proposalDoExpressions]
      };
    });
  
    var presetStage0 = (function (_, opts) {
      if (opts === void 0) {
        opts = {};
      }
      var _opts = opts,
        _opts$loose = _opts.loose,
        loose = _opts$loose === void 0 ? false : _opts$loose,
        _opts$useBuiltIns = _opts.useBuiltIns,
        useBuiltIns = _opts$useBuiltIns === void 0 ? false : _opts$useBuiltIns,
        decoratorsLegacy = _opts.decoratorsLegacy,
        decoratorsVersion = _opts.decoratorsVersion,
        decoratorsBeforeExport = _opts.decoratorsBeforeExport,
        pipelineProposal = _opts.pipelineProposal,
        pipelineTopicToken = _opts.pipelineTopicToken,
        _opts$importAssertion = _opts.importAssertionsVersion,
        importAssertionsVersion = _opts$importAssertion === void 0 ? "september-2020" : _opts$importAssertion;
      return {
        presets: [[presetStage1, {
          loose: loose,
          useBuiltIns: useBuiltIns,
          decoratorsLegacy: decoratorsLegacy,
          decoratorsVersion: decoratorsVersion,
          decoratorsBeforeExport: decoratorsBeforeExport,
          pipelineProposal: pipelineProposal,
          pipelineTopicToken: pipelineTopicToken,
          importAssertionsVersion: importAssertionsVersion
        }]],
        plugins: [proposalFunctionBind]
      };
    });
  
    function bool(value) {
      if (value == null) return false;
      return value && value !== "false" && value !== "0";
    }
    var semver$2 = bool(browser$1$1.env["BABEL_8_BREAKING"]) ? requireSemverBABEL_8_BREAKINGTrue() : requireSemver();
  
    var logPlugin = function logPlugin(item, targetVersions, list) {
      var filteredList = getInclusionReasons(item, targetVersions, list);
      var support = list[item];
      {
        if (item.startsWith("transform-")) {
          var proposalName = "proposal-" + item.slice(10);
          if (proposalName === "proposal-dynamic-import" || Object.prototype.hasOwnProperty.call(plugins$1, proposalName)) {
            item = proposalName;
          }
        }
      }
      if (!support) {
        console.log("  " + item);
        return;
      }
      var formattedTargets = "{";
      var first = true;
      for (var _i = 0, _arr = Object.keys(filteredList); _i < _arr.length; _i++) {
        var target = _arr[_i];
        if (!first) formattedTargets += ",";
        first = false;
        formattedTargets += " " + target;
        if (support[target]) formattedTargets += " < " + support[target];
      }
      formattedTargets += " }";
      console.log("  " + item + " " + formattedTargets);
    };
  
    var defaultExcludesForLooseMode = ["transform-typeof-symbol"];
    function getOptionSpecificExcludesFor (_ref) {
      var loose = _ref.loose;
      return loose ? defaultExcludesForLooseMode : null;
    }
  
    var lib = {};
  
    Object.defineProperty(lib, "__esModule", {
      value: true
    });
    lib["default"] = void 0;
    var _helperPluginUtils = require$$0$5;
    var _default = (0, _helperPluginUtils.declare)(function (api) {
      api.assertVersion(7);
      return {
        name: "syntax-json-strings",
        manipulateOptions: function manipulateOptions(opts, parserOpts) {
          parserOpts.plugins.push("jsonStrings");
        }
      };
    });
    lib["default"] = _default;
  
    var transformAsyncArrowsInClass = {exports: {}};
  
    (function (module, exports) {
  
      exports.__esModule = true;
      exports["default"] = void 0;
      var OPTS = {
        allowInsertArrow: false,
        specCompliant: false
      };
      var _default = function _default(_ref) {
        var t = _ref.types;
        return {
          name: "transform-async-arrows-in-class",
          visitor: {
            ArrowFunctionExpression: function ArrowFunctionExpression(path) {
              if (path.node.async && path.findParent(t.isClassMethod)) {
                path.arrowFunctionToExpression(OPTS);
              }
            }
          }
        };
      };
      exports["default"] = _default;
      module.exports = exports["default"];
    })(transformAsyncArrowsInClass, transformAsyncArrowsInClass.exports);
    var bugfixAsyncArrowsInClass = transformAsyncArrowsInClass.exports;
  
    var transformEdgeDefaultParameters = {exports: {}};
  
    (function (module, exports) {
  
      exports.__esModule = true;
      exports["default"] = void 0;
      var _default = function _default(_ref) {
        var t = _ref.types;
        var isArrowParent = function isArrowParent(p) {
          return p.parentKey === "params" && p.parentPath && t.isArrowFunctionExpression(p.parentPath);
        };
        return {
          name: "transform-edge-default-parameters",
          visitor: {
            AssignmentPattern: function AssignmentPattern(path) {
              var arrowArgParent = path.find(isArrowParent);
              if (arrowArgParent && path.parent.shorthand) {
                path.parent.shorthand = false;
                (path.parent.extra || {}).shorthand = false;
                path.scope.rename(path.parent.key.name);
              }
            }
          }
        };
      };
      exports["default"] = _default;
      module.exports = exports["default"];
    })(transformEdgeDefaultParameters, transformEdgeDefaultParameters.exports);
    var bugfixEdgeDefaultParameters = transformEdgeDefaultParameters.exports;
  
    var transformEdgeFunctionName = {exports: {}};
  
    (function (module, exports) {
  
      exports.__esModule = true;
      exports["default"] = void 0;
      var _default = function _default(_ref) {
        var t = _ref.types;
        return {
          name: "transform-edge-function-name",
          visitor: {
            FunctionExpression: {
              exit: function exit(path) {
                if (!path.node.id && t.isIdentifier(path.parent.id)) {
                  var id = t.cloneNode(path.parent.id);
                  var binding = path.scope.getBinding(id.name);
                  if (binding == null ? void 0 : binding.constantViolations.length) {
                    path.scope.rename(id.name);
                  }
                  path.node.id = id;
                }
              }
            }
          }
        };
      };
      exports["default"] = _default;
      module.exports = exports["default"];
    })(transformEdgeFunctionName, transformEdgeFunctionName.exports);
    var bugfixEdgeFunctionName = transformEdgeFunctionName.exports;
  
    var transformTaggedTemplateCaching = {exports: {}};
  
    (function (module, exports) {
  
      exports.__esModule = true;
      exports["default"] = void 0;
      var _default = function _default(_ref) {
        var t = _ref.types;
        return {
          name: "transform-tagged-template-caching",
          visitor: {
            TaggedTemplateExpression: function TaggedTemplateExpression(path, state) {
              var processed = state.get("processed");
              if (!processed) {
                processed = new WeakSet();
                state.set("processed", processed);
              }
              if (processed.has(path.node)) return path.skip();
              var expressions = path.node.quasi.expressions;
              var identity = state.get("identity");
              if (!identity) {
                identity = path.scope.getProgramParent().generateDeclaredUidIdentifier("_");
                state.set("identity", identity);
                var binding = path.scope.getBinding(identity.name);
                binding.path.get("init").replaceWith(t.arrowFunctionExpression([t.identifier("t")], t.identifier("t")));
              }
              var template = t.taggedTemplateExpression(t.cloneNode(identity), t.templateLiteral(path.node.quasi.quasis, expressions.map(function () {
                return t.numericLiteral(0);
              })));
              processed.add(template);
              var ident = path.scope.getProgramParent().generateDeclaredUidIdentifier("t");
              path.scope.getBinding(ident.name).path.parent.kind = "let";
              var inlineCache = t.logicalExpression("||", ident, t.assignmentExpression("=", t.cloneNode(ident), template));
              var node = t.callExpression(path.node.tag, [inlineCache].concat(_toConsumableArray(expressions)));
              path.replaceWith(node);
            }
          }
        };
      };
      exports["default"] = _default;
      module.exports = exports["default"];
    })(transformTaggedTemplateCaching, transformTaggedTemplateCaching.exports);
    var bugfixTaggedTemplateCaching = transformTaggedTemplateCaching.exports;
  
    var transformSafariBlockShadowing = {exports: {}};
  
    (function (module, exports) {
  
      exports.__esModule = true;
      exports["default"] = _default;
      function _default(_ref) {
        var t = _ref.types;
        return {
          name: "transform-safari-block-shadowing",
          visitor: {
            VariableDeclarator: function VariableDeclarator(path) {
              var kind = path.parent.kind;
              if (kind !== "let" && kind !== "const") return;
              var block = path.scope.block;
              if (t.isFunction(block) || t.isProgram(block)) return;
              var bindings = t.getOuterBindingIdentifiers(path.node.id);
              for (var _i = 0, _Object$keys = Object.keys(bindings); _i < _Object$keys.length; _i++) {
                var name = _Object$keys[_i];
                var scope = path.scope;
                if (!scope.hasOwnBinding(name)) continue;
                while (scope = scope.parent) {
                  if (scope.hasOwnBinding(name)) {
                    path.scope.rename(name);
                    break;
                  }
                  if (t.isFunction(scope.block) || t.isProgram(scope.block)) {
                    break;
                  }
                }
              }
            }
          }
        };
      }
      module.exports = exports["default"];
    })(transformSafariBlockShadowing, transformSafariBlockShadowing.exports);
    var bugfixSafariBlockShadowing = transformSafariBlockShadowing.exports;
  
    var transformSafariForShadowing = {exports: {}};
  
    (function (module, exports) {
  
      exports.__esModule = true;
      exports["default"] = void 0;
      function handle(declaration) {
        if (!declaration.isVariableDeclaration()) return;
        var fn = declaration.getFunctionParent();
        var name = declaration.node.declarations[0].id.name;
        if (fn && fn.scope.hasOwnBinding(name) && fn.scope.getOwnBinding(name).kind === "param") {
          declaration.scope.rename(name);
        }
      }
      var _default = function _default() {
        return {
          name: "transform-safari-for-shadowing",
          visitor: {
            ForXStatement: function ForXStatement(path) {
              handle(path.get("left"));
            },
            ForStatement: function ForStatement(path) {
              handle(path.get("init"));
            }
          }
        };
      };
      exports["default"] = _default;
      module.exports = exports["default"];
    })(transformSafariForShadowing, transformSafariForShadowing.exports);
    var bugfixSafariForShadowing = transformSafariForShadowing.exports;
  
    function shouldTransform$1(path) {
      var node = path.node;
      var functionId = node.id;
      if (!functionId) return false;
      var name = functionId.name;
      var paramNameBinding = path.scope.getOwnBinding(name);
      if (paramNameBinding === undefined) {
        return false;
      }
      if (paramNameBinding.kind !== "param") {
        return false;
      }
      if (paramNameBinding.identifier === paramNameBinding.path.node) {
        return false;
      }
      return name;
    }
  
    var bugfixSafariIdDestructuringCollisionInFunctionExpression = declare(function (api) {
      api.assertVersion("^7.16.0");
      return {
        name: "plugin-bugfix-safari-id-destructuring-collision-in-function-expression",
        visitor: {
          FunctionExpression: function FunctionExpression(path) {
            var name = shouldTransform$1(path);
            if (name) {
              var scope = path.scope;
              var newParamName = scope.generateUid(name);
              scope.rename(name, newParamName);
            }
          }
        }
      };
    });
  
    function matchAffectedArguments(argumentNodes) {
      var spreadIndex = argumentNodes.findIndex(function (node) {
        return isSpreadElement$1(node);
      });
      return spreadIndex >= 0 && spreadIndex !== argumentNodes.length - 1;
    }
    function shouldTransform(path) {
      var optionalPath = path;
      var chains = [];
      for (;;) {
        if (optionalPath.isOptionalMemberExpression()) {
          chains.push(optionalPath.node);
          optionalPath = skipTransparentExprWrappers(optionalPath.get("object"));
        } else if (optionalPath.isOptionalCallExpression()) {
          chains.push(optionalPath.node);
          optionalPath = skipTransparentExprWrappers(optionalPath.get("callee"));
        } else {
          break;
        }
      }
      for (var i = 0; i < chains.length; i++) {
        var node = chains[i];
        if (isOptionalCallExpression$3(node) && matchAffectedArguments(node.arguments)) {
          if (node.optional) {
            return true;
          }
          var callee = chains[i + 1];
          if (isOptionalMemberExpression$3(callee, {
            optional: true
          })) {
            return true;
          }
        }
      }
      return false;
    }
  
    var bugfixV8SpreadParametersInOptionalChaining = declare(function (api) {
      var _api$assumption, _api$assumption2;
      api.assertVersion(7);
      var noDocumentAll = (_api$assumption = api.assumption("noDocumentAll")) != null ? _api$assumption : false;
      var pureGetters = (_api$assumption2 = api.assumption("pureGetters")) != null ? _api$assumption2 : false;
      return {
        name: "bugfix-v8-spread-parameters-in-optional-chaining",
        visitor: {
          "OptionalCallExpression|OptionalMemberExpression": function OptionalCallExpressionOptionalMemberExpression(path) {
            if (shouldTransform(path)) {
              transform$1(path, {
                noDocumentAll: noDocumentAll,
                pureGetters: pureGetters
              });
            }
          }
        }
      };
    });
  
    var availablePlugins$1 = {
      "bugfix/transform-async-arrows-in-class": function bugfixTransformAsyncArrowsInClass() {
        return bugfixAsyncArrowsInClass;
      },
      "bugfix/transform-edge-default-parameters": function bugfixTransformEdgeDefaultParameters() {
        return bugfixEdgeDefaultParameters;
      },
      "bugfix/transform-edge-function-name": function bugfixTransformEdgeFunctionName() {
        return bugfixEdgeFunctionName;
      },
      "bugfix/transform-safari-block-shadowing": function bugfixTransformSafariBlockShadowing() {
        return bugfixSafariBlockShadowing;
      },
      "bugfix/transform-safari-for-shadowing": function bugfixTransformSafariForShadowing() {
        return bugfixSafariForShadowing;
      },
      "bugfix/transform-safari-id-destructuring-collision-in-function-expression": function bugfixTransformSafariIdDestructuringCollisionInFunctionExpression() {
        return bugfixSafariIdDestructuringCollisionInFunctionExpression;
      },
      "bugfix/transform-tagged-template-caching": function bugfixTransformTaggedTemplateCaching() {
        return bugfixTaggedTemplateCaching;
      },
      "bugfix/transform-v8-spread-parameters-in-optional-chaining": function bugfixTransformV8SpreadParametersInOptionalChaining() {
        return bugfixV8SpreadParametersInOptionalChaining;
      },
      "syntax-async-generators": function syntaxAsyncGenerators$1() {
        return syntaxAsyncGenerators;
      },
      "syntax-class-properties": function syntaxClassProperties$1() {
        return syntaxClassProperties;
      },
      "syntax-class-static-block": function syntaxClassStaticBlock$1() {
        return syntaxClassStaticBlock;
      },
      "syntax-dynamic-import": function syntaxDynamicImport() {
        return _syntaxDynamicImport;
      },
      "syntax-export-namespace-from": function syntaxExportNamespaceFrom() {
        return _syntaxExportNamespaceFrom;
      },
      "syntax-import-assertions": function syntaxImportAssertions() {
        return _syntaxImportAssertions;
      },
      "syntax-import-meta": function syntaxImportMeta$1() {
        return syntaxImportMeta;
      },
      "syntax-json-strings": function syntaxJsonStrings() {
        return lib;
      },
      "syntax-logical-assignment-operators": function syntaxLogicalAssignmentOperators() {
        return _syntaxLogicalAssignmentOperators;
      },
      "syntax-nullish-coalescing-operator": function syntaxNullishCoalescingOperator() {
        return _syntaxNullishCoalescingOperator;
      },
      "syntax-numeric-separator": function syntaxNumericSeparator() {
        return _syntaxNumericSeparator;
      },
      "syntax-object-rest-spread": function syntaxObjectRestSpread$1() {
        return syntaxObjectRestSpread;
      },
      "syntax-optional-catch-binding": function syntaxOptionalCatchBinding$1() {
        return syntaxOptionalCatchBinding;
      },
      "syntax-optional-chaining": function syntaxOptionalChaining() {
        return _syntaxOptionalChaining;
      },
      "syntax-private-property-in-object": function syntaxPrivatePropertyInObject() {
        return _syntaxPrivatePropertyInObject;
      },
      "syntax-top-level-await": function syntaxTopLevelAwait$1() {
        return syntaxTopLevelAwait;
      },
      "transform-arrow-functions": function transformArrowFunctions() {
        return _transformArrowFunctions;
      },
      "transform-async-generator-functions": function transformAsyncGeneratorFunctions() {
        return proposalAsyncGeneratorFunctions;
      },
      "transform-async-to-generator": function transformAsyncToGenerator() {
        return _transformAsyncToGenerator;
      },
      "transform-block-scoped-functions": function transformBlockScopedFunctions() {
        return _transformBlockScopedFunctions;
      },
      "transform-block-scoping": function transformBlockScoping() {
        return _transformBlockScoping;
      },
      "transform-class-properties": function transformClassProperties() {
        return proposalClassProperties;
      },
      "transform-class-static-block": function transformClassStaticBlock() {
        return proposalClassStaticBlock;
      },
      "transform-classes": function transformClasses() {
        return _transformClasses;
      },
      "transform-computed-properties": function transformComputedProperties() {
        return _transformComputedProperties;
      },
      "transform-destructuring": function transformDestructuring() {
        return _transformDestructuring;
      },
      "transform-dotall-regex": function transformDotallRegex() {
        return _transformDotallRegex;
      },
      "transform-duplicate-keys": function transformDuplicateKeys() {
        return _transformDuplicateKeys;
      },
      "transform-dynamic-import": function transformDynamicImport() {
        return proposalDynamicImport;
      },
      "transform-exponentiation-operator": function transformExponentiationOperator() {
        return transformExponentialOperator;
      },
      "transform-export-namespace-from": function transformExportNamespaceFrom() {
        return proposalExportNamespaceFrom;
      },
      "transform-for-of": function transformForOf() {
        return _transformForOf;
      },
      "transform-function-name": function transformFunctionName() {
        return _transformFunctionName;
      },
      "transform-json-strings": function transformJsonStrings() {
        return proposalJsonStrings;
      },
      "transform-literals": function transformLiterals() {
        return _transformLiterals;
      },
      "transform-logical-assignment-operators": function transformLogicalAssignmentOperators() {
        return proposalLogicalAssignmentOperators;
      },
      "transform-member-expression-literals": function transformMemberExpressionLiterals() {
        return _transformMemberExpressionLiterals;
      },
      "transform-modules-amd": function transformModulesAmd() {
        return _transformModulesAmd;
      },
      "transform-modules-commonjs": function transformModulesCommonjs() {
        return transformModulesCommonJS;
      },
      "transform-modules-systemjs": function transformModulesSystemjs() {
        return _transformModulesSystemjs;
      },
      "transform-modules-umd": function transformModulesUmd() {
        return _transformModulesUmd;
      },
      "transform-named-capturing-groups-regex": function transformNamedCapturingGroupsRegex() {
        return _transformNamedCapturingGroupsRegex;
      },
      "transform-new-target": function transformNewTarget() {
        return _transformNewTarget;
      },
      "transform-nullish-coalescing-operator": function transformNullishCoalescingOperator() {
        return proposalNullishCoalescingOperator;
      },
      "transform-numeric-separator": function transformNumericSeparator() {
        return proposalNumericSeparator;
      },
      "transform-object-rest-spread": function transformObjectRestSpread() {
        return proposalObjectRestSpread;
      },
      "transform-object-super": function transformObjectSuper() {
        return _transformObjectSuper;
      },
      "transform-optional-catch-binding": function transformOptionalCatchBinding() {
        return proposalOptionalCatchBinding;
      },
      "transform-optional-chaining": function transformOptionalChaining() {
        return proposalOptionalChaining;
      },
      "transform-parameters": function transformParameters() {
        return _transformParameters;
      },
      "transform-private-methods": function transformPrivateMethods() {
        return proposalPrivateMethods;
      },
      "transform-private-property-in-object": function transformPrivatePropertyInObject() {
        return proposalPrivatePropertyInObject;
      },
      "transform-property-literals": function transformPropertyLiterals() {
        return _transformPropertyLiterals;
      },
      "transform-regenerator": function transformRegenerator() {
        return _transformRegenerator;
      },
      "transform-reserved-words": function transformReservedWords() {
        return _transformReservedWords;
      },
      "transform-shorthand-properties": function transformShorthandProperties() {
        return _transformShorthandProperties;
      },
      "transform-spread": function transformSpread() {
        return _transformSpread;
      },
      "transform-sticky-regex": function transformStickyRegex() {
        return _transformStickyRegex;
      },
      "transform-template-literals": function transformTemplateLiterals() {
        return _transformTemplateLiterals;
      },
      "transform-typeof-symbol": function transformTypeofSymbol() {
        return _transformTypeofSymbol;
      },
      "transform-unicode-escapes": function transformUnicodeEscapes() {
        return _transformUnicodeEscapes;
      },
      "transform-unicode-property-regex": function transformUnicodePropertyRegex() {
        return proposalUnicodePropertyRegex;
      },
      "transform-unicode-regex": function transformUnicodeRegex() {
        return _transformUnicodeRegex;
      }
    };
    var minVersions = {
      "bugfix/transform-safari-id-destructuring-collision-in-function-expression": "7.16.0",
      "transform-class-static-block": "7.12.0",
      "transform-private-property-in-object": "7.10.0"
    };
  
    var has$3 = Function.call.bind(Object.hasOwnProperty);
    function addProposalSyntaxPlugins(items, proposalSyntaxPlugins) {
      proposalSyntaxPlugins.forEach(function (plugin) {
        items.add(plugin);
      });
    }
    function removeUnnecessaryItems(items, overlapping) {
      items.forEach(function (item) {
        var _overlapping$item;
        (_overlapping$item = overlapping[item]) == null ? void 0 : _overlapping$item.forEach(function (name) {
          return items["delete"](name);
        });
      });
    }
    function removeUnsupportedItems(items, babelVersion) {
      items.forEach(function (item) {
        if (has$3(minVersions, item) && semver$2.lt(babelVersion, minVersions[item])) {
          items["delete"](item);
        }
      });
    }
  
    var moduleTransformations = {
      auto: "transform-modules-commonjs",
      amd: "transform-modules-amd",
      commonjs: "transform-modules-commonjs",
      cjs: "transform-modules-commonjs",
      systemjs: "transform-modules-systemjs",
      umd: "transform-modules-umd"
    };
  
    var coreJsCompat = require$$0$3;
  
    var require$$0$1 = {
        "bugfix/transform-async-arrows-in-class": {
        chrome: "55",
        opera: "42",
        edge: "15",
        firefox: "52",
        safari: "11",
        node: "7.6",
        deno: "1",
        ios: "11",
        samsung: "6",
        electron: "1.6"
    },
        "bugfix/transform-edge-default-parameters": {
        chrome: "49",
        opera: "36",
        edge: "18",
        firefox: "52",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "0.37"
    },
        "bugfix/transform-edge-function-name": {
        chrome: "51",
        opera: "38",
        edge: "79",
        firefox: "53",
        safari: "10",
        node: "6.5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.2"
    },
        "bugfix/transform-safari-block-shadowing": {
        chrome: "49",
        opera: "36",
        edge: "12",
        firefox: "44",
        safari: "11",
        node: "6",
        deno: "1",
        ie: "11",
        ios: "11",
        samsung: "5",
        electron: "0.37"
    },
        "bugfix/transform-safari-for-shadowing": {
        chrome: "49",
        opera: "36",
        edge: "12",
        firefox: "4",
        safari: "11",
        node: "6",
        deno: "1",
        ie: "11",
        ios: "11",
        samsung: "5",
        rhino: "1.7.13",
        electron: "0.37"
    },
        "bugfix/transform-safari-id-destructuring-collision-in-function-expression": {
        chrome: "49",
        opera: "36",
        edge: "14",
        firefox: "2",
        node: "6",
        deno: "1",
        samsung: "5",
        electron: "0.37"
    },
        "bugfix/transform-tagged-template-caching": {
        chrome: "41",
        opera: "28",
        edge: "12",
        firefox: "34",
        safari: "13",
        node: "4",
        deno: "1",
        ios: "13",
        samsung: "3.4",
        rhino: "1.7.14",
        electron: "0.21"
    },
        "bugfix/transform-v8-spread-parameters-in-optional-chaining": {
        chrome: "91",
        opera: "77",
        edge: "91",
        firefox: "74",
        safari: "13.1",
        node: "16.9",
        deno: "1.9",
        ios: "13.4",
        samsung: "16",
        electron: "13.0"
    },
        "transform-optional-chaining": {
        chrome: "80",
        opera: "67",
        edge: "80",
        firefox: "74",
        safari: "13.1",
        node: "14",
        deno: "1",
        ios: "13.4",
        samsung: "13",
        electron: "8.0"
    },
        "proposal-optional-chaining": {
        chrome: "80",
        opera: "67",
        edge: "80",
        firefox: "74",
        safari: "13.1",
        node: "14",
        deno: "1",
        ios: "13.4",
        samsung: "13",
        electron: "8.0"
    },
        "transform-parameters": {
        chrome: "49",
        opera: "36",
        edge: "15",
        firefox: "53",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "0.37"
    },
        "transform-async-to-generator": {
        chrome: "55",
        opera: "42",
        edge: "15",
        firefox: "52",
        safari: "10.1",
        node: "7.6",
        deno: "1",
        ios: "10.3",
        samsung: "6",
        electron: "1.6"
    },
        "transform-template-literals": {
        chrome: "41",
        opera: "28",
        edge: "13",
        firefox: "34",
        safari: "9",
        node: "4",
        deno: "1",
        ios: "9",
        samsung: "3.4",
        electron: "0.21"
    },
        "transform-function-name": {
        chrome: "51",
        opera: "38",
        edge: "14",
        firefox: "53",
        safari: "10",
        node: "6.5",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "1.2"
    },
        "transform-block-scoping": {
        chrome: "49",
        opera: "36",
        edge: "14",
        firefox: "51",
        safari: "10",
        node: "6",
        deno: "1",
        ios: "10",
        samsung: "5",
        electron: "0.37"
    }
    };
  
    var pluginBugfixes = require$$0$1;
  
    var require$$0 = {
        "transform-async-to-generator": [
        "bugfix/transform-async-arrows-in-class"
    ],
        "transform-parameters": [
        "bugfix/transform-edge-default-parameters",
        "bugfix/transform-safari-id-destructuring-collision-in-function-expression"
    ],
        "transform-function-name": [
        "bugfix/transform-edge-function-name"
    ],
        "transform-block-scoping": [
        "bugfix/transform-safari-block-shadowing",
        "bugfix/transform-safari-for-shadowing"
    ],
        "transform-template-literals": [
        "bugfix/transform-tagged-template-caching"
    ],
        "transform-optional-chaining": [
        "bugfix/transform-v8-spread-parameters-in-optional-chaining"
    ],
        "proposal-optional-chaining": [
        "bugfix/transform-v8-spread-parameters-in-optional-chaining"
    ]
    };
  
    var overlappingPlugins$1 = require$$0;
  
    var keys = Object.keys;
    var plugins = filterAvailable(plugins$1);
    var pluginsBugfixes = filterAvailable(pluginBugfixes);
    var overlappingPlugins = filterAvailable(overlappingPlugins$1);
    function filterAvailable(data) {
      var result = {};
      for (var _iterator = _createForOfIteratorHelperLoose(keys(data)), _step; !(_step = _iterator()).done;) {
        var plugin = _step.value;
        if (Object.hasOwnProperty.call(availablePlugins$1, plugin)) {
          result[plugin] = data[plugin];
        }
      }
      return result;
    }
  
    var TopLevelOptions = {
      bugfixes: "bugfixes",
      configPath: "configPath",
      corejs: "corejs",
      debug: "debug",
      exclude: "exclude",
      forceAllTransforms: "forceAllTransforms",
      ignoreBrowserslistConfig: "ignoreBrowserslistConfig",
      include: "include",
      loose: "loose",
      modules: "modules",
      shippedProposals: "shippedProposals",
      spec: "spec",
      targets: "targets",
      useBuiltIns: "useBuiltIns",
      browserslistEnv: "browserslistEnv"
    };
    var ModulesOption = {
      "false": false,
      auto: "auto",
      amd: "amd",
      commonjs: "commonjs",
      cjs: "cjs",
      systemjs: "systemjs",
      umd: "umd"
    };
    var UseBuiltInsOption = {
      "false": false,
      entry: "entry",
      usage: "usage"
    };
  
    var corejs2DefaultWebIncludes = ["web.timers", "web.immediate", "web.dom.iterable"];
    var v$1 = new OptionValidator("@babel/preset-env");
    var allPluginsList = Object.keys(plugins);
    var modulePlugins = ["transform-dynamic-import"].concat(_toConsumableArray(Object.keys(moduleTransformations).map(function (m) {
      return moduleTransformations[m];
    })));
    var getValidIncludesAndExcludes = function getValidIncludesAndExcludes(type, corejs) {
      return Array.from(new Set([].concat(allPluginsList, _toConsumableArray(type === "exclude" ? modulePlugins : []), _toConsumableArray(corejs ? corejs == 2 ? [].concat(_toConsumableArray(Object.keys(corejs2BuiltIns)), corejs2DefaultWebIncludes) : Object.keys(coreJsCompat) : []))));
    };
    function flatMap(array, fn) {
      return Array.prototype.concat.apply([], array.map(fn));
    }
    var normalizePluginName = function normalizePluginName(plugin) {
      return plugin.replace(/^(@babel\/|babel-)(plugin-)?/, "");
    };
    var expandIncludesAndExcludes = function expandIncludesAndExcludes(filterList, type, corejs) {
      if (filterList === void 0) {
        filterList = [];
      }
      if (filterList.length === 0) return [];
      var filterableItems = getValidIncludesAndExcludes(type, corejs);
      var invalidFilters = [];
      var selectedPlugins = flatMap(filterList, function (filter) {
        var re;
        if (typeof filter === "string") {
          try {
            re = new RegExp("^" + normalizePluginName(filter) + "$");
          } catch (e) {
            invalidFilters.push(filter);
            return [];
          }
        } else {
          re = filter;
        }
        var items = filterableItems.filter(function (item) {
          return re.test(item) || re.test(item.replace(/^transform-/, "proposal-"));
        });
        if (items.length === 0) invalidFilters.push(filter);
        return items;
      });
      v$1.invariant(invalidFilters.length === 0, "The plugins/built-ins '" + invalidFilters.join(", ") + "' passed to the '" + type + "' option are not\n    valid. Please check data/[plugin-features|built-in-features].js in babel-preset-env");
      return selectedPlugins;
    };
    var checkDuplicateIncludeExcludes = function checkDuplicateIncludeExcludes(include, exclude) {
      if (include === void 0) {
        include = [];
      }
      if (exclude === void 0) {
        exclude = [];
      }
      var duplicates = include.filter(function (opt) {
        return exclude.indexOf(opt) >= 0;
      });
      v$1.invariant(duplicates.length === 0, "The plugins/built-ins '" + duplicates.join(", ") + "' were found in both the \"include\" and\n    \"exclude\" options.");
    };
    var normalizeTargets = function normalizeTargets(targets) {
      if (typeof targets === "string" || Array.isArray(targets)) {
        return {
          browsers: targets
        };
      }
      return Object.assign({}, targets);
    };
    var validateModulesOption = function validateModulesOption(modulesOpt) {
      if (modulesOpt === void 0) {
        modulesOpt = ModulesOption.auto;
      }
      v$1.invariant(ModulesOption[modulesOpt.toString()] || modulesOpt === ModulesOption["false"], "The 'modules' option must be one of \n" + " - 'false' to indicate no module processing\n" + " - a specific module type: 'commonjs', 'amd', 'umd', 'systemjs'" + " - 'auto' (default) which will automatically select 'false' if the current\n" + "   process is known to support ES module syntax, or \"commonjs\" otherwise\n");
      return modulesOpt;
    };
    var validateUseBuiltInsOption = function validateUseBuiltInsOption(builtInsOpt) {
      if (builtInsOpt === void 0) {
        builtInsOpt = false;
      }
      v$1.invariant(UseBuiltInsOption[builtInsOpt.toString()] || builtInsOpt === UseBuiltInsOption["false"], "The 'useBuiltIns' option must be either\n    'false' (default) to indicate no polyfill,\n    '\"entry\"' to indicate replacing the entry polyfill, or\n    '\"usage\"' to import only used polyfills per file");
      return builtInsOpt;
    };
    function normalizeCoreJSOption(corejs, useBuiltIns) {
      var proposals = false;
      var rawVersion;
      if (useBuiltIns && corejs === undefined) {
        rawVersion = 2;
        console.warn("\nWARNING (@babel/preset-env): We noticed you're using the `useBuiltIns` option without declaring a " + "core-js version. Currently, we assume version 2.x when no version " + "is passed. Since this default version will likely change in future " + "versions of Babel, we recommend explicitly setting the core-js version " + "you are using via the `corejs` option.\n" + "\nYou should also be sure that the version you pass to the `corejs` " + "option matches the version specified in your `package.json`'s " + "`dependencies` section. If it doesn't, you need to run one of the " + "following commands:\n\n" + "  npm install --save core-js@2    npm install --save core-js@3\n" + "  yarn add core-js@2              yarn add core-js@3\n\n" + "More info about useBuiltIns: https://babeljs.io/docs/en/babel-preset-env#usebuiltins\n" + "More info about core-js: https://babeljs.io/docs/en/babel-preset-env#corejs");
      } else if (typeof corejs === "object" && corejs !== null) {
        rawVersion = corejs.version;
        proposals = Boolean(corejs.proposals);
      } else {
        rawVersion = corejs;
      }
      var version = rawVersion ? semver$2.coerce(String(rawVersion)) : false;
      if (!useBuiltIns && version) {
        console.warn("\nWARNING (@babel/preset-env): The `corejs` option only has an effect when the `useBuiltIns` option is not `false`\n");
      }
      if (useBuiltIns && (!version || version.major < 2 || version.major > 3)) {
        throw new RangeError("Invalid Option: The version passed to `corejs` is invalid. Currently, " + "only core-js@2 and core-js@3 are supported.");
      }
      return {
        version: version,
        proposals: proposals
      };
    }
    function normalizeOptions$3(opts) {
      v$1.validateTopLevelOptions(opts, TopLevelOptions);
      var useBuiltIns = validateUseBuiltInsOption(opts.useBuiltIns);
      var corejs = normalizeCoreJSOption(opts.corejs, useBuiltIns);
      var include = expandIncludesAndExcludes(opts.include, TopLevelOptions.include, !!corejs.version && corejs.version.major);
      var exclude = expandIncludesAndExcludes(opts.exclude, TopLevelOptions.exclude, !!corejs.version && corejs.version.major);
      checkDuplicateIncludeExcludes(include, exclude);
      return {
        bugfixes: v$1.validateBooleanOption(TopLevelOptions.bugfixes, opts.bugfixes, false),
        configPath: v$1.validateStringOption(TopLevelOptions.configPath, opts.configPath, browser$1$1.cwd()),
        corejs: corejs,
        debug: v$1.validateBooleanOption(TopLevelOptions.debug, opts.debug, false),
        include: include,
        exclude: exclude,
        forceAllTransforms: v$1.validateBooleanOption(TopLevelOptions.forceAllTransforms, opts.forceAllTransforms, false),
        ignoreBrowserslistConfig: v$1.validateBooleanOption(TopLevelOptions.ignoreBrowserslistConfig, opts.ignoreBrowserslistConfig, false),
        loose: v$1.validateBooleanOption(TopLevelOptions.loose, opts.loose),
        modules: validateModulesOption(opts.modules),
        shippedProposals: v$1.validateBooleanOption(TopLevelOptions.shippedProposals, opts.shippedProposals, false),
        spec: v$1.validateBooleanOption(TopLevelOptions.spec, opts.spec, false),
        targets: normalizeTargets(opts.targets),
        useBuiltIns: useBuiltIns,
        browserslistEnv: v$1.validateStringOption(TopLevelOptions.browserslistEnv, opts.browserslistEnv)
      };
    }
  
    var proposalPlugins = new Set();
    var proposalSyntaxPlugins = ["syntax-import-assertions"];
    var pluginSyntaxObject = {
      "transform-async-generator-functions": "syntax-async-generators",
      "transform-class-properties": "syntax-class-properties",
      "transform-class-static-block": "syntax-class-static-block",
      "transform-json-strings": "syntax-json-strings",
      "transform-nullish-coalescing-operator": "syntax-nullish-coalescing-operator",
      "transform-numeric-separator": "syntax-numeric-separator",
      "transform-object-rest-spread": "syntax-object-rest-spread",
      "transform-optional-catch-binding": "syntax-optional-catch-binding",
      "transform-optional-chaining": "syntax-optional-chaining",
      "transform-private-methods": "syntax-class-properties",
      "transform-private-property-in-object": "syntax-private-property-in-object",
      "transform-unicode-property-regex": null
    };
    var pluginSyntaxEntries = Object.keys(pluginSyntaxObject).map(function (key) {
      return [key, pluginSyntaxObject[key]];
    });
    var pluginSyntaxMap = new Map(pluginSyntaxEntries);
  
    var isCallExpression = isCallExpression$8,
      isExpressionStatement = isExpressionStatement$3,
      isIdentifier = isIdentifier$j,
      isStringLiteral = isStringLiteral$6;
    function getImportSource$1(_ref) {
      var node = _ref.node;
      if (node.specifiers.length === 0) return node.source.value;
    }
    function getRequireSource$1(_ref2) {
      var node = _ref2.node;
      if (!isExpressionStatement(node)) return;
      var expression = node.expression;
      if (isCallExpression(expression) && isIdentifier(expression.callee) && expression.callee.name === "require" && expression.arguments.length === 1 && isStringLiteral(expression.arguments[0])) {
        return expression.arguments[0].value;
      }
    }
    function isPolyfillSource(source) {
      return source === "@babel/polyfill" || source === "core-js";
    }
  
    function isRegeneratorSource(source) {
      return source === "regenerator-runtime/runtime" || source === "regenerator-runtime/runtime.js";
    }
    function removeRegeneratorEntryPlugin () {
      var visitor = {
        ImportDeclaration: function ImportDeclaration(path) {
          if (isRegeneratorSource(getImportSource$1(path))) {
            this.regeneratorImportExcluded = true;
            path.remove();
          }
        },
        Program: function Program(path) {
          var _this = this;
          path.get("body").forEach(function (bodyPath) {
            if (isRegeneratorSource(getRequireSource$1(bodyPath))) {
              _this.regeneratorImportExcluded = true;
              bodyPath.remove();
            }
          });
        }
      };
      return {
        name: "preset-env/remove-regenerator",
        visitor: visitor,
        pre: function pre() {
          this.regeneratorImportExcluded = false;
        },
        post: function post() {
          if (this.opts.debug && this.regeneratorImportExcluded) {
            var filename = this.file.opts.filename;
            if (browser$1$1.env.BABEL_ENV === "test") {
              filename = filename.replace(/\\/g, "/");
            }
            console.log("\n[" + filename + "] Based on your targets, regenerator-runtime import excluded.");
          }
        }
      };
    }
  
    var _templateObject$1, _templateObject2$1, _templateObject3$1, _templateObject4;
    var BABEL_POLYFILL_DEPRECATION = "\n  `@babel/polyfill` is deprecated. Please, use required parts of `core-js`\n  and `regenerator-runtime/runtime` separately";
    var NO_DIRECT_POLYFILL_IMPORT = "\n  When setting `useBuiltIns: 'usage'`, polyfills are automatically imported when needed.\n  Please remove the direct import of `SPECIFIER` or use `useBuiltIns: 'entry'` instead.";
    function legacyBabelPolyfillPlugin (_ref, _ref2) {
      var template = _ref.template;
      var regenerator = _ref2.regenerator,
        deprecated = _ref2.deprecated,
        usage = _ref2.usage;
      return {
        name: "preset-env/replace-babel-polyfill",
        visitor: {
          ImportDeclaration: function (_ImportDeclaration) {
            function ImportDeclaration(_x) {
              return _ImportDeclaration.apply(this, arguments);
            }
            ImportDeclaration.toString = function () {
              return _ImportDeclaration.toString();
            };
            return ImportDeclaration;
          }(function (path) {
            var src = getImportSource$1(path);
            if (usage && isPolyfillSource(src)) {
              console.warn(NO_DIRECT_POLYFILL_IMPORT.replace("SPECIFIER", src));
              if (!deprecated) path.remove();
            } else if (src === "@babel/polyfill") {
              if (deprecated) {
                console.warn(BABEL_POLYFILL_DEPRECATION);
              } else if (regenerator) {
                path.replaceWithMultiple(template.ast(_templateObject$1 || (_templateObject$1 = _taggedTemplateLiteralLoose(["\n              import \"core-js\";\n              import \"regenerator-runtime/runtime.js\";\n            "]))));
              } else {
                path.replaceWith(template.ast(_templateObject2$1 || (_templateObject2$1 = _taggedTemplateLiteralLoose(["\n              import \"core-js\";\n            "]))));
              }
            }
          }),
          Program: function (_Program) {
            function Program(_x2) {
              return _Program.apply(this, arguments);
            }
            Program.toString = function () {
              return _Program.toString();
            };
            return Program;
          }(function (path) {
            path.get("body").forEach(function (bodyPath) {
              var src = getRequireSource$1(bodyPath);
              if (usage && isPolyfillSource(src)) {
                console.warn(NO_DIRECT_POLYFILL_IMPORT.replace("SPECIFIER", src));
                if (!deprecated) bodyPath.remove();
              } else if (src === "@babel/polyfill") {
                if (deprecated) {
                  console.warn(BABEL_POLYFILL_DEPRECATION);
                } else if (regenerator) {
                  bodyPath.replaceWithMultiple(template.ast(_templateObject3$1 || (_templateObject3$1 = _taggedTemplateLiteralLoose(["\n                require(\"core-js\");\n                require(\"regenerator-runtime/runtime.js\");\n              "]))));
                } else {
                  bodyPath.replaceWith(template.ast(_templateObject4 || (_templateObject4 = _taggedTemplateLiteralLoose(["\n                require(\"core-js\");\n              "]))));
                }
              }
            });
          })
        }
      };
    }
  
    var semver$1 = {exports: {}};
  
    (function (module, exports) {
      exports = module.exports = SemVer;
      var debug;
      if (typeof browser$1$1 === 'object' && browser$1$1.env && browser$1$1.env.NODE_DEBUG && /\bsemver\b/i.test(browser$1$1.env.NODE_DEBUG)) {
        debug = function debug() {
          var args = Array.prototype.slice.call(arguments, 0);
          args.unshift('SEMVER');
          console.log.apply(console, args);
        };
      } else {
        debug = function debug() {};
      }
      exports.SEMVER_SPEC_VERSION = '2.0.0';
      var MAX_LENGTH = 256;
      var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || 9007199254740991;
      var MAX_SAFE_COMPONENT_LENGTH = 16;
      var re = exports.re = [];
      var src = exports.src = [];
      var t = exports.tokens = {};
      var R = 0;
      function tok(n) {
        t[n] = R++;
      }
      tok('NUMERICIDENTIFIER');
      src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*';
      tok('NUMERICIDENTIFIERLOOSE');
      src[t.NUMERICIDENTIFIERLOOSE] = '[0-9]+';
      tok('NONNUMERICIDENTIFIER');
      src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*';
      tok('MAINVERSION');
      src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + '(' + src[t.NUMERICIDENTIFIER] + ')';
      tok('MAINVERSIONLOOSE');
      src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')';
      tok('PRERELEASEIDENTIFIER');
      src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] + '|' + src[t.NONNUMERICIDENTIFIER] + ')';
      tok('PRERELEASEIDENTIFIERLOOSE');
      src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] + '|' + src[t.NONNUMERICIDENTIFIER] + ')';
      tok('PRERELEASE');
      src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] + '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))';
      tok('PRERELEASELOOSE');
      src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] + '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))';
      tok('BUILDIDENTIFIER');
      src[t.BUILDIDENTIFIER] = '[0-9A-Za-z-]+';
      tok('BUILD');
      src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] + '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))';
      tok('FULL');
      tok('FULLPLAIN');
      src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] + src[t.PRERELEASE] + '?' + src[t.BUILD] + '?';
      src[t.FULL] = '^' + src[t.FULLPLAIN] + '$';
      tok('LOOSEPLAIN');
      src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] + src[t.PRERELEASELOOSE] + '?' + src[t.BUILD] + '?';
      tok('LOOSE');
      src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$';
      tok('GTLT');
      src[t.GTLT] = '((?:<|>)?=?)';
      tok('XRANGEIDENTIFIERLOOSE');
      src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*';
      tok('XRANGEIDENTIFIER');
      src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*';
      tok('XRANGEPLAIN');
      src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + '(?:' + src[t.PRERELEASE] + ')?' + src[t.BUILD] + '?' + ')?)?';
      tok('XRANGEPLAINLOOSE');
      src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + '(?:' + src[t.PRERELEASELOOSE] + ')?' + src[t.BUILD] + '?' + ')?)?';
      tok('XRANGE');
      src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$';
      tok('XRANGELOOSE');
      src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$';
      tok('COERCE');
      src[t.COERCE] = '(^|[^\\d])' + '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + '(?:$|[^\\d])';
      tok('COERCERTL');
      re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g');
      tok('LONETILDE');
      src[t.LONETILDE] = '(?:~>?)';
      tok('TILDETRIM');
      src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+';
      re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g');
      var tildeTrimReplace = '$1~';
      tok('TILDE');
      src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$';
      tok('TILDELOOSE');
      src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$';
      tok('LONECARET');
      src[t.LONECARET] = '(?:\\^)';
      tok('CARETTRIM');
      src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+';
      re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g');
      var caretTrimReplace = '$1^';
      tok('CARET');
      src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$';
      tok('CARETLOOSE');
      src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$';
      tok('COMPARATORLOOSE');
      src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$';
      tok('COMPARATOR');
      src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$';
      tok('COMPARATORTRIM');
      src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')';
      re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g');
      var comparatorTrimReplace = '$1$2$3';
      tok('HYPHENRANGE');
      src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' + '\\s+-\\s+' + '(' + src[t.XRANGEPLAIN] + ')' + '\\s*$';
      tok('HYPHENRANGELOOSE');
      src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' + '\\s+-\\s+' + '(' + src[t.XRANGEPLAINLOOSE] + ')' + '\\s*$';
      tok('STAR');
      src[t.STAR] = '(<|>)?=?\\s*\\*';
      for (var i = 0; i < R; i++) {
        debug(i, src[i]);
        if (!re[i]) {
          re[i] = new RegExp(src[i]);
        }
      }
      exports.parse = parse;
      function parse(version, options) {
        if (!options || typeof options !== 'object') {
          options = {
            loose: !!options,
            includePrerelease: false
          };
        }
        if (version instanceof SemVer) {
          return version;
        }
        if (typeof version !== 'string') {
          return null;
        }
        if (version.length > MAX_LENGTH) {
          return null;
        }
        var r = options.loose ? re[t.LOOSE] : re[t.FULL];
        if (!r.test(version)) {
          return null;
        }
        try {
          return new SemVer(version, options);
        } catch (er) {
          return null;
        }
      }
      exports.valid = valid;
      function valid(version, options) {
        var v = parse(version, options);
        return v ? v.version : null;
      }
      exports.clean = clean;
      function clean(version, options) {
        var s = parse(version.trim().replace(/^[=v]+/, ''), options);
        return s ? s.version : null;
      }
      exports.SemVer = SemVer;
      function SemVer(version, options) {
        if (!options || typeof options !== 'object') {
          options = {
            loose: !!options,
            includePrerelease: false
          };
        }
        if (version instanceof SemVer) {
          if (version.loose === options.loose) {
            return version;
          } else {
            version = version.version;
          }
        } else if (typeof version !== 'string') {
          throw new TypeError('Invalid Version: ' + version);
        }
        if (version.length > MAX_LENGTH) {
          throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters');
        }
        if (!(this instanceof SemVer)) {
          return new SemVer(version, options);
        }
        debug('SemVer', version, options);
        this.options = options;
        this.loose = !!options.loose;
        var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]);
        if (!m) {
          throw new TypeError('Invalid Version: ' + version);
        }
        this.raw = version;
        this.major = +m[1];
        this.minor = +m[2];
        this.patch = +m[3];
        if (this.major > MAX_SAFE_INTEGER || this.major < 0) {
          throw new TypeError('Invalid major version');
        }
        if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {
          throw new TypeError('Invalid minor version');
        }
        if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {
          throw new TypeError('Invalid patch version');
        }
        if (!m[4]) {
          this.prerelease = [];
        } else {
          this.prerelease = m[4].split('.').map(function (id) {
            if (/^[0-9]+$/.test(id)) {
              var num = +id;
              if (num >= 0 && num < MAX_SAFE_INTEGER) {
                return num;
              }
            }
            return id;
          });
        }
        this.build = m[5] ? m[5].split('.') : [];
        this.format();
      }
      SemVer.prototype.format = function () {
        this.version = this.major + '.' + this.minor + '.' + this.patch;
        if (this.prerelease.length) {
          this.version += '-' + this.prerelease.join('.');
        }
        return this.version;
      };
      SemVer.prototype.toString = function () {
        return this.version;
      };
      SemVer.prototype.compare = function (other) {
        debug('SemVer.compare', this.version, this.options, other);
        if (!(other instanceof SemVer)) {
          other = new SemVer(other, this.options);
        }
        return this.compareMain(other) || this.comparePre(other);
      };
      SemVer.prototype.compareMain = function (other) {
        if (!(other instanceof SemVer)) {
          other = new SemVer(other, this.options);
        }
        return compareIdentifiers(this.major, other.major) || compareIdentifiers(this.minor, other.minor) || compareIdentifiers(this.patch, other.patch);
      };
      SemVer.prototype.comparePre = function (other) {
        if (!(other instanceof SemVer)) {
          other = new SemVer(other, this.options);
        }
        if (this.prerelease.length && !other.prerelease.length) {
          return -1;
        } else if (!this.prerelease.length && other.prerelease.length) {
          return 1;
        } else if (!this.prerelease.length && !other.prerelease.length) {
          return 0;
        }
        var i = 0;
        do {
          var a = this.prerelease[i];
          var b = other.prerelease[i];
          debug('prerelease compare', i, a, b);
          if (a === undefined && b === undefined) {
            return 0;
          } else if (b === undefined) {
            return 1;
          } else if (a === undefined) {
            return -1;
          } else if (a === b) {
            continue;
          } else {
            return compareIdentifiers(a, b);
          }
        } while (++i);
      };
      SemVer.prototype.compareBuild = function (other) {
        if (!(other instanceof SemVer)) {
          other = new SemVer(other, this.options);
        }
        var i = 0;
        do {
          var a = this.build[i];
          var b = other.build[i];
          debug('prerelease compare', i, a, b);
          if (a === undefined && b === undefined) {
            return 0;
          } else if (b === undefined) {
            return 1;
          } else if (a === undefined) {
            return -1;
          } else if (a === b) {
            continue;
          } else {
            return compareIdentifiers(a, b);
          }
        } while (++i);
      };
      SemVer.prototype.inc = function (release, identifier) {
        switch (release) {
          case 'premajor':
            this.prerelease.length = 0;
            this.patch = 0;
            this.minor = 0;
            this.major++;
            this.inc('pre', identifier);
            break;
          case 'preminor':
            this.prerelease.length = 0;
            this.patch = 0;
            this.minor++;
            this.inc('pre', identifier);
            break;
          case 'prepatch':
            this.prerelease.length = 0;
            this.inc('patch', identifier);
            this.inc('pre', identifier);
            break;
          case 'prerelease':
            if (this.prerelease.length === 0) {
              this.inc('patch', identifier);
            }
            this.inc('pre', identifier);
            break;
          case 'major':
            if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {
              this.major++;
            }
            this.minor = 0;
            this.patch = 0;
            this.prerelease = [];
            break;
          case 'minor':
            if (this.patch !== 0 || this.prerelease.length === 0) {
              this.minor++;
            }
            this.patch = 0;
            this.prerelease = [];
            break;
          case 'patch':
            if (this.prerelease.length === 0) {
              this.patch++;
            }
            this.prerelease = [];
            break;
          case 'pre':
            if (this.prerelease.length === 0) {
              this.prerelease = [0];
            } else {
              var i = this.prerelease.length;
              while (--i >= 0) {
                if (typeof this.prerelease[i] === 'number') {
                  this.prerelease[i]++;
                  i = -2;
                }
              }
              if (i === -1) {
                this.prerelease.push(0);
              }
            }
            if (identifier) {
              if (this.prerelease[0] === identifier) {
                if (isNaN(this.prerelease[1])) {
                  this.prerelease = [identifier, 0];
                }
              } else {
                this.prerelease = [identifier, 0];
              }
            }
            break;
          default:
            throw new Error('invalid increment argument: ' + release);
        }
        this.format();
        this.raw = this.version;
        return this;
      };
      exports.inc = inc;
      function inc(version, release, loose, identifier) {
        if (typeof loose === 'string') {
          identifier = loose;
          loose = undefined;
        }
        try {
          return new SemVer(version, loose).inc(release, identifier).version;
        } catch (er) {
          return null;
        }
      }
      exports.diff = diff;
      function diff(version1, version2) {
        if (eq(version1, version2)) {
          return null;
        } else {
          var v1 = parse(version1);
          var v2 = parse(version2);
          var prefix = '';
          if (v1.prerelease.length || v2.prerelease.length) {
            prefix = 'pre';
            var defaultResult = 'prerelease';
          }
          for (var key in v1) {
            if (key === 'major' || key === 'minor' || key === 'patch') {
              if (v1[key] !== v2[key]) {
                return prefix + key;
              }
            }
          }
          return defaultResult;
        }
      }
      exports.compareIdentifiers = compareIdentifiers;
      var numeric = /^[0-9]+$/;
      function compareIdentifiers(a, b) {
        var anum = numeric.test(a);
        var bnum = numeric.test(b);
        if (anum && bnum) {
          a = +a;
          b = +b;
        }
        return a === b ? 0 : anum && !bnum ? -1 : bnum && !anum ? 1 : a < b ? -1 : 1;
      }
      exports.rcompareIdentifiers = rcompareIdentifiers;
      function rcompareIdentifiers(a, b) {
        return compareIdentifiers(b, a);
      }
      exports.major = major;
      function major(a, loose) {
        return new SemVer(a, loose).major;
      }
      exports.minor = minor;
      function minor(a, loose) {
        return new SemVer(a, loose).minor;
      }
      exports.patch = patch;
      function patch(a, loose) {
        return new SemVer(a, loose).patch;
      }
      exports.compare = compare;
      function compare(a, b, loose) {
        return new SemVer(a, loose).compare(new SemVer(b, loose));
      }
      exports.compareLoose = compareLoose;
      function compareLoose(a, b) {
        return compare(a, b, true);
      }
      exports.compareBuild = compareBuild;
      function compareBuild(a, b, loose) {
        var versionA = new SemVer(a, loose);
        var versionB = new SemVer(b, loose);
        return versionA.compare(versionB) || versionA.compareBuild(versionB);
      }
      exports.rcompare = rcompare;
      function rcompare(a, b, loose) {
        return compare(b, a, loose);
      }
      exports.sort = sort;
      function sort(list, loose) {
        return list.sort(function (a, b) {
          return exports.compareBuild(a, b, loose);
        });
      }
      exports.rsort = rsort;
      function rsort(list, loose) {
        return list.sort(function (a, b) {
          return exports.compareBuild(b, a, loose);
        });
      }
      exports.gt = gt;
      function gt(a, b, loose) {
        return compare(a, b, loose) > 0;
      }
      exports.lt = lt;
      function lt(a, b, loose) {
        return compare(a, b, loose) < 0;
      }
      exports.eq = eq;
      function eq(a, b, loose) {
        return compare(a, b, loose) === 0;
      }
      exports.neq = neq;
      function neq(a, b, loose) {
        return compare(a, b, loose) !== 0;
      }
      exports.gte = gte;
      function gte(a, b, loose) {
        return compare(a, b, loose) >= 0;
      }
      exports.lte = lte;
      function lte(a, b, loose) {
        return compare(a, b, loose) <= 0;
      }
      exports.cmp = cmp;
      function cmp(a, op, b, loose) {
        switch (op) {
          case '===':
            if (typeof a === 'object') a = a.version;
            if (typeof b === 'object') b = b.version;
            return a === b;
          case '!==':
            if (typeof a === 'object') a = a.version;
            if (typeof b === 'object') b = b.version;
            return a !== b;
          case '':
          case '=':
          case '==':
            return eq(a, b, loose);
          case '!=':
            return neq(a, b, loose);
          case '>':
            return gt(a, b, loose);
          case '>=':
            return gte(a, b, loose);
          case '<':
            return lt(a, b, loose);
          case '<=':
            return lte(a, b, loose);
          default:
            throw new TypeError('Invalid operator: ' + op);
        }
      }
      exports.Comparator = Comparator;
      function Comparator(comp, options) {
        if (!options || typeof options !== 'object') {
          options = {
            loose: !!options,
            includePrerelease: false
          };
        }
        if (comp instanceof Comparator) {
          if (comp.loose === !!options.loose) {
            return comp;
          } else {
            comp = comp.value;
          }
        }
        if (!(this instanceof Comparator)) {
          return new Comparator(comp, options);
        }
        debug('comparator', comp, options);
        this.options = options;
        this.loose = !!options.loose;
        this.parse(comp);
        if (this.semver === ANY) {
          this.value = '';
        } else {
          this.value = this.operator + this.semver.version;
        }
        debug('comp', this);
      }
      var ANY = {};
      Comparator.prototype.parse = function (comp) {
        var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
        var m = comp.match(r);
        if (!m) {
          throw new TypeError('Invalid comparator: ' + comp);
        }
        this.operator = m[1] !== undefined ? m[1] : '';
        if (this.operator === '=') {
          this.operator = '';
        }
        if (!m[2]) {
          this.semver = ANY;
        } else {
          this.semver = new SemVer(m[2], this.options.loose);
        }
      };
      Comparator.prototype.toString = function () {
        return this.value;
      };
      Comparator.prototype.test = function (version) {
        debug('Comparator.test', version, this.options.loose);
        if (this.semver === ANY || version === ANY) {
          return true;
        }
        if (typeof version === 'string') {
          try {
            version = new SemVer(version, this.options);
          } catch (er) {
            return false;
          }
        }
        return cmp(version, this.operator, this.semver, this.options);
      };
      Comparator.prototype.intersects = function (comp, options) {
        if (!(comp instanceof Comparator)) {
          throw new TypeError('a Comparator is required');
        }
        if (!options || typeof options !== 'object') {
          options = {
            loose: !!options,
            includePrerelease: false
          };
        }
        var rangeTmp;
        if (this.operator === '') {
          if (this.value === '') {
            return true;
          }
          rangeTmp = new Range(comp.value, options);
          return satisfies(this.value, rangeTmp, options);
        } else if (comp.operator === '') {
          if (comp.value === '') {
            return true;
          }
          rangeTmp = new Range(this.value, options);
          return satisfies(comp.semver, rangeTmp, options);
        }
        var sameDirectionIncreasing = (this.operator === '>=' || this.operator === '>') && (comp.operator === '>=' || comp.operator === '>');
        var sameDirectionDecreasing = (this.operator === '<=' || this.operator === '<') && (comp.operator === '<=' || comp.operator === '<');
        var sameSemVer = this.semver.version === comp.semver.version;
        var differentDirectionsInclusive = (this.operator === '>=' || this.operator === '<=') && (comp.operator === '>=' || comp.operator === '<=');
        var oppositeDirectionsLessThan = cmp(this.semver, '<', comp.semver, options) && (this.operator === '>=' || this.operator === '>') && (comp.operator === '<=' || comp.operator === '<');
        var oppositeDirectionsGreaterThan = cmp(this.semver, '>', comp.semver, options) && (this.operator === '<=' || this.operator === '<') && (comp.operator === '>=' || comp.operator === '>');
        return sameDirectionIncreasing || sameDirectionDecreasing || sameSemVer && differentDirectionsInclusive || oppositeDirectionsLessThan || oppositeDirectionsGreaterThan;
      };
      exports.Range = Range;
      function Range(range, options) {
        if (!options || typeof options !== 'object') {
          options = {
            loose: !!options,
            includePrerelease: false
          };
        }
        if (range instanceof Range) {
          if (range.loose === !!options.loose && range.includePrerelease === !!options.includePrerelease) {
            return range;
          } else {
            return new Range(range.raw, options);
          }
        }
        if (range instanceof Comparator) {
          return new Range(range.value, options);
        }
        if (!(this instanceof Range)) {
          return new Range(range, options);
        }
        this.options = options;
        this.loose = !!options.loose;
        this.includePrerelease = !!options.includePrerelease;
        this.raw = range;
        this.set = range.split(/\s*\|\|\s*/).map(function (range) {
          return this.parseRange(range.trim());
        }, this).filter(function (c) {
          return c.length;
        });
        if (!this.set.length) {
          throw new TypeError('Invalid SemVer Range: ' + range);
        }
        this.format();
      }
      Range.prototype.format = function () {
        this.range = this.set.map(function (comps) {
          return comps.join(' ').trim();
        }).join('||').trim();
        return this.range;
      };
      Range.prototype.toString = function () {
        return this.range;
      };
      Range.prototype.parseRange = function (range) {
        var loose = this.options.loose;
        range = range.trim();
        var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE];
        range = range.replace(hr, hyphenReplace);
        debug('hyphen replace', range);
        range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace);
        debug('comparator trim', range, re[t.COMPARATORTRIM]);
        range = range.replace(re[t.TILDETRIM], tildeTrimReplace);
        range = range.replace(re[t.CARETTRIM], caretTrimReplace);
        range = range.split(/\s+/).join(' ');
        var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR];
        var set = range.split(' ').map(function (comp) {
          return parseComparator(comp, this.options);
        }, this).join(' ').split(/\s+/);
        if (this.options.loose) {
          set = set.filter(function (comp) {
            return !!comp.match(compRe);
          });
        }
        set = set.map(function (comp) {
          return new Comparator(comp, this.options);
        }, this);
        return set;
      };
      Range.prototype.intersects = function (range, options) {
        if (!(range instanceof Range)) {
          throw new TypeError('a Range is required');
        }
        return this.set.some(function (thisComparators) {
          return isSatisfiable(thisComparators, options) && range.set.some(function (rangeComparators) {
            return isSatisfiable(rangeComparators, options) && thisComparators.every(function (thisComparator) {
              return rangeComparators.every(function (rangeComparator) {
                return thisComparator.intersects(rangeComparator, options);
              });
            });
          });
        });
      };
      function isSatisfiable(comparators, options) {
        var result = true;
        var remainingComparators = comparators.slice();
        var testComparator = remainingComparators.pop();
        while (result && remainingComparators.length) {
          result = remainingComparators.every(function (otherComparator) {
            return testComparator.intersects(otherComparator, options);
          });
          testComparator = remainingComparators.pop();
        }
        return result;
      }
      exports.toComparators = toComparators;
      function toComparators(range, options) {
        return new Range(range, options).set.map(function (comp) {
          return comp.map(function (c) {
            return c.value;
          }).join(' ').trim().split(' ');
        });
      }
      function parseComparator(comp, options) {
        debug('comp', comp, options);
        comp = replaceCarets(comp, options);
        debug('caret', comp);
        comp = replaceTildes(comp, options);
        debug('tildes', comp);
        comp = replaceXRanges(comp, options);
        debug('xrange', comp);
        comp = replaceStars(comp, options);
        debug('stars', comp);
        return comp;
      }
      function isX(id) {
        return !id || id.toLowerCase() === 'x' || id === '*';
      }
      function replaceTildes(comp, options) {
        return comp.trim().split(/\s+/).map(function (comp) {
          return replaceTilde(comp, options);
        }).join(' ');
      }
      function replaceTilde(comp, options) {
        var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE];
        return comp.replace(r, function (_, M, m, p, pr) {
          debug('tilde', comp, _, M, m, p, pr);
          var ret;
          if (isX(M)) {
            ret = '';
          } else if (isX(m)) {
            ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
          } else if (isX(p)) {
            ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
          } else if (pr) {
            debug('replaceTilde pr', pr);
            ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + (+m + 1) + '.0';
          } else {
            ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';
          }
          debug('tilde return', ret);
          return ret;
        });
      }
      function replaceCarets(comp, options) {
        return comp.trim().split(/\s+/).map(function (comp) {
          return replaceCaret(comp, options);
        }).join(' ');
      }
      function replaceCaret(comp, options) {
        debug('caret', comp, options);
        var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET];
        return comp.replace(r, function (_, M, m, p, pr) {
          debug('caret', comp, _, M, m, p, pr);
          var ret;
          if (isX(M)) {
            ret = '';
          } else if (isX(m)) {
            ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0';
          } else if (isX(p)) {
            if (M === '0') {
              ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0';
            } else {
              ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0';
            }
          } else if (pr) {
            debug('replaceCaret pr', pr);
            if (M === '0') {
              if (m === '0') {
                ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + m + '.' + (+p + 1);
              } else {
                ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + M + '.' + (+m + 1) + '.0';
              }
            } else {
              ret = '>=' + M + '.' + m + '.' + p + '-' + pr + ' <' + (+M + 1) + '.0.0';
            }
          } else {
            debug('no pr');
            if (M === '0') {
              if (m === '0') {
                ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + m + '.' + (+p + 1);
              } else {
                ret = '>=' + M + '.' + m + '.' + p + ' <' + M + '.' + (+m + 1) + '.0';
              }
            } else {
              ret = '>=' + M + '.' + m + '.' + p + ' <' + (+M + 1) + '.0.0';
            }
          }
          debug('caret return', ret);
          return ret;
        });
      }
      function replaceXRanges(comp, options) {
        debug('replaceXRanges', comp, options);
        return comp.split(/\s+/).map(function (comp) {
          return replaceXRange(comp, options);
        }).join(' ');
      }
      function replaceXRange(comp, options) {
        comp = comp.trim();
        var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE];
        return comp.replace(r, function (ret, gtlt, M, m, p, pr) {
          debug('xRange', comp, ret, gtlt, M, m, p, pr);
          var xM = isX(M);
          var xm = xM || isX(m);
          var xp = xm || isX(p);
          var anyX = xp;
          if (gtlt === '=' && anyX) {
            gtlt = '';
          }
          pr = options.includePrerelease ? '-0' : '';
          if (xM) {
            if (gtlt === '>' || gtlt === '<') {
              ret = '<0.0.0-0';
            } else {
              ret = '*';
            }
          } else if (gtlt && anyX) {
            if (xm) {
              m = 0;
            }
            p = 0;
            if (gtlt === '>') {
              gtlt = '>=';
              if (xm) {
                M = +M + 1;
                m = 0;
                p = 0;
              } else {
                m = +m + 1;
                p = 0;
              }
            } else if (gtlt === '<=') {
              gtlt = '<';
              if (xm) {
                M = +M + 1;
              } else {
                m = +m + 1;
              }
            }
            ret = gtlt + M + '.' + m + '.' + p + pr;
          } else if (xm) {
            ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr;
          } else if (xp) {
            ret = '>=' + M + '.' + m + '.0' + pr + ' <' + M + '.' + (+m + 1) + '.0' + pr;
          }
          debug('xRange return', ret);
          return ret;
        });
      }
      function replaceStars(comp, options) {
        debug('replaceStars', comp, options);
        return comp.trim().replace(re[t.STAR], '');
      }
      function hyphenReplace($0, from, fM, fm, fp, fpr, fb, to, tM, tm, tp, tpr, tb) {
        if (isX(fM)) {
          from = '';
        } else if (isX(fm)) {
          from = '>=' + fM + '.0.0';
        } else if (isX(fp)) {
          from = '>=' + fM + '.' + fm + '.0';
        } else {
          from = '>=' + from;
        }
        if (isX(tM)) {
          to = '';
        } else if (isX(tm)) {
          to = '<' + (+tM + 1) + '.0.0';
        } else if (isX(tp)) {
          to = '<' + tM + '.' + (+tm + 1) + '.0';
        } else if (tpr) {
          to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr;
        } else {
          to = '<=' + to;
        }
        return (from + ' ' + to).trim();
      }
      Range.prototype.test = function (version) {
        if (!version) {
          return false;
        }
        if (typeof version === 'string') {
          try {
            version = new SemVer(version, this.options);
          } catch (er) {
            return false;
          }
        }
        for (var i = 0; i < this.set.length; i++) {
          if (testSet(this.set[i], version, this.options)) {
            return true;
          }
        }
        return false;
      };
      function testSet(set, version, options) {
        for (var i = 0; i < set.length; i++) {
          if (!set[i].test(version)) {
            return false;
          }
        }
        if (version.prerelease.length && !options.includePrerelease) {
          for (i = 0; i < set.length; i++) {
            debug(set[i].semver);
            if (set[i].semver === ANY) {
              continue;
            }
            if (set[i].semver.prerelease.length > 0) {
              var allowed = set[i].semver;
              if (allowed.major === version.major && allowed.minor === version.minor && allowed.patch === version.patch) {
                return true;
              }
            }
          }
          return false;
        }
        return true;
      }
      exports.satisfies = satisfies;
      function satisfies(version, range, options) {
        try {
          range = new Range(range, options);
        } catch (er) {
          return false;
        }
        return range.test(version);
      }
      exports.maxSatisfying = maxSatisfying;
      function maxSatisfying(versions, range, options) {
        var max = null;
        var maxSV = null;
        try {
          var rangeObj = new Range(range, options);
        } catch (er) {
          return null;
        }
        versions.forEach(function (v) {
          if (rangeObj.test(v)) {
            if (!max || maxSV.compare(v) === -1) {
              max = v;
              maxSV = new SemVer(max, options);
            }
          }
        });
        return max;
      }
      exports.minSatisfying = minSatisfying;
      function minSatisfying(versions, range, options) {
        var min = null;
        var minSV = null;
        try {
          var rangeObj = new Range(range, options);
        } catch (er) {
          return null;
        }
        versions.forEach(function (v) {
          if (rangeObj.test(v)) {
            if (!min || minSV.compare(v) === 1) {
              min = v;
              minSV = new SemVer(min, options);
            }
          }
        });
        return min;
      }
      exports.minVersion = minVersion;
      function minVersion(range, loose) {
        range = new Range(range, loose);
        var minver = new SemVer('0.0.0');
        if (range.test(minver)) {
          return minver;
        }
        minver = new SemVer('0.0.0-0');
        if (range.test(minver)) {
          return minver;
        }
        minver = null;
        for (var i = 0; i < range.set.length; ++i) {
          var comparators = range.set[i];
          comparators.forEach(function (comparator) {
            var compver = new SemVer(comparator.semver.version);
            switch (comparator.operator) {
              case '>':
                if (compver.prerelease.length === 0) {
                  compver.patch++;
                } else {
                  compver.prerelease.push(0);
                }
                compver.raw = compver.format();
              case '':
              case '>=':
                if (!minver || gt(minver, compver)) {
                  minver = compver;
                }
                break;
              case '<':
              case '<=':
                break;
              default:
                throw new Error('Unexpected operation: ' + comparator.operator);
            }
          });
        }
        if (minver && range.test(minver)) {
          return minver;
        }
        return null;
      }
      exports.validRange = validRange;
      function validRange(range, options) {
        try {
          return new Range(range, options).range || '*';
        } catch (er) {
          return null;
        }
      }
      exports.ltr = ltr;
      function ltr(version, range, options) {
        return outside(version, range, '<', options);
      }
      exports.gtr = gtr;
      function gtr(version, range, options) {
        return outside(version, range, '>', options);
      }
      exports.outside = outside;
      function outside(version, range, hilo, options) {
        version = new SemVer(version, options);
        range = new Range(range, options);
        var gtfn, ltefn, ltfn, comp, ecomp;
        switch (hilo) {
          case '>':
            gtfn = gt;
            ltefn = lte;
            ltfn = lt;
            comp = '>';
            ecomp = '>=';
            break;
          case '<':
            gtfn = lt;
            ltefn = gte;
            ltfn = gt;
            comp = '<';
            ecomp = '<=';
            break;
          default:
            throw new TypeError('Must provide a hilo val of "<" or ">"');
        }
        if (satisfies(version, range, options)) {
          return false;
        }
        for (var i = 0; i < range.set.length; ++i) {
          var comparators = range.set[i];
          var high = null;
          var low = null;
          comparators.forEach(function (comparator) {
            if (comparator.semver === ANY) {
              comparator = new Comparator('>=0.0.0');
            }
            high = high || comparator;
            low = low || comparator;
            if (gtfn(comparator.semver, high.semver, options)) {
              high = comparator;
            } else if (ltfn(comparator.semver, low.semver, options)) {
              low = comparator;
            }
          });
          if (high.operator === comp || high.operator === ecomp) {
            return false;
          }
          if ((!low.operator || low.operator === comp) && ltefn(version, low.semver)) {
            return false;
          } else if (low.operator === ecomp && ltfn(version, low.semver)) {
            return false;
          }
        }
        return true;
      }
      exports.prerelease = prerelease;
      function prerelease(version, options) {
        var parsed = parse(version, options);
        return parsed && parsed.prerelease.length ? parsed.prerelease : null;
      }
      exports.intersects = intersects;
      function intersects(r1, r2, options) {
        r1 = new Range(r1, options);
        r2 = new Range(r2, options);
        return r1.intersects(r2);
      }
      exports.coerce = coerce;
      function coerce(version, options) {
        if (version instanceof SemVer) {
          return version;
        }
        if (typeof version === 'number') {
          version = String(version);
        }
        if (typeof version !== 'string') {
          return null;
        }
        options = options || {};
        var match = null;
        if (!options.rtl) {
          match = version.match(re[t.COERCE]);
        } else {
          var next;
          while ((next = re[t.COERCERTL].exec(version)) && (!match || match.index + match[0].length !== version.length)) {
            if (!match || next.index + next[0].length !== match.index + match[0].length) {
              match = next;
            }
            re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length;
          }
          re[t.COERCERTL].lastIndex = -1;
        }
        if (match === null) {
          return null;
        }
        return parse(match[2] + '.' + (match[3] || '0') + '.' + (match[4] || '0'), options);
      }
    })(semver$1, semver$1.exports);
    var semver = semver$1.exports;
  
    var _excluded = ["method", "targets", "ignoreBrowserslistConfig", "configPath", "debug", "shouldInjectPolyfill", "absoluteImports"];
    var _templateObject, _templateObject2, _templateObject3;
    var _ref$2 = undefined || _babel,
      t$1$1 = _ref$2.types,
      template = _ref$2.template;
    function intersection(a, b) {
      var result = new Set();
      a.forEach(function (v) {
        return b.has(v) && result.add(v);
      });
      return result;
    }
    function has$1(object, key) {
      return Object.prototype.hasOwnProperty.call(object, key);
    }
    function getType(target) {
      return Object.prototype.toString.call(target).slice(8, -1);
    }
    function resolveId(path) {
      if (path.isIdentifier() && !path.scope.hasBinding(path.node.name, true)) {
        return path.node.name;
      }
      var _path$evaluate = path.evaluate(),
        deopt = _path$evaluate.deopt;
      if (deopt && deopt.isIdentifier()) {
        return deopt.node.name;
      }
    }
    function resolveKey(path, computed) {
      if (computed === void 0) {
        computed = false;
      }
      var scope = path.scope;
      if (path.isStringLiteral()) return path.node.value;
      var isIdentifier = path.isIdentifier();
      if (isIdentifier && !(computed || path.parent.computed)) {
        return path.node.name;
      }
      if (computed && path.isMemberExpression() && path.get("object").isIdentifier({
        name: "Symbol"
      }) && !scope.hasBinding("Symbol", true)) {
        var sym = resolveKey(path.get("property"), path.node.computed);
        if (sym) return "Symbol." + sym;
      }
      if (!isIdentifier || scope.hasBinding(path.node.name, true)) {
        var _path$evaluate2 = path.evaluate(),
          value = _path$evaluate2.value;
        if (typeof value === "string") return value;
      }
    }
    function resolveSource(obj) {
      if (obj.isMemberExpression() && obj.get("property").isIdentifier({
        name: "prototype"
      })) {
        var _id = resolveId(obj.get("object"));
        if (_id) {
          return {
            id: _id,
            placement: "prototype"
          };
        }
        return {
          id: null,
          placement: null
        };
      }
      var id = resolveId(obj);
      if (id) {
        return {
          id: id,
          placement: "static"
        };
      }
      var _obj$evaluate = obj.evaluate(),
        value = _obj$evaluate.value;
      if (value !== undefined) {
        return {
          id: getType(value),
          placement: "prototype"
        };
      } else if (obj.isRegExpLiteral()) {
        return {
          id: "RegExp",
          placement: "prototype"
        };
      } else if (obj.isFunction()) {
        return {
          id: "Function",
          placement: "prototype"
        };
      }
      return {
        id: null,
        placement: null
      };
    }
    function getImportSource(_ref2) {
      var node = _ref2.node;
      if (node.specifiers.length === 0) return node.source.value;
    }
    function getRequireSource(_ref3) {
      var node = _ref3.node;
      if (!t$1$1.isExpressionStatement(node)) return;
      var expression = node.expression;
      if (t$1$1.isCallExpression(expression) && t$1$1.isIdentifier(expression.callee) && expression.callee.name === "require" && expression.arguments.length === 1 && t$1$1.isStringLiteral(expression.arguments[0])) {
        return expression.arguments[0].value;
      }
    }
    function hoist(node) {
      node._blockHoist = 3;
      return node;
    }
    function createUtilsGetter(cache) {
      return function (path) {
        var prog = path.findParent(function (p) {
          return p.isProgram();
        });
        return {
          injectGlobalImport: function injectGlobalImport(url) {
            cache.storeAnonymous(prog, url, function (isScript, source) {
              return isScript ? template.statement.ast(_templateObject || (_templateObject = _taggedTemplateLiteralLoose(["require(", ")"])), source) : t$1$1.importDeclaration([], source);
            });
          },
          injectNamedImport: function injectNamedImport(url, name, hint) {
            if (hint === void 0) {
              hint = name;
            }
            return cache.storeNamed(prog, url, name, function (isScript, source, name) {
              var id = prog.scope.generateUidIdentifier(hint);
              return {
                node: isScript ? hoist(template.statement.ast(_templateObject2 || (_templateObject2 = _taggedTemplateLiteralLoose(["\n                  var ", " = require(", ").", "\n                "])), id, source, name)) : t$1$1.importDeclaration([t$1$1.importSpecifier(id, name)], source),
                name: id.name
              };
            });
          },
          injectDefaultImport: function injectDefaultImport(url, hint) {
            if (hint === void 0) {
              hint = url;
            }
            return cache.storeNamed(prog, url, "default", function (isScript, source) {
              var id = prog.scope.generateUidIdentifier(hint);
              return {
                node: isScript ? hoist(template.statement.ast(_templateObject3 || (_templateObject3 = _taggedTemplateLiteralLoose(["var ", " = require(", ")"])), id, source)) : t$1$1.importDeclaration([t$1$1.importDefaultSpecifier(id)], source),
                name: id.name
              };
            });
          }
        };
      };
    }
    var _ref4 = undefined || _babel,
      t$4 = _ref4.types;
    var ImportsCache = function () {
      function ImportsCache(resolver) {
        this._imports = new WeakMap();
        this._anonymousImports = new WeakMap();
        this._lastImports = new WeakMap();
        this._resolver = resolver;
      }
      var _proto = ImportsCache.prototype;
      _proto.storeAnonymous = function storeAnonymous(programPath, url, getVal) {
        var key = this._normalizeKey(programPath, url);
        var imports = this._ensure(this._anonymousImports, programPath, Set);
        if (imports.has(key)) return;
        var node = getVal(programPath.node.sourceType === "script", t$4.stringLiteral(this._resolver(url)));
        imports.add(key);
        this._injectImport(programPath, node);
      };
      _proto.storeNamed = function storeNamed(programPath, url, name, getVal) {
        var key = this._normalizeKey(programPath, url, name);
        var imports = this._ensure(this._imports, programPath, Map);
        if (!imports.has(key)) {
          var _getVal = getVal(programPath.node.sourceType === "script", t$4.stringLiteral(this._resolver(url)), t$4.identifier(name)),
            node = _getVal.node,
            id = _getVal.name;
          imports.set(key, id);
          this._injectImport(programPath, node);
        }
        return t$4.identifier(imports.get(key));
      };
      _proto._injectImport = function _injectImport(programPath, node) {
        var lastImport = this._lastImports.get(programPath);
        var newNodes;
        if (lastImport && lastImport.node && lastImport.parent === programPath.node && lastImport.container === programPath.node.body) {
          newNodes = lastImport.insertAfter(node);
        } else {
          newNodes = programPath.unshiftContainer("body", node);
        }
        var newNode = newNodes[newNodes.length - 1];
        this._lastImports.set(programPath, newNode);
      };
      _proto._ensure = function _ensure(map, programPath, Collection) {
        var collection = map.get(programPath);
        if (!collection) {
          collection = new Collection();
          map.set(programPath, collection);
        }
        return collection;
      };
      _proto._normalizeKey = function _normalizeKey(programPath, url, name) {
        if (name === void 0) {
          name = "";
        }
        var sourceType = programPath.node.sourceType;
        return (name && sourceType) + "::" + url + "::" + name;
      };
      return _createClass(ImportsCache);
    }();
    var presetEnvSilentDebugHeader = "#__secret_key__@babel/preset-env__don't_log_debug_header_and_resolved_targets";
    function stringifyTargetsMultiline(targets) {
      return JSON.stringify(prettifyTargets(targets), null, 2);
    }
    function patternToRegExp(pattern) {
      if (pattern instanceof RegExp) return pattern;
      try {
        return new RegExp("^" + pattern + "$");
      } catch (_unused) {
        return null;
      }
    }
    function buildUnusedError(label, unused) {
      if (!unused.length) return "";
      return "  - The following \"" + label + "\" patterns didn't match any polyfill:\n" + unused.map(function (original) {
        return "    " + String(original) + "\n";
      }).join("");
    }
    function buldDuplicatesError(duplicates) {
      if (!duplicates.size) return "";
      return "  - The following polyfills were matched both by \"include\" and \"exclude\" patterns:\n" + Array.from(duplicates, function (name) {
        return "    " + name + "\n";
      }).join("");
    }
    function validateIncludeExclude(provider, polyfills, includePatterns, excludePatterns) {
      var current;
      var filter = function filter(pattern) {
        var regexp = patternToRegExp(pattern);
        if (!regexp) return false;
        var matched = false;
        for (var _iterator = _createForOfIteratorHelperLoose(polyfills), _step; !(_step = _iterator()).done;) {
          var polyfill = _step.value;
          if (regexp.test(polyfill)) {
            matched = true;
            current.add(polyfill);
          }
        }
        return !matched;
      };
      var include = current = new Set();
      var unusedInclude = Array.from(includePatterns).filter(filter);
      var exclude = current = new Set();
      var unusedExclude = Array.from(excludePatterns).filter(filter);
      var duplicates = intersection(include, exclude);
      if (duplicates.size > 0 || unusedInclude.length > 0 || unusedExclude.length > 0) {
        throw new Error("Error while validating the \"" + provider + "\" provider options:\n" + buildUnusedError("include", unusedInclude) + buildUnusedError("exclude", unusedExclude) + buldDuplicatesError(duplicates));
      }
      return {
        include: include,
        exclude: exclude
      };
    }
    function applyMissingDependenciesDefaults(options, babelApi) {
      var _options$missingDepen = options.missingDependencies,
        missingDependencies = _options$missingDepen === void 0 ? {} : _options$missingDepen;
      if (missingDependencies === false) return false;
      var caller = babelApi.caller(function (caller) {
        return caller == null ? void 0 : caller.name;
      });
      var _missingDependencies$ = missingDependencies.log,
        log = _missingDependencies$ === void 0 ? "deferred" : _missingDependencies$,
        _missingDependencies$2 = missingDependencies.inject,
        inject = _missingDependencies$2 === void 0 ? caller === "rollup-plugin-babel" ? "throw" : "import" : _missingDependencies$2,
        _missingDependencies$3 = missingDependencies.all,
        all = _missingDependencies$3 === void 0 ? false : _missingDependencies$3;
      return {
        log: log,
        inject: inject,
        all: all
      };
    }
    var usage = function usage(callProvider) {
      function property(object, key, placement, path) {
        return callProvider({
          kind: "property",
          object: object,
          key: key,
          placement: placement
        }, path);
      }
      return {
        ReferencedIdentifier: function ReferencedIdentifier(path) {
          var name = path.node.name,
            scope = path.scope;
          if (scope.getBindingIdentifier(name)) return;
          callProvider({
            kind: "global",
            name: name
          }, path);
        },
        MemberExpression: function MemberExpression(path) {
          var key = resolveKey(path.get("property"), path.node.computed);
          if (!key || key === "prototype") return;
          var object = path.get("object");
          if (object.isIdentifier()) {
            var binding = object.scope.getBinding(object.node.name);
            if (binding && binding.path.isImportNamespaceSpecifier()) return;
          }
          var source = resolveSource(object);
          return property(source.id, key, source.placement, path);
        },
        ObjectPattern: function ObjectPattern(path) {
          var parentPath = path.parentPath,
            parent = path.parent;
          var obj;
          if (parentPath.isVariableDeclarator()) {
            obj = parentPath.get("init");
          } else if (parentPath.isAssignmentExpression()) {
            obj = parentPath.get("right");
          } else if (parentPath.isFunction()) {
            var grand = parentPath.parentPath;
            if (grand.isCallExpression() || grand.isNewExpression()) {
              if (grand.node.callee === parent) {
                obj = grand.get("arguments")[path.key];
              }
            }
          }
          var id = null;
          var placement = null;
          if (obj) {
            var _resolveSource = resolveSource(obj);
            id = _resolveSource.id;
            placement = _resolveSource.placement;
          }
          for (var _iterator2 = _createForOfIteratorHelperLoose(path.get("properties")), _step2; !(_step2 = _iterator2()).done;) {
            var prop = _step2.value;
            if (prop.isObjectProperty()) {
              var key = resolveKey(prop.get("key"));
              if (key) property(id, key, placement, prop);
            }
          }
        },
        BinaryExpression: function BinaryExpression(path) {
          if (path.node.operator !== "in") return;
          var source = resolveSource(path.get("right"));
          var key = resolveKey(path.get("left"), true);
          if (!key) return;
          callProvider({
            kind: "in",
            object: source.id,
            key: key,
            placement: source.placement
          }, path);
        }
      };
    };
    var entry = function entry(callProvider) {
      return {
        ImportDeclaration: function ImportDeclaration(path) {
          var source = getImportSource(path);
          if (!source) return;
          callProvider({
            kind: "import",
            source: source
          }, path);
        },
        Program: function Program(path) {
          path.get("body").forEach(function (bodyPath) {
            var source = getRequireSource(bodyPath);
            if (!source) return;
            callProvider({
              kind: "import",
              source: source
            }, bodyPath);
          });
        }
      };
    };
    function resolve(dirname, moduleName, absoluteImports) {
      if (absoluteImports === false) return moduleName;
      throw new Error("\"absoluteImports\" is not supported in bundles prepared for the browser.");
    }
    function has$2(basedir, name) {
      return true;
    }
    function logMissing(missingDeps) {}
    function laterLogMissing(missingDeps) {}
    var PossibleGlobalObjects = new Set(["global", "globalThis", "self", "window"]);
    function createMetaResolver(polyfills) {
      var staticP = polyfills["static"],
        instanceP = polyfills.instance,
        globalP = polyfills.global;
      return function (meta) {
        if (meta.kind === "global" && globalP && has$1(globalP, meta.name)) {
          return {
            kind: "global",
            desc: globalP[meta.name],
            name: meta.name
          };
        }
        if (meta.kind === "property" || meta.kind === "in") {
          var placement = meta.placement,
            object = meta.object,
            key = meta.key;
          if (object && placement === "static") {
            if (globalP && PossibleGlobalObjects.has(object) && has$1(globalP, key)) {
              return {
                kind: "global",
                desc: globalP[key],
                name: key
              };
            }
            if (staticP && has$1(staticP, object) && has$1(staticP[object], key)) {
              return {
                kind: "static",
                desc: staticP[object][key],
                name: object + "$" + key
              };
            }
          }
          if (instanceP && has$1(instanceP, key)) {
            return {
              kind: "instance",
              desc: instanceP[key],
              name: "" + key
            };
          }
        }
      };
    }
    var getTargets = getTargets$2["default"] || getTargets$2;
    function resolveOptions(options, babelApi) {
      var method = options.method,
        targetsOption = options.targets,
        ignoreBrowserslistConfig = options.ignoreBrowserslistConfig,
        configPath = options.configPath,
        debug = options.debug,
        shouldInjectPolyfill = options.shouldInjectPolyfill,
        absoluteImports = options.absoluteImports,
        providerOptions = _objectWithoutProperties(options, _excluded);
      if (isEmpty(options)) {
        throw new Error("This plugin requires options, for example:\n    {\n      \"plugins\": [\n        [\"<plugin name>\", { method: \"usage-pure\" }]\n      ]\n    }\n\nSee more options at https://github.com/babel/babel-polyfills/blob/main/docs/usage.md");
      }
      var methodName;
      if (method === "usage-global") methodName = "usageGlobal";else if (method === "entry-global") methodName = "entryGlobal";else if (method === "usage-pure") methodName = "usagePure";else if (typeof method !== "string") {
        throw new Error(".method must be a string");
      } else {
        throw new Error(".method must be one of \"entry-global\", \"usage-global\"" + (" or \"usage-pure\" (received " + JSON.stringify(method) + ")"));
      }
      if (typeof shouldInjectPolyfill === "function") {
        if (options.include || options.exclude) {
          throw new Error(".include and .exclude are not supported when using the" + " .shouldInjectPolyfill function.");
        }
      } else if (shouldInjectPolyfill != null) {
        throw new Error(".shouldInjectPolyfill must be a function, or undefined" + (" (received " + JSON.stringify(shouldInjectPolyfill) + ")"));
      }
      if (absoluteImports != null && typeof absoluteImports !== "boolean" && typeof absoluteImports !== "string") {
        throw new Error(".absoluteImports must be a boolean, a string, or undefined" + (" (received " + JSON.stringify(absoluteImports) + ")"));
      }
      var targets;
      if (targetsOption || configPath || ignoreBrowserslistConfig) {
        var targetsObj = typeof targetsOption === "string" || Array.isArray(targetsOption) ? {
          browsers: targetsOption
        } : targetsOption;
        targets = getTargets(targetsObj, {
          ignoreBrowserslistConfig: ignoreBrowserslistConfig,
          configPath: configPath
        });
      } else {
        targets = babelApi.targets();
      }
      return {
        method: method,
        methodName: methodName,
        targets: targets,
        absoluteImports: absoluteImports != null ? absoluteImports : false,
        shouldInjectPolyfill: shouldInjectPolyfill,
        debug: !!debug,
        providerOptions: providerOptions
      };
    }
    function instantiateProvider(factory, options, missingDependencies, dirname, debugLog, babelApi) {
      var _resolveOptions = resolveOptions(options, babelApi),
        method = _resolveOptions.method,
        methodName = _resolveOptions.methodName,
        targets = _resolveOptions.targets,
        _debug = _resolveOptions.debug,
        _shouldInjectPolyfill = _resolveOptions.shouldInjectPolyfill,
        providerOptions = _resolveOptions.providerOptions,
        absoluteImports = _resolveOptions.absoluteImports;
      var getUtils = createUtilsGetter(new ImportsCache(function (moduleName) {
        return resolve(dirname, moduleName, absoluteImports);
      }));
      var include, exclude;
      var polyfillsSupport;
      var polyfillsNames;
      var filterPolyfills;
      var depsCache = new Map();
      var api = {
        babel: babelApi,
        getUtils: getUtils,
        method: options.method,
        targets: targets,
        createMetaResolver: createMetaResolver,
        shouldInjectPolyfill: function shouldInjectPolyfill(name) {
          if (polyfillsNames === undefined) {
            throw new Error("Internal error in the " + factory.name + " provider: " + "shouldInjectPolyfill() can't be called during initialization.");
          }
          if (!polyfillsNames.has(name)) {
            console.warn("Internal error in the " + provider.name + " provider: " + ("unknown polyfill \"" + name + "\"."));
          }
          if (filterPolyfills && !filterPolyfills(name)) return false;
          var shouldInject = isRequired(name, targets, {
            compatData: polyfillsSupport,
            includes: include,
            excludes: exclude
          });
          if (_shouldInjectPolyfill) {
            shouldInject = _shouldInjectPolyfill(name, shouldInject);
            if (typeof shouldInject !== "boolean") {
              throw new Error(".shouldInjectPolyfill must return a boolean.");
            }
          }
          return shouldInject;
        },
        debug: function debug(name) {
          var _debugLog, _debugLog$polyfillsSu;
          debugLog().found = true;
          if (!_debug || !name) return;
          if (debugLog().polyfills.has(provider.name)) return;
          debugLog().polyfills.add(name);
          (_debugLog$polyfillsSu = (_debugLog = debugLog()).polyfillsSupport) != null ? _debugLog$polyfillsSu : _debugLog.polyfillsSupport = polyfillsSupport;
        },
        assertDependency: function assertDependency(name, version) {
          if (version === void 0) {
            version = "*";
          }
          if (missingDependencies === false) return;
          if (absoluteImports) {
            return;
          }
          var dep = version === "*" ? name : name + "@^" + version;
          var found = missingDependencies.all ? false : mapGetOr(depsCache, name + " :: " + dirname, function () {
            return has$2();
          });
          if (!found) {
            debugLog().missingDeps.add(dep);
          }
        }
      };
      var provider = factory(api, providerOptions, dirname);
      if (typeof provider[methodName] !== "function") {
        throw new Error("The \"" + (provider.name || factory.name) + "\" provider doesn't " + ("support the \"" + method + "\" polyfilling method."));
      }
      if (Array.isArray(provider.polyfills)) {
        polyfillsNames = new Set(provider.polyfills);
        filterPolyfills = provider.filterPolyfills;
      } else if (provider.polyfills) {
        polyfillsNames = new Set(Object.keys(provider.polyfills));
        polyfillsSupport = provider.polyfills;
        filterPolyfills = provider.filterPolyfills;
      } else {
        polyfillsNames = new Set();
      }
      var _validateIncludeExclu = validateIncludeExclude(provider.name || factory.name, polyfillsNames, providerOptions.include || [], providerOptions.exclude || []);
      include = _validateIncludeExclu.include;
      exclude = _validateIncludeExclu.exclude;
      return {
        debug: _debug,
        method: method,
        targets: targets,
        provider: provider,
        callProvider: function callProvider(payload, path) {
          var utils = getUtils(path);
          provider[methodName](payload, utils, path);
        }
      };
    }
    function definePolyfillProvider(factory) {
      return declare(function (babelApi, options, dirname) {
        babelApi.assertVersion(7);
        var traverse = babelApi.traverse;
        var debugLog;
        var missingDependencies = applyMissingDependenciesDefaults(options, babelApi);
        var _instantiateProvider = instantiateProvider(factory, options, missingDependencies, dirname, function () {
            return debugLog;
          }, babelApi),
          debug = _instantiateProvider.debug,
          method = _instantiateProvider.method,
          targets = _instantiateProvider.targets,
          provider = _instantiateProvider.provider,
          callProvider = _instantiateProvider.callProvider;
        var createVisitor = method === "entry-global" ? entry : usage;
        var visitor = provider.visitor ? traverse.visitors.merge([createVisitor(callProvider), provider.visitor]) : createVisitor(callProvider);
        if (debug && debug !== presetEnvSilentDebugHeader) {
          console.log(provider.name + ": `DEBUG` option");
          console.log("\nUsing targets: " + stringifyTargetsMultiline(targets));
          console.log("\nUsing polyfills with `" + method + "` method:");
        }
        return {
          name: "inject-polyfills",
          visitor: visitor,
          pre: function pre() {
            var _provider$pre;
            debugLog = {
              polyfills: new Set(),
              polyfillsSupport: undefined,
              found: false,
              providers: new Set(),
              missingDeps: new Set()
            };
            (_provider$pre = provider.pre) == null ? void 0 : _provider$pre.apply(this, arguments);
          },
          post: function post() {
            var _provider$post;
            (_provider$post = provider.post) == null ? void 0 : _provider$post.apply(this, arguments);
            if (missingDependencies !== false) {
              if (missingDependencies.log === "per-file") {
                logMissing(debugLog.missingDeps);
              } else {
                laterLogMissing(debugLog.missingDeps);
              }
            }
            if (!debug) return;
            if (this.filename) console.log("\n[" + this.filename + "]");
            if (debugLog.polyfills.size === 0) {
              console.log(method === "entry-global" ? debugLog.found ? "Based on your targets, the " + provider.name + " polyfill did not add any polyfill." : "The entry point for the " + provider.name + " polyfill has not been found." : "Based on your code and targets, the " + provider.name + " polyfill did not add any polyfill.");
              return;
            }
            if (method === "entry-global") {
              console.log("The " + provider.name + " polyfill entry has been replaced with " + "the following polyfills:");
            } else {
              console.log("The " + provider.name + " polyfill added the following polyfills:");
            }
            for (var _iterator3 = _createForOfIteratorHelperLoose(debugLog.polyfills), _step3; !(_step3 = _iterator3()).done;) {
              var name = _step3.value;
              var _debugLog$polyfillsSu2;
              if ((_debugLog$polyfillsSu2 = debugLog.polyfillsSupport) != null && _debugLog$polyfillsSu2[name]) {
                var filteredTargets = getInclusionReasons(name, targets, debugLog.polyfillsSupport);
                var formattedTargets = JSON.stringify(filteredTargets).replace(/,/g, ", ").replace(/^\{"/, '{ "').replace(/"\}$/, '" }');
                console.log("  " + name + " " + formattedTargets);
              } else {
                console.log("  " + name);
              }
            }
          }
        };
      });
    }
    function mapGetOr(map, key, getDefault) {
      var val = map.get(key);
      if (val === undefined) {
        val = getDefault();
        map.set(key, val);
      }
      return val;
    }
    function isEmpty(obj) {
      return Object.keys(obj).length === 0;
    }
  
    var define$1 = function define(name, pure, global, meta) {
      if (global === void 0) {
        global = [];
      }
      return {
        name: name,
        pure: pure,
        global: global,
        meta: meta
      };
    };
    var pureAndGlobal = function pureAndGlobal(pure, global, minRuntimeVersion) {
      if (minRuntimeVersion === void 0) {
        minRuntimeVersion = null;
      }
      return define$1(global[0], pure, global, {
        minRuntimeVersion: minRuntimeVersion
      });
    };
    var globalOnly = function globalOnly(global) {
      return define$1(global[0], null, global);
    };
    var pureOnly = function pureOnly(pure, name) {
      return define$1(name, pure, []);
    };
    var ArrayNatureIterators$1 = ["es6.object.to-string", "es6.array.iterator", "web.dom.iterable"];
    var CommonIterators$1 = ["es6.string.iterator"].concat(ArrayNatureIterators$1);
    var PromiseDependencies$1 = ["es6.object.to-string", "es6.promise"];
    var BuiltIns$1 = {
      DataView: globalOnly(["es6.typed.data-view"]),
      Float32Array: globalOnly(["es6.typed.float32-array"]),
      Float64Array: globalOnly(["es6.typed.float64-array"]),
      Int8Array: globalOnly(["es6.typed.int8-array"]),
      Int16Array: globalOnly(["es6.typed.int16-array"]),
      Int32Array: globalOnly(["es6.typed.int32-array"]),
      Map: pureAndGlobal("map", ["es6.map"].concat(_toConsumableArray(CommonIterators$1))),
      Number: globalOnly(["es6.number.constructor"]),
      Promise: pureAndGlobal("promise", PromiseDependencies$1),
      RegExp: globalOnly(["es6.regexp.constructor"]),
      Set: pureAndGlobal("set", ["es6.set"].concat(_toConsumableArray(CommonIterators$1))),
      Symbol: pureAndGlobal("symbol", ["es6.symbol"]),
      Uint8Array: globalOnly(["es6.typed.uint8-array"]),
      Uint8ClampedArray: globalOnly(["es6.typed.uint8-clamped-array"]),
      Uint16Array: globalOnly(["es6.typed.uint16-array"]),
      Uint32Array: globalOnly(["es6.typed.uint32-array"]),
      WeakMap: pureAndGlobal("weak-map", ["es6.weak-map"].concat(_toConsumableArray(CommonIterators$1))),
      WeakSet: pureAndGlobal("weak-set", ["es6.weak-set"].concat(_toConsumableArray(CommonIterators$1))),
      setImmediate: pureOnly("set-immediate", "web.immediate"),
      clearImmediate: pureOnly("clear-immediate", "web.immediate"),
      parseFloat: pureOnly("parse-float", "es6.parse-float"),
      parseInt: pureOnly("parse-int", "es6.parse-int")
    };
    var InstanceProperties$1 = {
      __defineGetter__: globalOnly(["es7.object.define-getter"]),
      __defineSetter__: globalOnly(["es7.object.define-setter"]),
      __lookupGetter__: globalOnly(["es7.object.lookup-getter"]),
      __lookupSetter__: globalOnly(["es7.object.lookup-setter"]),
      anchor: globalOnly(["es6.string.anchor"]),
      big: globalOnly(["es6.string.big"]),
      bind: globalOnly(["es6.function.bind"]),
      blink: globalOnly(["es6.string.blink"]),
      bold: globalOnly(["es6.string.bold"]),
      codePointAt: globalOnly(["es6.string.code-point-at"]),
      copyWithin: globalOnly(["es6.array.copy-within"]),
      endsWith: globalOnly(["es6.string.ends-with"]),
      entries: globalOnly(ArrayNatureIterators$1),
      every: globalOnly(["es6.array.every"]),
      fill: globalOnly(["es6.array.fill"]),
      filter: globalOnly(["es6.array.filter"]),
      "finally": globalOnly(["es7.promise.finally"].concat(PromiseDependencies$1)),
      find: globalOnly(["es6.array.find"]),
      findIndex: globalOnly(["es6.array.find-index"]),
      fixed: globalOnly(["es6.string.fixed"]),
      flags: globalOnly(["es6.regexp.flags"]),
      flatMap: globalOnly(["es7.array.flat-map"]),
      fontcolor: globalOnly(["es6.string.fontcolor"]),
      fontsize: globalOnly(["es6.string.fontsize"]),
      forEach: globalOnly(["es6.array.for-each"]),
      includes: globalOnly(["es6.string.includes", "es7.array.includes"]),
      indexOf: globalOnly(["es6.array.index-of"]),
      italics: globalOnly(["es6.string.italics"]),
      keys: globalOnly(ArrayNatureIterators$1),
      lastIndexOf: globalOnly(["es6.array.last-index-of"]),
      link: globalOnly(["es6.string.link"]),
      map: globalOnly(["es6.array.map"]),
      match: globalOnly(["es6.regexp.match"]),
      name: globalOnly(["es6.function.name"]),
      padStart: globalOnly(["es7.string.pad-start"]),
      padEnd: globalOnly(["es7.string.pad-end"]),
      reduce: globalOnly(["es6.array.reduce"]),
      reduceRight: globalOnly(["es6.array.reduce-right"]),
      repeat: globalOnly(["es6.string.repeat"]),
      replace: globalOnly(["es6.regexp.replace"]),
      search: globalOnly(["es6.regexp.search"]),
      small: globalOnly(["es6.string.small"]),
      some: globalOnly(["es6.array.some"]),
      sort: globalOnly(["es6.array.sort"]),
      split: globalOnly(["es6.regexp.split"]),
      startsWith: globalOnly(["es6.string.starts-with"]),
      strike: globalOnly(["es6.string.strike"]),
      sub: globalOnly(["es6.string.sub"]),
      sup: globalOnly(["es6.string.sup"]),
      toISOString: globalOnly(["es6.date.to-iso-string"]),
      toJSON: globalOnly(["es6.date.to-json"]),
      toString: globalOnly(["es6.object.to-string", "es6.date.to-string", "es6.regexp.to-string"]),
      trim: globalOnly(["es6.string.trim"]),
      trimEnd: globalOnly(["es7.string.trim-right"]),
      trimLeft: globalOnly(["es7.string.trim-left"]),
      trimRight: globalOnly(["es7.string.trim-right"]),
      trimStart: globalOnly(["es7.string.trim-left"]),
      values: globalOnly(ArrayNatureIterators$1)
    };
    if ("es6.array.slice" in corejs2BuiltIns) {
      InstanceProperties$1.slice = globalOnly(["es6.array.slice"]);
    }
    var StaticProperties$1 = {
      Array: {
        from: pureAndGlobal("array/from", ["es6.symbol", "es6.array.from"].concat(_toConsumableArray(CommonIterators$1))),
        isArray: pureAndGlobal("array/is-array", ["es6.array.is-array"]),
        of: pureAndGlobal("array/of", ["es6.array.of"])
      },
      Date: {
        now: pureAndGlobal("date/now", ["es6.date.now"])
      },
      JSON: {
        stringify: pureOnly("json/stringify", "es6.symbol")
      },
      Math: {
        acosh: pureAndGlobal("math/acosh", ["es6.math.acosh"], "7.0.1"),
        asinh: pureAndGlobal("math/asinh", ["es6.math.asinh"], "7.0.1"),
        atanh: pureAndGlobal("math/atanh", ["es6.math.atanh"], "7.0.1"),
        cbrt: pureAndGlobal("math/cbrt", ["es6.math.cbrt"], "7.0.1"),
        clz32: pureAndGlobal("math/clz32", ["es6.math.clz32"], "7.0.1"),
        cosh: pureAndGlobal("math/cosh", ["es6.math.cosh"], "7.0.1"),
        expm1: pureAndGlobal("math/expm1", ["es6.math.expm1"], "7.0.1"),
        fround: pureAndGlobal("math/fround", ["es6.math.fround"], "7.0.1"),
        hypot: pureAndGlobal("math/hypot", ["es6.math.hypot"], "7.0.1"),
        imul: pureAndGlobal("math/imul", ["es6.math.imul"], "7.0.1"),
        log1p: pureAndGlobal("math/log1p", ["es6.math.log1p"], "7.0.1"),
        log10: pureAndGlobal("math/log10", ["es6.math.log10"], "7.0.1"),
        log2: pureAndGlobal("math/log2", ["es6.math.log2"], "7.0.1"),
        sign: pureAndGlobal("math/sign", ["es6.math.sign"], "7.0.1"),
        sinh: pureAndGlobal("math/sinh", ["es6.math.sinh"], "7.0.1"),
        tanh: pureAndGlobal("math/tanh", ["es6.math.tanh"], "7.0.1"),
        trunc: pureAndGlobal("math/trunc", ["es6.math.trunc"], "7.0.1")
      },
      Number: {
        EPSILON: pureAndGlobal("number/epsilon", ["es6.number.epsilon"]),
        MIN_SAFE_INTEGER: pureAndGlobal("number/min-safe-integer", ["es6.number.min-safe-integer"]),
        MAX_SAFE_INTEGER: pureAndGlobal("number/max-safe-integer", ["es6.number.max-safe-integer"]),
        isFinite: pureAndGlobal("number/is-finite", ["es6.number.is-finite"]),
        isInteger: pureAndGlobal("number/is-integer", ["es6.number.is-integer"]),
        isSafeInteger: pureAndGlobal("number/is-safe-integer", ["es6.number.is-safe-integer"]),
        isNaN: pureAndGlobal("number/is-nan", ["es6.number.is-nan"]),
        parseFloat: pureAndGlobal("number/parse-float", ["es6.number.parse-float"]),
        parseInt: pureAndGlobal("number/parse-int", ["es6.number.parse-int"])
      },
      Object: {
        assign: pureAndGlobal("object/assign", ["es6.object.assign"]),
        create: pureAndGlobal("object/create", ["es6.object.create"]),
        defineProperties: pureAndGlobal("object/define-properties", ["es6.object.define-properties"]),
        defineProperty: pureAndGlobal("object/define-property", ["es6.object.define-property"]),
        entries: pureAndGlobal("object/entries", ["es7.object.entries"]),
        freeze: pureAndGlobal("object/freeze", ["es6.object.freeze"]),
        getOwnPropertyDescriptor: pureAndGlobal("object/get-own-property-descriptor", ["es6.object.get-own-property-descriptor"]),
        getOwnPropertyDescriptors: pureAndGlobal("object/get-own-property-descriptors", ["es7.object.get-own-property-descriptors"]),
        getOwnPropertyNames: pureAndGlobal("object/get-own-property-names", ["es6.object.get-own-property-names"]),
        getOwnPropertySymbols: pureAndGlobal("object/get-own-property-symbols", ["es6.symbol"]),
        getPrototypeOf: pureAndGlobal("object/get-prototype-of", ["es6.object.get-prototype-of"]),
        is: pureAndGlobal("object/is", ["es6.object.is"]),
        isExtensible: pureAndGlobal("object/is-extensible", ["es6.object.is-extensible"]),
        isFrozen: pureAndGlobal("object/is-frozen", ["es6.object.is-frozen"]),
        isSealed: pureAndGlobal("object/is-sealed", ["es6.object.is-sealed"]),
        keys: pureAndGlobal("object/keys", ["es6.object.keys"]),
        preventExtensions: pureAndGlobal("object/prevent-extensions", ["es6.object.prevent-extensions"]),
        seal: pureAndGlobal("object/seal", ["es6.object.seal"]),
        setPrototypeOf: pureAndGlobal("object/set-prototype-of", ["es6.object.set-prototype-of"]),
        values: pureAndGlobal("object/values", ["es7.object.values"])
      },
      Promise: {
        all: globalOnly(CommonIterators$1),
        race: globalOnly(CommonIterators$1)
      },
      Reflect: {
        apply: pureAndGlobal("reflect/apply", ["es6.reflect.apply"]),
        construct: pureAndGlobal("reflect/construct", ["es6.reflect.construct"]),
        defineProperty: pureAndGlobal("reflect/define-property", ["es6.reflect.define-property"]),
        deleteProperty: pureAndGlobal("reflect/delete-property", ["es6.reflect.delete-property"]),
        get: pureAndGlobal("reflect/get", ["es6.reflect.get"]),
        getOwnPropertyDescriptor: pureAndGlobal("reflect/get-own-property-descriptor", ["es6.reflect.get-own-property-descriptor"]),
        getPrototypeOf: pureAndGlobal("reflect/get-prototype-of", ["es6.reflect.get-prototype-of"]),
        has: pureAndGlobal("reflect/has", ["es6.reflect.has"]),
        isExtensible: pureAndGlobal("reflect/is-extensible", ["es6.reflect.is-extensible"]),
        ownKeys: pureAndGlobal("reflect/own-keys", ["es6.reflect.own-keys"]),
        preventExtensions: pureAndGlobal("reflect/prevent-extensions", ["es6.reflect.prevent-extensions"]),
        set: pureAndGlobal("reflect/set", ["es6.reflect.set"]),
        setPrototypeOf: pureAndGlobal("reflect/set-prototype-of", ["es6.reflect.set-prototype-of"])
      },
      String: {
        at: pureOnly("string/at", "es7.string.at"),
        fromCodePoint: pureAndGlobal("string/from-code-point", ["es6.string.from-code-point"]),
        raw: pureAndGlobal("string/raw", ["es6.string.raw"])
      },
      Symbol: {
        asyncIterator: globalOnly(["es6.symbol", "es7.symbol.async-iterator"]),
        "for": pureOnly("symbol/for", "es6.symbol"),
        hasInstance: pureOnly("symbol/has-instance", "es6.symbol"),
        isConcatSpreadable: pureOnly("symbol/is-concat-spreadable", "es6.symbol"),
        iterator: define$1("es6.symbol", "symbol/iterator", CommonIterators$1),
        keyFor: pureOnly("symbol/key-for", "es6.symbol"),
        match: pureAndGlobal("symbol/match", ["es6.regexp.match"]),
        replace: pureOnly("symbol/replace", "es6.symbol"),
        search: pureOnly("symbol/search", "es6.symbol"),
        species: pureOnly("symbol/species", "es6.symbol"),
        split: pureOnly("symbol/split", "es6.symbol"),
        toPrimitive: pureOnly("symbol/to-primitive", "es6.symbol"),
        toStringTag: pureOnly("symbol/to-string-tag", "es6.symbol"),
        unscopables: pureOnly("symbol/unscopables", "es6.symbol")
      }
    };
    var webPolyfills = {
      "web.timers": {},
      "web.immediate": {},
      "web.dom.iterable": {}
    };
    var purePolyfills = {
      "es6.parse-float": {},
      "es6.parse-int": {},
      "es7.string.at": {}
    };
    function addPlatformSpecificPolyfills(targets, method, polyfills) {
      var targetNames = Object.keys(targets);
      var isAnyTarget = !targetNames.length;
      var isWebTarget = targetNames.some(function (name) {
        return name !== "node";
      });
      return Object.assign(Object.assign(Object.assign({}, polyfills), method === "usage-pure" ? purePolyfills : null), isAnyTarget || isWebTarget ? webPolyfills : null);
    }
    function hasMinVersion(minVersion, runtimeVersion) {
      if (!runtimeVersion || !minVersion) return true;
      if (semver.valid(runtimeVersion)) runtimeVersion = "^" + runtimeVersion;
      return !semver.intersects("<" + minVersion, runtimeVersion) && !semver.intersects(">=8.0.0", runtimeVersion);
    }
    var _ref$1 = undefined || _babel,
      t$3 = _ref$1.types;
    var presetEnvCompat = "#__secret_key__@babel/preset-env__compatibility";
    var runtimeCompat$2 = "#__secret_key__@babel/runtime__compatibility";
    var has = Function.call.bind(Object.hasOwnProperty);
    var index$2 = definePolyfillProvider(function (api, _ref2) {
      var _ref2$presetEnvCompat = _ref2[presetEnvCompat],
        _ref2$presetEnvCompat2 = _ref2$presetEnvCompat === void 0 ? {
          entryInjectRegenerator: false
        } : _ref2$presetEnvCompat,
        entryInjectRegenerator = _ref2$presetEnvCompat2.entryInjectRegenerator,
        _ref2$runtimeCompat = _ref2[runtimeCompat$2],
        _ref2$runtimeCompat2 = _ref2$runtimeCompat === void 0 ? {
          useBabelRuntime: "",
          runtimeVersion: ""
        } : _ref2$runtimeCompat,
        useBabelRuntime = _ref2$runtimeCompat2.useBabelRuntime,
        runtimeVersion = _ref2$runtimeCompat2.runtimeVersion,
        _ref2$runtimeCompat2$ = _ref2$runtimeCompat2.ext,
        ext = _ref2$runtimeCompat2$ === void 0 ? ".js" : _ref2$runtimeCompat2$;
      var resolve = api.createMetaResolver({
        global: BuiltIns$1,
        "static": StaticProperties$1,
        instance: InstanceProperties$1
      });
      var debug = api.debug,
        shouldInjectPolyfill = api.shouldInjectPolyfill,
        method = api.method;
      var polyfills = addPlatformSpecificPolyfills(api.targets, method, corejs2BuiltIns);
      var coreJSBase = useBabelRuntime ? useBabelRuntime + "/core-js" : method === "usage-pure" ? "core-js/library/fn" : "core-js/modules";
      function inject(name, utils) {
        if (typeof name === "string") {
          if (has(polyfills, name) && shouldInjectPolyfill(name)) {
            debug(name);
            utils.injectGlobalImport(coreJSBase + "/" + name + ".js");
          }
          return;
        }
        name.forEach(function (name) {
          return inject(name, utils);
        });
      }
      function maybeInjectPure(desc, hint, utils) {
        var pure = desc.pure,
          meta = desc.meta,
          name = desc.name;
        if (!pure || !shouldInjectPolyfill(name)) return;
        if (runtimeVersion && meta && meta.minRuntimeVersion && !hasMinVersion(meta && meta.minRuntimeVersion, runtimeVersion)) {
          return;
        }
        return utils.injectDefaultImport(coreJSBase + "/" + pure + ext, hint);
      }
      return {
        name: "corejs2",
        polyfills: polyfills,
        entryGlobal: function entryGlobal(meta, utils, path) {
          if (meta.kind === "import" && meta.source === "core-js") {
            debug(null);
            inject(Object.keys(polyfills), utils);
            if (entryInjectRegenerator) {
              utils.injectGlobalImport("regenerator-runtime/runtime.js");
            }
            path.remove();
          }
        },
        usageGlobal: function usageGlobal(meta, utils) {
          var resolved = resolve(meta);
          if (!resolved) return;
          var deps = resolved.desc.global;
          if (resolved.kind !== "global" && "object" in meta && meta.object && meta.placement === "prototype") {
            var low = meta.object.toLowerCase();
            deps = deps.filter(function (m) {
              return m.includes(low);
            });
          }
          inject(deps, utils);
        },
        usagePure: function usagePure(meta, utils, path) {
          if (meta.kind === "in") {
            if (meta.key === "Symbol.iterator") {
              path.replaceWith(t$3.callExpression(utils.injectDefaultImport(coreJSBase + "/is-iterable" + ext, "isIterable"), [path.node.right]));
            }
            return;
          }
          if (path.parentPath.isUnaryExpression({
            operator: "delete"
          })) return;
          if (meta.kind === "property") {
            if (!path.isMemberExpression()) return;
            if (!path.isReferenced()) return;
            if (meta.key === "Symbol.iterator" && shouldInjectPolyfill("es6.symbol") && path.parentPath.isCallExpression({
              callee: path.node
            }) && path.parentPath.node.arguments.length === 0) {
              path.parentPath.replaceWith(t$3.callExpression(utils.injectDefaultImport(coreJSBase + "/get-iterator" + ext, "getIterator"), [path.node.object]));
              path.skip();
              return;
            }
          }
          var resolved = resolve(meta);
          if (!resolved) return;
          var id = maybeInjectPure(resolved.desc, resolved.name, utils);
          if (id) path.replaceWith(id);
        },
        visitor: method === "usage-global" && {
          YieldExpression: function YieldExpression(path) {
            if (path.node.delegate) {
              inject("web.dom.iterable", api.getUtils(path));
            }
          },
          "ForOfStatement|ArrayPattern": function ForOfStatementArrayPattern(path) {
            CommonIterators$1.forEach(function (name) {
              return inject(name, api.getUtils(path));
            });
          }
        }
      };
    });
  
    var data = require$$0$3;
  
    var getModulesListForTargetVersion = getModulesListForTargetVersion$2;
  
    var entries = require$$0$2;
  
    var _InstanceProperties;
    var corejs3ShippedProposalsList = new Set(["esnext.array.group", "esnext.array.group-to-map", "esnext.array.to-reversed", "esnext.array.to-sorted", "esnext.array.to-spliced", "esnext.array.with", "esnext.typed-array.to-reversed", "esnext.typed-array.to-sorted", "esnext.typed-array.with"]);
    var polyfillsOrder = {};
    Object.keys(data).forEach(function (name, index) {
      polyfillsOrder[name] = index;
    });
    var define = function define(pure, global, name, exclude) {
      if (name === void 0) {
        name = global[0];
      }
      return {
        name: name,
        pure: pure,
        global: global.sort(function (a, b) {
          return polyfillsOrder[a] - polyfillsOrder[b];
        }),
        exclude: exclude
      };
    };
    var typed = function typed(name) {
      return define(null, [name].concat(TypedArrayDependencies));
    };
    var ArrayNatureIterators = ["es.array.iterator", "web.dom-collections.iterator"];
    var CommonIterators = ["es.string.iterator"].concat(ArrayNatureIterators);
    var ArrayNatureIteratorsWithTag = ["es.object.to-string"].concat(ArrayNatureIterators);
    var CommonIteratorsWithTag = ["es.object.to-string"].concat(_toConsumableArray(CommonIterators));
    var ErrorDependencies = ["es.error.cause", "es.error.to-string"];
    var TypedArrayDependencies = ["es.typed-array.at", "es.typed-array.copy-within", "es.typed-array.every", "es.typed-array.fill", "es.typed-array.filter", "es.typed-array.find", "es.typed-array.find-index", "es.typed-array.find-last", "es.typed-array.find-last-index", "es.typed-array.for-each", "es.typed-array.includes", "es.typed-array.index-of", "es.typed-array.iterator", "es.typed-array.join", "es.typed-array.last-index-of", "es.typed-array.map", "es.typed-array.reduce", "es.typed-array.reduce-right", "es.typed-array.reverse", "es.typed-array.set", "es.typed-array.slice", "es.typed-array.some", "es.typed-array.sort", "es.typed-array.subarray", "es.typed-array.to-locale-string", "es.typed-array.to-string", "es.object.to-string", "es.array.iterator", "es.array-buffer.slice", "esnext.typed-array.filter-reject", "esnext.typed-array.group-by", "esnext.typed-array.to-reversed", "esnext.typed-array.to-sorted", "esnext.typed-array.to-spliced", "esnext.typed-array.unique-by", "esnext.typed-array.with"];
    var PromiseDependencies = ["es.promise", "es.object.to-string"];
    var PromiseDependenciesWithIterators = [].concat(PromiseDependencies, _toConsumableArray(CommonIterators));
    var SymbolDependencies = ["es.symbol", "es.symbol.description", "es.object.to-string"];
    var MapDependencies = ["es.map", "esnext.map.delete-all", "esnext.map.emplace", "esnext.map.every", "esnext.map.filter", "esnext.map.find", "esnext.map.find-key", "esnext.map.includes", "esnext.map.key-of", "esnext.map.map-keys", "esnext.map.map-values", "esnext.map.merge", "esnext.map.reduce", "esnext.map.some", "esnext.map.update"].concat(_toConsumableArray(CommonIteratorsWithTag));
    var SetDependencies = ["es.set", "esnext.set.add-all", "esnext.set.delete-all", "esnext.set.difference", "esnext.set.every", "esnext.set.filter", "esnext.set.find", "esnext.set.intersection", "esnext.set.is-disjoint-from", "esnext.set.is-subset-of", "esnext.set.is-superset-of", "esnext.set.join", "esnext.set.map", "esnext.set.reduce", "esnext.set.some", "esnext.set.symmetric-difference", "esnext.set.union"].concat(_toConsumableArray(CommonIteratorsWithTag));
    var WeakMapDependencies = ["es.weak-map", "esnext.weak-map.delete-all", "esnext.weak-map.emplace"].concat(_toConsumableArray(CommonIteratorsWithTag));
    var WeakSetDependencies = ["es.weak-set", "esnext.weak-set.add-all", "esnext.weak-set.delete-all"].concat(_toConsumableArray(CommonIteratorsWithTag));
    var DOMExceptionDependencies = ["web.dom-exception.constructor", "web.dom-exception.stack", "web.dom-exception.to-string-tag", "es.error.to-string"];
    var URLSearchParamsDependencies = ["web.url-search-params"].concat(_toConsumableArray(CommonIteratorsWithTag));
    var AsyncIteratorDependencies = ["esnext.async-iterator.constructor"].concat(PromiseDependencies);
    var AsyncIteratorProblemMethods = ["esnext.async-iterator.every", "esnext.async-iterator.filter", "esnext.async-iterator.find", "esnext.async-iterator.flat-map", "esnext.async-iterator.for-each", "esnext.async-iterator.map", "esnext.async-iterator.reduce", "esnext.async-iterator.some"];
    var IteratorDependencies = ["esnext.iterator.constructor", "es.object.to-string"];
    var TypedArrayStaticMethods = {
      from: define(null, ["es.typed-array.from"]),
      fromAsync: define(null, ["esnext.typed-array.from-async"].concat(_toConsumableArray(PromiseDependenciesWithIterators))),
      of: define(null, ["es.typed-array.of"])
    };
    var BuiltIns = {
      AsyncIterator: define("async-iterator/index", AsyncIteratorDependencies),
      AggregateError: define("aggregate-error", ["es.aggregate-error"].concat(ErrorDependencies, _toConsumableArray(CommonIteratorsWithTag), ["es.aggregate-error.cause"])),
      ArrayBuffer: define(null, ["es.array-buffer.constructor", "es.array-buffer.slice", "es.object.to-string"]),
      DataView: define(null, ["es.data-view", "es.array-buffer.slice", "es.object.to-string"]),
      Date: define(null, ["es.date.to-string"]),
      DOMException: define("dom-exception", DOMExceptionDependencies),
      Error: define(null, ErrorDependencies),
      EvalError: define(null, ErrorDependencies),
      Float32Array: typed("es.typed-array.float32-array"),
      Float64Array: typed("es.typed-array.float64-array"),
      Int8Array: typed("es.typed-array.int8-array"),
      Int16Array: typed("es.typed-array.int16-array"),
      Int32Array: typed("es.typed-array.int32-array"),
      Iterator: define("iterator/index", IteratorDependencies),
      Uint8Array: typed("es.typed-array.uint8-array"),
      Uint8ClampedArray: typed("es.typed-array.uint8-clamped-array"),
      Uint16Array: typed("es.typed-array.uint16-array"),
      Uint32Array: typed("es.typed-array.uint32-array"),
      Map: define("map/index", MapDependencies),
      Number: define(null, ["es.number.constructor"]),
      Observable: define("observable/index", ["esnext.observable", "esnext.symbol.observable", "es.object.to-string"].concat(_toConsumableArray(CommonIteratorsWithTag))),
      Promise: define("promise/index", PromiseDependencies),
      RangeError: define(null, ErrorDependencies),
      ReferenceError: define(null, ErrorDependencies),
      Reflect: define(null, ["es.reflect.to-string-tag", "es.object.to-string"]),
      RegExp: define(null, ["es.regexp.constructor", "es.regexp.dot-all", "es.regexp.exec", "es.regexp.sticky", "es.regexp.to-string"]),
      Set: define("set/index", SetDependencies),
      Symbol: define("symbol/index", SymbolDependencies),
      SyntaxError: define(null, ErrorDependencies),
      TypeError: define(null, ErrorDependencies),
      URIError: define(null, ErrorDependencies),
      URL: define("url/index", ["web.url"].concat(_toConsumableArray(URLSearchParamsDependencies))),
      URLSearchParams: define("url-search-params/index", URLSearchParamsDependencies),
      WeakMap: define("weak-map/index", WeakMapDependencies),
      WeakSet: define("weak-set/index", WeakSetDependencies),
      atob: define("atob", ["web.atob"].concat(DOMExceptionDependencies)),
      btoa: define("btoa", ["web.btoa"].concat(DOMExceptionDependencies)),
      clearImmediate: define("clear-immediate", ["web.immediate"]),
      compositeKey: define("composite-key", ["esnext.composite-key"]),
      compositeSymbol: define("composite-symbol", ["esnext.composite-symbol"]),
      escape: define("escape", ["es.escape"]),
      fetch: define(null, PromiseDependencies),
      globalThis: define("global-this", ["es.global-this"]),
      parseFloat: define("parse-float", ["es.parse-float"]),
      parseInt: define("parse-int", ["es.parse-int"]),
      queueMicrotask: define("queue-microtask", ["web.queue-microtask"]),
      setImmediate: define("set-immediate", ["web.immediate"]),
      setInterval: define("set-interval", ["web.timers"]),
      setTimeout: define("set-timeout", ["web.timers"]),
      structuredClone: define("structured-clone", ["web.structured-clone"].concat(DOMExceptionDependencies, ["es.array.iterator", "es.object.keys", "es.object.to-string", "es.map", "es.set"])),
      unescape: define("unescape", ["es.unescape"])
    };
    var StaticProperties = {
      AsyncIterator: {
        from: define("async-iterator/from", ["esnext.async-iterator.from"].concat(_toConsumableArray(AsyncIteratorDependencies), AsyncIteratorProblemMethods, _toConsumableArray(CommonIterators)))
      },
      Array: {
        from: define("array/from", ["es.array.from", "es.string.iterator"]),
        fromAsync: define("array/from-async", ["esnext.array.from-async"].concat(_toConsumableArray(PromiseDependenciesWithIterators))),
        isArray: define("array/is-array", ["es.array.is-array"]),
        isTemplateObject: define("array/is-template-object", ["esnext.array.is-template-object"]),
        of: define("array/of", ["es.array.of"])
      },
      ArrayBuffer: {
        isView: define(null, ["es.array-buffer.is-view"])
      },
      BigInt: {
        range: define("bigint/range", ["esnext.bigint.range", "es.object.to-string"])
      },
      Date: {
        now: define("date/now", ["es.date.now"])
      },
      Function: {
        isCallable: define("function/is-callable", ["esnext.function.is-callable"]),
        isConstructor: define("function/is-constructor", ["esnext.function.is-constructor"])
      },
      Iterator: {
        from: define("iterator/from", ["esnext.iterator.from"].concat(IteratorDependencies, _toConsumableArray(CommonIterators)))
      },
      JSON: {
        stringify: define("json/stringify", ["es.json.stringify"], "es.symbol")
      },
      Math: {
        DEG_PER_RAD: define("math/deg-per-rad", ["esnext.math.deg-per-rad"]),
        RAD_PER_DEG: define("math/rad-per-deg", ["esnext.math.rad-per-deg"]),
        acosh: define("math/acosh", ["es.math.acosh"]),
        asinh: define("math/asinh", ["es.math.asinh"]),
        atanh: define("math/atanh", ["es.math.atanh"]),
        cbrt: define("math/cbrt", ["es.math.cbrt"]),
        clamp: define("math/clamp", ["esnext.math.clamp"]),
        clz32: define("math/clz32", ["es.math.clz32"]),
        cosh: define("math/cosh", ["es.math.cosh"]),
        degrees: define("math/degrees", ["esnext.math.degrees"]),
        expm1: define("math/expm1", ["es.math.expm1"]),
        fround: define("math/fround", ["es.math.fround"]),
        fscale: define("math/fscale", ["esnext.math.fscale"]),
        hypot: define("math/hypot", ["es.math.hypot"]),
        iaddh: define("math/iaddh", ["esnext.math.iaddh"]),
        imul: define("math/imul", ["es.math.imul"]),
        imulh: define("math/imulh", ["esnext.math.imulh"]),
        isubh: define("math/isubh", ["esnext.math.isubh"]),
        log10: define("math/log10", ["es.math.log10"]),
        log1p: define("math/log1p", ["es.math.log1p"]),
        log2: define("math/log2", ["es.math.log2"]),
        radians: define("math/radians", ["esnext.math.radians"]),
        scale: define("math/scale", ["esnext.math.scale"]),
        seededPRNG: define("math/seeded-prng", ["esnext.math.seeded-prng"]),
        sign: define("math/sign", ["es.math.sign"]),
        signbit: define("math/signbit", ["esnext.math.signbit"]),
        sinh: define("math/sinh", ["es.math.sinh"]),
        tanh: define("math/tanh", ["es.math.tanh"]),
        trunc: define("math/trunc", ["es.math.trunc"]),
        umulh: define("math/umulh", ["esnext.math.umulh"])
      },
      Map: {
        from: define(null, ["esnext.map.from"].concat(_toConsumableArray(MapDependencies))),
        groupBy: define(null, ["esnext.map.group-by"].concat(_toConsumableArray(MapDependencies))),
        keyBy: define(null, ["esnext.map.key-by"].concat(_toConsumableArray(MapDependencies))),
        of: define(null, ["esnext.map.of"].concat(_toConsumableArray(MapDependencies)))
      },
      Number: {
        EPSILON: define("number/epsilon", ["es.number.epsilon"]),
        MAX_SAFE_INTEGER: define("number/max-safe-integer", ["es.number.max-safe-integer"]),
        MIN_SAFE_INTEGER: define("number/min-safe-integer", ["es.number.min-safe-integer"]),
        fromString: define("number/from-string", ["esnext.number.from-string"]),
        isFinite: define("number/is-finite", ["es.number.is-finite"]),
        isInteger: define("number/is-integer", ["es.number.is-integer"]),
        isNaN: define("number/is-nan", ["es.number.is-nan"]),
        isSafeInteger: define("number/is-safe-integer", ["es.number.is-safe-integer"]),
        parseFloat: define("number/parse-float", ["es.number.parse-float"]),
        parseInt: define("number/parse-int", ["es.number.parse-int"]),
        range: define("number/range", ["esnext.number.range", "es.object.to-string"])
      },
      Object: {
        assign: define("object/assign", ["es.object.assign"]),
        create: define("object/create", ["es.object.create"]),
        defineProperties: define("object/define-properties", ["es.object.define-properties"]),
        defineProperty: define("object/define-property", ["es.object.define-property"]),
        entries: define("object/entries", ["es.object.entries"]),
        freeze: define("object/freeze", ["es.object.freeze"]),
        fromEntries: define("object/from-entries", ["es.object.from-entries", "es.array.iterator"]),
        getOwnPropertyDescriptor: define("object/get-own-property-descriptor", ["es.object.get-own-property-descriptor"]),
        getOwnPropertyDescriptors: define("object/get-own-property-descriptors", ["es.object.get-own-property-descriptors"]),
        getOwnPropertyNames: define("object/get-own-property-names", ["es.object.get-own-property-names"]),
        getOwnPropertySymbols: define("object/get-own-property-symbols", ["es.symbol"]),
        getPrototypeOf: define("object/get-prototype-of", ["es.object.get-prototype-of"]),
        hasOwn: define("object/has-own", ["es.object.has-own"]),
        is: define("object/is", ["es.object.is"]),
        isExtensible: define("object/is-extensible", ["es.object.is-extensible"]),
        isFrozen: define("object/is-frozen", ["es.object.is-frozen"]),
        isSealed: define("object/is-sealed", ["es.object.is-sealed"]),
        keys: define("object/keys", ["es.object.keys"]),
        preventExtensions: define("object/prevent-extensions", ["es.object.prevent-extensions"]),
        seal: define("object/seal", ["es.object.seal"]),
        setPrototypeOf: define("object/set-prototype-of", ["es.object.set-prototype-of"]),
        values: define("object/values", ["es.object.values"])
      },
      Promise: {
        all: define(null, PromiseDependenciesWithIterators),
        allSettled: define(null, ["es.promise.all-settled"].concat(_toConsumableArray(PromiseDependenciesWithIterators))),
        any: define(null, ["es.promise.any", "es.aggregate-error"].concat(_toConsumableArray(PromiseDependenciesWithIterators))),
        race: define(null, PromiseDependenciesWithIterators),
        "try": define(null, ["esnext.promise.try"].concat(_toConsumableArray(PromiseDependenciesWithIterators)))
      },
      Reflect: {
        apply: define("reflect/apply", ["es.reflect.apply"]),
        construct: define("reflect/construct", ["es.reflect.construct"]),
        defineMetadata: define("reflect/define-metadata", ["esnext.reflect.define-metadata"]),
        defineProperty: define("reflect/define-property", ["es.reflect.define-property"]),
        deleteMetadata: define("reflect/delete-metadata", ["esnext.reflect.delete-metadata"]),
        deleteProperty: define("reflect/delete-property", ["es.reflect.delete-property"]),
        get: define("reflect/get", ["es.reflect.get"]),
        getMetadata: define("reflect/get-metadata", ["esnext.reflect.get-metadata"]),
        getMetadataKeys: define("reflect/get-metadata-keys", ["esnext.reflect.get-metadata-keys"]),
        getOwnMetadata: define("reflect/get-own-metadata", ["esnext.reflect.get-own-metadata"]),
        getOwnMetadataKeys: define("reflect/get-own-metadata-keys", ["esnext.reflect.get-own-metadata-keys"]),
        getOwnPropertyDescriptor: define("reflect/get-own-property-descriptor", ["es.reflect.get-own-property-descriptor"]),
        getPrototypeOf: define("reflect/get-prototype-of", ["es.reflect.get-prototype-of"]),
        has: define("reflect/has", ["es.reflect.has"]),
        hasMetadata: define("reflect/has-metadata", ["esnext.reflect.has-metadata"]),
        hasOwnMetadata: define("reflect/has-own-metadata", ["esnext.reflect.has-own-metadata"]),
        isExtensible: define("reflect/is-extensible", ["es.reflect.is-extensible"]),
        metadata: define("reflect/metadata", ["esnext.reflect.metadata"]),
        ownKeys: define("reflect/own-keys", ["es.reflect.own-keys"]),
        preventExtensions: define("reflect/prevent-extensions", ["es.reflect.prevent-extensions"]),
        set: define("reflect/set", ["es.reflect.set"]),
        setPrototypeOf: define("reflect/set-prototype-of", ["es.reflect.set-prototype-of"])
      },
      Set: {
        from: define(null, ["esnext.set.from"].concat(_toConsumableArray(SetDependencies))),
        of: define(null, ["esnext.set.of"].concat(_toConsumableArray(SetDependencies)))
      },
      String: {
        cooked: define("string/cooked", ["esnext.string.cooked"]),
        fromCodePoint: define("string/from-code-point", ["es.string.from-code-point"]),
        raw: define("string/raw", ["es.string.raw"])
      },
      Symbol: {
        asyncDispose: define("symbol/async-dispose", ["esnext.symbol.async-dispose"]),
        asyncIterator: define("symbol/async-iterator", ["es.symbol.async-iterator"]),
        dispose: define("symbol/dispose", ["esnext.symbol.dispose"]),
        "for": define("symbol/for", [], "es.symbol"),
        hasInstance: define("symbol/has-instance", ["es.symbol.has-instance", "es.function.has-instance"]),
        isConcatSpreadable: define("symbol/is-concat-spreadable", ["es.symbol.is-concat-spreadable", "es.array.concat"]),
        iterator: define("symbol/iterator", ["es.symbol.iterator"].concat(_toConsumableArray(CommonIteratorsWithTag))),
        keyFor: define("symbol/key-for", [], "es.symbol"),
        match: define("symbol/match", ["es.symbol.match", "es.string.match"]),
        matcher: define("symbol/matcher", ["esnext.symbol.matcher"]),
        matchAll: define("symbol/match-all", ["es.symbol.match-all", "es.string.match-all"]),
        metadata: define("symbol/metadata", ["esnext.symbol.metadata"]),
        metadataKey: define("symbol/metadata-key", ["esnext.symbol.metadata-key"]),
        observable: define("symbol/observable", ["esnext.symbol.observable"]),
        patternMatch: define("symbol/pattern-match", ["esnext.symbol.pattern-match"]),
        replace: define("symbol/replace", ["es.symbol.replace", "es.string.replace"]),
        search: define("symbol/search", ["es.symbol.search", "es.string.search"]),
        species: define("symbol/species", ["es.symbol.species", "es.array.species"]),
        split: define("symbol/split", ["es.symbol.split", "es.string.split"]),
        toPrimitive: define("symbol/to-primitive", ["es.symbol.to-primitive", "es.date.to-primitive"]),
        toStringTag: define("symbol/to-string-tag", ["es.symbol.to-string-tag", "es.object.to-string", "es.math.to-string-tag", "es.json.to-string-tag"]),
        unscopables: define("symbol/unscopables", ["es.symbol.unscopables"])
      },
      WeakMap: {
        from: define(null, ["esnext.weak-map.from"].concat(_toConsumableArray(WeakMapDependencies))),
        of: define(null, ["esnext.weak-map.of"].concat(_toConsumableArray(WeakMapDependencies)))
      },
      WeakSet: {
        from: define(null, ["esnext.weak-set.from"].concat(_toConsumableArray(WeakSetDependencies))),
        of: define(null, ["esnext.weak-set.of"].concat(_toConsumableArray(WeakSetDependencies)))
      },
      Int8Array: TypedArrayStaticMethods,
      Uint8Array: TypedArrayStaticMethods,
      Uint8ClampedArray: TypedArrayStaticMethods,
      Int16Array: TypedArrayStaticMethods,
      Uint16Array: TypedArrayStaticMethods,
      Int32Array: TypedArrayStaticMethods,
      Uint32Array: TypedArrayStaticMethods,
      Float32Array: TypedArrayStaticMethods,
      Float64Array: TypedArrayStaticMethods,
      WebAssembly: {
        CompileError: define(null, ErrorDependencies),
        LinkError: define(null, ErrorDependencies),
        RuntimeError: define(null, ErrorDependencies)
      }
    };
    var InstanceProperties = (_InstanceProperties = {
      asIndexedPairs: define("instance/asIndexedPairs", ["esnext.async-iterator.as-indexed-pairs"].concat(_toConsumableArray(AsyncIteratorDependencies), ["esnext.iterator.as-indexed-pairs"], IteratorDependencies)),
      at: define("instance/at", ["esnext.string.at", "es.string.at-alternative", "es.array.at"]),
      anchor: define(null, ["es.string.anchor"]),
      big: define(null, ["es.string.big"]),
      bind: define("instance/bind", ["es.function.bind"]),
      blink: define(null, ["es.string.blink"]),
      bold: define(null, ["es.string.bold"]),
      codePointAt: define("instance/code-point-at", ["es.string.code-point-at"]),
      codePoints: define("instance/code-points", ["esnext.string.code-points"]),
      concat: define("instance/concat", ["es.array.concat"], undefined, ["String"]),
      copyWithin: define("instance/copy-within", ["es.array.copy-within"]),
      description: define(null, ["es.symbol", "es.symbol.description"]),
      dotAll: define("instance/dot-all", ["es.regexp.dot-all"]),
      drop: define("instance/drop", ["esnext.async-iterator.drop"].concat(_toConsumableArray(AsyncIteratorDependencies), ["esnext.iterator.drop"], IteratorDependencies)),
      emplace: define("instance/emplace", ["esnext.map.emplace", "esnext.weak-map.emplace"]),
      endsWith: define("instance/ends-with", ["es.string.ends-with"]),
      entries: define("instance/entries", ArrayNatureIteratorsWithTag),
      every: define("instance/every", ["es.array.every", "esnext.async-iterator.every", "esnext.iterator.every"].concat(IteratorDependencies)),
      exec: define(null, ["es.regexp.exec"]),
      fill: define("instance/fill", ["es.array.fill"]),
      filter: define("instance/filter", ["es.array.filter", "esnext.async-iterator.filter", "esnext.iterator.filter"].concat(IteratorDependencies)),
      filterReject: define("instance/filterReject", ["esnext.array.filter-reject"]),
      "finally": define(null, ["es.promise.finally"].concat(PromiseDependencies)),
      find: define("instance/find", ["es.array.find", "esnext.async-iterator.find", "esnext.iterator.find"].concat(IteratorDependencies)),
      findIndex: define("instance/find-index", ["es.array.find-index"]),
      findLast: define("instance/find-last", ["es.array.find-last"]),
      findLastIndex: define("instance/find-last-index", ["es.array.find-last-index"]),
      fixed: define(null, ["es.string.fixed"]),
      flags: define("instance/flags", ["es.regexp.flags"]),
      flatMap: define("instance/flat-map", ["es.array.flat-map", "es.array.unscopables.flat-map", "esnext.async-iterator.flat-map", "esnext.iterator.flat-map"].concat(IteratorDependencies)),
      flat: define("instance/flat", ["es.array.flat", "es.array.unscopables.flat"]),
      getYear: define(null, ["es.date.get-year"]),
      group: define("instance/group", ["esnext.array.group"]),
      groupBy: define("instance/group-by", ["esnext.array.group-by"]),
      groupByToMap: define("instance/group-by-to-map", ["esnext.array.group-by-to-map", "es.map", "es.object.to-string"]),
      groupToMap: define("instance/group-to-map", ["esnext.array.group-to-map", "es.map", "es.object.to-string"]),
      fontcolor: define(null, ["es.string.fontcolor"]),
      fontsize: define(null, ["es.string.fontsize"]),
      forEach: define("instance/for-each", ["es.array.for-each", "esnext.async-iterator.for-each", "esnext.iterator.for-each"].concat(IteratorDependencies, ["web.dom-collections.for-each"])),
      includes: define("instance/includes", ["es.array.includes", "es.string.includes"]),
      indexed: define("instance/indexed", ["esnext.async-iterator.indexed"].concat(_toConsumableArray(AsyncIteratorDependencies), ["esnext.iterator.indexed"], IteratorDependencies)),
      indexOf: define("instance/index-of", ["es.array.index-of"]),
      italic: define(null, ["es.string.italics"]),
      join: define(null, ["es.array.join"]),
      keys: define("instance/keys", ArrayNatureIteratorsWithTag),
      lastIndex: define(null, ["esnext.array.last-index"]),
      lastIndexOf: define("instance/last-index-of", ["es.array.last-index-of"]),
      lastItem: define(null, ["esnext.array.last-item"]),
      link: define(null, ["es.string.link"]),
      map: define("instance/map", ["es.array.map", "esnext.async-iterator.map", "esnext.iterator.map"]),
      match: define(null, ["es.string.match", "es.regexp.exec"]),
      matchAll: define("instance/match-all", ["es.string.match-all", "es.regexp.exec"]),
      name: define(null, ["es.function.name"]),
      padEnd: define("instance/pad-end", ["es.string.pad-end"]),
      padStart: define("instance/pad-start", ["es.string.pad-start"]),
      push: define("instance/push", ["es.array.push"]),
      reduce: define("instance/reduce", ["es.array.reduce", "esnext.async-iterator.reduce", "esnext.iterator.reduce"].concat(IteratorDependencies)),
      reduceRight: define("instance/reduce-right", ["es.array.reduce-right"]),
      repeat: define("instance/repeat", ["es.string.repeat"]),
      replace: define(null, ["es.string.replace", "es.regexp.exec"]),
      replaceAll: define("instance/replace-all", ["es.string.replace-all", "es.string.replace", "es.regexp.exec"]),
      reverse: define("instance/reverse", ["es.array.reverse"]),
      search: define(null, ["es.string.search", "es.regexp.exec"]),
      setYear: define(null, ["es.date.set-year"]),
      slice: define("instance/slice", ["es.array.slice"]),
      small: define(null, ["es.string.small"]),
      some: define("instance/some", ["es.array.some", "esnext.async-iterator.some", "esnext.iterator.some"].concat(IteratorDependencies)),
      sort: define("instance/sort", ["es.array.sort"]),
      splice: define("instance/splice", ["es.array.splice"]),
      split: define(null, ["es.string.split", "es.regexp.exec"]),
      startsWith: define("instance/starts-with", ["es.string.starts-with"]),
      sticky: define("instance/sticky", ["es.regexp.sticky"]),
      strike: define(null, ["es.string.strike"]),
      sub: define(null, ["es.string.sub"]),
      substr: define(null, ["es.string.substr"]),
      sup: define(null, ["es.string.sup"]),
      take: define("instance/take", ["esnext.async-iterator.take"].concat(_toConsumableArray(AsyncIteratorDependencies), ["esnext.iterator.take"], IteratorDependencies)),
      test: define(null, ["es.regexp.test", "es.regexp.exec"]),
      toArray: define("instance/to-array", ["esnext.async-iterator.to-array"].concat(_toConsumableArray(AsyncIteratorDependencies), ["esnext.iterator.to-array"], IteratorDependencies)),
      toAsync: define(null, ["esnext.iterator.to-async"].concat(IteratorDependencies, _toConsumableArray(AsyncIteratorDependencies), AsyncIteratorProblemMethods)),
      toExponential: define(null, ["es.number.to-exponential"]),
      toFixed: define(null, ["es.number.to-fixed"]),
      toGMTString: define(null, ["es.date.to-gmt-string"]),
      toISOString: define(null, ["es.date.to-iso-string"]),
      toJSON: define(null, ["es.date.to-json", "web.url.to-json"]),
      toPrecision: define(null, ["es.number.to-precision"]),
      toReversed: define("instance/to-reversed", ["esnext.array.to-reversed"]),
      toSorted: define("instance/to-sorted", ["esnext.array.to-sorted", "es.array.sort"]),
      toSpliced: define("instance/to-spliced", ["esnext.array.to-spliced"]),
      toString: define(null, ["es.object.to-string", "es.error.to-string", "es.date.to-string", "es.regexp.to-string"]),
      trim: define("instance/trim", ["es.string.trim"]),
      trimEnd: define("instance/trim-end", ["es.string.trim-end"]),
      trimLeft: define("instance/trim-left", ["es.string.trim-start"]),
      trimRight: define("instance/trim-right", ["es.string.trim-end"]),
      trimStart: define("instance/trim-start", ["es.string.trim-start"]),
      uniqueBy: define("instance/unique-by", ["esnext.array.unique-by", "es.map"]),
      unshift: define("instance/unshift", ["es.array.unshift"]),
      unThis: define("instance/un-this", ["esnext.function.un-this"]),
      values: define("instance/values", ArrayNatureIteratorsWithTag),
      "with": define("instance/with", ["esnext.array.with"]),
      __defineGetter__: define(null, ["es.object.define-getter"]),
      __defineSetter__: define(null, ["es.object.define-setter"]),
      __lookupGetter__: define(null, ["es.object.lookup-getter"]),
      __lookupSetter__: define(null, ["es.object.lookup-setter"])
    }, _InstanceProperties["__proto__"] = define(null, ["es.object.proto"]), _InstanceProperties);
    var CommonInstanceDependencies = new Set(["es.object.to-string", "es.object.define-getter", "es.object.define-setter", "es.object.lookup-getter", "es.object.lookup-setter", "es.regexp.exec"]);
    var _ref = undefined || _babel,
      t$2 = _ref.types;
    function canSkipPolyfill(desc, path) {
      var node = path.node,
        parent = path.parent;
      switch (desc.name) {
        case "es.string.split":
          {
            if (!t$2.isCallExpression(parent, {
              callee: node
            })) return false;
            if (parent.arguments.length < 1) return true;
            var splitter = parent.arguments[0];
            return t$2.isStringLiteral(splitter) || t$2.isTemplateLiteral(splitter);
          }
      }
    }
    var _ref2 = undefined || _babel,
      t$1 = _ref2.types;
    function callMethod(path, id) {
      var object = path.node.object;
      var context1, context2;
      if (t$1.isIdentifier(object)) {
        context1 = object;
        context2 = t$1.cloneNode(object);
      } else {
        context1 = path.scope.generateDeclaredUidIdentifier("context");
        context2 = t$1.assignmentExpression("=", t$1.cloneNode(context1), object);
      }
      path.replaceWith(t$1.memberExpression(t$1.callExpression(id, [context2]), t$1.identifier("call")));
      path.parentPath.unshiftContainer("arguments", context1);
    }
    function isCoreJSSource(source) {
      if (typeof source === "string") {
        source = source.replace(/\\/g, "/").replace(/(\/(index)?)?(\.js)?$/i, "").toLowerCase();
      }
      return Object.prototype.hasOwnProperty.call(entries, source) && entries[source];
    }
    function coreJSModule(name) {
      return "core-js/modules/" + name + ".js";
    }
    function coreJSPureHelper(name, useBabelRuntime, ext) {
      return useBabelRuntime ? useBabelRuntime + "/core-js/" + name + ext : "core-js-pure/features/" + name + ".js";
    }
    var _ref3 = undefined || _babel,
      t = _ref3.types;
    var runtimeCompat$1 = "#__secret_key__@babel/runtime__compatibility";
    var esnextFallback = function esnextFallback(name, cb) {
      if (cb(name)) return true;
      if (!name.startsWith("es.")) return false;
      var fallback = "esnext." + name.slice(3);
      if (!data[fallback]) return false;
      return cb(fallback);
    };
    var index$1 = definePolyfillProvider(function (_ref4, _ref5) {
      var getUtils = _ref4.getUtils,
        method = _ref4.method,
        shouldInjectPolyfill = _ref4.shouldInjectPolyfill,
        createMetaResolver = _ref4.createMetaResolver,
        debug = _ref4.debug,
        babel = _ref4.babel;
      var _ref5$version = _ref5.version,
        version = _ref5$version === void 0 ? 3 : _ref5$version,
        proposals = _ref5.proposals,
        shippedProposals = _ref5.shippedProposals,
        _ref5$runtimeCompat = _ref5[runtimeCompat$1],
        _ref5$runtimeCompat2 = _ref5$runtimeCompat === void 0 ? {
          useBabelRuntime: ""
        } : _ref5$runtimeCompat,
        useBabelRuntime = _ref5$runtimeCompat2.useBabelRuntime,
        _ref5$runtimeCompat2$ = _ref5$runtimeCompat2.ext,
        ext = _ref5$runtimeCompat2$ === void 0 ? ".js" : _ref5$runtimeCompat2$;
      var isWebpack = babel.caller(function (caller) {
        return (caller == null ? void 0 : caller.name) === "babel-loader";
      });
      var resolve = createMetaResolver({
        global: BuiltIns,
        "static": StaticProperties,
        instance: InstanceProperties
      });
      var available = new Set(getModulesListForTargetVersion(version));
      function getCoreJSPureBase(useProposalBase) {
        return useBabelRuntime ? useProposalBase ? useBabelRuntime + "/core-js" : useBabelRuntime + "/core-js-stable" : useProposalBase ? "core-js-pure/features" : "core-js-pure/stable";
      }
      function maybeInjectGlobalImpl(name, utils) {
        if (shouldInjectPolyfill(name)) {
          debug(name);
          utils.injectGlobalImport(coreJSModule(name));
          return true;
        }
        return false;
      }
      function maybeInjectGlobal(names, utils, fallback) {
        if (fallback === void 0) {
          fallback = true;
        }
        for (var _iterator = _createForOfIteratorHelperLoose(names), _step; !(_step = _iterator()).done;) {
          var name = _step.value;
          if (fallback) {
            esnextFallback(name, function (name) {
              return maybeInjectGlobalImpl(name, utils);
            });
          } else {
            maybeInjectGlobalImpl(name, utils);
          }
        }
      }
      function maybeInjectPure(desc, hint, utils, object) {
        if (desc.pure && !(object && desc.exclude && desc.exclude.includes(object)) && esnextFallback(desc.name, shouldInjectPolyfill)) {
          var name = desc.name;
          var useProposalBase = false;
          if (proposals || shippedProposals && name.startsWith("esnext.")) {
            useProposalBase = true;
          } else if (name.startsWith("es.") && !available.has(name)) {
            useProposalBase = true;
          }
          var coreJSPureBase = getCoreJSPureBase(useProposalBase);
          return utils.injectDefaultImport(coreJSPureBase + "/" + desc.pure + ext, hint);
        }
      }
      function isFeatureStable(name) {
        if (name.startsWith("esnext.")) {
          var esName = "es." + name.slice(7);
          return esName in data;
        }
        return true;
      }
      return {
        name: "corejs3",
        polyfills: data,
        filterPolyfills: function filterPolyfills(name) {
          if (!available.has(name)) return false;
          if (proposals || method === "entry-global") return true;
          if (shippedProposals && corejs3ShippedProposalsList.has(name)) {
            return true;
          }
          return isFeatureStable(name);
        },
        entryGlobal: function entryGlobal(meta, utils, path) {
          if (meta.kind !== "import") return;
          var modules = isCoreJSSource(meta.source);
          if (!modules) return;
          if (modules.length === 1 && meta.source === coreJSModule(modules[0]) && shouldInjectPolyfill(modules[0])) {
            debug(null);
            return;
          }
          var modulesSet = new Set(modules);
          var filteredModules = modules.filter(function (module) {
            if (!module.startsWith("esnext.")) return true;
            var stable = module.replace("esnext.", "es.");
            if (modulesSet.has(stable) && shouldInjectPolyfill(stable)) {
              return false;
            }
            return true;
          });
          maybeInjectGlobal(filteredModules, utils, false);
          path.remove();
        },
        usageGlobal: function usageGlobal(meta, utils, path) {
          var resolved = resolve(meta);
          if (!resolved) return;
          if (canSkipPolyfill(resolved.desc, path)) return;
          var deps = resolved.desc.global;
          if (resolved.kind !== "global" && "object" in meta && meta.object && meta.placement === "prototype") {
            var low = meta.object.toLowerCase();
            deps = deps.filter(function (m) {
              return m.includes(low) || CommonInstanceDependencies.has(m);
            });
          }
          maybeInjectGlobal(deps, utils);
        },
        usagePure: function usagePure(meta, utils, path) {
          if (meta.kind === "in") {
            if (meta.key === "Symbol.iterator") {
              path.replaceWith(t.callExpression(utils.injectDefaultImport(coreJSPureHelper("is-iterable", useBabelRuntime, ext), "isIterable"), [path.node.right]));
            }
            return;
          }
          if (path.parentPath.isUnaryExpression({
            operator: "delete"
          })) return;
          if (meta.kind === "property") {
            if (!path.isMemberExpression()) return;
            if (!path.isReferenced()) return;
            if (path.parentPath.isUpdateExpression()) return;
            if (t.isSuper(path.node.object)) {
              return;
            }
            if (meta.key === "Symbol.iterator") {
              if (!shouldInjectPolyfill("es.symbol.iterator")) return;
              var parent = path.parent,
                node = path.node;
              if (t.isCallExpression(parent, {
                callee: node
              })) {
                if (parent.arguments.length === 0) {
                  path.parentPath.replaceWith(t.callExpression(utils.injectDefaultImport(coreJSPureHelper("get-iterator", useBabelRuntime, ext), "getIterator"), [node.object]));
                  path.skip();
                } else {
                  callMethod(path, utils.injectDefaultImport(coreJSPureHelper("get-iterator-method", useBabelRuntime, ext), "getIteratorMethod"));
                }
              } else {
                path.replaceWith(t.callExpression(utils.injectDefaultImport(coreJSPureHelper("get-iterator-method", useBabelRuntime, ext), "getIteratorMethod"), [path.node.object]));
              }
              return;
            }
          }
          var resolved = resolve(meta);
          if (!resolved) return;
          if (canSkipPolyfill(resolved.desc, path)) return;
          if (useBabelRuntime && resolved.desc.pure && resolved.desc.pure.slice(-6) === "/index") {
            resolved = Object.assign(Object.assign({}, resolved), {}, {
              desc: Object.assign(Object.assign({}, resolved.desc), {}, {
                pure: resolved.desc.pure.slice(0, -6)
              })
            });
          }
          if (resolved.kind === "global") {
            var id = maybeInjectPure(resolved.desc, resolved.name, utils);
            if (id) path.replaceWith(id);
          } else if (resolved.kind === "static") {
            var _id = maybeInjectPure(resolved.desc, resolved.name, utils, meta.object);
            if (_id) path.replaceWith(_id);
          } else if (resolved.kind === "instance") {
            var _id2 = maybeInjectPure(resolved.desc, resolved.name + "InstanceProperty", utils, meta.object);
            if (!_id2) return;
            var _node = path.node;
            if (t.isCallExpression(path.parent, {
              callee: _node
            })) {
              callMethod(path, _id2);
            } else {
              path.replaceWith(t.callExpression(_id2, [_node.object]));
            }
          }
        },
        visitor: method === "usage-global" && {
          CallExpression: function CallExpression(path) {
            if (path.get("callee").isImport()) {
              var utils = getUtils(path);
              if (isWebpack) {
                maybeInjectGlobal(PromiseDependenciesWithIterators, utils);
              } else {
                maybeInjectGlobal(PromiseDependencies, utils);
              }
            }
          },
          Function: function Function(path) {
            if (path.node.async) {
              maybeInjectGlobal(PromiseDependencies, getUtils(path));
            }
          },
          "ForOfStatement|ArrayPattern": function ForOfStatementArrayPattern(path) {
            maybeInjectGlobal(CommonIterators, getUtils(path));
          },
          SpreadElement: function SpreadElement(path) {
            if (!path.parentPath.isObjectExpression()) {
              maybeInjectGlobal(CommonIterators, getUtils(path));
            }
          },
          YieldExpression: function YieldExpression(path) {
            if (path.node.delegate) {
              maybeInjectGlobal(CommonIterators, getUtils(path));
            }
          }
        }
      };
    });
  
    var runtimeCompat = "#__secret_key__@babel/runtime__compatibility";
    var index = definePolyfillProvider(function (_ref, options) {
      var debug = _ref.debug,
        targets = _ref.targets,
        babel = _ref.babel;
      if (!shallowEqual(targets, babel.targets())) {
        throw new Error("This plugin does not use the targets option. Only preset-env's targets" + " or top-level targets need to be configured for this plugin to work." + " See https://github.com/babel/babel-polyfills/issues/36 for more" + " details.");
      }
      var _options$runtimeCompa = options[runtimeCompat],
        _options$runtimeCompa2 = _options$runtimeCompa === void 0 ? {
          useBabelRuntime: ""
        } : _options$runtimeCompa,
        useBabelRuntime = _options$runtimeCompa2.useBabelRuntime;
      var pureName = useBabelRuntime ? useBabelRuntime + "/regenerator" : "regenerator-runtime";
      return {
        name: "regenerator",
        polyfills: ["regenerator-runtime"],
        usageGlobal: function usageGlobal(meta, utils) {
          if (isRegenerator(meta)) {
            debug("regenerator-runtime");
            utils.injectGlobalImport("regenerator-runtime/runtime.js");
          }
        },
        usagePure: function usagePure(meta, utils, path) {
          if (isRegenerator(meta)) {
            path.replaceWith(utils.injectDefaultImport(pureName, "regenerator-runtime"));
          }
        }
      };
    });
    var isRegenerator = function isRegenerator(meta) {
      return meta.kind === "global" && meta.name === "regeneratorRuntime";
    };
    function shallowEqual(obj1, obj2) {
      return JSON.stringify(obj1) === JSON.stringify(obj2);
    }
  
    var pluginCoreJS2 = index$2["default"] || index$2;
    var pluginCoreJS3 = index$1["default"] || index$1;
    var pluginRegenerator = index["default"] || index;
    function filterStageFromList(list, stageList) {
      return Object.keys(list).reduce(function (result, item) {
        if (!stageList.has(item)) {
          result[item] = list[item];
        }
        return result;
      }, {});
    }
    var pluginLists = {
      withProposals: {
        withoutBugfixes: plugins,
        withBugfixes: Object.assign({}, plugins, pluginsBugfixes)
      },
      withoutProposals: {
        withoutBugfixes: filterStageFromList(plugins, proposalPlugins),
        withBugfixes: filterStageFromList(Object.assign({}, plugins, pluginsBugfixes), proposalPlugins)
      }
    };
    function getPluginList(proposals, bugfixes) {
      if (proposals) {
        if (bugfixes) return pluginLists.withProposals.withBugfixes;else return pluginLists.withProposals.withoutBugfixes;
      } else {
        if (bugfixes) return pluginLists.withoutProposals.withBugfixes;else return pluginLists.withoutProposals.withoutBugfixes;
      }
    }
    var getPlugin = function getPlugin(pluginName) {
      var plugin = availablePlugins$1[pluginName]();
      if (!plugin) {
        throw new Error("Could not find plugin \"" + pluginName + "\". Ensure there is an entry in ./available-plugins.js for it.");
      }
      return plugin;
    };
    var transformIncludesAndExcludes = function transformIncludesAndExcludes(opts) {
      return opts.reduce(function (result, opt) {
        var target = opt.match(/^(es|es6|es7|esnext|web)\./) ? "builtIns" : "plugins";
        result[target].add(opt);
        return result;
      }, {
        all: opts,
        plugins: new Set(),
        builtIns: new Set()
      });
    };
    var getModulesPluginNames = function getModulesPluginNames(_ref) {
      var modules = _ref.modules,
        transformations = _ref.transformations,
        shouldTransformESM = _ref.shouldTransformESM,
        shouldTransformDynamicImport = _ref.shouldTransformDynamicImport,
        shouldTransformExportNamespaceFrom = _ref.shouldTransformExportNamespaceFrom,
        shouldParseTopLevelAwait = _ref.shouldParseTopLevelAwait;
      var modulesPluginNames = [];
      if (modules !== false && transformations[modules]) {
        if (shouldTransformESM) {
          modulesPluginNames.push(transformations[modules]);
        }
        if (shouldTransformDynamicImport && shouldTransformESM && modules !== "umd") {
          modulesPluginNames.push("transform-dynamic-import");
        } else {
          if (shouldTransformDynamicImport) {
            console.warn("Dynamic import can only be supported when transforming ES modules" + " to AMD, CommonJS or SystemJS. Only the parser plugin will be enabled.");
          }
          modulesPluginNames.push("syntax-dynamic-import");
        }
      } else {
        modulesPluginNames.push("syntax-dynamic-import");
      }
      if (shouldTransformExportNamespaceFrom) {
        modulesPluginNames.push("transform-export-namespace-from");
      } else {
        modulesPluginNames.push("syntax-export-namespace-from");
      }
      if (shouldParseTopLevelAwait) {
        modulesPluginNames.push("syntax-top-level-await");
      }
      modulesPluginNames.push("syntax-import-meta");
      return modulesPluginNames;
    };
    var getPolyfillPlugins = function getPolyfillPlugins(_ref2) {
      var useBuiltIns = _ref2.useBuiltIns,
        corejs = _ref2.corejs,
        polyfillTargets = _ref2.polyfillTargets,
        include = _ref2.include,
        exclude = _ref2.exclude,
        proposals = _ref2.proposals,
        shippedProposals = _ref2.shippedProposals,
        regenerator = _ref2.regenerator,
        debug = _ref2.debug;
      var polyfillPlugins = [];
      if (useBuiltIns === "usage" || useBuiltIns === "entry") {
        var pluginOptions = {
          method: useBuiltIns + "-global",
          version: corejs ? corejs.toString() : undefined,
          targets: polyfillTargets,
          include: include,
          exclude: exclude,
          proposals: proposals,
          shippedProposals: shippedProposals,
          debug: debug
        };
        if (corejs) {
          if (useBuiltIns === "usage") {
            if (corejs.major === 2) {
              polyfillPlugins.push([pluginCoreJS2, pluginOptions], [legacyBabelPolyfillPlugin, {
                usage: true
              }]);
            } else {
              polyfillPlugins.push([pluginCoreJS3, pluginOptions], [legacyBabelPolyfillPlugin, {
                usage: true,
                deprecated: true
              }]);
            }
            if (regenerator) {
              polyfillPlugins.push([pluginRegenerator, {
                method: "usage-global",
                debug: debug
              }]);
            }
          } else {
            if (corejs.major === 2) {
              polyfillPlugins.push([legacyBabelPolyfillPlugin, {
                regenerator: regenerator
              }], [pluginCoreJS2, pluginOptions]);
            } else {
              polyfillPlugins.push([pluginCoreJS3, pluginOptions], [legacyBabelPolyfillPlugin, {
                deprecated: true
              }]);
              if (!regenerator) {
                polyfillPlugins.push([removeRegeneratorEntryPlugin, pluginOptions]);
              }
            }
          }
        }
      }
      return polyfillPlugins;
    };
    function getLocalTargets(optionsTargets, ignoreBrowserslistConfig, configPath, browserslistEnv) {
      if (optionsTargets != null && optionsTargets.esmodules && optionsTargets.browsers) {
        console.warn("\n@babel/preset-env: esmodules and browsers targets have been specified together.\n`browsers` target, `" + optionsTargets.browsers.toString() + "` will be ignored.\n");
      }
      return getTargets$2(optionsTargets, {
        ignoreBrowserslistConfig: ignoreBrowserslistConfig,
        configPath: configPath,
        browserslistEnv: browserslistEnv
      });
    }
    function supportsStaticESM(caller) {
      return !!(caller != null && caller.supportsStaticESM);
    }
    function supportsDynamicImport(caller) {
      return !!(caller != null && caller.supportsDynamicImport);
    }
    function supportsExportNamespaceFrom(caller) {
      return !!(caller != null && caller.supportsExportNamespaceFrom);
    }
    function supportsTopLevelAwait(caller) {
      return !!(caller != null && caller.supportsTopLevelAwait);
    }
    var presetEnv = declare(function (api, opts) {
      api.assertVersion(7);
      var babelTargets = api.targets();
      var _normalizeOptions = normalizeOptions$3(opts),
        bugfixes = _normalizeOptions.bugfixes,
        configPath = _normalizeOptions.configPath,
        debug = _normalizeOptions.debug,
        optionsExclude = _normalizeOptions.exclude,
        forceAllTransforms = _normalizeOptions.forceAllTransforms,
        ignoreBrowserslistConfig = _normalizeOptions.ignoreBrowserslistConfig,
        optionsInclude = _normalizeOptions.include,
        loose = _normalizeOptions.loose,
        modules = _normalizeOptions.modules,
        shippedProposals = _normalizeOptions.shippedProposals,
        spec = _normalizeOptions.spec,
        optionsTargets = _normalizeOptions.targets,
        useBuiltIns = _normalizeOptions.useBuiltIns,
        _normalizeOptions$cor = _normalizeOptions.corejs,
        corejs = _normalizeOptions$cor.version,
        proposals = _normalizeOptions$cor.proposals,
        browserslistEnv = _normalizeOptions.browserslistEnv;
      var targets = babelTargets;
      if (semver$2.lt(api.version, "7.13.0") || opts.targets || opts.configPath || opts.browserslistEnv || opts.ignoreBrowserslistConfig) {
        {
          var hasUglifyTarget = false;
          if (optionsTargets != null && optionsTargets.uglify) {
            hasUglifyTarget = true;
            delete optionsTargets.uglify;
            console.warn("\nThe uglify target has been deprecated. Set the top level\noption `forceAllTransforms: true` instead.\n");
          }
        }
        targets = getLocalTargets(optionsTargets, ignoreBrowserslistConfig, configPath, browserslistEnv);
      }
      var transformTargets = forceAllTransforms || hasUglifyTarget ? {} : targets;
      var include = transformIncludesAndExcludes(optionsInclude);
      var exclude = transformIncludesAndExcludes(optionsExclude);
      var compatData = getPluginList(shippedProposals, bugfixes);
      var shouldSkipExportNamespaceFrom = modules === "auto" && (api.caller == null ? void 0 : api.caller(supportsExportNamespaceFrom)) || modules === false && !isRequired("transform-export-namespace-from", transformTargets, {
        compatData: compatData,
        includes: include.plugins,
        excludes: exclude.plugins
      });
      var modulesPluginNames = getModulesPluginNames({
        modules: modules,
        transformations: moduleTransformations,
        shouldTransformESM: modules !== "auto" || !(api.caller != null && api.caller(supportsStaticESM)),
        shouldTransformDynamicImport: modules !== "auto" || !(api.caller != null && api.caller(supportsDynamicImport)),
        shouldTransformExportNamespaceFrom: !shouldSkipExportNamespaceFrom,
        shouldParseTopLevelAwait: !api.caller || api.caller(supportsTopLevelAwait)
      });
      var pluginNames = filterItems(compatData, include.plugins, exclude.plugins, transformTargets, modulesPluginNames, getOptionSpecificExcludesFor({
        loose: loose
      }), pluginSyntaxMap);
      removeUnnecessaryItems(pluginNames, overlappingPlugins);
      removeUnsupportedItems(pluginNames, api.version);
      if (shippedProposals) {
        addProposalSyntaxPlugins(pluginNames, proposalSyntaxPlugins);
      }
      var polyfillPlugins = getPolyfillPlugins({
        useBuiltIns: useBuiltIns,
        corejs: corejs,
        polyfillTargets: targets,
        include: include.builtIns,
        exclude: exclude.builtIns,
        proposals: proposals,
        shippedProposals: shippedProposals,
        regenerator: pluginNames.has("transform-regenerator"),
        debug: debug
      });
      var pluginUseBuiltIns = useBuiltIns !== false;
      var plugins = Array.from(pluginNames).map(function (pluginName) {
        if (pluginName === "transform-class-properties" || pluginName === "transform-private-methods" || pluginName === "transform-private-property-in-object") {
          return [getPlugin(pluginName), {
            loose: loose ? "#__internal__@babel/preset-env__prefer-true-but-false-is-ok-if-it-prevents-an-error" : "#__internal__@babel/preset-env__prefer-false-but-true-is-ok-if-it-prevents-an-error"
          }];
        }
        return [getPlugin(pluginName), {
          spec: spec,
          loose: loose,
          useBuiltIns: pluginUseBuiltIns
        }];
      }).concat(polyfillPlugins);
      if (debug) {
        console.log("@babel/preset-env: `DEBUG` option");
        console.log("\nUsing targets:");
        console.log(JSON.stringify(prettifyTargets(targets), null, 2));
        console.log("\nUsing modules transform: " + modules.toString());
        console.log("\nUsing plugins:");
        pluginNames.forEach(function (pluginName) {
          logPlugin(pluginName, targets, compatData);
        });
        if (!useBuiltIns) {
          console.log("\nUsing polyfills: No polyfills were added, since the `useBuiltIns` option was not set.");
        }
      }
      return {
        plugins: plugins
      };
    });
  
    new OptionValidator("@babel/preset-flow");
    function normalizeOptions$2(options) {
      if (options === void 0) {
        options = {};
      }
      var _options = options,
        all = _options.all,
        ignoreExtensions = _options.ignoreExtensions;
      var _options2 = options,
        allowDeclareFields = _options2.allowDeclareFields;
      {
        return {
          all: all,
          allowDeclareFields: allowDeclareFields,
          ignoreExtensions: ignoreExtensions
        };
      }
    }
  
    var presetFlow = declare(function (api, opts) {
      api.assertVersion(7);
      var _normalizeOptions = normalizeOptions$2(opts),
        all = _normalizeOptions.all,
        allowDeclareFields = _normalizeOptions.allowDeclareFields;
        _normalizeOptions.ignoreExtensions;
      var flowPlugin = [transformFlowStripTypes, {
        all: all,
        allowDeclareFields: allowDeclareFields
      }];
      {
        return {
          plugins: [flowPlugin]
        };
      }
    });
  
    var PURE_CALLS = [["react", new Set(["cloneElement", "createContext", "createElement", "createFactory", "createRef", "forwardRef", "isValidElement", "memo", "lazy"])], ["react-dom", new Set(["createPortal"])]];
    var transformReactPure = declare(function (api) {
      api.assertVersion(7);
      return {
        name: "transform-react-pure-annotations",
        visitor: {
          CallExpression: function CallExpression(path) {
            if (isReactCall(path)) {
              annotateAsPure(path);
            }
          }
        }
      };
    });
    function isReactCall(path) {
      var calleePath = path.get("callee");
      if (!calleePath.isMemberExpression()) {
        for (var _i = 0, _PURE_CALLS = PURE_CALLS; _i < _PURE_CALLS.length; _i++) {
          var _PURE_CALLS$_i = _slicedToArray(_PURE_CALLS[_i], 2),
            module = _PURE_CALLS$_i[0],
            methods = _PURE_CALLS$_i[1];
          for (var _iterator = _createForOfIteratorHelperLoose(methods), _step; !(_step = _iterator()).done;) {
            var method = _step.value;
            if (calleePath.referencesImport(module, method)) {
              return true;
            }
          }
        }
        return false;
      }
      var object = calleePath.get("object");
      var callee = calleePath.node;
      if (!callee.computed && isIdentifier$j(callee.property)) {
        var propertyName = callee.property.name;
        for (var _i2 = 0, _PURE_CALLS2 = PURE_CALLS; _i2 < _PURE_CALLS2.length; _i2++) {
          var _PURE_CALLS2$_i = _slicedToArray(_PURE_CALLS2[_i2], 2),
            _module = _PURE_CALLS2$_i[0],
            _methods = _PURE_CALLS2$_i[1];
          if (object.referencesImport(_module, "default") || object.referencesImport(_module, "*")) {
            return _methods.has(propertyName);
          }
        }
      }
      return false;
    }
  
    new OptionValidator("@babel/preset-react");
    function normalizeOptions$1(options) {
      if (options === void 0) {
        options = {};
      }
      {
        var _options = options,
          pragma = _options.pragma,
          pragmaFrag = _options.pragmaFrag;
        var _options2 = options,
          pure = _options2.pure,
          _options2$throwIfName = _options2.throwIfNamespace,
          throwIfNamespace = _options2$throwIfName === void 0 ? true : _options2$throwIfName,
          _options2$runtime = _options2.runtime,
          runtime = _options2$runtime === void 0 ? "classic" : _options2$runtime,
          importSource = _options2.importSource,
          useBuiltIns = _options2.useBuiltIns,
          useSpread = _options2.useSpread;
        if (runtime === "classic") {
          pragma = pragma || "React.createElement";
          pragmaFrag = pragmaFrag || "React.Fragment";
        }
        var development = !!options.development;
        return {
          development: development,
          importSource: importSource,
          pragma: pragma,
          pragmaFrag: pragmaFrag,
          pure: pure,
          runtime: runtime,
          throwIfNamespace: throwIfNamespace,
          useBuiltIns: useBuiltIns,
          useSpread: useSpread
        };
      }
    }
  
    var presetReact = declare(function (api, opts) {
      api.assertVersion(7);
      var _normalizeOptions = normalizeOptions$1(opts),
        development = _normalizeOptions.development,
        importSource = _normalizeOptions.importSource,
        pragma = _normalizeOptions.pragma,
        pragmaFrag = _normalizeOptions.pragmaFrag,
        pure = _normalizeOptions.pure,
        runtime = _normalizeOptions.runtime,
        throwIfNamespace = _normalizeOptions.throwIfNamespace;
      return {
        plugins: [[development ? transformReactJSXDevelopment : transformReactJSX, {
          importSource: importSource,
          pragma: pragma,
          pragmaFrag: pragmaFrag,
          runtime: runtime,
          throwIfNamespace: throwIfNamespace,
          pure: pure,
          useBuiltIns: !!opts.useBuiltIns,
          useSpread: opts.useSpread
        }], transformReactDisplayName, pure !== false && transformReactPure].filter(Boolean)
      };
    });
  
    var v = new OptionValidator("@babel/preset-typescript");
    function normalizeOptions(options) {
      if (options === void 0) {
        options = {};
      }
      var _options = options,
        _options$allowNamespa = _options.allowNamespaces,
        allowNamespaces = _options$allowNamespa === void 0 ? true : _options$allowNamespa,
        jsxPragma = _options.jsxPragma,
        onlyRemoveTypeImports = _options.onlyRemoveTypeImports;
      var TopLevelOptions = {
        ignoreExtensions: "ignoreExtensions",
        allowNamespaces: "allowNamespaces",
        disallowAmbiguousJSXLike: "disallowAmbiguousJSXLike",
        jsxPragma: "jsxPragma",
        jsxPragmaFrag: "jsxPragmaFrag",
        onlyRemoveTypeImports: "onlyRemoveTypeImports",
        optimizeConstEnums: "optimizeConstEnums",
        allExtensions: "allExtensions",
        isTSX: "isTSX"
      };
      var jsxPragmaFrag = v.validateStringOption(TopLevelOptions.jsxPragmaFrag, options.jsxPragmaFrag, "React.Fragment");
      {
        var allExtensions = v.validateBooleanOption(TopLevelOptions.allExtensions, options.allExtensions, false);
        var isTSX = v.validateBooleanOption(TopLevelOptions.isTSX, options.isTSX, false);
        if (isTSX) {
          v.invariant(allExtensions, "isTSX:true requires allExtensions:true");
        }
      }
      var ignoreExtensions = v.validateBooleanOption(TopLevelOptions.ignoreExtensions, options.ignoreExtensions, false);
      var disallowAmbiguousJSXLike = v.validateBooleanOption(TopLevelOptions.disallowAmbiguousJSXLike, options.disallowAmbiguousJSXLike, false);
      if (disallowAmbiguousJSXLike) {
        {
          v.invariant(allExtensions, "disallowAmbiguousJSXLike:true requires allExtensions:true");
        }
      }
      var optimizeConstEnums = v.validateBooleanOption(TopLevelOptions.optimizeConstEnums, options.optimizeConstEnums, false);
      var normalized = {
        ignoreExtensions: ignoreExtensions,
        allowNamespaces: allowNamespaces,
        disallowAmbiguousJSXLike: disallowAmbiguousJSXLike,
        jsxPragma: jsxPragma,
        jsxPragmaFrag: jsxPragmaFrag,
        onlyRemoveTypeImports: onlyRemoveTypeImports,
        optimizeConstEnums: optimizeConstEnums
      };
      {
        normalized.allExtensions = allExtensions;
        normalized.isTSX = isTSX;
      }
      return normalized;
    }
  
    var presetTypescript = declare(function (api, opts) {
      api.assertVersion(7);
      var _normalizeOptions = normalizeOptions(opts),
        allExtensions = _normalizeOptions.allExtensions,
        ignoreExtensions = _normalizeOptions.ignoreExtensions,
        allowNamespaces = _normalizeOptions.allowNamespaces,
        disallowAmbiguousJSXLike = _normalizeOptions.disallowAmbiguousJSXLike,
        isTSX = _normalizeOptions.isTSX,
        jsxPragma = _normalizeOptions.jsxPragma,
        jsxPragmaFrag = _normalizeOptions.jsxPragmaFrag,
        onlyRemoveTypeImports = _normalizeOptions.onlyRemoveTypeImports,
        optimizeConstEnums = _normalizeOptions.optimizeConstEnums;
      var pluginOptions = function pluginOptions(disallowAmbiguousJSXLike) {
        return {
          allowDeclareFields: opts.allowDeclareFields,
          allowNamespaces: allowNamespaces,
          disallowAmbiguousJSXLike: disallowAmbiguousJSXLike,
          jsxPragma: jsxPragma,
          jsxPragmaFrag: jsxPragmaFrag,
          onlyRemoveTypeImports: onlyRemoveTypeImports,
          optimizeConstEnums: optimizeConstEnums
        };
      };
      var getPlugins = function getPlugins(isTSX, disallowAmbiguousJSXLike) {
        {
          return [[transformTypeScript, Object.assign({
            isTSX: isTSX
          }, pluginOptions(disallowAmbiguousJSXLike))]];
        }
      };
      var disableExtensionDetect = allExtensions || ignoreExtensions;
      return {
        overrides: disableExtensionDetect ? [{
          plugins: getPlugins(isTSX, disallowAmbiguousJSXLike)
        }] : [{
          test: /\.ts$/,
          plugins: getPlugins(false, false)
        }, {
          test: /\.mts$/,
          sourceType: "module",
          plugins: getPlugins(false, true)
        }, {
          test: /\.cts$/,
          sourceType: "unambiguous",
          plugins: [[transformModulesCommonJS, {
            allowTopLevelThis: true
          }], [transformTypeScript, pluginOptions(true)]]
        }, {
          test: /\.tsx$/,
          plugins: getPlugins(true, false)
        }]
      };
    });
  
    var scriptTypes = ["text/jsx", "text/babel"];
    var headEl;
    var inlineScriptCount = 0;
    function transformCode(transformFn, script) {
      var source;
      if (script.url != null) {
        source = script.url;
      } else {
        source = "Inline Babel script";
        inlineScriptCount++;
        if (inlineScriptCount > 1) {
          source += " (" + inlineScriptCount + ")";
        }
      }
      return transformFn(script.content, buildBabelOptions(script, source)).code;
    }
    function buildBabelOptions(script, filename) {
      var presets = script.presets;
      if (!presets) {
        if (script.type === "module") {
          presets = ["react", ["env", {
            targets: {
              esmodules: true
            },
            modules: false
          }]];
        } else {
          presets = ["react", "env"];
        }
      }
      return {
        filename: filename,
        presets: presets,
        plugins: script.plugins || ["proposal-class-properties", "proposal-object-rest-spread", "transform-flow-strip-types"],
        sourceMaps: "inline",
        sourceFileName: filename
      };
    }
    function run(transformFn, script) {
      var scriptEl = document.createElement("script");
      if (script.type) {
        scriptEl.setAttribute("type", script.type);
      }
      scriptEl.text = transformCode(transformFn, script);
      headEl.appendChild(scriptEl);
    }
    function load(url, successCallback, errorCallback) {
      var xhr = new XMLHttpRequest();
      xhr.open("GET", url, true);
      if ("overrideMimeType" in xhr) {
        xhr.overrideMimeType("text/plain");
      }
      xhr.onreadystatechange = function () {
        if (xhr.readyState === 4) {
          if (xhr.status === 0 || xhr.status === 200) {
            successCallback(xhr.responseText);
          } else {
            errorCallback();
            throw new Error("Could not load " + url);
          }
        }
      };
      xhr.send(null);
    }
    function getPluginsOrPresetsFromScript(script, attributeName) {
      var rawValue = script.getAttribute(attributeName);
      if (rawValue === "") {
        return [];
      }
      if (!rawValue) {
        return null;
      }
      return rawValue.split(",").map(function (item) {
        return item.trim();
      });
    }
    function loadScripts(transformFn, scripts) {
      var result = [];
      var count = scripts.length;
      function check() {
        var script, i;
        for (i = 0; i < count; i++) {
          script = result[i];
          if (script.loaded && !script.executed) {
            script.executed = true;
            run(transformFn, script);
          } else if (!script.loaded && !script.error && !script.async) {
            break;
          }
        }
      }
      scripts.forEach(function (script, i) {
        var scriptData = {
          async: script.hasAttribute("async"),
          type: script.getAttribute("data-type"),
          error: false,
          executed: false,
          plugins: getPluginsOrPresetsFromScript(script, "data-plugins"),
          presets: getPluginsOrPresetsFromScript(script, "data-presets")
        };
        if (script.src) {
          result[i] = Object.assign({}, scriptData, {
            content: null,
            loaded: false,
            url: script.src
          });
          load(script.src, function (content) {
            result[i].loaded = true;
            result[i].content = content;
            check();
          }, function () {
            result[i].error = true;
            check();
          });
        } else {
          result[i] = Object.assign({}, scriptData, {
            content: script.innerHTML,
            loaded: true,
            url: script.getAttribute("data-module") || null
          });
        }
      });
      check();
    }
    function runScripts(transformFn, scripts) {
      headEl = document.getElementsByTagName("head")[0];
      if (!scripts) {
        scripts = document.getElementsByTagName("script");
      }
      var jsxScripts = [];
      for (var i = 0; i < scripts.length; i++) {
        var script = scripts.item(i);
        var type = script.type.split(";")[0];
        if (scriptTypes.indexOf(type) !== -1) {
          jsxScripts.push(script);
        }
      }
      if (jsxScripts.length === 0) {
        return;
      }
      console.warn("You are using the in-browser Babel transformer. Be sure to precompile " + "your scripts for production - https://babeljs.io/docs/setup/");
      loadScripts(transformFn, jsxScripts);
    }
  
    var _window;
    var availablePlugins = {};
    registerPlugins(all);
    var availablePresets = {
      env: presetEnv,
      es2015: preset2015,
      es2016: function es2016() {
        return {
          plugins: [availablePlugins["transform-exponentiation-operator"]]
        };
      },
      es2017: function es2017() {
        return {
          plugins: [availablePlugins["transform-async-to-generator"]]
        };
      },
      react: presetReact,
      "stage-0": presetStage0,
      "stage-1": presetStage1,
      "stage-2": presetStage2,
      "stage-3": presetStage3,
      "es2015-loose": {
        presets: [[preset2015, {
          loose: true
        }]]
      },
      "es2015-no-commonjs": {
        presets: [[preset2015, {
          modules: false
        }]]
      },
      typescript: presetTypescript,
      flow: presetFlow
    };
    var isArray = Array.isArray || function (arg) {
      return Object.prototype.toString.call(arg) === "[object Array]";
    };
    function loadBuiltin(builtinTable, name) {
      if (isArray(name) && typeof name[0] === "string") {
        if (Object.prototype.hasOwnProperty.call(builtinTable, name[0])) {
          return [builtinTable[name[0]]].concat(name.slice(1));
        }
        return;
      } else if (typeof name === "string") {
        return builtinTable[name];
      }
      return name;
    }
    function processOptions(options) {
      var presets = (options.presets || []).map(function (presetName) {
        var preset = loadBuiltin(availablePresets, presetName);
        if (preset) {
          if (isArray(preset) && typeof preset[0] === "object" && Object.prototype.hasOwnProperty.call(preset[0], "buildPreset")) {
            preset[0] = Object.assign({}, preset[0], {
              buildPreset: preset[0].buildPreset
            });
          }
        } else {
          throw new Error("Invalid preset specified in Babel options: \"" + presetName + "\"");
        }
        return preset;
      });
      var plugins = (options.plugins || []).map(function (pluginName) {
        var plugin = loadBuiltin(availablePlugins, pluginName);
        if (!plugin) {
          throw new Error("Invalid plugin specified in Babel options: \"" + pluginName + "\"");
        }
        return plugin;
      });
      return Object.assign({
        babelrc: false
      }, options, {
        presets: presets,
        plugins: plugins
      });
    }
    function transform(code, options) {
      return transformSync(code, processOptions(options));
    }
    function transformFromAst(ast, code, options) {
      return transformFromAstSync(ast, code, processOptions(options));
    }
    var buildExternalHelpers = babelBuildExternalHelpers;
    function registerPlugin(name, plugin) {
      if (Object.prototype.hasOwnProperty.call(availablePlugins, name)) {
        console.warn("A plugin named \"" + name + "\" is already registered, it will be overridden");
      }
      availablePlugins[name] = plugin;
    }
    function registerPlugins(newPlugins) {
      Object.keys(newPlugins).forEach(function (name) {
        return registerPlugin(name, newPlugins[name]);
      });
    }
    function registerPreset(name, preset) {
      if (Object.prototype.hasOwnProperty.call(availablePresets, name)) {
        if (name === "env") {
          console.warn("@babel/preset-env is now included in @babel/standalone, please remove @babel/preset-env-standalone");
        } else {
          console.warn("A preset named \"" + name + "\" is already registered, it will be overridden");
        }
      }
      availablePresets[name] = preset;
    }
    function registerPresets(newPresets) {
      Object.keys(newPresets).forEach(function (name) {
        return registerPreset(name, newPresets[name]);
      });
    }
    var version = "7.21.8";
    function onDOMContentLoaded() {
      transformScriptTags();
    }
    if (typeof window !== "undefined" && (_window = window) != null && _window.addEventListener) {
      window.addEventListener("DOMContentLoaded", onDOMContentLoaded, false);
    }
    function transformScriptTags(scriptTags) {
      runScripts(transform, scriptTags);
    }
    function disableScriptTags() {
      window.removeEventListener("DOMContentLoaded", onDOMContentLoaded);
    }
  
    exports.availablePlugins = availablePlugins;
    exports.availablePresets = availablePresets;
    exports.buildExternalHelpers = buildExternalHelpers;
    exports.disableScriptTags = disableScriptTags;
    exports.registerPlugin = registerPlugin;
    exports.registerPlugins = registerPlugins;
    exports.registerPreset = registerPreset;
    exports.registerPresets = registerPresets;
    exports.transform = transform;
    exports.transformFromAst = transformFromAst;
    exports.transformScriptTags = transformScriptTags;
    exports.version = version;
  
    Object.defineProperty(exports, '__esModule', { value: true });
  
  }));
  //# sourceMappingURL=babel.js.map